handsontable 18.0.0 → 18.1.0-rc1

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 (1238) hide show
  1. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.mts +1 -0
  2. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.ts +55 -0
  3. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.js +15 -0
  4. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.mjs +14 -0
  5. package/3rdparty/walkontable/src/axisSizing/boxModel.d.mts +1 -0
  6. package/3rdparty/walkontable/src/axisSizing/boxModel.d.ts +32 -0
  7. package/3rdparty/walkontable/src/axisSizing/boxModel.js +45 -0
  8. package/3rdparty/walkontable/src/axisSizing/boxModel.mjs +33 -0
  9. package/3rdparty/walkontable/src/axisSizing/columnUtils.d.mts +2 -0
  10. package/3rdparty/walkontable/src/{utils/column.d.ts → axisSizing/columnUtils.d.ts} +12 -10
  11. package/3rdparty/walkontable/src/axisSizing/columnUtils.js +142 -0
  12. package/3rdparty/walkontable/src/axisSizing/columnUtils.mjs +137 -0
  13. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.mts +1 -0
  14. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.ts +58 -0
  15. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.js +124 -0
  16. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.mjs +114 -0
  17. package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.mts +1 -0
  18. package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.ts +162 -0
  19. package/3rdparty/walkontable/src/axisSizing/oversizedRows.js +424 -0
  20. package/3rdparty/walkontable/src/axisSizing/oversizedRows.mjs +522 -0
  21. package/3rdparty/walkontable/src/axisSizing/positionCache/index.d.ts +130 -0
  22. package/3rdparty/walkontable/src/axisSizing/positionCache/index.js +251 -0
  23. package/3rdparty/walkontable/src/axisSizing/positionCache/index.mjs +257 -0
  24. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.mts +1 -0
  25. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.ts +51 -0
  26. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.js +116 -0
  27. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.mjs +112 -0
  28. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.mts +1 -0
  29. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.ts +53 -0
  30. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.js +199 -0
  31. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.mjs +196 -0
  32. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.mts +1 -0
  33. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.ts +53 -0
  34. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.js +40 -0
  35. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.mjs +41 -0
  36. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.mts +1 -0
  37. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.ts +47 -0
  38. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.js +116 -0
  39. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.mjs +110 -0
  40. package/3rdparty/walkontable/src/axisSizing/rowUtils.d.mts +2 -0
  41. package/3rdparty/walkontable/src/{utils/row.d.ts → axisSizing/rowUtils.d.ts} +11 -9
  42. package/3rdparty/walkontable/src/axisSizing/rowUtils.js +106 -0
  43. package/3rdparty/walkontable/src/axisSizing/rowUtils.mjs +101 -0
  44. package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.mts +2 -0
  45. package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.ts +84 -0
  46. package/3rdparty/walkontable/src/axisSizing/sizeGetters.js +102 -0
  47. package/3rdparty/walkontable/src/axisSizing/sizeGetters.mjs +92 -0
  48. package/3rdparty/walkontable/src/calculator/axisCalculation.d.ts +1 -1
  49. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.d.ts +10 -0
  50. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +10 -1
  51. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +10 -1
  52. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.d.ts +9 -0
  53. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +9 -1
  54. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +9 -1
  55. package/3rdparty/walkontable/src/calculator/viewportColumns.d.ts +1 -1
  56. package/3rdparty/walkontable/src/calculator/viewportRows.d.ts +1 -1
  57. package/3rdparty/walkontable/src/cell/coords.js +4 -9
  58. package/3rdparty/walkontable/src/cell/coords.mjs +4 -9
  59. package/3rdparty/walkontable/src/cell/range.d.ts +10 -0
  60. package/3rdparty/walkontable/src/cell/range.js +19 -15
  61. package/3rdparty/walkontable/src/cell/range.mjs +16 -12
  62. package/3rdparty/walkontable/src/core/_base.d.ts +21 -21
  63. package/3rdparty/walkontable/src/core/_base.js +47 -147
  64. package/3rdparty/walkontable/src/core/_base.mjs +17 -147
  65. package/3rdparty/walkontable/src/core/clone.d.ts +4 -14
  66. package/3rdparty/walkontable/src/core/clone.js +40 -5
  67. package/3rdparty/walkontable/src/core/clone.mjs +10 -5
  68. package/3rdparty/walkontable/src/core/core.d.ts +1 -5
  69. package/3rdparty/walkontable/src/core/core.js +41 -47
  70. package/3rdparty/walkontable/src/core/core.mjs +12 -48
  71. package/3rdparty/walkontable/src/domMeasure/geometryReader.d.mts +1 -0
  72. package/3rdparty/walkontable/src/domMeasure/geometryReader.d.ts +172 -0
  73. package/3rdparty/walkontable/src/domMeasure/geometryReader.js +19 -0
  74. package/3rdparty/walkontable/src/domMeasure/geometryReader.mjs +16 -0
  75. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.mts +1 -0
  76. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.ts +134 -0
  77. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.js +195 -0
  78. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.mjs +193 -0
  79. package/3rdparty/walkontable/src/event.d.ts +25 -12
  80. package/3rdparty/walkontable/src/event.js +96 -236
  81. package/3rdparty/walkontable/src/event.mjs +95 -236
  82. package/3rdparty/walkontable/src/facade/core.d.ts +6 -6
  83. package/3rdparty/walkontable/src/index.d.ts +1 -1
  84. package/3rdparty/walkontable/src/index.js +10 -21
  85. package/3rdparty/walkontable/src/index.mjs +1 -1
  86. package/3rdparty/walkontable/src/overlay/index.d.ts +6 -6
  87. package/3rdparty/walkontable/src/overlay/index.js +11 -11
  88. package/3rdparty/walkontable/src/overlay/index.mjs +6 -6
  89. package/3rdparty/walkontable/src/overlay/overlays.d.ts +375 -0
  90. package/3rdparty/walkontable/src/overlay/overlays.js +605 -0
  91. package/3rdparty/walkontable/src/overlay/overlays.mjs +594 -0
  92. package/3rdparty/walkontable/src/overlay/{_base.d.ts → regions/_base.d.ts} +65 -16
  93. package/3rdparty/walkontable/src/overlay/{_base.js → regions/_base.js} +155 -50
  94. package/3rdparty/walkontable/src/overlay/{_base.mjs → regions/_base.mjs} +158 -47
  95. package/3rdparty/walkontable/src/overlay/regions/bottomInlineStartCornerOverlay.d.mts +1 -0
  96. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.d.ts → regions/bottomInlineStartCornerOverlay.d.ts} +5 -10
  97. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerOverlay.js} +18 -20
  98. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.mjs → regions/bottomInlineStartCornerOverlay.mjs} +18 -20
  99. package/3rdparty/walkontable/src/overlay/regions/bottomOverlay.d.mts +1 -0
  100. package/3rdparty/walkontable/src/overlay/{bottom.d.ts → regions/bottomOverlay.d.ts} +16 -11
  101. package/3rdparty/walkontable/src/overlay/{bottom.js → regions/bottomOverlay.js} +111 -66
  102. package/3rdparty/walkontable/src/overlay/{bottom.mjs → regions/bottomOverlay.mjs} +111 -66
  103. package/3rdparty/walkontable/src/overlay/regions/inlineStartOverlay.d.mts +1 -0
  104. package/3rdparty/walkontable/src/overlay/{inlineStart.d.ts → regions/inlineStartOverlay.d.ts} +17 -11
  105. package/3rdparty/walkontable/src/overlay/{inlineStart.js → regions/inlineStartOverlay.js} +120 -67
  106. package/3rdparty/walkontable/src/overlay/{inlineStart.mjs → regions/inlineStartOverlay.mjs} +120 -67
  107. package/3rdparty/walkontable/src/overlay/regions/topInlineStartCornerOverlay.d.mts +1 -0
  108. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.d.ts → regions/topInlineStartCornerOverlay.d.ts} +5 -10
  109. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.js → regions/topInlineStartCornerOverlay.js} +13 -16
  110. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.mjs → regions/topInlineStartCornerOverlay.mjs} +13 -16
  111. package/3rdparty/walkontable/src/overlay/regions/topOverlay.d.mts +1 -0
  112. package/3rdparty/walkontable/src/overlay/{top.d.ts → regions/topOverlay.d.ts} +32 -11
  113. package/3rdparty/walkontable/src/overlay/{top.js → regions/topOverlay.js} +161 -77
  114. package/3rdparty/walkontable/src/overlay/{top.mjs → regions/topOverlay.mjs} +161 -77
  115. package/3rdparty/walkontable/src/overlay/resizeMonitor.d.mts +1 -0
  116. package/3rdparty/walkontable/src/overlay/resizeMonitor.d.ts +49 -0
  117. package/3rdparty/walkontable/src/overlay/resizeMonitor.js +149 -0
  118. package/3rdparty/walkontable/src/overlay/resizeMonitor.mjs +148 -0
  119. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.mts +1 -0
  120. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.ts +62 -0
  121. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.js +283 -0
  122. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.mjs +288 -0
  123. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.mts +1 -0
  124. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.ts +176 -0
  125. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.js +542 -0
  126. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.mjs +550 -0
  127. package/3rdparty/walkontable/src/overlay/spreaderSize.d.mts +1 -0
  128. package/3rdparty/walkontable/src/overlay/spreaderSize.d.ts +67 -0
  129. package/3rdparty/walkontable/src/overlay/spreaderSize.js +173 -0
  130. package/3rdparty/walkontable/src/overlay/spreaderSize.mjs +174 -0
  131. package/3rdparty/walkontable/src/{stickyScrollStrategy.d.ts → overlay/strategies/stickyScrollStrategy.d.ts} +33 -21
  132. package/3rdparty/walkontable/src/{stickyScrollStrategy.js → overlay/strategies/stickyScrollStrategy.js} +65 -53
  133. package/3rdparty/walkontable/src/{stickyScrollStrategy.mjs → overlay/strategies/stickyScrollStrategy.mjs} +63 -50
  134. package/3rdparty/walkontable/src/ports.d.mts +1 -0
  135. package/3rdparty/walkontable/src/ports.d.ts +54 -0
  136. package/3rdparty/walkontable/src/ports.js +23 -0
  137. package/3rdparty/walkontable/src/ports.mjs +24 -0
  138. package/3rdparty/walkontable/src/{renderer → render}/_base.d.ts +1 -1
  139. package/3rdparty/walkontable/src/{renderer → render}/cells.js +1 -1
  140. package/3rdparty/walkontable/src/{renderer → render}/cells.mjs +1 -1
  141. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.ts +1 -0
  142. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.js +41 -1
  143. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.mjs +42 -2
  144. package/3rdparty/walkontable/src/render/index.d.mts +1 -0
  145. package/3rdparty/walkontable/src/{renderer → render}/index.d.ts +11 -3
  146. package/3rdparty/walkontable/src/{renderer → render}/index.js +13 -3
  147. package/3rdparty/walkontable/src/{renderer → render}/index.mjs +11 -1
  148. package/3rdparty/walkontable/src/{renderer → render}/rows.js +1 -1
  149. package/3rdparty/walkontable/src/{renderer → render}/rows.mjs +1 -1
  150. package/3rdparty/walkontable/src/render/tableRenderer.d.mts +1 -0
  151. package/3rdparty/walkontable/src/{renderer/table.d.ts → render/tableRenderer.d.ts} +12 -2
  152. package/3rdparty/walkontable/src/render/tableRenderer.js +375 -0
  153. package/3rdparty/walkontable/src/{renderer/table.mjs → render/tableRenderer.mjs} +152 -6
  154. package/3rdparty/walkontable/src/{scroll.d.ts → scroll/scroll.d.ts} +27 -10
  155. package/3rdparty/walkontable/src/{scroll.js → scroll/scroll.js} +104 -35
  156. package/3rdparty/walkontable/src/{scroll.mjs → scroll/scroll.mjs} +102 -32
  157. package/3rdparty/walkontable/src/selection/border/border.d.ts +313 -5
  158. package/3rdparty/walkontable/src/selection/border/border.js +861 -51
  159. package/3rdparty/walkontable/src/selection/border/border.mjs +863 -53
  160. package/3rdparty/walkontable/src/selection/border/types.d.ts +30 -0
  161. package/3rdparty/walkontable/src/selection/manager.js +242 -12
  162. package/3rdparty/walkontable/src/selection/manager.mjs +243 -13
  163. package/3rdparty/walkontable/src/selection/scanner.js +5 -12
  164. package/3rdparty/walkontable/src/selection/scanner.mjs +5 -12
  165. package/3rdparty/walkontable/src/settings/accessor.d.mts +2 -0
  166. package/3rdparty/walkontable/src/settings/accessor.d.ts +74 -0
  167. package/3rdparty/walkontable/src/settings/accessor.js +78 -0
  168. package/3rdparty/walkontable/src/settings/accessor.mjs +71 -0
  169. package/3rdparty/walkontable/src/settings/defaults.d.mts +1 -0
  170. package/3rdparty/walkontable/src/{settings.d.ts → settings/defaults.d.ts} +16 -77
  171. package/3rdparty/walkontable/src/settings/defaults.js +146 -0
  172. package/3rdparty/walkontable/src/settings/defaults.mjs +225 -0
  173. package/3rdparty/walkontable/src/settings/index.d.mts +1 -0
  174. package/3rdparty/walkontable/src/settings/index.d.ts +6 -0
  175. package/3rdparty/walkontable/src/settings/index.js +20 -0
  176. package/3rdparty/walkontable/src/settings/index.mjs +5 -0
  177. package/3rdparty/walkontable/src/table/baseTable.d.mts +2 -0
  178. package/3rdparty/walkontable/src/table/baseTable.d.ts +284 -0
  179. package/3rdparty/walkontable/src/table/baseTable.js +290 -0
  180. package/3rdparty/walkontable/src/table/baseTable.mjs +278 -0
  181. package/3rdparty/walkontable/src/table/cellAccess.d.mts +1 -0
  182. package/3rdparty/walkontable/src/table/cellAccess.d.ts +101 -0
  183. package/3rdparty/walkontable/src/table/cellAccess.js +238 -0
  184. package/3rdparty/walkontable/src/table/cellAccess.mjs +229 -0
  185. package/3rdparty/walkontable/src/table/domScaffold.d.mts +1 -0
  186. package/3rdparty/walkontable/src/table/domScaffold.d.ts +37 -0
  187. package/3rdparty/walkontable/src/table/domScaffold.js +145 -0
  188. package/3rdparty/walkontable/src/table/domScaffold.mjs +136 -0
  189. package/3rdparty/walkontable/src/table/drawCycle.d.mts +1 -0
  190. package/3rdparty/walkontable/src/table/drawCycle.d.ts +16 -0
  191. package/3rdparty/walkontable/src/table/drawCycle.js +405 -0
  192. package/3rdparty/walkontable/src/table/drawCycle.mjs +403 -0
  193. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.mts +1 -0
  194. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.ts +38 -0
  195. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.js +15 -0
  196. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.mjs +14 -0
  197. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.ts +1 -1
  198. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.js +1 -1
  199. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.mjs +1 -1
  200. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.ts +1 -1
  201. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.ts +1 -1
  202. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.js +1 -1
  203. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.mjs +1 -1
  204. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.mts +2 -0
  205. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.ts +226 -0
  206. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.js +251 -0
  207. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.mjs +241 -0
  208. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.mts +1 -0
  209. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.ts +14 -0
  210. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.js +196 -0
  211. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.mjs +179 -0
  212. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.mts +2 -0
  213. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.ts +16 -0
  214. package/3rdparty/walkontable/src/table/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerTable.js} +9 -12
  215. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.mjs +21 -0
  216. package/3rdparty/walkontable/src/table/regions/bottomTable.d.mts +2 -0
  217. package/3rdparty/walkontable/src/table/regions/bottomTable.d.ts +15 -0
  218. package/3rdparty/walkontable/src/table/regions/bottomTable.js +35 -0
  219. package/3rdparty/walkontable/src/table/regions/bottomTable.mjs +20 -0
  220. package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.mts +2 -0
  221. package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.ts +12 -0
  222. package/3rdparty/walkontable/src/table/regions/inlineStartTable.js +32 -0
  223. package/3rdparty/walkontable/src/table/regions/inlineStartTable.mjs +17 -0
  224. package/3rdparty/walkontable/src/table/regions/masterTable.d.mts +2 -0
  225. package/3rdparty/walkontable/src/table/{master.d.ts → regions/masterTable.d.ts} +4 -13
  226. package/3rdparty/walkontable/src/table/{master.js → regions/masterTable.js} +27 -57
  227. package/3rdparty/walkontable/src/table/{master.mjs → regions/masterTable.mjs} +26 -56
  228. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.mts +2 -0
  229. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.ts +16 -0
  230. package/3rdparty/walkontable/src/table/{topInlineStartCorner.js → regions/topInlineStartCornerTable.js} +9 -12
  231. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.mjs +21 -0
  232. package/3rdparty/walkontable/src/table/regions/topTable.d.mts +2 -0
  233. package/3rdparty/walkontable/src/table/regions/topTable.d.ts +15 -0
  234. package/3rdparty/walkontable/src/table/regions/topTable.js +35 -0
  235. package/3rdparty/walkontable/src/table/regions/topTable.mjs +20 -0
  236. package/3rdparty/walkontable/src/types.d.ts +7 -69
  237. package/3rdparty/walkontable/src/types.mjs +2 -1
  238. package/3rdparty/walkontable/src/utils/pointerToCoords.d.mts +1 -0
  239. package/3rdparty/walkontable/src/utils/{cellCoords.d.ts → pointerToCoords.d.ts} +24 -0
  240. package/3rdparty/walkontable/src/utils/pointerToCoords.js +181 -0
  241. package/3rdparty/walkontable/src/utils/pointerToCoords.mjs +186 -0
  242. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.mts +1 -0
  243. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.ts +40 -0
  244. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.js +139 -0
  245. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.mjs +131 -0
  246. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.mts +1 -0
  247. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.ts +133 -0
  248. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.js +18 -0
  249. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.mjs +18 -0
  250. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.mts +1 -0
  251. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.ts +17 -0
  252. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.js +104 -0
  253. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.mjs +99 -0
  254. package/3rdparty/walkontable/src/viewport/calculatorFactory.d.mts +1 -0
  255. package/3rdparty/walkontable/src/viewport/calculatorFactory.d.ts +84 -0
  256. package/3rdparty/walkontable/src/viewport/calculatorFactory.js +588 -0
  257. package/3rdparty/walkontable/src/viewport/calculatorFactory.mjs +601 -0
  258. package/3rdparty/walkontable/src/viewport/viewport.d.ts +267 -0
  259. package/3rdparty/walkontable/src/viewport/viewport.js +363 -0
  260. package/3rdparty/walkontable/src/viewport/viewport.mjs +355 -0
  261. package/3rdparty/walkontable/src/viewport/workspaceSize.d.mts +1 -0
  262. package/3rdparty/walkontable/src/viewport/workspaceSize.d.ts +59 -0
  263. package/3rdparty/walkontable/src/viewport/workspaceSize.js +284 -0
  264. package/3rdparty/walkontable/src/viewport/workspaceSize.mjs +282 -0
  265. package/3rdparty/walkontable/src/wire.d.mts +1 -0
  266. package/3rdparty/walkontable/src/wire.d.ts +81 -0
  267. package/3rdparty/walkontable/src/wire.js +56 -0
  268. package/3rdparty/walkontable/src/wire.mjs +56 -0
  269. package/LICENSE.txt +1 -1
  270. package/README.md +2 -2
  271. package/base.d.ts +10 -2
  272. package/base.js +2 -2
  273. package/base.mjs +2 -2
  274. package/cellTypes/checkboxType/accessors/valueSetter.d.ts +1 -1
  275. package/cellTypes/checkboxType/accessors/valueSetter.js +3 -1
  276. package/cellTypes/checkboxType/accessors/valueSetter.mjs +3 -1
  277. package/cellTypes/index.d.ts +3 -2
  278. package/cellTypes/index.js +9 -0
  279. package/cellTypes/index.mjs +5 -2
  280. package/cellTypes/intlDatetimeType/index.d.mts +1 -0
  281. package/cellTypes/intlDatetimeType/index.d.ts +1 -0
  282. package/cellTypes/intlDatetimeType/index.js +19 -0
  283. package/cellTypes/intlDatetimeType/index.mjs +1 -0
  284. package/cellTypes/intlDatetimeType/intlDatetimeType.d.mts +1 -0
  285. package/cellTypes/intlDatetimeType/intlDatetimeType.d.ts +16 -0
  286. package/cellTypes/intlDatetimeType/intlDatetimeType.js +31 -0
  287. package/cellTypes/intlDatetimeType/intlDatetimeType.mjs +15 -0
  288. package/cellTypes/multiSelectType/index.d.ts +1 -1
  289. package/cellTypes/multiSelectType/index.js +3 -0
  290. package/cellTypes/multiSelectType/index.mjs +1 -1
  291. package/cellTypes/multiSelectType/multiSelectType.d.ts +1 -0
  292. package/cellTypes/multiSelectType/multiSelectType.js +4 -0
  293. package/cellTypes/multiSelectType/multiSelectType.mjs +1 -0
  294. package/cellTypes/numericType/accessors/valueSetter.js +30 -2
  295. package/cellTypes/numericType/accessors/valueSetter.mjs +31 -3
  296. package/core/coordsMapper/rangeToRenderableMapper.js +5 -12
  297. package/core/coordsMapper/rangeToRenderableMapper.mjs +5 -12
  298. package/core/hooks/bucket.d.ts +40 -6
  299. package/core/hooks/bucket.js +113 -84
  300. package/core/hooks/bucket.mjs +118 -84
  301. package/core/hooks/constants.js +254 -16
  302. package/core/hooks/constants.mjs +254 -16
  303. package/core/hooks/index.js +28 -25
  304. package/core/hooks/index.mjs +28 -25
  305. package/core/layout/constants.d.ts +11 -0
  306. package/core/layout/constants.js +6 -0
  307. package/core/layout/constants.mjs +12 -0
  308. package/core/layout/domSlot.d.ts +3 -1
  309. package/core/layout/domSlot.js +21 -14
  310. package/core/layout/domSlot.mjs +21 -14
  311. package/core/layout/index.d.ts +2 -2
  312. package/core/layout/index.js +6 -0
  313. package/core/layout/index.mjs +2 -2
  314. package/core/layout/layoutManager.d.ts +13 -0
  315. package/core/layout/layoutManager.js +25 -13
  316. package/core/layout/layoutManager.mjs +26 -11
  317. package/core/settings.d.ts +59 -6
  318. package/core/types.d.ts +15 -1
  319. package/core/types.mjs +9 -0
  320. package/core.js +481 -85
  321. package/core.mjs +483 -87
  322. package/dataMap/dataMap.d.ts +3 -13
  323. package/dataMap/dataMap.js +101 -44
  324. package/dataMap/dataMap.mjs +102 -45
  325. package/dataMap/dataSource.js +4 -1
  326. package/dataMap/dataSource.mjs +4 -1
  327. package/dataMap/metaManager/index.d.ts +62 -8
  328. package/dataMap/metaManager/index.js +66 -0
  329. package/dataMap/metaManager/index.mjs +66 -0
  330. package/dataMap/metaManager/lazyFactoryMap.d.ts +68 -43
  331. package/dataMap/metaManager/lazyFactoryMap.js +490 -110
  332. package/dataMap/metaManager/lazyFactoryMap.mjs +504 -111
  333. package/dataMap/metaManager/metaLayers/cellMeta.d.ts +55 -8
  334. package/dataMap/metaManager/metaLayers/cellMeta.js +112 -17
  335. package/dataMap/metaManager/metaLayers/cellMeta.mjs +112 -17
  336. package/dataMap/metaManager/metaLayers/columnMeta.d.ts +2 -1
  337. package/dataMap/metaManager/metaLayers/columnMeta.js +1 -0
  338. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -0
  339. package/dataMap/metaManager/metaSchema.js +712 -31
  340. package/dataMap/metaManager/metaSchema.mjs +712 -31
  341. package/dataMap/metaManager/mods/dynamicCellMeta.d.ts +24 -10
  342. package/dataMap/metaManager/mods/dynamicCellMeta.js +245 -28
  343. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +246 -29
  344. package/dataMap/metaManager/mods/extendMetaProperties.js +4 -9
  345. package/dataMap/metaManager/mods/extendMetaProperties.mjs +4 -9
  346. package/dataMap/sourceDataValidator.d.ts +13 -21
  347. package/dataMap/sourceDataValidator.js +39 -29
  348. package/dataMap/sourceDataValidator.mjs +50 -33
  349. package/dist/handsontable.full.js +34553 -9903
  350. package/dist/handsontable.full.min.js +168 -112
  351. package/dist/handsontable.js +31541 -13409
  352. package/dist/handsontable.min.js +172 -116
  353. package/dist/languages/all.js +2 -1
  354. package/dist/languages/all.min.js +1 -1
  355. package/dist/languages/fa-IR.js +2 -1
  356. package/dist/languages/fa-IR.min.js +1 -1
  357. package/dist/themes/classic.js +9 -3
  358. package/dist/themes/classic.min.js +4 -4
  359. package/dist/themes/horizon.js +9 -3
  360. package/dist/themes/horizon.min.js +4 -4
  361. package/dist/themes/main.js +9 -3
  362. package/dist/themes/main.min.js +4 -4
  363. package/dist/themes/static/variables/colors/ant.js +3 -3
  364. package/dist/themes/static/variables/colors/ant.min.js +3 -3
  365. package/dist/themes/static/variables/colors/classic.js +3 -3
  366. package/dist/themes/static/variables/colors/classic.min.js +3 -3
  367. package/dist/themes/static/variables/colors/horizon.js +3 -3
  368. package/dist/themes/static/variables/colors/horizon.min.js +3 -3
  369. package/dist/themes/static/variables/colors/main.js +3 -3
  370. package/dist/themes/static/variables/colors/main.min.js +3 -3
  371. package/dist/themes/static/variables/colors/material.js +3 -3
  372. package/dist/themes/static/variables/colors/material.min.js +3 -3
  373. package/dist/themes/static/variables/colors/shadcn.js +3 -3
  374. package/dist/themes/static/variables/colors/shadcn.min.js +3 -3
  375. package/dist/themes/static/variables/density.js +3 -3
  376. package/dist/themes/static/variables/density.min.js +3 -3
  377. package/dist/themes/static/variables/helpers/iconsMap.js +4 -9
  378. package/dist/themes/static/variables/helpers/iconsMap.min.js +4 -9
  379. package/dist/themes/static/variables/icons/horizon.js +3 -3
  380. package/dist/themes/static/variables/icons/horizon.min.js +3 -3
  381. package/dist/themes/static/variables/icons/main.js +3 -3
  382. package/dist/themes/static/variables/icons/main.min.js +3 -3
  383. package/dist/themes/static/variables/sizing.js +3 -3
  384. package/dist/themes/static/variables/sizing.min.js +3 -3
  385. package/dist/themes/static/variables/tokens/classic.js +9 -3
  386. package/dist/themes/static/variables/tokens/classic.min.js +4 -4
  387. package/dist/themes/static/variables/tokens/horizon.js +9 -3
  388. package/dist/themes/static/variables/tokens/horizon.min.js +4 -4
  389. package/dist/themes/static/variables/tokens/main.js +9 -3
  390. package/dist/themes/static/variables/tokens/main.min.js +4 -4
  391. package/editorManager.js +1 -3
  392. package/editorManager.mjs +1 -3
  393. package/editors/autocompleteEditor/autocompleteEditor.js +48 -22
  394. package/editors/autocompleteEditor/autocompleteEditor.mjs +48 -22
  395. package/editors/baseEditor/baseEditor.d.ts +15 -3
  396. package/editors/baseEditor/baseEditor.js +6 -6
  397. package/editors/baseEditor/baseEditor.mjs +16 -6
  398. package/editors/factory.js +5 -2
  399. package/editors/factory.mjs +5 -2
  400. package/editors/index.d.ts +3 -2
  401. package/editors/index.js +8 -0
  402. package/editors/index.mjs +3 -1
  403. package/editors/intlDatetimeEditor/index.d.mts +1 -0
  404. package/editors/intlDatetimeEditor/index.d.ts +1 -0
  405. package/editors/intlDatetimeEditor/index.js +19 -0
  406. package/editors/intlDatetimeEditor/index.mjs +1 -0
  407. package/editors/intlDatetimeEditor/intlDatetimeEditor.d.mts +1 -0
  408. package/editors/intlDatetimeEditor/intlDatetimeEditor.d.ts +42 -0
  409. package/editors/intlDatetimeEditor/intlDatetimeEditor.js +108 -0
  410. package/editors/intlDatetimeEditor/intlDatetimeEditor.mjs +93 -0
  411. package/editors/multiSelectEditor/controllers/dropdownController.js +5 -12
  412. package/editors/multiSelectEditor/controllers/dropdownController.mjs +5 -12
  413. package/editors/multiSelectEditor/controllers/inputController.js +1 -3
  414. package/editors/multiSelectEditor/controllers/inputController.mjs +1 -3
  415. package/editors/multiSelectEditor/multiSelectEditor.js +16 -21
  416. package/editors/multiSelectEditor/multiSelectEditor.mjs +17 -22
  417. package/editors/passwordEditor/passwordEditor.js +5 -12
  418. package/editors/passwordEditor/passwordEditor.mjs +5 -12
  419. package/editors/registry.js +4 -9
  420. package/editors/registry.mjs +4 -9
  421. package/editors/textEditor/textEditor.js +1 -1
  422. package/editors/textEditor/textEditor.mjs +2 -2
  423. package/eventManager.d.ts +3 -3
  424. package/focusManager/grid.d.ts +28 -0
  425. package/focusManager/grid.js +84 -14
  426. package/focusManager/grid.mjs +80 -15
  427. package/focusManager/scopeManager.js +1 -1
  428. package/focusManager/scopeManager.mjs +2 -2
  429. package/handsontable-non-commercial-license.pdf +0 -0
  430. package/helpers/array.d.ts +25 -0
  431. package/helpers/array.js +41 -4
  432. package/helpers/array.mjs +56 -4
  433. package/helpers/dateTime.d.ts +14 -0
  434. package/helpers/dateTime.js +74 -2
  435. package/helpers/dateTime.mjs +73 -2
  436. package/helpers/dom/cellCoords.js +156 -13
  437. package/helpers/dom/cellCoords.mjs +156 -13
  438. package/helpers/dom/element.d.ts +27 -3
  439. package/helpers/dom/element.js +92 -16
  440. package/helpers/dom/element.mjs +107 -17
  441. package/helpers/dom/event.d.ts +58 -0
  442. package/helpers/dom/event.js +39 -0
  443. package/helpers/dom/event.mjs +63 -0
  444. package/helpers/errors.d.ts +5 -0
  445. package/helpers/errors.js +10 -6
  446. package/helpers/errors.mjs +10 -6
  447. package/helpers/feature.d.ts +19 -0
  448. package/helpers/feature.js +21 -0
  449. package/helpers/feature.mjs +30 -0
  450. package/helpers/function.d.ts +1 -1
  451. package/helpers/function.js +4 -1
  452. package/helpers/function.mjs +4 -1
  453. package/helpers/mixed.d.ts +103 -0
  454. package/helpers/mixed.js +373 -4
  455. package/helpers/mixed.mjs +413 -4
  456. package/helpers/moves.js +2 -1
  457. package/helpers/moves.mjs +2 -1
  458. package/helpers/number.d.ts +22 -0
  459. package/helpers/number.js +49 -0
  460. package/helpers/number.mjs +66 -0
  461. package/i18n/languages/ar-AR.js +8 -19
  462. package/i18n/languages/cs-CZ.js +8 -19
  463. package/i18n/languages/de-CH.js +8 -19
  464. package/i18n/languages/de-DE.js +8 -19
  465. package/i18n/languages/en-US.js +8 -19
  466. package/i18n/languages/es-MX.js +8 -19
  467. package/i18n/languages/fa-IR.d.ts +1 -0
  468. package/i18n/languages/fa-IR.js +9 -19
  469. package/i18n/languages/fa-IR.mjs +1 -0
  470. package/i18n/languages/fr-FR.js +8 -19
  471. package/i18n/languages/hr-HR.js +8 -19
  472. package/i18n/languages/it-IT.js +8 -19
  473. package/i18n/languages/ja-JP.js +8 -19
  474. package/i18n/languages/ko-KR.js +8 -19
  475. package/i18n/languages/lv-LV.js +8 -19
  476. package/i18n/languages/nb-NO.js +8 -19
  477. package/i18n/languages/nl-NL.js +8 -19
  478. package/i18n/languages/pl-PL.js +8 -19
  479. package/i18n/languages/pt-BR.js +8 -19
  480. package/i18n/languages/ru-RU.js +8 -19
  481. package/i18n/languages/sr-SP.js +8 -19
  482. package/i18n/languages/zh-CN.js +8 -19
  483. package/i18n/languages/zh-TW.js +8 -19
  484. package/i18n/registry.js +8 -19
  485. package/index.d.ts +2 -2
  486. package/index.js +8 -19
  487. package/languages/all.js +2 -1
  488. package/languages/fa-IR.js +2 -1
  489. package/languages/fa-IR.mjs +1 -0
  490. package/languages/index.js +2 -1
  491. package/package.json +61 -1
  492. package/plugins/autoColumnSize/autoColumnSize.d.ts +24 -1
  493. package/plugins/autoColumnSize/autoColumnSize.js +506 -94
  494. package/plugins/autoColumnSize/autoColumnSize.mjs +513 -95
  495. package/plugins/autoRowSize/autoRowSize.d.ts +40 -5
  496. package/plugins/autoRowSize/autoRowSize.js +73 -36
  497. package/plugins/autoRowSize/autoRowSize.mjs +103 -41
  498. package/plugins/autofill/autofill.js +35 -24
  499. package/plugins/autofill/autofill.mjs +35 -24
  500. package/plugins/base/base.d.ts +10 -0
  501. package/plugins/base/base.js +5 -12
  502. package/plugins/base/base.mjs +5 -12
  503. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +4 -9
  504. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +4 -9
  505. package/plugins/collapsibleColumns/collapsibleColumns.d.ts +4 -0
  506. package/plugins/collapsibleColumns/collapsibleColumns.js +94 -20
  507. package/plugins/collapsibleColumns/collapsibleColumns.mjs +98 -20
  508. package/plugins/columnSorting/columnSorting.d.ts +31 -2
  509. package/plugins/columnSorting/columnSorting.js +153 -33
  510. package/plugins/columnSorting/columnSorting.mjs +155 -35
  511. package/plugins/columnSorting/columnStatesManager.d.ts +1 -1
  512. package/plugins/columnSorting/columnStatesManager.js +1 -7
  513. package/plugins/columnSorting/columnStatesManager.mjs +1 -7
  514. package/plugins/columnSorting/domHelpers.d.ts +3 -0
  515. package/plugins/columnSorting/domHelpers.js +9 -0
  516. package/plugins/columnSorting/domHelpers.mjs +3 -3
  517. package/plugins/columnSorting/rootComparator.js +21 -16
  518. package/plugins/columnSorting/rootComparator.mjs +21 -16
  519. package/plugins/columnSorting/sortFunction/checkbox.js +7 -5
  520. package/plugins/columnSorting/sortFunction/checkbox.mjs +7 -5
  521. package/plugins/columnSorting/sortFunction/default.js +15 -4
  522. package/plugins/columnSorting/sortFunction/default.mjs +15 -4
  523. package/plugins/columnSorting/sortFunction/intlDatetime.d.mts +1 -0
  524. package/plugins/columnSorting/sortFunction/intlDatetime.d.ts +10 -0
  525. package/plugins/columnSorting/sortFunction/intlDatetime.js +23 -0
  526. package/plugins/columnSorting/sortFunction/intlDatetime.mjs +12 -0
  527. package/plugins/columnSorting/sortService/registry.js +2 -0
  528. package/plugins/columnSorting/sortService/registry.mjs +2 -0
  529. package/plugins/columnSorting/utils.d.ts +8 -0
  530. package/plugins/columnSorting/utils.js +37 -45
  531. package/plugins/columnSorting/utils.mjs +42 -47
  532. package/plugins/columnSummary/columnSummary.js +13 -14
  533. package/plugins/columnSummary/columnSummary.mjs +13 -14
  534. package/plugins/columnSummary/endpoints.d.ts +69 -2
  535. package/plugins/columnSummary/endpoints.js +176 -29
  536. package/plugins/columnSummary/endpoints.mjs +176 -29
  537. package/plugins/comments/commentEditor.js +5 -10
  538. package/plugins/comments/commentEditor.mjs +6 -11
  539. package/plugins/comments/comments.js +5 -12
  540. package/plugins/comments/comments.mjs +5 -12
  541. package/plugins/comments/contextMenuItem/addEditComment.js +8 -19
  542. package/plugins/comments/contextMenuItem/readOnlyComment.js +8 -19
  543. package/plugins/comments/contextMenuItem/removeComment.js +8 -19
  544. package/plugins/comments/editorResizeObserver.js +5 -12
  545. package/plugins/comments/editorResizeObserver.mjs +5 -12
  546. package/plugins/contextMenu/contextMenu.d.ts +12 -1
  547. package/plugins/contextMenu/contextMenu.js +34 -15
  548. package/plugins/contextMenu/contextMenu.mjs +34 -15
  549. package/plugins/contextMenu/index.d.ts +1 -1
  550. package/plugins/contextMenu/menu/menu.d.ts +22 -1
  551. package/plugins/contextMenu/menu/menu.js +216 -15
  552. package/plugins/contextMenu/menu/menu.mjs +217 -16
  553. package/plugins/contextMenu/menu/positioner.js +4 -9
  554. package/plugins/contextMenu/menu/positioner.mjs +4 -9
  555. package/plugins/contextMenu/predefinedItems/alignment.js +22 -33
  556. package/plugins/contextMenu/predefinedItems/alignment.mjs +14 -14
  557. package/plugins/contextMenu/predefinedItems/clearColumn.js +9 -20
  558. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -1
  559. package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -19
  560. package/plugins/contextMenu/predefinedItems/columnRight.js +8 -19
  561. package/plugins/contextMenu/predefinedItems/index.js +8 -19
  562. package/plugins/contextMenu/predefinedItems/readOnly.js +11 -22
  563. package/plugins/contextMenu/predefinedItems/readOnly.mjs +3 -3
  564. package/plugins/contextMenu/predefinedItems/redo.js +8 -19
  565. package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -19
  566. package/plugins/contextMenu/predefinedItems/removeRow.js +8 -19
  567. package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -19
  568. package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -19
  569. package/plugins/contextMenu/predefinedItems/undo.js +8 -19
  570. package/plugins/contextMenu/utils.js +1 -1
  571. package/plugins/contextMenu/utils.mjs +1 -1
  572. package/plugins/copyPaste/contextMenuItem/cut.js +8 -19
  573. package/plugins/copyPaste/copyPaste.js +62 -20
  574. package/plugins/copyPaste/copyPaste.mjs +63 -21
  575. package/plugins/copyPaste/copyableRanges.js +11 -14
  576. package/plugins/copyPaste/copyableRanges.mjs +11 -14
  577. package/plugins/copyPaste/pasteEvent.d.ts +1 -1
  578. package/plugins/customBorders/contextMenuItem/bottom.js +8 -19
  579. package/plugins/customBorders/contextMenuItem/left.js +8 -19
  580. package/plugins/customBorders/contextMenuItem/noBorders.js +8 -19
  581. package/plugins/customBorders/contextMenuItem/right.js +8 -19
  582. package/plugins/customBorders/contextMenuItem/top.js +8 -19
  583. package/plugins/customBorders/customBorders.d.ts +21 -40
  584. package/plugins/customBorders/customBorders.js +1084 -223
  585. package/plugins/customBorders/customBorders.mjs +1078 -206
  586. package/plugins/customBorders/utils.d.ts +71 -0
  587. package/plugins/customBorders/utils.js +63 -0
  588. package/plugins/customBorders/utils.mjs +101 -0
  589. package/plugins/dataProvider/dataProvider.js +35 -38
  590. package/plugins/dataProvider/dataProvider.mjs +27 -19
  591. package/plugins/dataProvider/query/crud.js +1 -1
  592. package/plugins/dataProvider/query/crud.mjs +1 -1
  593. package/plugins/dialog/dialog.js +15 -33
  594. package/plugins/dialog/dialog.mjs +7 -14
  595. package/plugins/dialog/ui.js +5 -12
  596. package/plugins/dialog/ui.mjs +5 -12
  597. package/plugins/dragToScroll/autoScroller.js +4 -9
  598. package/plugins/dragToScroll/autoScroller.mjs +4 -9
  599. package/plugins/dragToScroll/dragToScroll.d.ts +2 -2
  600. package/plugins/dragToScroll/dragToScroll.js +155 -26
  601. package/plugins/dragToScroll/dragToScroll.mjs +156 -27
  602. package/plugins/dragToScroll/scrollTimer.js +4 -9
  603. package/plugins/dragToScroll/scrollTimer.mjs +4 -9
  604. package/plugins/dropdownMenu/dropdownMenu.d.ts +5 -1
  605. package/plugins/dropdownMenu/dropdownMenu.js +50 -15
  606. package/plugins/dropdownMenu/dropdownMenu.mjs +51 -16
  607. package/plugins/dropdownMenu/index.d.ts +1 -0
  608. package/plugins/emptyDataState/emptyDataState.js +15 -33
  609. package/plugins/emptyDataState/emptyDataState.mjs +7 -14
  610. package/plugins/emptyDataState/ui.js +4 -9
  611. package/plugins/emptyDataState/ui.mjs +4 -9
  612. package/plugins/exportFile/dataProvider.js +5 -1
  613. package/plugins/exportFile/dataProvider.mjs +5 -1
  614. package/plugins/exportFile/exportFile.js +13 -31
  615. package/plugins/exportFile/exportFile.mjs +5 -12
  616. package/plugins/exportFile/types/csv.js +1 -3
  617. package/plugins/exportFile/types/csv.mjs +1 -3
  618. package/plugins/exportFile/types/xlsx/cell-style.js +4 -2
  619. package/plugins/exportFile/types/xlsx/cell-style.mjs +4 -2
  620. package/plugins/exportFile/types/xlsx/date-utils.d.ts +15 -0
  621. package/plugins/exportFile/types/xlsx/date-utils.js +31 -0
  622. package/plugins/exportFile/types/xlsx/date-utils.mjs +36 -0
  623. package/plugins/exportFile/types/xlsx.js +10 -3
  624. package/plugins/exportFile/types/xlsx.mjs +11 -4
  625. package/plugins/filters/component/_base.d.ts +1 -2
  626. package/plugins/filters/component/_base.js +1 -2
  627. package/plugins/filters/component/_base.mjs +1 -2
  628. package/plugins/filters/component/actionBar.js +9 -22
  629. package/plugins/filters/component/actionBar.mjs +1 -3
  630. package/plugins/filters/component/condition.d.ts +1 -0
  631. package/plugins/filters/component/condition.js +11 -22
  632. package/plugins/filters/component/condition.mjs +3 -3
  633. package/plugins/filters/component/operators.js +1 -3
  634. package/plugins/filters/component/operators.mjs +1 -3
  635. package/plugins/filters/component/value.d.ts +5 -6
  636. package/plugins/filters/component/value.js +62 -56
  637. package/plugins/filters/component/value.mjs +55 -38
  638. package/plugins/filters/condition/beginsWith.js +8 -19
  639. package/plugins/filters/condition/between.js +8 -19
  640. package/plugins/filters/condition/contains.js +8 -19
  641. package/plugins/filters/condition/date/after.js +10 -20
  642. package/plugins/filters/condition/date/after.mjs +2 -1
  643. package/plugins/filters/condition/date/afterOrEqual.js +10 -20
  644. package/plugins/filters/condition/date/afterOrEqual.mjs +2 -1
  645. package/plugins/filters/condition/date/before.js +10 -20
  646. package/plugins/filters/condition/date/before.mjs +2 -1
  647. package/plugins/filters/condition/date/beforeOrEqual.js +10 -20
  648. package/plugins/filters/condition/date/beforeOrEqual.mjs +2 -1
  649. package/plugins/filters/condition/date/today.js +8 -19
  650. package/plugins/filters/condition/date/tomorrow.js +8 -19
  651. package/plugins/filters/condition/date/yesterday.js +8 -19
  652. package/plugins/filters/condition/empty.js +8 -19
  653. package/plugins/filters/condition/endsWith.js +8 -19
  654. package/plugins/filters/condition/equal.d.ts +7 -0
  655. package/plugins/filters/condition/equal.js +12 -19
  656. package/plugins/filters/condition/equal.mjs +10 -0
  657. package/plugins/filters/condition/greaterThan.js +8 -19
  658. package/plugins/filters/condition/greaterThanOrEqual.js +8 -19
  659. package/plugins/filters/condition/intlDate/after.js +8 -19
  660. package/plugins/filters/condition/intlDate/afterOrEqual.js +8 -19
  661. package/plugins/filters/condition/intlDate/before.js +8 -19
  662. package/plugins/filters/condition/intlDate/beforeOrEqual.js +8 -19
  663. package/plugins/filters/condition/intlDate/between.js +8 -19
  664. package/plugins/filters/condition/intlDate/today.js +8 -19
  665. package/plugins/filters/condition/intlDate/tomorrow.js +8 -19
  666. package/plugins/filters/condition/intlDate/yesterday.js +8 -19
  667. package/plugins/filters/condition/intlDatetime/after.d.mts +1 -0
  668. package/plugins/filters/condition/intlDatetime/after.d.ts +18 -0
  669. package/plugins/filters/condition/intlDatetime/after.js +66 -0
  670. package/plugins/filters/condition/intlDatetime/after.mjs +22 -0
  671. package/plugins/filters/condition/intlDatetime/afterOrEqual.d.mts +1 -0
  672. package/plugins/filters/condition/intlDatetime/afterOrEqual.d.ts +18 -0
  673. package/plugins/filters/condition/intlDatetime/afterOrEqual.js +66 -0
  674. package/plugins/filters/condition/intlDatetime/afterOrEqual.mjs +22 -0
  675. package/plugins/filters/condition/intlDatetime/before.d.mts +1 -0
  676. package/plugins/filters/condition/intlDatetime/before.d.ts +18 -0
  677. package/plugins/filters/condition/intlDatetime/before.js +66 -0
  678. package/plugins/filters/condition/intlDatetime/before.mjs +22 -0
  679. package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.mts +1 -0
  680. package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.ts +18 -0
  681. package/plugins/filters/condition/intlDatetime/beforeOrEqual.js +66 -0
  682. package/plugins/filters/condition/intlDatetime/beforeOrEqual.mjs +22 -0
  683. package/plugins/filters/condition/intlDatetime/between.d.mts +1 -0
  684. package/plugins/filters/condition/intlDatetime/between.d.ts +18 -0
  685. package/plugins/filters/condition/intlDatetime/between.js +67 -0
  686. package/plugins/filters/condition/intlDatetime/between.mjs +23 -0
  687. package/plugins/filters/condition/intlDatetime/today.d.mts +1 -0
  688. package/plugins/filters/condition/intlDatetime/today.d.ts +17 -0
  689. package/plugins/filters/condition/intlDatetime/today.js +65 -0
  690. package/plugins/filters/condition/intlDatetime/today.mjs +20 -0
  691. package/plugins/filters/condition/intlDatetime/tomorrow.d.mts +1 -0
  692. package/plugins/filters/condition/intlDatetime/tomorrow.d.ts +17 -0
  693. package/plugins/filters/condition/intlDatetime/tomorrow.js +66 -0
  694. package/plugins/filters/condition/intlDatetime/tomorrow.mjs +21 -0
  695. package/plugins/filters/condition/intlDatetime/yesterday.d.mts +1 -0
  696. package/plugins/filters/condition/intlDatetime/yesterday.d.ts +17 -0
  697. package/plugins/filters/condition/intlDatetime/yesterday.js +66 -0
  698. package/plugins/filters/condition/intlDatetime/yesterday.mjs +21 -0
  699. package/plugins/filters/condition/intlTime/after.js +8 -19
  700. package/plugins/filters/condition/intlTime/afterOrEqual.js +8 -19
  701. package/plugins/filters/condition/intlTime/before.js +8 -19
  702. package/plugins/filters/condition/intlTime/beforeOrEqual.js +8 -19
  703. package/plugins/filters/condition/intlTime/between.js +8 -19
  704. package/plugins/filters/condition/lessThan.js +8 -19
  705. package/plugins/filters/condition/lessThanOrEqual.js +8 -19
  706. package/plugins/filters/condition/none.js +8 -19
  707. package/plugins/filters/condition/notBetween.js +8 -19
  708. package/plugins/filters/condition/notContains.js +8 -19
  709. package/plugins/filters/condition/notEmpty.js +8 -19
  710. package/plugins/filters/condition/notEqual.js +8 -19
  711. package/plugins/filters/conditionCollection.js +4 -7
  712. package/plugins/filters/conditionCollection.mjs +4 -7
  713. package/plugins/filters/conditionUpdateObserver.d.ts +2 -2
  714. package/plugins/filters/conditionUpdateObserver.js +144 -52
  715. package/plugins/filters/conditionUpdateObserver.mjs +144 -52
  716. package/plugins/filters/constants.d.ts +1 -0
  717. package/plugins/filters/constants.js +31 -0
  718. package/plugins/filters/constants.mjs +28 -0
  719. package/plugins/filters/dataFilter.d.ts +4 -12
  720. package/plugins/filters/dataFilter.js +7 -19
  721. package/plugins/filters/dataFilter.mjs +8 -20
  722. package/plugins/filters/filters.d.ts +33 -9
  723. package/plugins/filters/filters.js +104 -62
  724. package/plugins/filters/filters.mjs +97 -44
  725. package/plugins/filters/logicalOperations/conjunction.js +8 -19
  726. package/plugins/filters/logicalOperations/disjunction.js +8 -19
  727. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +8 -19
  728. package/plugins/filters/sortComparators.d.ts +9 -2
  729. package/plugins/filters/sortComparators.js +34 -1
  730. package/plugins/filters/sortComparators.mjs +38 -3
  731. package/plugins/filters/ui/_base.js +8 -19
  732. package/plugins/filters/ui/input.d.ts +4 -0
  733. package/plugins/filters/ui/input.js +23 -18
  734. package/plugins/filters/ui/input.mjs +23 -18
  735. package/plugins/filters/ui/link.js +4 -9
  736. package/plugins/filters/ui/link.mjs +4 -9
  737. package/plugins/filters/ui/multipleSelect.js +40 -35
  738. package/plugins/filters/ui/multipleSelect.mjs +32 -16
  739. package/plugins/filters/ui/radioInput.js +4 -9
  740. package/plugins/filters/ui/radioInput.mjs +4 -9
  741. package/plugins/filters/ui/select.js +14 -32
  742. package/plugins/filters/ui/select.mjs +6 -13
  743. package/plugins/formulas/engine/register.d.ts +5 -4
  744. package/plugins/formulas/engine/register.js +5 -2
  745. package/plugins/formulas/engine/register.mjs +9 -5
  746. package/plugins/formulas/engine/settings.d.ts +2 -6
  747. package/plugins/formulas/engine/settings.js +29 -4
  748. package/plugins/formulas/engine/settings.mjs +29 -4
  749. package/plugins/formulas/engine/types.d.ts +12 -2
  750. package/plugins/formulas/formulas.d.ts +39 -0
  751. package/plugins/formulas/formulas.js +748 -55
  752. package/plugins/formulas/formulas.mjs +752 -57
  753. package/plugins/formulas/hyperlinkUrl.d.mts +1 -0
  754. package/plugins/formulas/hyperlinkUrl.d.ts +12 -0
  755. package/plugins/formulas/hyperlinkUrl.js +32 -0
  756. package/plugins/formulas/hyperlinkUrl.mjs +32 -0
  757. package/plugins/formulas/indexSyncer/axisSyncer.d.ts +1 -0
  758. package/plugins/formulas/indexSyncer/axisSyncer.js +77 -27
  759. package/plugins/formulas/indexSyncer/axisSyncer.mjs +77 -27
  760. package/plugins/formulas/indexSyncer/index.js +4 -9
  761. package/plugins/formulas/indexSyncer/index.mjs +4 -9
  762. package/plugins/formulas/utils.d.ts +9 -0
  763. package/plugins/formulas/utils.js +21 -0
  764. package/plugins/formulas/utils.mjs +25 -0
  765. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +8 -19
  766. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +14 -20
  767. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +6 -1
  768. package/plugins/hiddenColumns/hiddenColumns.js +11 -15
  769. package/plugins/hiddenColumns/hiddenColumns.mjs +11 -15
  770. package/plugins/hiddenRows/contextMenuItem/hideRow.js +8 -19
  771. package/plugins/hiddenRows/contextMenuItem/showRow.js +14 -20
  772. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +6 -1
  773. package/plugins/hiddenRows/hiddenRows.js +11 -15
  774. package/plugins/hiddenRows/hiddenRows.mjs +11 -15
  775. package/plugins/index.d.ts +5 -1
  776. package/plugins/index.js +10 -0
  777. package/plugins/index.mjs +5 -1
  778. package/plugins/loading/loading.js +13 -31
  779. package/plugins/loading/loading.mjs +5 -12
  780. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +8 -19
  781. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +8 -19
  782. package/plugins/manualColumnFreeze/manualColumnFreeze.js +5 -12
  783. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +5 -12
  784. package/plugins/manualColumnMove/manualColumnMove.d.ts +10 -0
  785. package/plugins/manualColumnMove/manualColumnMove.js +128 -33
  786. package/plugins/manualColumnMove/manualColumnMove.mjs +129 -34
  787. package/plugins/manualColumnResize/manualColumnResize.d.ts +12 -1
  788. package/plugins/manualColumnResize/manualColumnResize.js +28 -17
  789. package/plugins/manualColumnResize/manualColumnResize.mjs +28 -17
  790. package/plugins/manualRowMove/manualRowMove.js +5 -12
  791. package/plugins/manualRowMove/manualRowMove.mjs +5 -12
  792. package/plugins/manualRowResize/manualRowResize.d.ts +13 -2
  793. package/plugins/manualRowResize/manualRowResize.js +29 -18
  794. package/plugins/manualRowResize/manualRowResize.mjs +29 -18
  795. package/plugins/mergeCells/cellCoords.d.ts +8 -0
  796. package/plugins/mergeCells/cellCoords.js +15 -9
  797. package/plugins/mergeCells/cellCoords.mjs +15 -9
  798. package/plugins/mergeCells/cellsCollection.d.ts +46 -2
  799. package/plugins/mergeCells/cellsCollection.js +190 -71
  800. package/plugins/mergeCells/cellsCollection.mjs +190 -71
  801. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +8 -19
  802. package/plugins/mergeCells/focusOrder.d.ts +26 -20
  803. package/plugins/mergeCells/focusOrder.js +363 -189
  804. package/plugins/mergeCells/focusOrder.mjs +368 -184
  805. package/plugins/mergeCells/mergeCells.d.ts +13 -8
  806. package/plugins/mergeCells/mergeCells.js +327 -76
  807. package/plugins/mergeCells/mergeCells.mjs +327 -76
  808. package/plugins/moveCells/helpers.d.mts +1 -0
  809. package/plugins/moveCells/helpers.d.ts +21 -0
  810. package/plugins/moveCells/helpers.js +20 -0
  811. package/plugins/moveCells/helpers.mjs +15 -0
  812. package/plugins/moveCells/index.d.mts +1 -0
  813. package/plugins/moveCells/index.d.ts +1 -0
  814. package/plugins/moveCells/index.js +22 -0
  815. package/plugins/moveCells/index.mjs +1 -0
  816. package/plugins/moveCells/moveCells.d.mts +1 -0
  817. package/plugins/moveCells/moveCells.d.ts +80 -0
  818. package/plugins/moveCells/moveCells.js +595 -0
  819. package/plugins/moveCells/moveCells.mjs +580 -0
  820. package/plugins/multiColumnSorting/multiColumnSorting.d.ts +8 -8
  821. package/plugins/multiColumnSorting/multiColumnSorting.js +11 -16
  822. package/plugins/multiColumnSorting/multiColumnSorting.mjs +11 -16
  823. package/plugins/multiColumnSorting/rootComparator.js +26 -19
  824. package/plugins/multiColumnSorting/rootComparator.mjs +26 -19
  825. package/plugins/multipleSelectionHandles/multipleSelectionHandles.d.ts +19 -4
  826. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +266 -58
  827. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +266 -58
  828. package/plugins/nestedHeaders/nestedHeaders.d.ts +10 -1
  829. package/plugins/nestedHeaders/nestedHeaders.js +227 -35
  830. package/plugins/nestedHeaders/nestedHeaders.mjs +227 -35
  831. package/plugins/nestedHeaders/stateManager/columnArrangement.d.mts +1 -0
  832. package/plugins/nestedHeaders/stateManager/columnArrangement.d.ts +37 -0
  833. package/plugins/nestedHeaders/stateManager/columnArrangement.js +35 -0
  834. package/plugins/nestedHeaders/stateManager/columnArrangement.mjs +30 -0
  835. package/plugins/nestedHeaders/stateManager/deriveSettings.d.mts +1 -0
  836. package/plugins/nestedHeaders/stateManager/deriveSettings.d.ts +57 -0
  837. package/plugins/nestedHeaders/stateManager/deriveSettings.js +115 -0
  838. package/plugins/nestedHeaders/stateManager/deriveSettings.mjs +135 -0
  839. package/plugins/nestedHeaders/stateManager/headersTree.d.ts +14 -1
  840. package/plugins/nestedHeaders/stateManager/headersTree.js +4 -9
  841. package/plugins/nestedHeaders/stateManager/headersTree.mjs +4 -9
  842. package/plugins/nestedHeaders/stateManager/index.d.ts +76 -13
  843. package/plugins/nestedHeaders/stateManager/index.js +386 -50
  844. package/plugins/nestedHeaders/stateManager/index.mjs +387 -51
  845. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +3 -2
  846. package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +3 -2
  847. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
  848. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
  849. package/plugins/nestedHeaders/stateManager/sourceSettings.d.ts +23 -6
  850. package/plugins/nestedHeaders/stateManager/sourceSettings.js +24 -13
  851. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +24 -13
  852. package/plugins/nestedHeaders/stateManager/utils.d.ts +17 -1
  853. package/plugins/nestedHeaders/stateManager/utils.js +6 -1
  854. package/plugins/nestedHeaders/stateManager/utils.mjs +6 -1
  855. package/plugins/nestedHeaders/utils/ghostTable.js +1 -3
  856. package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -3
  857. package/plugins/nestedRows/data/dataManager.d.ts +4 -1
  858. package/plugins/nestedRows/data/dataManager.js +10 -4
  859. package/plugins/nestedRows/data/dataManager.mjs +10 -4
  860. package/plugins/nestedRows/nestedRows.d.ts +127 -1
  861. package/plugins/nestedRows/nestedRows.js +332 -17
  862. package/plugins/nestedRows/nestedRows.mjs +332 -17
  863. package/plugins/nestedRows/ui/collapsing.d.ts +58 -0
  864. package/plugins/nestedRows/ui/collapsing.js +234 -40
  865. package/plugins/nestedRows/ui/collapsing.mjs +234 -40
  866. package/plugins/nestedRows/ui/contextMenu.js +12 -28
  867. package/plugins/nestedRows/ui/contextMenu.mjs +4 -9
  868. package/plugins/notification/notification.js +13 -31
  869. package/plugins/notification/notification.mjs +5 -12
  870. package/plugins/notification/ui.js +4 -9
  871. package/plugins/notification/ui.mjs +4 -9
  872. package/plugins/pagination/pagination.js +7 -14
  873. package/plugins/pagination/pagination.mjs +7 -14
  874. package/plugins/pagination/ui.js +13 -31
  875. package/plugins/pagination/ui.mjs +5 -12
  876. package/plugins/search/search.js +27 -11
  877. package/plugins/search/search.mjs +27 -11
  878. package/plugins/selectionHandles/helpers.d.mts +1 -0
  879. package/plugins/selectionHandles/helpers.d.ts +17 -0
  880. package/plugins/selectionHandles/helpers.js +16 -0
  881. package/plugins/selectionHandles/helpers.mjs +11 -0
  882. package/plugins/selectionHandles/index.d.mts +1 -0
  883. package/plugins/selectionHandles/index.d.ts +1 -0
  884. package/plugins/selectionHandles/index.js +22 -0
  885. package/plugins/selectionHandles/index.mjs +1 -0
  886. package/plugins/selectionHandles/selectionHandles.d.mts +1 -0
  887. package/plugins/selectionHandles/selectionHandles.d.ts +52 -0
  888. package/plugins/selectionHandles/selectionHandles.js +335 -0
  889. package/plugins/selectionHandles/selectionHandles.mjs +316 -0
  890. package/plugins/stretchColumns/calculator.js +5 -12
  891. package/plugins/stretchColumns/calculator.mjs +5 -12
  892. package/plugins/stretchColumns/strategies/last.js +4 -9
  893. package/plugins/stretchColumns/strategies/last.mjs +4 -9
  894. package/plugins/stretchColumns/stretchColumns.js +4 -9
  895. package/plugins/stretchColumns/stretchColumns.mjs +4 -9
  896. package/plugins/touchScroll/touchScroll.js +4 -9
  897. package/plugins/touchScroll/touchScroll.mjs +4 -9
  898. package/plugins/trimRows/trimRows.d.ts +1 -1
  899. package/plugins/trimRows/trimRows.js +10 -11
  900. package/plugins/trimRows/trimRows.mjs +10 -11
  901. package/plugins/types.d.ts +4 -0
  902. package/plugins/undoRedo/actions/cellAlignment.js +1 -1
  903. package/plugins/undoRedo/actions/cellAlignment.mjs +1 -1
  904. package/plugins/undoRedo/actions/createColumn.js +4 -1
  905. package/plugins/undoRedo/actions/createColumn.mjs +4 -1
  906. package/plugins/undoRedo/actions/createRow.js +4 -1
  907. package/plugins/undoRedo/actions/createRow.mjs +4 -1
  908. package/plugins/undoRedo/actions/fixedCounts.d.mts +1 -0
  909. package/plugins/undoRedo/actions/fixedCounts.d.ts +36 -0
  910. package/plugins/undoRedo/actions/fixedCounts.js +63 -0
  911. package/plugins/undoRedo/actions/fixedCounts.mjs +62 -0
  912. package/plugins/undoRedo/actions/index.js +2 -0
  913. package/plugins/undoRedo/actions/index.mjs +2 -0
  914. package/plugins/undoRedo/actions/moveCells.d.mts +1 -0
  915. package/plugins/undoRedo/actions/moveCells.d.ts +104 -0
  916. package/plugins/undoRedo/actions/moveCells.js +225 -0
  917. package/plugins/undoRedo/actions/moveCells.mjs +227 -0
  918. package/plugins/undoRedo/actions/removeColumn.d.ts +18 -2
  919. package/plugins/undoRedo/actions/removeColumn.js +11 -4
  920. package/plugins/undoRedo/actions/removeColumn.mjs +12 -5
  921. package/plugins/undoRedo/actions/removeRow.js +2 -57
  922. package/plugins/undoRedo/actions/removeRow.mjs +2 -57
  923. package/plugins/undoRedo/undoRedo.d.ts +26 -0
  924. package/plugins/undoRedo/undoRedo.js +40 -11
  925. package/plugins/undoRedo/undoRedo.mjs +40 -11
  926. package/plugins/undoRedo/utils.d.ts +29 -0
  927. package/plugins/undoRedo/utils.js +55 -3
  928. package/plugins/undoRedo/utils.mjs +59 -0
  929. package/renderSizeProbe.d.mts +1 -0
  930. package/renderSizeProbe.d.ts +60 -0
  931. package/renderSizeProbe.js +161 -0
  932. package/renderSizeProbe.mjs +174 -0
  933. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  934. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  935. package/renderers/index.d.ts +3 -2
  936. package/renderers/index.js +8 -0
  937. package/renderers/index.mjs +3 -1
  938. package/renderers/intlDatetimeRenderer/index.d.mts +1 -0
  939. package/renderers/intlDatetimeRenderer/index.d.ts +1 -0
  940. package/renderers/intlDatetimeRenderer/index.js +22 -0
  941. package/renderers/intlDatetimeRenderer/index.mjs +1 -0
  942. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.mts +1 -0
  943. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.ts +26 -0
  944. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.js +82 -0
  945. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.mjs +67 -0
  946. package/renderers/multiSelectRenderer/multiSelectRenderer.js +2 -3
  947. package/renderers/multiSelectRenderer/multiSelectRenderer.mjs +2 -3
  948. package/renderers/multiSelectRenderer/utils/utils.d.ts +1 -1
  949. package/renderers/multiSelectRenderer/utils/utils.js +11 -8
  950. package/renderers/multiSelectRenderer/utils/utils.mjs +11 -8
  951. package/renderers/renderCell.d.mts +1 -0
  952. package/renderers/renderCell.d.ts +37 -0
  953. package/renderers/renderCell.js +43 -0
  954. package/renderers/renderCell.mjs +48 -0
  955. package/selection/highlight/highlight.js +1 -3
  956. package/selection/highlight/highlight.mjs +1 -3
  957. package/selection/highlight/types/areaLayered.d.ts +3 -1
  958. package/selection/highlight/types/areaLayered.js +4 -2
  959. package/selection/highlight/types/areaLayered.mjs +6 -2
  960. package/selection/highlight/types/focus.d.ts +3 -1
  961. package/selection/highlight/types/focus.js +3 -2
  962. package/selection/highlight/types/focus.mjs +5 -2
  963. package/selection/mouseEventHandler.js +29 -26
  964. package/selection/mouseEventHandler.mjs +29 -26
  965. package/selection/moveCells.d.mts +1 -0
  966. package/selection/moveCells.d.ts +15 -0
  967. package/selection/moveCells.js +13 -0
  968. package/selection/moveCells.mjs +9 -0
  969. package/selection/selection.d.ts +56 -2
  970. package/selection/selection.js +162 -36
  971. package/selection/selection.mjs +154 -17
  972. package/selection/transformation/_base.js +5 -12
  973. package/selection/transformation/_base.mjs +5 -12
  974. package/selection/types.d.ts +3 -0
  975. package/settings.d.ts +24 -3
  976. package/shortcuts/context.d.ts +4 -0
  977. package/shortcuts/context.js +16 -8
  978. package/shortcuts/context.mjs +20 -8
  979. package/shortcuts/contexts/commands/populateSelectedCellsData.js +1 -1
  980. package/shortcuts/contexts/commands/populateSelectedCellsData.mjs +1 -1
  981. package/styles/handsontable.css +504 -158
  982. package/styles/handsontable.min.css +4 -4
  983. package/styles/handsontableStyles.js +1 -1
  984. package/styles/handsontableStyles.mjs +1 -1
  985. package/styles/ht-icons-horizon.css +1 -10
  986. package/styles/ht-icons-horizon.min.css +4 -4
  987. package/styles/ht-icons-main.css +1 -10
  988. package/styles/ht-icons-main.min.css +4 -4
  989. package/styles/ht-theme-classic-no-icons.css +6 -0
  990. package/styles/ht-theme-classic-no-icons.min.css +4 -4
  991. package/styles/ht-theme-classic.css +7 -10
  992. package/styles/ht-theme-classic.min.css +4 -4
  993. package/styles/ht-theme-horizon-no-icons.css +6 -0
  994. package/styles/ht-theme-horizon-no-icons.min.css +4 -4
  995. package/styles/ht-theme-horizon.css +7 -10
  996. package/styles/ht-theme-horizon.min.css +4 -4
  997. package/styles/ht-theme-main-no-icons.css +6 -0
  998. package/styles/ht-theme-main-no-icons.min.css +4 -4
  999. package/styles/ht-theme-main.css +7 -10
  1000. package/styles/ht-theme-main.min.css +4 -4
  1001. package/tableView.d.ts +17 -4
  1002. package/tableView.js +211 -53
  1003. package/tableView.mjs +212 -54
  1004. package/themes/engine/builder.js +5 -12
  1005. package/themes/engine/builder.mjs +5 -12
  1006. package/themes/engine/index.d.ts +2 -1
  1007. package/themes/engine/index.js +3 -0
  1008. package/themes/engine/index.mjs +1 -1
  1009. package/themes/engine/manager.d.ts +75 -3
  1010. package/themes/engine/manager.js +247 -18
  1011. package/themes/engine/manager.mjs +254 -18
  1012. package/themes/engine/utils/cssVariables.d.ts +18 -1
  1013. package/themes/engine/utils/cssVariables.js +27 -11
  1014. package/themes/engine/utils/cssVariables.mjs +28 -11
  1015. package/themes/engine/utils/validation.js +7 -0
  1016. package/themes/engine/utils/validation.mjs +7 -0
  1017. package/themes/static/variables/helpers/iconsMap.js +1 -6
  1018. package/themes/static/variables/helpers/iconsMap.mjs +1 -6
  1019. package/themes/static/variables/tokens/classic.js +6 -0
  1020. package/themes/static/variables/tokens/classic.mjs +6 -0
  1021. package/themes/static/variables/tokens/horizon.js +6 -0
  1022. package/themes/static/variables/tokens/horizon.mjs +6 -0
  1023. package/themes/static/variables/tokens/main.js +6 -0
  1024. package/themes/static/variables/tokens/main.mjs +6 -0
  1025. package/themes/types.d.ts +1 -1
  1026. package/translations/changesObservable/observable.js +4 -9
  1027. package/translations/changesObservable/observable.mjs +4 -9
  1028. package/translations/changesObservable/observer.js +4 -9
  1029. package/translations/changesObservable/observer.mjs +4 -9
  1030. package/translations/indexMapper.d.ts +14 -9
  1031. package/translations/indexMapper.js +109 -49
  1032. package/translations/indexMapper.mjs +109 -49
  1033. package/translations/mapCollections/aggregatedCollection.js +20 -35
  1034. package/translations/mapCollections/aggregatedCollection.mjs +20 -35
  1035. package/translations/mapCollections/mapCollection.d.ts +10 -4
  1036. package/translations/mapCollections/mapCollection.js +2 -2
  1037. package/translations/mapCollections/mapCollection.mjs +2 -2
  1038. package/translations/maps/booleanMap.d.mts +1 -0
  1039. package/translations/maps/booleanMap.d.ts +86 -0
  1040. package/translations/maps/booleanMap.js +293 -0
  1041. package/translations/maps/booleanMap.mjs +301 -0
  1042. package/translations/maps/hidingMap.d.ts +5 -2
  1043. package/translations/maps/hidingMap.js +8 -3
  1044. package/translations/maps/hidingMap.mjs +8 -3
  1045. package/translations/maps/index.d.ts +5 -2
  1046. package/translations/maps/index.js +7 -3
  1047. package/translations/maps/index.mjs +10 -2
  1048. package/translations/maps/indexMap.d.ts +26 -2
  1049. package/translations/maps/indexMap.js +73 -6
  1050. package/translations/maps/indexMap.mjs +73 -6
  1051. package/translations/maps/indexesSequence.d.ts +53 -2
  1052. package/translations/maps/indexesSequence.js +218 -3
  1053. package/translations/maps/indexesSequence.mjs +226 -3
  1054. package/translations/maps/trimmingMap.d.ts +5 -2
  1055. package/translations/maps/trimmingMap.js +8 -3
  1056. package/translations/maps/trimmingMap.mjs +8 -3
  1057. package/translations/maps/utils/actionsOnIndexes.js +20 -1
  1058. package/translations/maps/utils/actionsOnIndexes.mjs +20 -1
  1059. package/translations/maps/utils/indexesSequence.js +12 -3
  1060. package/translations/maps/utils/indexesSequence.mjs +12 -3
  1061. package/translations/maps/utils/physicallyIndexed.js +12 -1
  1062. package/translations/maps/utils/physicallyIndexed.mjs +12 -1
  1063. package/utils/entitlementLicenseKey/classify.d.mts +1 -0
  1064. package/utils/entitlementLicenseKey/classify.d.ts +34 -0
  1065. package/utils/entitlementLicenseKey/classify.js +97 -0
  1066. package/utils/entitlementLicenseKey/classify.mjs +96 -0
  1067. package/utils/entitlementLicenseKey/constants.d.mts +1 -0
  1068. package/utils/entitlementLicenseKey/constants.d.ts +69 -0
  1069. package/utils/entitlementLicenseKey/constants.js +54 -0
  1070. package/utils/entitlementLicenseKey/constants.mjs +66 -0
  1071. package/utils/entitlementLicenseKey/detectFormat.d.mts +1 -0
  1072. package/utils/entitlementLicenseKey/detectFormat.d.ts +23 -0
  1073. package/utils/entitlementLicenseKey/detectFormat.js +60 -0
  1074. package/utils/entitlementLicenseKey/detectFormat.mjs +60 -0
  1075. package/utils/entitlementLicenseKey/encoding.d.mts +1 -0
  1076. package/utils/entitlementLicenseKey/encoding.d.ts +58 -0
  1077. package/utils/entitlementLicenseKey/encoding.js +161 -0
  1078. package/utils/entitlementLicenseKey/encoding.mjs +172 -0
  1079. package/utils/entitlementLicenseKey/extractKeyData.d.mts +1 -0
  1080. package/utils/entitlementLicenseKey/extractKeyData.d.ts +47 -0
  1081. package/utils/entitlementLicenseKey/extractKeyData.js +213 -0
  1082. package/utils/entitlementLicenseKey/extractKeyData.mjs +232 -0
  1083. package/utils/entitlementLicenseKey/grants.d.mts +1 -0
  1084. package/utils/entitlementLicenseKey/grants.d.ts +54 -0
  1085. package/utils/entitlementLicenseKey/grants.js +68 -0
  1086. package/utils/entitlementLicenseKey/grants.mjs +84 -0
  1087. package/utils/entitlementLicenseKey/index.d.mts +1 -0
  1088. package/utils/entitlementLicenseKey/index.d.ts +8 -0
  1089. package/utils/entitlementLicenseKey/index.js +53 -0
  1090. package/utils/entitlementLicenseKey/index.mjs +6 -0
  1091. package/utils/entitlementLicenseKey/sha512.d.mts +1 -0
  1092. package/utils/entitlementLicenseKey/sha512.d.ts +11 -0
  1093. package/utils/entitlementLicenseKey/sha512.js +328 -0
  1094. package/utils/entitlementLicenseKey/sha512.mjs +327 -0
  1095. package/utils/entitlementLicenseKey/types.d.mts +1 -0
  1096. package/utils/entitlementLicenseKey/types.d.ts +84 -0
  1097. package/utils/entitlementLicenseKey/types.js +8 -0
  1098. package/utils/entitlementLicenseKey/types.mjs +10 -0
  1099. package/utils/ghostTable.d.ts +1 -0
  1100. package/utils/ghostTable.js +58 -11
  1101. package/utils/ghostTable.mjs +58 -11
  1102. package/utils/interval.js +5 -12
  1103. package/utils/interval.mjs +5 -12
  1104. package/utils/licenseBranding/badge.d.mts +1 -0
  1105. package/utils/licenseBranding/badge.d.ts +21 -0
  1106. package/utils/licenseBranding/badge.js +237 -0
  1107. package/utils/licenseBranding/badge.mjs +244 -0
  1108. package/utils/licenseBranding/content.d.mts +1 -0
  1109. package/utils/licenseBranding/content.d.ts +54 -0
  1110. package/utils/licenseBranding/content.js +93 -0
  1111. package/utils/licenseBranding/content.mjs +79 -0
  1112. package/utils/licenseBranding/index.d.mts +1 -0
  1113. package/utils/licenseBranding/index.d.ts +14 -0
  1114. package/utils/licenseBranding/index.js +55 -0
  1115. package/utils/licenseBranding/index.mjs +56 -0
  1116. package/utils/licenseBranding/lockScreen.d.mts +1 -0
  1117. package/utils/licenseBranding/lockScreen.d.ts +23 -0
  1118. package/utils/licenseBranding/lockScreen.js +150 -0
  1119. package/utils/licenseBranding/lockScreen.mjs +159 -0
  1120. package/utils/licenseNotification.d.ts +19 -0
  1121. package/utils/licenseNotification.js +56 -29
  1122. package/utils/licenseNotification.mjs +61 -29
  1123. package/utils/movableMeta.d.mts +1 -0
  1124. package/utils/movableMeta.d.ts +40 -0
  1125. package/utils/movableMeta.js +47 -0
  1126. package/utils/movableMeta.mjs +46 -0
  1127. package/utils/parseTable.js +1 -1
  1128. package/utils/parseTable.mjs +1 -1
  1129. package/utils/samplesGenerator.d.ts +41 -14
  1130. package/utils/samplesGenerator.js +112 -42
  1131. package/utils/samplesGenerator.mjs +112 -42
  1132. package/utils/stylesHandler.d.ts +13 -0
  1133. package/utils/stylesHandler.js +60 -14
  1134. package/utils/stylesHandler.mjs +60 -14
  1135. package/validators/autocompleteValidator/autocompleteValidator.js +3 -0
  1136. package/validators/autocompleteValidator/autocompleteValidator.mjs +3 -0
  1137. package/validators/index.d.ts +3 -2
  1138. package/validators/index.js +8 -0
  1139. package/validators/index.mjs +3 -1
  1140. package/validators/intlDatetimeValidator/index.d.mts +1 -0
  1141. package/validators/intlDatetimeValidator/index.d.ts +1 -0
  1142. package/validators/intlDatetimeValidator/index.js +25 -0
  1143. package/validators/intlDatetimeValidator/index.mjs +1 -0
  1144. package/validators/intlDatetimeValidator/intlDatetimeValidator.d.mts +1 -0
  1145. package/validators/intlDatetimeValidator/intlDatetimeValidator.d.ts +28 -0
  1146. package/validators/intlDatetimeValidator/intlDatetimeValidator.js +49 -0
  1147. package/validators/intlDatetimeValidator/intlDatetimeValidator.mjs +37 -0
  1148. package/3rdparty/walkontable/src/overlay/bottom.d.mts +0 -1
  1149. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.d.mts +0 -1
  1150. package/3rdparty/walkontable/src/overlay/inlineStart.d.mts +0 -1
  1151. package/3rdparty/walkontable/src/overlay/top.d.mts +0 -1
  1152. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.d.mts +0 -1
  1153. package/3rdparty/walkontable/src/overlays.d.ts +0 -329
  1154. package/3rdparty/walkontable/src/overlays.js +0 -870
  1155. package/3rdparty/walkontable/src/overlays.mjs +0 -860
  1156. package/3rdparty/walkontable/src/renderer/table.d.mts +0 -1
  1157. package/3rdparty/walkontable/src/renderer/table.js +0 -229
  1158. package/3rdparty/walkontable/src/settings.d.mts +0 -2
  1159. package/3rdparty/walkontable/src/settings.js +0 -196
  1160. package/3rdparty/walkontable/src/settings.mjs +0 -263
  1161. package/3rdparty/walkontable/src/table/bottom.d.mts +0 -2
  1162. package/3rdparty/walkontable/src/table/bottom.d.ts +0 -19
  1163. package/3rdparty/walkontable/src/table/bottom.js +0 -38
  1164. package/3rdparty/walkontable/src/table/bottom.mjs +0 -23
  1165. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.mts +0 -2
  1166. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.ts +0 -20
  1167. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +0 -24
  1168. package/3rdparty/walkontable/src/table/inlineStart.d.mts +0 -2
  1169. package/3rdparty/walkontable/src/table/inlineStart.d.ts +0 -16
  1170. package/3rdparty/walkontable/src/table/inlineStart.js +0 -35
  1171. package/3rdparty/walkontable/src/table/inlineStart.mjs +0 -20
  1172. package/3rdparty/walkontable/src/table/master.d.mts +0 -2
  1173. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.mts +0 -2
  1174. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.ts +0 -75
  1175. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -122
  1176. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -112
  1177. package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.mts +0 -2
  1178. package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.ts +0 -75
  1179. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -122
  1180. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -112
  1181. package/3rdparty/walkontable/src/table/top.d.mts +0 -2
  1182. package/3rdparty/walkontable/src/table/top.d.ts +0 -19
  1183. package/3rdparty/walkontable/src/table/top.js +0 -38
  1184. package/3rdparty/walkontable/src/table/top.mjs +0 -23
  1185. package/3rdparty/walkontable/src/table/topInlineStartCorner.d.mts +0 -2
  1186. package/3rdparty/walkontable/src/table/topInlineStartCorner.d.ts +0 -20
  1187. package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +0 -24
  1188. package/3rdparty/walkontable/src/table.d.mts +0 -2
  1189. package/3rdparty/walkontable/src/table.d.ts +0 -741
  1190. package/3rdparty/walkontable/src/table.js +0 -1120
  1191. package/3rdparty/walkontable/src/table.mjs +0 -1105
  1192. package/3rdparty/walkontable/src/utils/cellCoords.d.mts +0 -1
  1193. package/3rdparty/walkontable/src/utils/cellCoords.js +0 -54
  1194. package/3rdparty/walkontable/src/utils/cellCoords.mjs +0 -54
  1195. package/3rdparty/walkontable/src/utils/column.d.mts +0 -2
  1196. package/3rdparty/walkontable/src/utils/column.js +0 -75
  1197. package/3rdparty/walkontable/src/utils/column.mjs +0 -70
  1198. package/3rdparty/walkontable/src/utils/positionCache.d.mts +0 -1
  1199. package/3rdparty/walkontable/src/utils/positionCache.d.ts +0 -91
  1200. package/3rdparty/walkontable/src/utils/positionCache.js +0 -193
  1201. package/3rdparty/walkontable/src/utils/positionCache.mjs +0 -194
  1202. package/3rdparty/walkontable/src/utils/row.d.mts +0 -2
  1203. package/3rdparty/walkontable/src/utils/row.js +0 -46
  1204. package/3rdparty/walkontable/src/utils/row.mjs +0 -41
  1205. package/3rdparty/walkontable/src/viewport.d.ts +0 -254
  1206. package/3rdparty/walkontable/src/viewport.js +0 -533
  1207. package/3rdparty/walkontable/src/viewport.mjs +0 -523
  1208. /package/3rdparty/walkontable/src/{renderer → axisSizing/positionCache}/index.d.mts +0 -0
  1209. /package/3rdparty/walkontable/src/{overlays.d.mts → overlay/overlays.d.mts} +0 -0
  1210. /package/3rdparty/walkontable/src/overlay/{_base.d.mts → regions/_base.d.mts} +0 -0
  1211. /package/3rdparty/walkontable/src/{stickyScrollStrategy.d.mts → overlay/strategies/stickyScrollStrategy.d.mts} +0 -0
  1212. /package/3rdparty/walkontable/src/{renderer → render}/_base.d.mts +0 -0
  1213. /package/3rdparty/walkontable/src/{renderer → render}/_base.js +0 -0
  1214. /package/3rdparty/walkontable/src/{renderer → render}/_base.mjs +0 -0
  1215. /package/3rdparty/walkontable/src/{renderer → render}/cells.d.mts +0 -0
  1216. /package/3rdparty/walkontable/src/{renderer → render}/cells.d.ts +0 -0
  1217. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.mts +0 -0
  1218. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.ts +0 -0
  1219. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.js +0 -0
  1220. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.mjs +0 -0
  1221. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.mts +0 -0
  1222. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.ts +0 -0
  1223. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.js +0 -0
  1224. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.mjs +0 -0
  1225. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.mts +0 -0
  1226. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.mts +0 -0
  1227. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.ts +0 -0
  1228. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.js +0 -0
  1229. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.mjs +0 -0
  1230. /package/3rdparty/walkontable/src/{renderer → render}/rows.d.mts +0 -0
  1231. /package/3rdparty/walkontable/src/{renderer → render}/rows.d.ts +0 -0
  1232. /package/3rdparty/walkontable/src/{scroll.d.mts → scroll/scroll.d.mts} +0 -0
  1233. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.mts +0 -0
  1234. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.mts +0 -0
  1235. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.js +0 -0
  1236. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.mjs +0 -0
  1237. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.mts +0 -0
  1238. /package/3rdparty/walkontable/src/{viewport.d.mts → viewport/viewport.d.mts} +0 -0
@@ -4,15 +4,12 @@ function _check_private_redeclaration(obj, privateCollection) {
4
4
  }
5
5
  }
6
6
  function _class_apply_descriptor_get(receiver, descriptor) {
7
- if (descriptor.get) {
8
- return descriptor.get.call(receiver);
9
- }
7
+ if (descriptor.get) return descriptor.get.call(receiver);
10
8
  return descriptor.value;
11
9
  }
12
10
  function _class_apply_descriptor_set(receiver, descriptor, value) {
13
- if (descriptor.set) {
14
- descriptor.set.call(receiver, value);
15
- } else {
11
+ if (descriptor.set) descriptor.set.call(receiver, value);
12
+ else {
16
13
  if (!descriptor.writable) {
17
14
  throw new TypeError("attempted to set read only private field");
18
15
  }
@@ -20,9 +17,7 @@ function _class_apply_descriptor_set(receiver, descriptor, value) {
20
17
  }
21
18
  }
22
19
  function _class_extract_field_descriptor(receiver, privateMap, action) {
23
- if (!privateMap.has(receiver)) {
24
- throw new TypeError("attempted to " + action + " private field on non-instance");
25
- }
20
+ if (!privateMap.has(receiver)) throw new TypeError("attempted to " + action + " private field on non-instance");
26
21
  return privateMap.get(receiver);
27
22
  }
28
23
  function _class_private_field_get(receiver, privateMap) {
@@ -39,9 +34,7 @@ function _class_private_field_set(receiver, privateMap, value) {
39
34
  return value;
40
35
  }
41
36
  function _class_private_method_get(receiver, privateSet, fn) {
42
- if (!privateSet.has(receiver)) {
43
- throw new TypeError("attempted to get private field on non-instance");
44
- }
37
+ if (!privateSet.has(receiver)) throw new TypeError("attempted to get private field on non-instance");
45
38
  return fn;
46
39
  }
47
40
  function _class_private_method_init(obj, privateSet) {
@@ -49,15 +42,15 @@ function _class_private_method_init(obj, privateSet) {
49
42
  privateSet.add(obj);
50
43
  }
51
44
  import { BasePlugin } from '../base/index.mjs';
52
- import { cancelAnimationFrame, requestAnimationFrame } from '../../helpers/feature.mjs';
45
+ import { cancelIdleTask, requestIdleTask } from '../../helpers/feature.mjs';
53
46
  import GhostTable from '../../utils/ghostTable.mjs';
54
47
  import { Hooks } from '../../core/hooks/index.mjs';
55
48
  import { isObject } from '../../helpers/object.mjs';
56
49
  import { valueAccordingPercent, rangeEach } from '../../helpers/number.mjs';
57
50
  import SamplesGenerator from '../../utils/samplesGenerator.mjs';
58
51
  import { isPercentValue } from '../../helpers/string.mjs';
52
+ import { formatCellValue } from '../../renderers/renderCell.mjs';
59
53
  import { DEFAULT_COLUMN_WIDTH } from '../../3rdparty/walkontable/src/index.mjs';
60
- import { PhysicalIndexToValueMap as IndexToValueMap } from '../../translations/index.mjs';
61
54
  Hooks.getSingleton().register('modifyAutoColumnSizeSeed');
62
55
  export const PLUGIN_KEY = 'autoColumnSize';
63
56
  export const PLUGIN_PRIORITY = 10;
@@ -72,41 +65,123 @@ var /**
72
65
  *
73
66
  * @type {Array}
74
67
  */ _cachedColumnHeaders = /*#__PURE__*/ new WeakMap(), /**
75
- * An array of column indexes whose width will be recalculated.
68
+ * Pending width refresh requests keyed by visual column index, consumed before the next render.
69
+ * A `null` value means the column needs a full row-range rescan. An array value holds the
70
+ * changed cells (visual row index and the previous cell value) used by the width-determiner
71
+ * probe, which measures only the changed cells and skips the full rescan when the edit could
72
+ * not have changed the column's width.
73
+ *
74
+ * @type {Map<number, Array<object>|null>}
75
+ */ _columnWidthsToRefresh = /*#__PURE__*/ new WeakMap(), /**
76
+ * Caches the sampled values (a handful of bucketed strings per column) collected by the last
77
+ * full row-range scan, keyed by physical column index. Forced renders re-measure the visible
78
+ * columns by re-rendering these samples through the ghost table — picking up CSS or renderer
79
+ * changes — instead of re-walking the whole row range. The cache is dropped whenever the row
80
+ * set or the source data changes in a way the width refresh queue cannot describe, which
81
+ * makes the next re-measure fall back to a full scan.
76
82
  *
77
- * @type {number[]}
78
- */ _visualColumnsToRefresh = /*#__PURE__*/ new WeakMap(), /**
83
+ * @type {Map<number, Map>}
84
+ */ _columnSamplesCache = /*#__PURE__*/ new WeakMap(), /**
79
85
  * Disposer function for the column widths map observer. Called on disable to clean up.
80
86
  *
81
87
  * @type {Function|null}
82
88
  */ _disposeMapObserver = /*#__PURE__*/ new WeakMap(), /**
83
- * Calculates specific columns width (overwrite cache values).
89
+ * Consumes the width refresh queue. Columns queued with change details go through the
90
+ * width-determiner probe first; columns queued for a full refresh (and columns whose probe
91
+ * was inconclusive) are rescanned over the whole row range, like before.
92
+ */ _refreshQueuedColumnsWidth = /*#__PURE__*/ new WeakSet(), /**
93
+ * Measures only the changed cells of the queued columns and decides, per column, whether the
94
+ * cached width is still valid, can be grown in place, or whether the column needs a full
95
+ * row-range rescan (appended to `fullRescanColumns`).
96
+ *
97
+ * The probe measures pure cell widths (ghost table headers disabled) and reasons as follows:
98
+ * - when a new value renders wider than the cached width, that value is the new widest cell
99
+ * and the width is grown in place, without a rescan;
100
+ * - otherwise, when every previous value renders narrower than the cached width, the changed
101
+ * cells were not the width determiners and the cached width stays valid;
102
+ * - otherwise a previous value could have determined the cached width, so the column is
103
+ * rescanned to find the new widest cell (this is what allows the column to shrink).
104
+ *
105
+ * @param {object[]} probes The queued columns with their changed cells and cached widths.
106
+ * @param {number[]} fullRescanColumns The list that columns needing a full rescan are appended to.
107
+ */ _probeChangedCellsWidth = /*#__PURE__*/ new WeakSet(), /**
108
+ * Keeps the column's cached samples usable after an in-place decision: strings sampled from
109
+ * the changed rows are evicted (their values are stale now) and the freshly probed samples
110
+ * of the changed cells are merged in, so a later re-measure (e.g. after a CSS change) still
111
+ * sees the current values — including the one that grew the column. Columns without a cache
112
+ * entry are left without one — an incomplete entry would make a later re-measure compute the
113
+ * width from the changed cells alone.
114
+ *
115
+ * @param {object} probe The probed column with its changed cells.
116
+ * @param {Map} [samples] Freshly probed samples of the changed cells to merge in.
117
+ */ _updateCachedSamples = /*#__PURE__*/ new WeakSet(), /**
118
+ * Measures the rendered width of the given per-column sample maps with the ghost table, with
119
+ * headers disabled — a header rendered next to the samples would put a floor under every
120
+ * measurement and mask the comparison against the cached width.
84
121
  *
85
- * @param {number[]} visualColumns List of visual columns to calculate.
86
- */ _calculateSpecificColumnsWidth = /*#__PURE__*/ new WeakSet(), /**
87
- * Generates content samples for the given column within the row range and adds each sample
88
- * to the ghost table so its rendered width can be measured.
122
+ * @param {object[]} items An array of `{ visualColumn, samples }` objects to measure.
123
+ * @returns {Map<number, number>} Measured widths keyed by visual column index.
124
+ */ _measureCellsWidth = /*#__PURE__*/ new WeakSet(), /**
125
+ * Formats a probed value the way the render path would — cell-level `valueFormatter` first,
126
+ * then the renderer's own static — so the measured string matches what the renderer produces.
127
+ *
128
+ * @param {number} row Visual row index.
129
+ * @param {number} column Visual column index.
130
+ * @param {*} value The raw value to format.
131
+ * @returns {*}
132
+ */ _formatProbeValue = /*#__PURE__*/ new WeakSet(), /**
133
+ * Generates content samples for the given column within the row range, adds each sample
134
+ * to the ghost table so its rendered width can be measured, and refreshes the column's
135
+ * samples cache.
89
136
  */ _fillGhostTableWithSamples = /*#__PURE__*/ new WeakSet(), /**
137
+ * Adds a column to the ghost table, passing a shallow clone of the samples map — the ghost
138
+ * table's `clean()` empties the last map it received, which must never wipe a map that is
139
+ * kept in the samples cache.
140
+ *
141
+ * @param {number} visualColumn Visual column index.
142
+ * @param {Map} samples The samples map to measure.
143
+ */ _addGhostTableColumn = /*#__PURE__*/ new WeakSet(), /**
90
144
  * Updates the column widths map with calculated widths from the ghost table.
91
145
  *
92
146
  */ _updateColumnWidthsMapBasedOnGhostTable = /*#__PURE__*/ new WeakSet(), /**
93
- * Recalculates widths for currently visible columns and processes any columns queued by
94
- * data or header changes before the next render.
147
+ * Recalculates widths for currently visible columns (cache misses only) and consumes the
148
+ * width refresh queue populated by data, header, or row-set changes.
95
149
  */ _onBeforeRender = /*#__PURE__*/ new WeakMap(), /**
96
150
  * Triggers a full column width recalculation after new data is loaded, skipping the initial
97
151
  * load since `#onInit` already handles it.
98
152
  */ _onAfterLoadData = /*#__PURE__*/ new WeakMap(), /**
99
- * Queues the visual column indexes affected by the incoming changes so their widths are
100
- * recalculated on the next render.
153
+ * Queues the cells affected by the incoming changes, keyed by their visual column, so the
154
+ * width-determiner probe can decide before the next render whether each column's width
155
+ * actually needs a refresh.
101
156
  */ _onBeforeChange = /*#__PURE__*/ new WeakMap(), /**
157
+ * Drops the cached samples after a source-data write. Source-level changes bypass
158
+ * `beforeChangeRender`, so there is no per-cell change information to refresh the samples
159
+ * with — the render that follows falls back to full scans for the visible columns.
160
+ */ _onAfterSetSourceDataAtCell = /*#__PURE__*/ new WeakMap(), /**
161
+ * Drops the cached samples of a column whose cell meta changed. Meta keys like
162
+ * `valueFormatter`, `renderer`, `className`, or `type` affect the rendered width, and the
163
+ * cached sample strings (formatted when they were sampled) would replay the previous meta
164
+ * on the next re-measure — the next full render re-walks the column instead.
165
+ */ _onAfterSetCellMeta = /*#__PURE__*/ new WeakMap(), /**
166
+ * Drops the cached samples when the set of rows that feeds the width calculation changes
167
+ * (rows inserted, removed, moved, trimmed, or hidden). Sampling skips hidden rows and the
168
+ * samples carry row coordinates, so a changed row set invalidates them — the next re-measure
169
+ * falls back to a full scan, which lets a column shrink when its widest cell disappears.
170
+ */ _onRowIndexMapperCacheUpdate = /*#__PURE__*/ new WeakMap(), /**
171
+ * Drops the cached samples when the column sequence changes (columns inserted, removed, or
172
+ * moved) — the cache is keyed by physical column index, and a structural change would leave
173
+ * the samples associated with the wrong columns.
174
+ */ _onColumnIndexMapperCacheUpdate = /*#__PURE__*/ new WeakMap(), /**
102
175
  * Recalculates the column width from content on a double-click and returns it as the new
103
176
  * size; returns the user-dragged size otherwise.
104
177
  */ _onBeforeColumnResize = /*#__PURE__*/ new WeakMap(), /**
105
178
  * Initializes the column header cache and triggers the first full column width recalculation
106
179
  * after Handsontable has finished initializing.
107
180
  */ _onInit = /*#__PURE__*/ new WeakMap(), /**
108
- * Queues visual column indexes whose formula results changed so their widths are recalculated
109
- * before the next render. Skips changes belonging to a different sheet.
181
+ * Queues cells whose formula results changed so their columns' widths are refreshed before
182
+ * the next render. The engine does not carry previous values, so the probe can only grow the
183
+ * width in place — a potential shrink falls back to a full column rescan. Skips changes
184
+ * belonging to a different sheet.
110
185
  */ _onAfterFormulasValuesUpdate = /*#__PURE__*/ new WeakMap();
111
186
  /**
112
187
  * @plugin AutoColumnSize
@@ -155,6 +230,12 @@ var /**
155
230
  * }
156
231
  * ```
157
232
  *
233
+ * ::: tip
234
+ * If you use custom renderers or custom styles that produce non-standard column widths, and you call
235
+ * {@link Core#scrollViewportTo}, make sure `AutoColumnSize` is enabled. Without it, `scrollViewportTo()` calculates
236
+ * scroll positions based on incorrect column widths and may scroll to an incorrect position.
237
+ * :::
238
+ *
158
239
  * To configure this plugin see {@link Options#autoColumnSize}.
159
240
  *
160
241
  * @example
@@ -285,6 +366,14 @@ var /**
285
366
  return 50;
286
367
  }
287
368
  /**
369
+ * Returns the maximum number of cells sampled in a single asynchronous calculation step. Together
370
+ * with {@link AutoColumnSize.CALCULATION_STEP} it bounds the work done per animation frame: a
371
+ * column whose row range exceeds the budget is swept across multiple frames, and its width is
372
+ * written once, when the sweep completes.
373
+ */ static get CALCULATION_CELLS_BUDGET() {
374
+ return 100000;
375
+ }
376
+ /**
288
377
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
289
378
  * hook and if it returns `true` then the {@link #enablePlugin} method is called.
290
379
  *
@@ -306,10 +395,14 @@ var /**
306
395
  }
307
396
  this.addHook('afterLoadData', _class_private_field_get(this, _onAfterLoadData));
308
397
  this.addHook('beforeChangeRender', _class_private_field_get(this, _onBeforeChange));
398
+ this.addHook('afterSetCellMeta', _class_private_field_get(this, _onAfterSetCellMeta));
399
+ this.addHook('afterSetSourceDataAtCell', _class_private_field_get(this, _onAfterSetSourceDataAtCell));
309
400
  this.addHook('afterFormulasValuesUpdate', _class_private_field_get(this, _onAfterFormulasValuesUpdate));
310
401
  this.addHook('beforeRender', _class_private_field_get(this, _onBeforeRender));
311
402
  this.addHook('modifyColWidth', (width, col)=>this.getColumnWidth(col, width), -10);
312
403
  this.addHook('init', _class_private_field_get(this, _onInit));
404
+ this.hot.rowIndexMapper.addLocalHook('cacheUpdated', _class_private_field_get(this, _onRowIndexMapperCacheUpdate));
405
+ this.hot.columnIndexMapper.addLocalHook('cacheUpdated', _class_private_field_get(this, _onColumnIndexMapperCacheUpdate));
313
406
  _class_private_field_set(this, _disposeMapObserver, this.hot.columnIndexMapper.observeMapChange(this.columnWidthsMap, ()=>{
314
407
  this.hot.view?.invalidateColumnWidthCache();
315
408
  }));
@@ -318,7 +411,12 @@ var /**
318
411
  /**
319
412
  * Updates the plugin's state. This method is executed when {@link Core#updateSettings} is invoked.
320
413
  */ updatePlugin() {
321
- _class_private_field_set(this, _visualColumnsToRefresh, this.findColumnsWhereHeaderWasChanged());
414
+ this.findColumnsWhereHeaderWasChanged().forEach((visualColumn)=>{
415
+ _class_private_field_get(this, _columnWidthsToRefresh).set(visualColumn, null);
416
+ });
417
+ // Settings may remap the data that feeds the samples (e.g. a new `columns` definition), so
418
+ // the cached samples cannot be trusted — the next re-measure falls back to a full scan.
419
+ _class_private_field_get(this, _columnSamplesCache).clear();
322
420
  super.updatePlugin();
323
421
  }
324
422
  /**
@@ -328,6 +426,8 @@ var /**
328
426
  _class_private_field_get(this, _disposeMapObserver).call(this);
329
427
  _class_private_field_set(this, _disposeMapObserver, null);
330
428
  }
429
+ this.hot.rowIndexMapper.removeLocalHook('cacheUpdated', _class_private_field_get(this, _onRowIndexMapperCacheUpdate));
430
+ this.hot.columnIndexMapper.removeLocalHook('cacheUpdated', _class_private_field_get(this, _onColumnIndexMapperCacheUpdate));
331
431
  super.disablePlugin();
332
432
  // Leave the listener active to allow auto-sizing the columns when the plugin is disabled.
333
433
  // This is necessary for width recalculation for resize handler doubleclick (ManualColumnResize).
@@ -378,7 +478,15 @@ var /**
378
478
  physicalColumn = visualColumn;
379
479
  }
380
480
  if (overwriteCache || this.columnWidthsMap.getValueAtIndex(physicalColumn) === null && !this.hot._getColWidthFromSettings(physicalColumn)) {
381
- _class_private_method_get(this, _fillGhostTableWithSamples, fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
481
+ const cachedSamples = overwriteCache ? _class_private_field_get(this, _columnSamplesCache).get(physicalColumn) : undefined;
482
+ // A re-measure (cache overwrite) with an intact samples cache re-renders the previously
483
+ // sampled values — picking up CSS or renderer changes — without re-walking the row range.
484
+ // Data changes refresh or drop the cached samples, so a full scan runs only when needed.
485
+ if (cachedSamples !== undefined) {
486
+ _class_private_method_get(this, _addGhostTableColumn, addGhostTableColumn).call(this, visualColumn, cachedSamples);
487
+ } else {
488
+ _class_private_method_get(this, _fillGhostTableWithSamples, fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
489
+ }
382
490
  }
383
491
  });
384
492
  if (this.ghostTable.columns.length) {
@@ -397,42 +505,102 @@ var /**
397
505
  from: 0,
398
506
  to: this.hot.countRows() - 1
399
507
  }, overwriteCache = false) {
400
- let current = 0;
401
- const length = this.hot.countCols() - 1;
508
+ const rowsRange = typeof rowRange === 'number' ? {
509
+ from: rowRange,
510
+ to: rowRange
511
+ } : rowRange;
512
+ const lastColumn = this.hot.countCols() - 1;
513
+ let currentColumn = 0;
514
+ let currentRowCursor = rowsRange.from;
515
+ let columnSamples = null;
402
516
  let timer = 0;
403
517
  this.inProgress = true;
518
+ const shouldMeasureColumn = (visualColumn)=>{
519
+ let physicalColumn = this.hot.toPhysicalColumn(visualColumn);
520
+ if (physicalColumn === null) {
521
+ physicalColumn = visualColumn;
522
+ }
523
+ return overwriteCache || this.columnWidthsMap.getValueAtIndex(physicalColumn) === null && !this.hot._getColWidthFromSettings(physicalColumn);
524
+ };
525
+ /**
526
+ * Sweeps up to `columnsBudget` columns, sampling at most `cellsBudget` cells. A column whose
527
+ * remaining row range exceeds the cells budget is left mid-sweep (its samples accumulate in
528
+ * `columnSamples`) and is continued by the next call. Returns `true` when every column has
529
+ * been processed.
530
+ *
531
+ * @param {number} columnsBudget The maximum number of columns to process in this chunk.
532
+ * @param {number} cellsBudget The maximum number of cells to sample in this chunk.
533
+ * @returns {boolean}
534
+ */ const processChunk = (columnsBudget, cellsBudget)=>{
535
+ let remainingColumns = columnsBudget;
536
+ let remainingCells = cellsBudget;
537
+ while(remainingColumns > 0 && currentColumn <= lastColumn){
538
+ if (columnSamples === null) {
539
+ if (!shouldMeasureColumn(currentColumn)) {
540
+ currentColumn += 1;
541
+ remainingColumns -= 1;
542
+ continue;
543
+ }
544
+ columnSamples = new Map();
545
+ currentRowCursor = rowsRange.from;
546
+ }
547
+ if (currentRowCursor <= rowsRange.to) {
548
+ if (remainingCells <= 0) {
549
+ return false;
550
+ }
551
+ const sliceTo = Math.min(rowsRange.to, currentRowCursor + remainingCells - 1);
552
+ this.samplesGenerator.generateSample('col', {
553
+ from: currentRowCursor,
554
+ to: sliceTo
555
+ }, currentColumn, columnSamples);
556
+ remainingCells -= sliceTo - currentRowCursor + 1;
557
+ currentRowCursor = sliceTo + 1;
558
+ }
559
+ if (currentRowCursor > rowsRange.to) {
560
+ const physicalColumn = this.hot.toPhysicalColumn(currentColumn);
561
+ _class_private_method_get(this, _addGhostTableColumn, addGhostTableColumn).call(this, currentColumn, columnSamples);
562
+ _class_private_field_get(this, _columnSamplesCache).set(physicalColumn === null ? currentColumn : physicalColumn, columnSamples);
563
+ columnSamples = null;
564
+ currentColumn += 1;
565
+ remainingColumns -= 1;
566
+ }
567
+ }
568
+ return currentColumn > lastColumn;
569
+ };
570
+ const flushGhostTable = ()=>{
571
+ if (this.ghostTable.columns.length) {
572
+ _class_private_method_get(this, _updateColumnWidthsMapBasedOnGhostTable, updateColumnWidthsMapBasedOnGhostTable).call(this);
573
+ this.measuredColumns = currentColumn;
574
+ this.ghostTable.clean();
575
+ }
576
+ };
404
577
  const loop = ()=>{
405
578
  // When hot was destroyed after calculating finished cancel frame
406
579
  if (!this.hot) {
407
- cancelAnimationFrame(timer);
580
+ cancelIdleTask(timer);
408
581
  this.inProgress = false;
409
582
  return;
410
583
  }
411
- this.calculateColumnsWidth({
412
- from: current,
413
- to: Math.min(current + AutoColumnSize.CALCULATION_STEP, length)
414
- }, rowRange, overwriteCache);
415
- current = current + AutoColumnSize.CALCULATION_STEP + 1;
416
- if (current < length) {
417
- timer = requestAnimationFrame(loop);
584
+ const isDone = processChunk(AutoColumnSize.CALCULATION_STEP + 1, AutoColumnSize.CALCULATION_CELLS_BUDGET);
585
+ flushGhostTable();
586
+ if (!isDone) {
587
+ timer = requestIdleTask(loop);
418
588
  } else {
419
- cancelAnimationFrame(timer);
589
+ cancelIdleTask(timer);
420
590
  this.inProgress = false;
421
591
  // @TODO Should call once per render cycle, currently fired separately in different plugins
422
592
  this.hot.view.adjustElementsSize();
423
593
  }
424
594
  };
425
595
  const syncLimit = this.getSyncCalculationLimit();
426
- // sync
596
+ // sync — the `syncLimit` columns are calculated exactly (whole row range) before the first
597
+ // paint, preserving the `syncLimit` contract.
427
598
  if (syncLimit >= 0) {
428
- this.calculateColumnsWidth({
429
- from: 0,
430
- to: syncLimit
431
- }, rowRange, overwriteCache);
432
- current = syncLimit + 1;
599
+ processChunk(syncLimit + 1, Infinity);
600
+ flushGhostTable();
433
601
  }
434
602
  // async
435
- if (current < length) {
603
+ if (currentColumn <= lastColumn) {
436
604
  loop();
437
605
  } else {
438
606
  this.inProgress = false;
@@ -442,10 +610,21 @@ var /**
442
610
  * Recalculates all columns width (overwrite cache values).
443
611
  */ recalculateAllColumnsWidth() {
444
612
  if (this.hot.view.isVisible()) {
613
+ // Every queued width refinement is subsumed by the full overwrite sweep — entries
614
+ // queued after this point (e.g. edits made while the asynchronous part is running)
615
+ // accumulate again and are consumed as usual.
616
+ _class_private_field_get(this, _columnWidthsToRefresh).clear();
445
617
  this.calculateAllColumnsWidth({
446
618
  from: 0,
447
619
  to: this.hot.countRows() - 1
448
620
  }, true);
621
+ // The synchronous part of the sweep runs inside `init`/`afterLoadData` hook cascades,
622
+ // before other plugins re-apply their cell meta (e.g. MergeCells' `spanned`/`hidden`
623
+ // flags), so the samples it collected cannot be trusted for later re-measures. Dropping
624
+ // them makes the next full render re-walk the visible columns with the settled meta,
625
+ // like it always did. Samples stored by the asynchronous part run after the cascade
626
+ // and stay.
627
+ _class_private_field_get(this, _columnSamplesCache).clear();
449
628
  }
450
629
  }
451
630
  /**
@@ -489,6 +668,11 @@ var /**
489
668
  /**
490
669
  * Gets the first visible column.
491
670
  *
671
+ * When the {@link MergeCells} plugin is enabled with its default `virtualized: false` setting, a merged
672
+ * cell that crosses the viewport edge extends the rendered column range. In that case this method can
673
+ * return a column index outside the strictly visible viewport. To read the actual visible viewport, use
674
+ * {@link Core#getFirstFullyVisibleColumn} or {@link Core#getFirstPartiallyVisibleColumn}.
675
+ *
492
676
  * @returns {number} Returns visual column index, -1 if table is not rendered or if there are no columns to base the the calculations on.
493
677
  */ getFirstVisibleColumn() {
494
678
  return this.hot.getFirstRenderedVisibleColumn() ?? -1;
@@ -496,6 +680,11 @@ var /**
496
680
  /**
497
681
  * Gets the last visible column.
498
682
  *
683
+ * When the {@link MergeCells} plugin is enabled with its default `virtualized: false` setting, a merged
684
+ * cell that crosses the viewport edge extends the rendered column range. In that case this method can
685
+ * return a column index outside the strictly visible viewport. To read the actual visible viewport, use
686
+ * {@link Core#getLastFullyVisibleColumn} or {@link Core#getLastPartiallyVisibleColumn}.
687
+ *
499
688
  * @returns {number} Returns visual column index or -1 if table is not rendered.
500
689
  */ getLastVisibleColumn() {
501
690
  return this.hot.getLastRenderedVisibleColumn() ?? -1;
@@ -534,10 +723,12 @@ var /**
534
723
  this.hot.batchExecution(()=>{
535
724
  physicalColumns.forEach((physicalIndex)=>{
536
725
  this.columnWidthsMap.setValueAtIndex(physicalIndex, null);
726
+ _class_private_field_get(this, _columnSamplesCache).delete(physicalIndex);
537
727
  });
538
728
  }, true);
539
729
  } else {
540
730
  this.columnWidthsMap.clear();
731
+ _class_private_field_get(this, _columnSamplesCache).clear();
541
732
  }
542
733
  }
543
734
  /**
@@ -550,19 +741,24 @@ var /**
550
741
  /**
551
742
  * Destroys the plugin instance.
552
743
  */ destroy() {
744
+ this.hot?.rowIndexMapper.removeLocalHook('cacheUpdated', _class_private_field_get(this, _onRowIndexMapperCacheUpdate));
745
+ this.hot?.columnIndexMapper.removeLocalHook('cacheUpdated', _class_private_field_get(this, _onColumnIndexMapperCacheUpdate));
553
746
  this.ghostTable.clean();
554
747
  super.destroy();
555
748
  }
556
749
  /**
557
750
  * Initializes the plugin, registers the column widths map, and sets up the column resize hook.
558
751
  */ constructor(hotInstance){
559
- super(hotInstance), _class_private_method_init(this, _calculateSpecificColumnsWidth), _class_private_method_init(this, _fillGhostTableWithSamples), _class_private_method_init(this, _updateColumnWidthsMapBasedOnGhostTable), _class_private_field_init(this, _isInitialized, {
752
+ super(hotInstance), _class_private_method_init(this, _refreshQueuedColumnsWidth), _class_private_method_init(this, _probeChangedCellsWidth), _class_private_method_init(this, _updateCachedSamples), _class_private_method_init(this, _measureCellsWidth), _class_private_method_init(this, _formatProbeValue), _class_private_method_init(this, _fillGhostTableWithSamples), _class_private_method_init(this, _addGhostTableColumn), _class_private_method_init(this, _updateColumnWidthsMapBasedOnGhostTable), _class_private_field_init(this, _isInitialized, {
560
753
  writable: true,
561
754
  value: void 0
562
755
  }), _class_private_field_init(this, _cachedColumnHeaders, {
563
756
  writable: true,
564
757
  value: void 0
565
- }), _class_private_field_init(this, _visualColumnsToRefresh, {
758
+ }), _class_private_field_init(this, _columnWidthsToRefresh, {
759
+ writable: true,
760
+ value: void 0
761
+ }), _class_private_field_init(this, _columnSamplesCache, {
566
762
  writable: true,
567
763
  value: void 0
568
764
  }), _class_private_field_init(this, _disposeMapObserver, {
@@ -577,6 +773,18 @@ var /**
577
773
  }), _class_private_field_init(this, _onBeforeChange, {
578
774
  writable: true,
579
775
  value: void 0
776
+ }), _class_private_field_init(this, _onAfterSetSourceDataAtCell, {
777
+ writable: true,
778
+ value: void 0
779
+ }), _class_private_field_init(this, _onAfterSetCellMeta, {
780
+ writable: true,
781
+ value: void 0
782
+ }), _class_private_field_init(this, _onRowIndexMapperCacheUpdate, {
783
+ writable: true,
784
+ value: void 0
785
+ }), _class_private_field_init(this, _onColumnIndexMapperCacheUpdate, {
786
+ writable: true,
787
+ value: void 0
580
788
  }), _class_private_field_init(this, _onBeforeColumnResize, {
581
789
  writable: true,
582
790
  value: void 0
@@ -603,7 +811,11 @@ var /**
603
811
  if (this.hot.rowIndexMapper.isHidden(physicalRow) || this.hot.columnIndexMapper.isHidden(physicalColumn)) {
604
812
  return false;
605
813
  }
606
- const cellMeta = this.hot.getCellMeta(row, column);
814
+ // The transient read resolves the full dynamic meta (hooks + `cells`, so `hidden`/`spanned`
815
+ // from merged cells work) without storing anything - this sampler sweeps the whole row range
816
+ // per column, and the eager `getCellMeta` would permanently materialize one meta per visited
817
+ // cell (O(rows x columns) retention on init).
818
+ const cellMeta = this.hot.getCellMetaTransient(row, column);
607
819
  let cellValue = '';
608
820
  let seedValue = '';
609
821
  if (cellMeta.hidden) {
@@ -611,13 +823,10 @@ var /**
611
823
  return false;
612
824
  }
613
825
  if (!cellMeta.spanned) {
614
- seedValue = this.hot.getDataAtCell(row, column);
615
- // Use the raw value for rendering (functions remain as functions for the renderer to call)
616
- cellValue = seedValue;
617
- if (typeof cellMeta.valueFormatter === 'function') {
618
- cellValue = cellMeta.valueFormatter(cellValue, cellMeta);
619
- seedValue = cellValue;
620
- }
826
+ // Format through the same precedence as the render path (cell-level `valueFormatter`, then
827
+ // the renderer's own static), so the measured string matches what the renderer produces.
828
+ cellValue = formatCellValue(this.hot.getDataAtCell(row, column), cellMeta, this.hot.getCellRenderer(cellMeta));
829
+ seedValue = cellValue;
621
830
  }
622
831
  let bundleSeed = '';
623
832
  if (this.hot.hasHook('modifyAutoColumnSizeSeed')) {
@@ -635,30 +844,63 @@ var /**
635
844
  * Number of already measured columns (we already know their sizes).
636
845
  *
637
846
  * @type {number}
638
- */ this.measuredColumns = 0, /**
639
- * PhysicalIndexToValueMap to keep and track widths for physical column indexes.
640
- *
641
- * @private
642
- * @type {PhysicalIndexToValueMap}
643
- */ this.columnWidthsMap = new IndexToValueMap(), _class_private_field_set(this, _isInitialized, false), _class_private_field_set(this, _cachedColumnHeaders, []), _class_private_field_set(this, _visualColumnsToRefresh, []), _class_private_field_set(this, _disposeMapObserver, null), _class_private_field_set(this, _onBeforeRender, ()=>{
847
+ */ this.measuredColumns = 0, _class_private_field_set(this, _isInitialized, false), _class_private_field_set(this, _cachedColumnHeaders, []), _class_private_field_set(this, _columnWidthsToRefresh, new Map()), _class_private_field_set(this, _columnSamplesCache, new Map()), _class_private_field_set(this, _disposeMapObserver, null), _class_private_field_set(this, _onBeforeRender, ()=>{
644
848
  this.calculateVisibleColumnsWidth();
645
849
  if (!this.inProgress) {
646
- _class_private_method_get(this, _calculateSpecificColumnsWidth, calculateSpecificColumnsWidth).call(this, _class_private_field_get(this, _visualColumnsToRefresh));
647
- _class_private_field_set(this, _visualColumnsToRefresh, []);
850
+ _class_private_method_get(this, _refreshQueuedColumnsWidth, refreshQueuedColumnsWidth).call(this);
648
851
  }
649
852
  }), _class_private_field_set(this, _onAfterLoadData, (_sourceData, isFirstLoad)=>{
853
+ // Queued cells describe the previous dataset — their rows and previous values are
854
+ // meaningless once the data is replaced. Cleared unconditionally (even when the view is
855
+ // not visible and no sweep runs), so a pending entry that survived a suspended render
856
+ // can never feed the width-determiner probe with stale coordinates.
857
+ _class_private_field_get(this, _columnWidthsToRefresh).clear();
650
858
  if (!isFirstLoad) {
651
859
  this.recalculateAllColumnsWidth();
652
860
  }
653
861
  }), _class_private_field_set(this, _onBeforeChange, (changes)=>{
654
- const changedColumns = changes.reduce((acc, [, columnProperty])=>{
862
+ changes.forEach(([row, columnProperty, oldValue])=>{
863
+ if (typeof columnProperty === 'function') {
864
+ return;
865
+ }
655
866
  const visualColumn = this.hot.propToCol(columnProperty);
656
- if (visualColumn !== null && Number.isInteger(visualColumn) && acc.indexOf(visualColumn) === -1) {
657
- acc.push(visualColumn);
867
+ if (visualColumn === null || !Number.isInteger(visualColumn)) {
868
+ return;
869
+ }
870
+ const entry = _class_private_field_get(this, _columnWidthsToRefresh).get(visualColumn);
871
+ // The column is already queued for a full rescan.
872
+ if (entry === null) {
873
+ return;
658
874
  }
659
- return acc;
660
- }, []);
661
- _class_private_field_get(this, _visualColumnsToRefresh).push(...changedColumns);
875
+ const cell = {
876
+ row,
877
+ oldValue,
878
+ hasOldValue: true
879
+ };
880
+ if (entry === undefined) {
881
+ _class_private_field_get(this, _columnWidthsToRefresh).set(visualColumn, [
882
+ cell
883
+ ]);
884
+ } else {
885
+ entry.push(cell);
886
+ }
887
+ });
888
+ }), _class_private_field_set(this, _onAfterSetSourceDataAtCell, ()=>{
889
+ _class_private_field_get(this, _columnSamplesCache).clear();
890
+ }), _class_private_field_set(this, _onAfterSetCellMeta, (_row, column)=>{
891
+ const physicalColumn = this.hot.toPhysicalColumn(column);
892
+ if (physicalColumn !== null) {
893
+ _class_private_field_get(this, _columnSamplesCache).delete(physicalColumn);
894
+ }
895
+ }), _class_private_field_set(this, _onRowIndexMapperCacheUpdate, (indexesChangesState)=>{
896
+ const { indexesSequenceChanged, trimmedIndexesChanged, hiddenIndexesChanged } = indexesChangesState;
897
+ if (indexesSequenceChanged || trimmedIndexesChanged || hiddenIndexesChanged) {
898
+ _class_private_field_get(this, _columnSamplesCache).clear();
899
+ }
900
+ }), _class_private_field_set(this, _onColumnIndexMapperCacheUpdate, (indexesChangesState)=>{
901
+ if (indexesChangesState.indexesSequenceChanged) {
902
+ _class_private_field_get(this, _columnSamplesCache).clear();
903
+ }
662
904
  }), _class_private_field_set(this, _onBeforeColumnResize, (size, column, isDblClick)=>{
663
905
  let newSize = size;
664
906
  if (isDblClick) {
@@ -676,50 +918,226 @@ var /**
676
918
  }
677
919
  const formulasPlugin = this.hot.getPlugin('formulas');
678
920
  const sheetId = formulasPlugin?.sheetId;
679
- const changedColumns = changes.reduce((acc, change)=>{
921
+ changes.forEach((change)=>{
680
922
  const changeRecord = change;
681
- if (sheetId !== null && sheetId !== undefined && changeRecord.address?.sheet !== sheetId) {
682
- return acc;
923
+ const address = changeRecord.address;
924
+ if (sheetId !== null && sheetId !== undefined && address?.sheet !== sheetId) {
925
+ return;
683
926
  }
684
- const physicalColumn = Number(changeRecord.address?.col);
685
- if (Number.isInteger(physicalColumn)) {
686
- const visualColumn = this.hot.toVisualColumn(physicalColumn);
687
- if (visualColumn !== null && acc.indexOf(visualColumn) === -1) {
688
- acc.push(visualColumn);
689
- }
927
+ const physicalColumn = Number(address?.col);
928
+ const physicalRow = Number(address?.row);
929
+ if (!Number.isInteger(physicalColumn)) {
930
+ return;
690
931
  }
691
- return acc;
692
- }, []);
693
- _class_private_field_get(this, _visualColumnsToRefresh).push(...changedColumns);
932
+ const visualColumn = this.hot.toVisualColumn(physicalColumn);
933
+ if (visualColumn === null) {
934
+ return;
935
+ }
936
+ const entry = _class_private_field_get(this, _columnWidthsToRefresh).get(visualColumn);
937
+ // The column is already queued for a full rescan.
938
+ if (entry === null) {
939
+ return;
940
+ }
941
+ const visualRow = Number.isInteger(physicalRow) ? this.hot.toVisualRow(physicalRow) : null;
942
+ // Without an addressable row the probe cannot measure the changed cell — fall back to
943
+ // a full column rescan.
944
+ if (visualRow === null) {
945
+ _class_private_field_get(this, _columnWidthsToRefresh).set(visualColumn, null);
946
+ return;
947
+ }
948
+ const cell = {
949
+ row: visualRow,
950
+ oldValue: undefined,
951
+ hasOldValue: false
952
+ };
953
+ if (entry === undefined) {
954
+ _class_private_field_get(this, _columnWidthsToRefresh).set(visualColumn, [
955
+ cell
956
+ ]);
957
+ } else {
958
+ entry.push(cell);
959
+ }
960
+ });
961
+ });
962
+ // The map holds numbers only, so re-writing an unchanged width is a no-op that must not
963
+ // invalidate the column-width position cache (every render re-measures the visible columns).
964
+ this.columnWidthsMap = this.hot.columnIndexMapper.createAndRegisterIndexMap(COLUMN_SIZE_MAP_NAME, 'physicalIndexToValue', null, {
965
+ skipUnchangedWrites: true
694
966
  });
695
- this.hot.columnIndexMapper.registerMap(COLUMN_SIZE_MAP_NAME, this.columnWidthsMap);
696
967
  // Leave the listener active to allow auto-sizing the columns when the plugin is disabled.
697
968
  // This is necessary for width recalculation for resize handler doubleclick (ManualColumnResize).
698
969
  this.addHook('beforeColumnResize', _class_private_field_get(this, _onBeforeColumnResize));
699
970
  }
700
971
  }
701
- function calculateSpecificColumnsWidth(visualColumns) {
702
- const rowsRange = {
703
- from: 0,
704
- to: this.hot.countRows() - 1
705
- };
706
- visualColumns.forEach((visualColumn)=>{
972
+ function refreshQueuedColumnsWidth() {
973
+ if (_class_private_field_get(this, _columnWidthsToRefresh).size === 0) {
974
+ return;
975
+ }
976
+ const queue = _class_private_field_get(this, _columnWidthsToRefresh);
977
+ _class_private_field_set(this, _columnWidthsToRefresh, new Map());
978
+ const totalRows = this.hot.countRows();
979
+ const fullRescanColumns = [];
980
+ const probes = [];
981
+ queue.forEach((cells, visualColumn)=>{
707
982
  const physicalColumn = this.hot.toPhysicalColumn(visualColumn);
708
- if (physicalColumn === null) {
983
+ if (physicalColumn === null || this.hot._getColWidthFromSettings(physicalColumn)) {
709
984
  return;
710
985
  }
711
- if (!this.hot._getColWidthFromSettings(physicalColumn)) {
712
- _class_private_method_get(this, _fillGhostTableWithSamples, fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
986
+ const cachedWidth = this.columnWidthsMap.getValueAtIndex(physicalColumn);
987
+ // A full rescan is needed when it was requested explicitly, when there is no cached width
988
+ // to compare the probe against, or when so many cells changed that probing them costs
989
+ // about as much as the rescan itself.
990
+ if (cells === null || cachedWidth === null || cachedWidth === undefined || cells.length * 2 >= totalRows) {
991
+ fullRescanColumns.push(visualColumn);
992
+ } else {
993
+ probes.push({
994
+ visualColumn,
995
+ cells,
996
+ cachedWidth
997
+ });
713
998
  }
714
999
  });
1000
+ _class_private_method_get(this, _probeChangedCellsWidth, probeChangedCellsWidth).call(this, probes, fullRescanColumns);
1001
+ if (fullRescanColumns.length > 0) {
1002
+ const rowsRange = {
1003
+ from: 0,
1004
+ to: totalRows - 1
1005
+ };
1006
+ fullRescanColumns.forEach((visualColumn)=>{
1007
+ _class_private_method_get(this, _fillGhostTableWithSamples, fillGhostTableWithSamples).call(this, visualColumn, rowsRange);
1008
+ });
1009
+ }
715
1010
  if (this.ghostTable.columns.length) {
716
1011
  _class_private_method_get(this, _updateColumnWidthsMapBasedOnGhostTable, updateColumnWidthsMapBasedOnGhostTable).call(this);
717
1012
  this.ghostTable.clean();
718
1013
  }
719
1014
  }
1015
+ function probeChangedCellsWidth(probes, fullRescanColumns) {
1016
+ if (probes.length === 0) {
1017
+ return;
1018
+ }
1019
+ const growths = new Map();
1020
+ const oldValueProbes = [];
1021
+ const probeItems = probes.map(({ visualColumn, cells })=>({
1022
+ visualColumn,
1023
+ samples: this.samplesGenerator.generateSample('col', cells.map((cell)=>cell.row), visualColumn)
1024
+ }));
1025
+ const samplesByColumn = new Map(probeItems.map(({ visualColumn, samples })=>[
1026
+ visualColumn,
1027
+ samples
1028
+ ]));
1029
+ const newWidths = _class_private_method_get(this, _measureCellsWidth, measureCellsWidth).call(this, probeItems);
1030
+ probes.forEach((probe)=>{
1031
+ const newWidth = newWidths.get(probe.visualColumn);
1032
+ if (newWidth !== undefined && newWidth > probe.cachedWidth) {
1033
+ growths.set(probe.visualColumn, newWidth);
1034
+ _class_private_method_get(this, _updateCachedSamples, updateCachedSamples).call(this, probe, samplesByColumn.get(probe.visualColumn));
1035
+ } else if (probe.cells.some((cell)=>!cell.hasOldValue)) {
1036
+ fullRescanColumns.push(probe.visualColumn);
1037
+ } else {
1038
+ oldValueProbes.push(probe);
1039
+ _class_private_method_get(this, _updateCachedSamples, updateCachedSamples).call(this, probe, samplesByColumn.get(probe.visualColumn));
1040
+ }
1041
+ });
1042
+ if (oldValueProbes.length > 0) {
1043
+ const oldWidths = _class_private_method_get(this, _measureCellsWidth, measureCellsWidth).call(this, oldValueProbes.map(({ visualColumn, cells })=>({
1044
+ visualColumn,
1045
+ samples: this.samplesGenerator.generateSampleFromValues('col', cells.map((cell)=>({
1046
+ index: cell.row,
1047
+ value: _class_private_method_get(this, _formatProbeValue, formatProbeValue).call(this, cell.row, visualColumn, cell.oldValue)
1048
+ })))
1049
+ })));
1050
+ oldValueProbes.forEach(({ visualColumn, cachedWidth })=>{
1051
+ const oldWidth = oldWidths.get(visualColumn);
1052
+ if (oldWidth !== undefined && oldWidth >= cachedWidth) {
1053
+ fullRescanColumns.push(visualColumn);
1054
+ }
1055
+ });
1056
+ }
1057
+ if (growths.size > 0) {
1058
+ this.hot.batchExecution(()=>{
1059
+ growths.forEach((width, visualColumn)=>{
1060
+ this.columnWidthsMap.setValueAtIndex(this.hot.toPhysicalColumn(visualColumn), width);
1061
+ });
1062
+ }, true);
1063
+ }
1064
+ }
1065
+ function updateCachedSamples(probe, samples) {
1066
+ const physicalColumn = this.hot.toPhysicalColumn(probe.visualColumn);
1067
+ const cachedSamples = physicalColumn === null ? undefined : _class_private_field_get(this, _columnSamplesCache).get(physicalColumn);
1068
+ if (cachedSamples === undefined) {
1069
+ return;
1070
+ }
1071
+ const changedRows = new Set(probe.cells.map((cell)=>cell.row));
1072
+ cachedSamples.forEach((cachedSample, seed)=>{
1073
+ const strings = cachedSample.strings.filter(({ row })=>row === undefined || !changedRows.has(row));
1074
+ if (strings.length === 0) {
1075
+ cachedSamples.delete(seed);
1076
+ } else {
1077
+ cachedSample.strings = strings;
1078
+ }
1079
+ });
1080
+ if (samples === undefined) {
1081
+ return;
1082
+ }
1083
+ const sampleCount = this.samplesGenerator.getSampleCount();
1084
+ let bucketOverflowed = false;
1085
+ samples.forEach((sample, seed)=>{
1086
+ const cachedSample = cachedSamples.get(seed);
1087
+ if (cachedSample === undefined) {
1088
+ cachedSamples.set(seed, sample);
1089
+ return;
1090
+ }
1091
+ cachedSample.strings.push(...sample.strings);
1092
+ if (cachedSample.strings.length > sampleCount * 2) {
1093
+ bucketOverflowed = true;
1094
+ }
1095
+ });
1096
+ // Trimming an overgrown bucket would have to guess which string is the widest — the
1097
+ // width determiner can sit anywhere in it. Instead of risking its eviction (and a column
1098
+ // that renders narrower than its content), the whole entry is dropped: the next
1099
+ // re-measure falls back to one full scan that rebuilds it.
1100
+ if (bucketOverflowed && physicalColumn !== null) {
1101
+ _class_private_field_get(this, _columnSamplesCache).delete(physicalColumn);
1102
+ }
1103
+ }
1104
+ function measureCellsWidth(items) {
1105
+ const widths = new Map();
1106
+ const measurableItems = items.filter(({ samples })=>samples.size > 0);
1107
+ if (measurableItems.length === 0) {
1108
+ return widths;
1109
+ }
1110
+ const useHeaders = this.ghostTable.getSetting('useHeaders');
1111
+ this.ghostTable.setSetting('useHeaders', false);
1112
+ try {
1113
+ measurableItems.forEach(({ visualColumn, samples })=>{
1114
+ _class_private_method_get(this, _addGhostTableColumn, addGhostTableColumn).call(this, visualColumn, samples);
1115
+ });
1116
+ this.ghostTable.getWidths((visualColumn, width)=>{
1117
+ widths.set(visualColumn, width);
1118
+ });
1119
+ } finally{
1120
+ // A throwing custom renderer must not leave the ghost table with headers disabled (or
1121
+ // with the probe's columns still attached) for every later full-scan measurement.
1122
+ this.ghostTable.clean();
1123
+ this.ghostTable.setSetting('useHeaders', useHeaders);
1124
+ }
1125
+ return widths;
1126
+ }
1127
+ function formatProbeValue(row, column, value) {
1128
+ const cellMeta = this.hot.getCellMetaTransient(row, column);
1129
+ return formatCellValue(value, cellMeta, this.hot.getCellRenderer(cellMeta));
1130
+ }
720
1131
  function fillGhostTableWithSamples(visualColumn, rowsRange) {
721
1132
  const samples = this.samplesGenerator.generateColumnSamples(visualColumn, rowsRange);
722
- samples.forEach((sample, column)=>this.ghostTable.addColumn(column, sample));
1133
+ samples.forEach((sample, column)=>{
1134
+ const physicalColumn = this.hot.toPhysicalColumn(column);
1135
+ _class_private_method_get(this, _addGhostTableColumn, addGhostTableColumn).call(this, column, sample);
1136
+ _class_private_field_get(this, _columnSamplesCache).set(physicalColumn === null ? column : physicalColumn, sample);
1137
+ });
1138
+ }
1139
+ function addGhostTableColumn(visualColumn, samples) {
1140
+ this.ghostTable.addColumn(visualColumn, new Map(samples));
723
1141
  }
724
1142
  function updateColumnWidthsMapBasedOnGhostTable() {
725
1143
  this.hot.batchExecution(()=>{