handsontable 18.0.0 → 18.1.0-rc7

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 (1128) 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 +147 -0
  12. package/3rdparty/walkontable/src/axisSizing/columnUtils.mjs +142 -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 +129 -0
  16. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.mjs +119 -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 +256 -0
  23. package/3rdparty/walkontable/src/axisSizing/positionCache/index.mjs +262 -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 +121 -0
  27. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.mjs +117 -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 +206 -0
  31. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.mjs +203 -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 +121 -0
  39. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.mjs +115 -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 +111 -0
  43. package/3rdparty/walkontable/src/axisSizing/rowUtils.mjs +106 -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/range.d.ts +10 -0
  58. package/3rdparty/walkontable/src/cell/range.js +14 -3
  59. package/3rdparty/walkontable/src/cell/range.mjs +11 -0
  60. package/3rdparty/walkontable/src/core/_base.d.ts +21 -21
  61. package/3rdparty/walkontable/src/core/_base.js +58 -147
  62. package/3rdparty/walkontable/src/core/_base.mjs +17 -147
  63. package/3rdparty/walkontable/src/core/clone.d.ts +4 -14
  64. package/3rdparty/walkontable/src/core/clone.js +51 -5
  65. package/3rdparty/walkontable/src/core/clone.mjs +10 -5
  66. package/3rdparty/walkontable/src/core/core.d.ts +1 -5
  67. package/3rdparty/walkontable/src/core/core.js +52 -47
  68. package/3rdparty/walkontable/src/core/core.mjs +12 -48
  69. package/3rdparty/walkontable/src/domMeasure/geometryReader.d.mts +1 -0
  70. package/3rdparty/walkontable/src/domMeasure/geometryReader.d.ts +172 -0
  71. package/3rdparty/walkontable/src/domMeasure/geometryReader.js +19 -0
  72. package/3rdparty/walkontable/src/domMeasure/geometryReader.mjs +16 -0
  73. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.mts +1 -0
  74. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.ts +134 -0
  75. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.js +200 -0
  76. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.mjs +198 -0
  77. package/3rdparty/walkontable/src/event.d.ts +25 -12
  78. package/3rdparty/walkontable/src/event.js +91 -224
  79. package/3rdparty/walkontable/src/event.mjs +90 -224
  80. package/3rdparty/walkontable/src/facade/core.d.ts +6 -6
  81. package/3rdparty/walkontable/src/index.d.ts +1 -1
  82. package/3rdparty/walkontable/src/index.js +2 -2
  83. package/3rdparty/walkontable/src/index.mjs +1 -1
  84. package/3rdparty/walkontable/src/overlay/index.d.ts +6 -6
  85. package/3rdparty/walkontable/src/overlay/index.js +11 -11
  86. package/3rdparty/walkontable/src/overlay/index.mjs +6 -6
  87. package/3rdparty/walkontable/src/overlay/overlays.d.ts +375 -0
  88. package/3rdparty/walkontable/src/overlay/overlays.js +612 -0
  89. package/3rdparty/walkontable/src/overlay/overlays.mjs +601 -0
  90. package/3rdparty/walkontable/src/overlay/{_base.d.ts → regions/_base.d.ts} +65 -16
  91. package/3rdparty/walkontable/src/overlay/{_base.js → regions/_base.js} +160 -50
  92. package/3rdparty/walkontable/src/overlay/{_base.mjs → regions/_base.mjs} +163 -47
  93. package/3rdparty/walkontable/src/overlay/regions/bottomInlineStartCornerOverlay.d.mts +1 -0
  94. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.d.ts → regions/bottomInlineStartCornerOverlay.d.ts} +5 -10
  95. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerOverlay.js} +18 -20
  96. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.mjs → regions/bottomInlineStartCornerOverlay.mjs} +18 -20
  97. package/3rdparty/walkontable/src/overlay/regions/bottomOverlay.d.mts +1 -0
  98. package/3rdparty/walkontable/src/overlay/{bottom.d.ts → regions/bottomOverlay.d.ts} +16 -11
  99. package/3rdparty/walkontable/src/overlay/{bottom.js → regions/bottomOverlay.js} +113 -66
  100. package/3rdparty/walkontable/src/overlay/{bottom.mjs → regions/bottomOverlay.mjs} +113 -66
  101. package/3rdparty/walkontable/src/overlay/regions/inlineStartOverlay.d.mts +1 -0
  102. package/3rdparty/walkontable/src/overlay/{inlineStart.d.ts → regions/inlineStartOverlay.d.ts} +17 -11
  103. package/3rdparty/walkontable/src/overlay/{inlineStart.js → regions/inlineStartOverlay.js} +122 -67
  104. package/3rdparty/walkontable/src/overlay/{inlineStart.mjs → regions/inlineStartOverlay.mjs} +122 -67
  105. package/3rdparty/walkontable/src/overlay/regions/topInlineStartCornerOverlay.d.mts +1 -0
  106. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.d.ts → regions/topInlineStartCornerOverlay.d.ts} +5 -10
  107. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.js → regions/topInlineStartCornerOverlay.js} +13 -16
  108. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.mjs → regions/topInlineStartCornerOverlay.mjs} +13 -16
  109. package/3rdparty/walkontable/src/overlay/regions/topOverlay.d.mts +1 -0
  110. package/3rdparty/walkontable/src/overlay/{top.d.ts → regions/topOverlay.d.ts} +32 -11
  111. package/3rdparty/walkontable/src/overlay/{top.js → regions/topOverlay.js} +163 -77
  112. package/3rdparty/walkontable/src/overlay/{top.mjs → regions/topOverlay.mjs} +163 -77
  113. package/3rdparty/walkontable/src/overlay/resizeMonitor.d.mts +1 -0
  114. package/3rdparty/walkontable/src/overlay/resizeMonitor.d.ts +49 -0
  115. package/3rdparty/walkontable/src/overlay/resizeMonitor.js +154 -0
  116. package/3rdparty/walkontable/src/overlay/resizeMonitor.mjs +153 -0
  117. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.mts +1 -0
  118. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.ts +62 -0
  119. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.js +290 -0
  120. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.mjs +295 -0
  121. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.mts +1 -0
  122. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.ts +176 -0
  123. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.js +549 -0
  124. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.mjs +557 -0
  125. package/3rdparty/walkontable/src/overlay/spreaderSize.d.mts +1 -0
  126. package/3rdparty/walkontable/src/overlay/spreaderSize.d.ts +67 -0
  127. package/3rdparty/walkontable/src/overlay/spreaderSize.js +178 -0
  128. package/3rdparty/walkontable/src/overlay/spreaderSize.mjs +179 -0
  129. package/3rdparty/walkontable/src/{stickyScrollStrategy.d.ts → overlay/strategies/stickyScrollStrategy.d.ts} +33 -21
  130. package/3rdparty/walkontable/src/{stickyScrollStrategy.js → overlay/strategies/stickyScrollStrategy.js} +60 -41
  131. package/3rdparty/walkontable/src/{stickyScrollStrategy.mjs → overlay/strategies/stickyScrollStrategy.mjs} +58 -38
  132. package/3rdparty/walkontable/src/ports.d.mts +1 -0
  133. package/3rdparty/walkontable/src/ports.d.ts +54 -0
  134. package/3rdparty/walkontable/src/ports.js +23 -0
  135. package/3rdparty/walkontable/src/ports.mjs +24 -0
  136. package/3rdparty/walkontable/src/{renderer → render}/_base.d.ts +1 -1
  137. package/3rdparty/walkontable/src/{renderer → render}/cells.js +1 -1
  138. package/3rdparty/walkontable/src/{renderer → render}/cells.mjs +1 -1
  139. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.ts +1 -0
  140. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.js +43 -1
  141. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.mjs +44 -2
  142. package/3rdparty/walkontable/src/render/index.d.mts +1 -0
  143. package/3rdparty/walkontable/src/{renderer → render}/index.d.ts +11 -3
  144. package/3rdparty/walkontable/src/{renderer → render}/index.js +13 -3
  145. package/3rdparty/walkontable/src/{renderer → render}/index.mjs +11 -1
  146. package/3rdparty/walkontable/src/{renderer → render}/rows.js +1 -1
  147. package/3rdparty/walkontable/src/{renderer → render}/rows.mjs +1 -1
  148. package/3rdparty/walkontable/src/render/tableRenderer.d.mts +1 -0
  149. package/3rdparty/walkontable/src/{renderer/table.d.ts → render/tableRenderer.d.ts} +12 -2
  150. package/3rdparty/walkontable/src/render/tableRenderer.js +382 -0
  151. package/3rdparty/walkontable/src/{renderer/table.mjs → render/tableRenderer.mjs} +159 -6
  152. package/3rdparty/walkontable/src/{scroll.d.ts → scroll/scroll.d.ts} +27 -10
  153. package/3rdparty/walkontable/src/{scroll.js → scroll/scroll.js} +108 -32
  154. package/3rdparty/walkontable/src/{scroll.mjs → scroll/scroll.mjs} +106 -29
  155. package/3rdparty/walkontable/src/selection/border/border.d.ts +313 -5
  156. package/3rdparty/walkontable/src/selection/border/border.js +861 -51
  157. package/3rdparty/walkontable/src/selection/border/border.mjs +863 -53
  158. package/3rdparty/walkontable/src/selection/border/types.d.ts +30 -0
  159. package/3rdparty/walkontable/src/selection/manager.js +237 -0
  160. package/3rdparty/walkontable/src/selection/manager.mjs +238 -1
  161. package/3rdparty/walkontable/src/settings/accessor.d.mts +2 -0
  162. package/3rdparty/walkontable/src/settings/accessor.d.ts +74 -0
  163. package/3rdparty/walkontable/src/settings/accessor.js +78 -0
  164. package/3rdparty/walkontable/src/settings/accessor.mjs +71 -0
  165. package/3rdparty/walkontable/src/settings/defaults.d.mts +1 -0
  166. package/3rdparty/walkontable/src/{settings.d.ts → settings/defaults.d.ts} +16 -77
  167. package/3rdparty/walkontable/src/settings/defaults.js +146 -0
  168. package/3rdparty/walkontable/src/settings/defaults.mjs +225 -0
  169. package/3rdparty/walkontable/src/settings/index.d.mts +1 -0
  170. package/3rdparty/walkontable/src/settings/index.d.ts +6 -0
  171. package/3rdparty/walkontable/src/settings/index.js +20 -0
  172. package/3rdparty/walkontable/src/settings/index.mjs +5 -0
  173. package/3rdparty/walkontable/src/table/baseTable.d.mts +2 -0
  174. package/3rdparty/walkontable/src/table/baseTable.d.ts +284 -0
  175. package/3rdparty/walkontable/src/table/baseTable.js +295 -0
  176. package/3rdparty/walkontable/src/table/baseTable.mjs +283 -0
  177. package/3rdparty/walkontable/src/table/cellAccess.d.mts +1 -0
  178. package/3rdparty/walkontable/src/table/cellAccess.d.ts +101 -0
  179. package/3rdparty/walkontable/src/table/cellAccess.js +238 -0
  180. package/3rdparty/walkontable/src/table/cellAccess.mjs +229 -0
  181. package/3rdparty/walkontable/src/table/domScaffold.d.mts +1 -0
  182. package/3rdparty/walkontable/src/table/domScaffold.d.ts +37 -0
  183. package/3rdparty/walkontable/src/table/domScaffold.js +145 -0
  184. package/3rdparty/walkontable/src/table/domScaffold.mjs +136 -0
  185. package/3rdparty/walkontable/src/table/drawCycle.d.mts +1 -0
  186. package/3rdparty/walkontable/src/table/drawCycle.d.ts +16 -0
  187. package/3rdparty/walkontable/src/table/drawCycle.js +405 -0
  188. package/3rdparty/walkontable/src/table/drawCycle.mjs +403 -0
  189. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.mts +1 -0
  190. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.ts +38 -0
  191. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.js +15 -0
  192. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.mjs +14 -0
  193. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.ts +1 -1
  194. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.js +1 -1
  195. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.mjs +1 -1
  196. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.ts +1 -1
  197. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.ts +1 -1
  198. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.js +1 -1
  199. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.mjs +1 -1
  200. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.mts +2 -0
  201. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.ts +226 -0
  202. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.js +251 -0
  203. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.mjs +241 -0
  204. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.mts +1 -0
  205. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.ts +14 -0
  206. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.js +196 -0
  207. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.mjs +179 -0
  208. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.mts +2 -0
  209. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.ts +16 -0
  210. package/3rdparty/walkontable/src/table/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerTable.js} +9 -12
  211. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.mjs +21 -0
  212. package/3rdparty/walkontable/src/table/regions/bottomTable.d.mts +2 -0
  213. package/3rdparty/walkontable/src/table/regions/bottomTable.d.ts +15 -0
  214. package/3rdparty/walkontable/src/table/regions/bottomTable.js +35 -0
  215. package/3rdparty/walkontable/src/table/regions/bottomTable.mjs +20 -0
  216. package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.mts +2 -0
  217. package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.ts +12 -0
  218. package/3rdparty/walkontable/src/table/regions/inlineStartTable.js +32 -0
  219. package/3rdparty/walkontable/src/table/regions/inlineStartTable.mjs +17 -0
  220. package/3rdparty/walkontable/src/table/regions/masterTable.d.mts +2 -0
  221. package/3rdparty/walkontable/src/table/{master.d.ts → regions/masterTable.d.ts} +4 -13
  222. package/3rdparty/walkontable/src/table/{master.js → regions/masterTable.js} +23 -48
  223. package/3rdparty/walkontable/src/table/{master.mjs → regions/masterTable.mjs} +22 -47
  224. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.mts +2 -0
  225. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.ts +16 -0
  226. package/3rdparty/walkontable/src/table/{topInlineStartCorner.js → regions/topInlineStartCornerTable.js} +9 -12
  227. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.mjs +21 -0
  228. package/3rdparty/walkontable/src/table/regions/topTable.d.mts +2 -0
  229. package/3rdparty/walkontable/src/table/regions/topTable.d.ts +15 -0
  230. package/3rdparty/walkontable/src/table/regions/topTable.js +35 -0
  231. package/3rdparty/walkontable/src/table/regions/topTable.mjs +20 -0
  232. package/3rdparty/walkontable/src/types.d.ts +7 -69
  233. package/3rdparty/walkontable/src/types.mjs +2 -1
  234. package/3rdparty/walkontable/src/utils/pointerToCoords.d.mts +1 -0
  235. package/3rdparty/walkontable/src/utils/{cellCoords.d.ts → pointerToCoords.d.ts} +24 -0
  236. package/3rdparty/walkontable/src/utils/pointerToCoords.js +181 -0
  237. package/3rdparty/walkontable/src/utils/pointerToCoords.mjs +186 -0
  238. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.mts +1 -0
  239. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.ts +40 -0
  240. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.js +139 -0
  241. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.mjs +131 -0
  242. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.mts +1 -0
  243. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.ts +133 -0
  244. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.js +18 -0
  245. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.mjs +18 -0
  246. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.mts +1 -0
  247. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.ts +17 -0
  248. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.js +104 -0
  249. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.mjs +99 -0
  250. package/3rdparty/walkontable/src/viewport/calculatorFactory.d.mts +1 -0
  251. package/3rdparty/walkontable/src/viewport/calculatorFactory.d.ts +84 -0
  252. package/3rdparty/walkontable/src/viewport/calculatorFactory.js +588 -0
  253. package/3rdparty/walkontable/src/viewport/calculatorFactory.mjs +601 -0
  254. package/3rdparty/walkontable/src/viewport/viewport.d.ts +267 -0
  255. package/3rdparty/walkontable/src/viewport/viewport.js +368 -0
  256. package/3rdparty/walkontable/src/viewport/viewport.mjs +360 -0
  257. package/3rdparty/walkontable/src/viewport/workspaceSize.d.mts +1 -0
  258. package/3rdparty/walkontable/src/viewport/workspaceSize.d.ts +59 -0
  259. package/3rdparty/walkontable/src/viewport/workspaceSize.js +284 -0
  260. package/3rdparty/walkontable/src/viewport/workspaceSize.mjs +282 -0
  261. package/3rdparty/walkontable/src/wire.d.mts +1 -0
  262. package/3rdparty/walkontable/src/wire.d.ts +81 -0
  263. package/3rdparty/walkontable/src/wire.js +56 -0
  264. package/3rdparty/walkontable/src/wire.mjs +56 -0
  265. package/CHANGELOG.md +114 -1
  266. package/LICENSE.txt +1 -1
  267. package/README.md +2 -2
  268. package/base.d.ts +13 -4
  269. package/base.js +2 -2
  270. package/base.mjs +2 -2
  271. package/cellTypes/checkboxType/accessors/valueSetter.d.ts +1 -1
  272. package/cellTypes/checkboxType/accessors/valueSetter.js +3 -1
  273. package/cellTypes/checkboxType/accessors/valueSetter.mjs +3 -1
  274. package/cellTypes/index.d.ts +3 -2
  275. package/cellTypes/index.js +9 -0
  276. package/cellTypes/index.mjs +5 -2
  277. package/cellTypes/intlDatetimeType/index.d.mts +1 -0
  278. package/cellTypes/intlDatetimeType/index.d.ts +1 -0
  279. package/cellTypes/intlDatetimeType/index.js +19 -0
  280. package/cellTypes/intlDatetimeType/index.mjs +1 -0
  281. package/cellTypes/intlDatetimeType/intlDatetimeType.d.mts +1 -0
  282. package/cellTypes/intlDatetimeType/intlDatetimeType.d.ts +16 -0
  283. package/cellTypes/intlDatetimeType/intlDatetimeType.js +31 -0
  284. package/cellTypes/intlDatetimeType/intlDatetimeType.mjs +15 -0
  285. package/cellTypes/multiSelectType/index.d.ts +1 -1
  286. package/cellTypes/multiSelectType/index.js +3 -0
  287. package/cellTypes/multiSelectType/index.mjs +1 -1
  288. package/cellTypes/multiSelectType/multiSelectType.d.ts +1 -0
  289. package/cellTypes/multiSelectType/multiSelectType.js +4 -0
  290. package/cellTypes/multiSelectType/multiSelectType.mjs +1 -0
  291. package/cellTypes/numericType/accessors/valueSetter.js +30 -2
  292. package/cellTypes/numericType/accessors/valueSetter.mjs +31 -3
  293. package/core/hooks/bucket.d.ts +40 -6
  294. package/core/hooks/bucket.js +108 -72
  295. package/core/hooks/bucket.mjs +113 -72
  296. package/core/hooks/constants.js +254 -16
  297. package/core/hooks/constants.mjs +254 -16
  298. package/core/hooks/index.js +27 -22
  299. package/core/hooks/index.mjs +27 -22
  300. package/core/layout/constants.d.ts +11 -0
  301. package/core/layout/constants.js +6 -0
  302. package/core/layout/constants.mjs +12 -0
  303. package/core/layout/domSlot.d.ts +3 -1
  304. package/core/layout/domSlot.js +16 -2
  305. package/core/layout/domSlot.mjs +16 -2
  306. package/core/layout/index.d.ts +2 -2
  307. package/core/layout/index.js +6 -0
  308. package/core/layout/index.mjs +2 -2
  309. package/core/layout/layoutManager.d.ts +13 -0
  310. package/core/layout/layoutManager.js +21 -4
  311. package/core/layout/layoutManager.mjs +22 -2
  312. package/core/settings.d.ts +102 -6
  313. package/core/types.d.ts +15 -1
  314. package/core/types.mjs +9 -0
  315. package/core.js +534 -88
  316. package/core.mjs +537 -91
  317. package/dataMap/dataMap.d.ts +3 -13
  318. package/dataMap/dataMap.js +100 -41
  319. package/dataMap/dataMap.mjs +101 -42
  320. package/dataMap/dataSource.js +4 -1
  321. package/dataMap/dataSource.mjs +4 -1
  322. package/dataMap/metaManager/index.d.ts +62 -8
  323. package/dataMap/metaManager/index.js +66 -0
  324. package/dataMap/metaManager/index.mjs +66 -0
  325. package/dataMap/metaManager/lazyFactoryMap.d.ts +68 -43
  326. package/dataMap/metaManager/lazyFactoryMap.js +497 -110
  327. package/dataMap/metaManager/lazyFactoryMap.mjs +511 -111
  328. package/dataMap/metaManager/metaLayers/cellMeta.d.ts +55 -8
  329. package/dataMap/metaManager/metaLayers/cellMeta.js +108 -8
  330. package/dataMap/metaManager/metaLayers/cellMeta.mjs +108 -8
  331. package/dataMap/metaManager/metaLayers/columnMeta.d.ts +2 -1
  332. package/dataMap/metaManager/metaLayers/columnMeta.js +1 -0
  333. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -0
  334. package/dataMap/metaManager/metaSchema.js +759 -39
  335. package/dataMap/metaManager/metaSchema.mjs +759 -39
  336. package/dataMap/metaManager/mods/dynamicCellMeta.d.ts +24 -10
  337. package/dataMap/metaManager/mods/dynamicCellMeta.js +252 -28
  338. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +253 -29
  339. package/dataMap/sourceDataValidator.d.ts +13 -21
  340. package/dataMap/sourceDataValidator.js +39 -29
  341. package/dataMap/sourceDataValidator.mjs +50 -33
  342. package/dist/handsontable.full.js +30027 -11261
  343. package/dist/handsontable.full.min.js +168 -112
  344. package/dist/handsontable.js +32468 -13762
  345. package/dist/handsontable.min.js +172 -116
  346. package/dist/languages/all.js +2 -1
  347. package/dist/languages/all.min.js +1 -1
  348. package/dist/languages/fa-IR.js +2 -1
  349. package/dist/languages/fa-IR.min.js +1 -1
  350. package/dist/themes/classic.js +9 -3
  351. package/dist/themes/classic.min.js +4 -4
  352. package/dist/themes/horizon.js +9 -3
  353. package/dist/themes/horizon.min.js +4 -4
  354. package/dist/themes/main.js +9 -3
  355. package/dist/themes/main.min.js +4 -4
  356. package/dist/themes/static/variables/colors/ant.js +3 -3
  357. package/dist/themes/static/variables/colors/ant.min.js +3 -3
  358. package/dist/themes/static/variables/colors/classic.js +3 -3
  359. package/dist/themes/static/variables/colors/classic.min.js +3 -3
  360. package/dist/themes/static/variables/colors/horizon.js +3 -3
  361. package/dist/themes/static/variables/colors/horizon.min.js +3 -3
  362. package/dist/themes/static/variables/colors/main.js +3 -3
  363. package/dist/themes/static/variables/colors/main.min.js +3 -3
  364. package/dist/themes/static/variables/colors/material.js +3 -3
  365. package/dist/themes/static/variables/colors/material.min.js +3 -3
  366. package/dist/themes/static/variables/colors/shadcn.js +3 -3
  367. package/dist/themes/static/variables/colors/shadcn.min.js +3 -3
  368. package/dist/themes/static/variables/density.js +3 -3
  369. package/dist/themes/static/variables/density.min.js +3 -3
  370. package/dist/themes/static/variables/helpers/iconsMap.js +4 -9
  371. package/dist/themes/static/variables/helpers/iconsMap.min.js +4 -9
  372. package/dist/themes/static/variables/icons/horizon.js +3 -3
  373. package/dist/themes/static/variables/icons/horizon.min.js +3 -3
  374. package/dist/themes/static/variables/icons/main.js +3 -3
  375. package/dist/themes/static/variables/icons/main.min.js +3 -3
  376. package/dist/themes/static/variables/sizing.js +3 -3
  377. package/dist/themes/static/variables/sizing.min.js +3 -3
  378. package/dist/themes/static/variables/tokens/classic.js +9 -3
  379. package/dist/themes/static/variables/tokens/classic.min.js +4 -4
  380. package/dist/themes/static/variables/tokens/horizon.js +9 -3
  381. package/dist/themes/static/variables/tokens/horizon.min.js +4 -4
  382. package/dist/themes/static/variables/tokens/main.js +9 -3
  383. package/dist/themes/static/variables/tokens/main.min.js +4 -4
  384. package/editorManager.js +152 -3
  385. package/editorManager.mjs +152 -3
  386. package/editors/autocompleteEditor/autocompleteEditor.js +58 -11
  387. package/editors/autocompleteEditor/autocompleteEditor.mjs +59 -12
  388. package/editors/baseEditor/baseEditor.d.ts +15 -3
  389. package/editors/baseEditor/baseEditor.js +5 -3
  390. package/editors/baseEditor/baseEditor.mjs +15 -3
  391. package/editors/factory.js +5 -2
  392. package/editors/factory.mjs +5 -2
  393. package/editors/index.d.ts +3 -2
  394. package/editors/index.js +8 -0
  395. package/editors/index.mjs +3 -1
  396. package/editors/intlDatetimeEditor/index.d.mts +1 -0
  397. package/editors/intlDatetimeEditor/index.d.ts +1 -0
  398. package/editors/intlDatetimeEditor/index.js +19 -0
  399. package/editors/intlDatetimeEditor/index.mjs +1 -0
  400. package/editors/intlDatetimeEditor/intlDatetimeEditor.d.mts +1 -0
  401. package/editors/intlDatetimeEditor/intlDatetimeEditor.d.ts +42 -0
  402. package/editors/intlDatetimeEditor/intlDatetimeEditor.js +108 -0
  403. package/editors/intlDatetimeEditor/intlDatetimeEditor.mjs +93 -0
  404. package/editors/multiSelectEditor/multiSelectEditor.js +11 -9
  405. package/editors/multiSelectEditor/multiSelectEditor.mjs +12 -10
  406. package/editors/selectEditor/selectEditor.js +2 -1
  407. package/editors/selectEditor/selectEditor.mjs +2 -1
  408. package/editors/textEditor/textEditor.js +1 -1
  409. package/editors/textEditor/textEditor.mjs +2 -2
  410. package/eventManager.d.ts +3 -3
  411. package/focusManager/grid.d.ts +28 -0
  412. package/focusManager/grid.js +85 -2
  413. package/focusManager/grid.mjs +81 -3
  414. package/focusManager/scopeManager.js +1 -1
  415. package/focusManager/scopeManager.mjs +2 -2
  416. package/handsontable-non-commercial-license.pdf +0 -0
  417. package/helpers/array.d.ts +25 -0
  418. package/helpers/array.js +41 -4
  419. package/helpers/array.mjs +56 -4
  420. package/helpers/console.d.ts +25 -3
  421. package/helpers/console.js +40 -7
  422. package/helpers/console.mjs +52 -7
  423. package/helpers/dateTime.d.ts +14 -0
  424. package/helpers/dateTime.js +74 -2
  425. package/helpers/dateTime.mjs +73 -2
  426. package/helpers/dom/cellCoords.js +156 -13
  427. package/helpers/dom/cellCoords.mjs +156 -13
  428. package/helpers/dom/element.d.ts +47 -8
  429. package/helpers/dom/element.js +104 -18
  430. package/helpers/dom/element.mjs +132 -23
  431. package/helpers/dom/event.d.ts +58 -0
  432. package/helpers/dom/event.js +39 -0
  433. package/helpers/dom/event.mjs +63 -0
  434. package/helpers/errors.d.ts +5 -0
  435. package/helpers/errors.js +10 -6
  436. package/helpers/errors.mjs +10 -6
  437. package/helpers/feature.d.ts +19 -0
  438. package/helpers/feature.js +21 -0
  439. package/helpers/feature.mjs +30 -0
  440. package/helpers/function.d.ts +1 -1
  441. package/helpers/function.js +4 -1
  442. package/helpers/function.mjs +4 -1
  443. package/helpers/mixed.d.ts +103 -0
  444. package/helpers/mixed.js +373 -4
  445. package/helpers/mixed.mjs +413 -4
  446. package/helpers/moves.js +2 -1
  447. package/helpers/moves.mjs +2 -1
  448. package/helpers/number.d.ts +22 -0
  449. package/helpers/number.js +49 -0
  450. package/helpers/number.mjs +66 -0
  451. package/helpers/string.d.ts +14 -10
  452. package/helpers/string.js +17 -9
  453. package/helpers/string.mjs +27 -17
  454. package/helpers/templateString.d.mts +1 -0
  455. package/helpers/templateString.d.ts +13 -0
  456. package/helpers/templateString.js +29 -0
  457. package/helpers/templateString.mjs +19 -0
  458. package/helpers/uiButton.d.mts +1 -0
  459. package/helpers/uiButton.d.ts +21 -0
  460. package/helpers/uiButton.js +37 -0
  461. package/helpers/uiButton.mjs +31 -0
  462. package/i18n/languages/fa-IR.d.ts +1 -0
  463. package/i18n/languages/fa-IR.js +1 -0
  464. package/i18n/languages/fa-IR.mjs +1 -0
  465. package/index.d.ts +3 -3
  466. package/languages/all.js +2 -1
  467. package/languages/fa-IR.js +2 -1
  468. package/languages/fa-IR.mjs +1 -0
  469. package/languages/index.js +2 -1
  470. package/package.json +61 -1
  471. package/plugins/autoColumnSize/autoColumnSize.d.ts +24 -1
  472. package/plugins/autoColumnSize/autoColumnSize.js +501 -82
  473. package/plugins/autoColumnSize/autoColumnSize.mjs +508 -83
  474. package/plugins/autoRowSize/autoRowSize.d.ts +40 -5
  475. package/plugins/autoRowSize/autoRowSize.js +68 -24
  476. package/plugins/autoRowSize/autoRowSize.mjs +98 -29
  477. package/plugins/autofill/autofill.js +30 -12
  478. package/plugins/autofill/autofill.mjs +30 -12
  479. package/plugins/base/base.d.ts +10 -0
  480. package/plugins/collapsibleColumns/collapsibleColumns.d.ts +4 -0
  481. package/plugins/collapsibleColumns/collapsibleColumns.js +89 -8
  482. package/plugins/collapsibleColumns/collapsibleColumns.mjs +93 -8
  483. package/plugins/columnSorting/columnSorting.d.ts +31 -2
  484. package/plugins/columnSorting/columnSorting.js +151 -24
  485. package/plugins/columnSorting/columnSorting.mjs +153 -26
  486. package/plugins/columnSorting/columnStatesManager.d.ts +1 -1
  487. package/plugins/columnSorting/columnStatesManager.js +1 -7
  488. package/plugins/columnSorting/columnStatesManager.mjs +1 -7
  489. package/plugins/columnSorting/domHelpers.d.ts +3 -0
  490. package/plugins/columnSorting/domHelpers.js +9 -0
  491. package/plugins/columnSorting/domHelpers.mjs +3 -3
  492. package/plugins/columnSorting/rootComparator.js +21 -16
  493. package/plugins/columnSorting/rootComparator.mjs +21 -16
  494. package/plugins/columnSorting/sortFunction/checkbox.js +7 -5
  495. package/plugins/columnSorting/sortFunction/checkbox.mjs +7 -5
  496. package/plugins/columnSorting/sortFunction/default.js +15 -4
  497. package/plugins/columnSorting/sortFunction/default.mjs +15 -4
  498. package/plugins/columnSorting/sortFunction/intlDatetime.d.mts +1 -0
  499. package/plugins/columnSorting/sortFunction/intlDatetime.d.ts +10 -0
  500. package/plugins/columnSorting/sortFunction/intlDatetime.js +23 -0
  501. package/plugins/columnSorting/sortFunction/intlDatetime.mjs +12 -0
  502. package/plugins/columnSorting/sortService/registry.js +2 -0
  503. package/plugins/columnSorting/sortService/registry.mjs +2 -0
  504. package/plugins/columnSorting/utils.d.ts +8 -0
  505. package/plugins/columnSorting/utils.js +37 -45
  506. package/plugins/columnSorting/utils.mjs +42 -47
  507. package/plugins/columnSummary/columnSummary.js +9 -5
  508. package/plugins/columnSummary/columnSummary.mjs +9 -5
  509. package/plugins/columnSummary/endpoints.d.ts +69 -2
  510. package/plugins/columnSummary/endpoints.js +181 -29
  511. package/plugins/columnSummary/endpoints.mjs +181 -29
  512. package/plugins/comments/commentEditor.js +1 -1
  513. package/plugins/comments/commentEditor.mjs +2 -2
  514. package/plugins/contextMenu/contextMenu.d.ts +12 -1
  515. package/plugins/contextMenu/contextMenu.js +30 -6
  516. package/plugins/contextMenu/contextMenu.mjs +30 -6
  517. package/plugins/contextMenu/index.d.ts +1 -1
  518. package/plugins/contextMenu/menu/menu.d.ts +22 -1
  519. package/plugins/contextMenu/menu/menu.js +211 -3
  520. package/plugins/contextMenu/menu/menu.mjs +212 -4
  521. package/plugins/contextMenu/menu/menuItemRenderer.js +2 -2
  522. package/plugins/contextMenu/menu/menuItemRenderer.mjs +2 -2
  523. package/plugins/contextMenu/predefinedItems/alignment.js +14 -14
  524. package/plugins/contextMenu/predefinedItems/alignment.mjs +14 -14
  525. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
  526. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -1
  527. package/plugins/contextMenu/predefinedItems/readOnly.js +3 -3
  528. package/plugins/contextMenu/predefinedItems/readOnly.mjs +3 -3
  529. package/plugins/contextMenu/utils.js +1 -1
  530. package/plugins/contextMenu/utils.mjs +1 -1
  531. package/plugins/copyPaste/copyPaste.js +70 -16
  532. package/plugins/copyPaste/copyPaste.mjs +71 -17
  533. package/plugins/copyPaste/copyableRanges.js +6 -2
  534. package/plugins/copyPaste/copyableRanges.mjs +6 -2
  535. package/plugins/copyPaste/pasteEvent.d.ts +1 -1
  536. package/plugins/customBorders/customBorders.d.ts +21 -40
  537. package/plugins/customBorders/customBorders.js +1080 -201
  538. package/plugins/customBorders/customBorders.mjs +1082 -203
  539. package/plugins/customBorders/utils.d.ts +71 -0
  540. package/plugins/customBorders/utils.js +63 -0
  541. package/plugins/customBorders/utils.mjs +101 -0
  542. package/plugins/dataProvider/dataProvider.d.ts +2 -1
  543. package/plugins/dataProvider/dataProvider.js +22 -7
  544. package/plugins/dataProvider/dataProvider.mjs +22 -7
  545. package/plugins/dataProvider/query/crud.js +1 -1
  546. package/plugins/dataProvider/query/crud.mjs +1 -1
  547. package/plugins/dialog/dialog.js +14 -9
  548. package/plugins/dialog/dialog.mjs +14 -9
  549. package/plugins/dialog/templates/confirm.d.ts +1 -1
  550. package/plugins/dialog/templates/confirm.js +2 -1
  551. package/plugins/dialog/templates/confirm.mjs +2 -1
  552. package/plugins/dialog/ui.d.ts +5 -3
  553. package/plugins/dialog/ui.js +12 -4
  554. package/plugins/dialog/ui.mjs +12 -4
  555. package/plugins/dragToScroll/dragToScroll.d.ts +2 -2
  556. package/plugins/dragToScroll/dragToScroll.js +150 -14
  557. package/plugins/dragToScroll/dragToScroll.mjs +151 -15
  558. package/plugins/dropdownMenu/dropdownMenu.d.ts +5 -1
  559. package/plugins/dropdownMenu/dropdownMenu.js +45 -3
  560. package/plugins/dropdownMenu/dropdownMenu.mjs +46 -4
  561. package/plugins/dropdownMenu/index.d.ts +1 -0
  562. package/plugins/emptyDataState/emptyDataState.js +4 -6
  563. package/plugins/emptyDataState/emptyDataState.mjs +4 -6
  564. package/plugins/emptyDataState/ui.js +2 -1
  565. package/plugins/emptyDataState/ui.mjs +2 -1
  566. package/plugins/exportFile/dataProvider.js +7 -9
  567. package/plugins/exportFile/dataProvider.mjs +7 -9
  568. package/plugins/exportFile/exportFile.d.ts +10 -3
  569. package/plugins/exportFile/types/_base.js +4 -10
  570. package/plugins/exportFile/types/_base.mjs +4 -10
  571. package/plugins/exportFile/types/xlsx/cell-style.js +4 -2
  572. package/plugins/exportFile/types/xlsx/cell-style.mjs +4 -2
  573. package/plugins/exportFile/types/xlsx/date-utils.d.ts +15 -0
  574. package/plugins/exportFile/types/xlsx/date-utils.js +31 -0
  575. package/plugins/exportFile/types/xlsx/date-utils.mjs +36 -0
  576. package/plugins/exportFile/types/xlsx.js +13 -9
  577. package/plugins/exportFile/types/xlsx.mjs +14 -10
  578. package/plugins/exportFile/utils.d.ts +9 -1
  579. package/plugins/exportFile/utils.js +27 -4
  580. package/plugins/exportFile/utils.mjs +40 -2
  581. package/plugins/filters/component/_base.d.ts +1 -2
  582. package/plugins/filters/component/_base.js +1 -2
  583. package/plugins/filters/component/_base.mjs +1 -2
  584. package/plugins/filters/component/condition.d.ts +1 -0
  585. package/plugins/filters/component/condition.js +2 -0
  586. package/plugins/filters/component/condition.mjs +2 -0
  587. package/plugins/filters/component/value.d.ts +5 -6
  588. package/plugins/filters/component/value.js +53 -34
  589. package/plugins/filters/component/value.mjs +54 -35
  590. package/plugins/filters/condition/date/after.js +2 -1
  591. package/plugins/filters/condition/date/after.mjs +2 -1
  592. package/plugins/filters/condition/date/afterOrEqual.js +2 -1
  593. package/plugins/filters/condition/date/afterOrEqual.mjs +2 -1
  594. package/plugins/filters/condition/date/before.js +2 -1
  595. package/plugins/filters/condition/date/before.mjs +2 -1
  596. package/plugins/filters/condition/date/beforeOrEqual.js +2 -1
  597. package/plugins/filters/condition/date/beforeOrEqual.mjs +2 -1
  598. package/plugins/filters/condition/equal.d.ts +7 -0
  599. package/plugins/filters/condition/equal.js +4 -0
  600. package/plugins/filters/condition/equal.mjs +10 -0
  601. package/plugins/filters/condition/intlDatetime/after.d.mts +1 -0
  602. package/plugins/filters/condition/intlDatetime/after.d.ts +18 -0
  603. package/plugins/filters/condition/intlDatetime/after.js +77 -0
  604. package/plugins/filters/condition/intlDatetime/after.mjs +22 -0
  605. package/plugins/filters/condition/intlDatetime/afterOrEqual.d.mts +1 -0
  606. package/plugins/filters/condition/intlDatetime/afterOrEqual.d.ts +18 -0
  607. package/plugins/filters/condition/intlDatetime/afterOrEqual.js +77 -0
  608. package/plugins/filters/condition/intlDatetime/afterOrEqual.mjs +22 -0
  609. package/plugins/filters/condition/intlDatetime/before.d.mts +1 -0
  610. package/plugins/filters/condition/intlDatetime/before.d.ts +18 -0
  611. package/plugins/filters/condition/intlDatetime/before.js +77 -0
  612. package/plugins/filters/condition/intlDatetime/before.mjs +22 -0
  613. package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.mts +1 -0
  614. package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.ts +18 -0
  615. package/plugins/filters/condition/intlDatetime/beforeOrEqual.js +77 -0
  616. package/plugins/filters/condition/intlDatetime/beforeOrEqual.mjs +22 -0
  617. package/plugins/filters/condition/intlDatetime/between.d.mts +1 -0
  618. package/plugins/filters/condition/intlDatetime/between.d.ts +18 -0
  619. package/plugins/filters/condition/intlDatetime/between.js +78 -0
  620. package/plugins/filters/condition/intlDatetime/between.mjs +23 -0
  621. package/plugins/filters/condition/intlDatetime/today.d.mts +1 -0
  622. package/plugins/filters/condition/intlDatetime/today.d.ts +17 -0
  623. package/plugins/filters/condition/intlDatetime/today.js +76 -0
  624. package/plugins/filters/condition/intlDatetime/today.mjs +20 -0
  625. package/plugins/filters/condition/intlDatetime/tomorrow.d.mts +1 -0
  626. package/plugins/filters/condition/intlDatetime/tomorrow.d.ts +17 -0
  627. package/plugins/filters/condition/intlDatetime/tomorrow.js +77 -0
  628. package/plugins/filters/condition/intlDatetime/tomorrow.mjs +21 -0
  629. package/plugins/filters/condition/intlDatetime/yesterday.d.mts +1 -0
  630. package/plugins/filters/condition/intlDatetime/yesterday.d.ts +17 -0
  631. package/plugins/filters/condition/intlDatetime/yesterday.js +77 -0
  632. package/plugins/filters/condition/intlDatetime/yesterday.mjs +21 -0
  633. package/plugins/filters/conditionCollection.js +4 -7
  634. package/plugins/filters/conditionCollection.mjs +4 -7
  635. package/plugins/filters/conditionUpdateObserver.d.ts +2 -2
  636. package/plugins/filters/conditionUpdateObserver.js +148 -49
  637. package/plugins/filters/conditionUpdateObserver.mjs +148 -49
  638. package/plugins/filters/constants.d.ts +1 -0
  639. package/plugins/filters/constants.js +31 -0
  640. package/plugins/filters/constants.mjs +28 -0
  641. package/plugins/filters/dataFilter.d.ts +4 -12
  642. package/plugins/filters/dataFilter.js +7 -19
  643. package/plugins/filters/dataFilter.mjs +8 -20
  644. package/plugins/filters/filters.d.ts +33 -9
  645. package/plugins/filters/filters.js +91 -31
  646. package/plugins/filters/filters.mjs +92 -32
  647. package/plugins/filters/sortComparators.d.ts +9 -2
  648. package/plugins/filters/sortComparators.js +34 -1
  649. package/plugins/filters/sortComparators.mjs +38 -3
  650. package/plugins/filters/ui/input.d.ts +4 -0
  651. package/plugins/filters/ui/input.js +18 -6
  652. package/plugins/filters/ui/input.mjs +18 -6
  653. package/plugins/filters/ui/multipleSelect.js +27 -4
  654. package/plugins/filters/ui/multipleSelect.mjs +27 -4
  655. package/plugins/filters/ui/select.js +1 -1
  656. package/plugins/filters/ui/select.mjs +1 -1
  657. package/plugins/formulas/engine/register.d.ts +5 -4
  658. package/plugins/formulas/engine/register.js +5 -2
  659. package/plugins/formulas/engine/register.mjs +9 -5
  660. package/plugins/formulas/engine/settings.d.ts +2 -6
  661. package/plugins/formulas/engine/settings.js +29 -4
  662. package/plugins/formulas/engine/settings.mjs +29 -4
  663. package/plugins/formulas/engine/types.d.ts +12 -2
  664. package/plugins/formulas/formulas.d.ts +39 -0
  665. package/plugins/formulas/formulas.js +789 -47
  666. package/plugins/formulas/formulas.mjs +793 -49
  667. package/plugins/formulas/hyperlinkUrl.d.mts +1 -0
  668. package/plugins/formulas/hyperlinkUrl.d.ts +12 -0
  669. package/plugins/formulas/hyperlinkUrl.js +32 -0
  670. package/plugins/formulas/hyperlinkUrl.mjs +32 -0
  671. package/plugins/formulas/indexSyncer/axisSyncer.d.ts +1 -0
  672. package/plugins/formulas/indexSyncer/axisSyncer.js +72 -15
  673. package/plugins/formulas/indexSyncer/axisSyncer.mjs +72 -15
  674. package/plugins/formulas/utils.d.ts +9 -0
  675. package/plugins/formulas/utils.js +21 -0
  676. package/plugins/formulas/utils.mjs +25 -0
  677. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +6 -1
  678. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +6 -1
  679. package/plugins/hiddenColumns/hiddenColumns.js +6 -3
  680. package/plugins/hiddenColumns/hiddenColumns.mjs +6 -3
  681. package/plugins/hiddenRows/contextMenuItem/showRow.js +6 -1
  682. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +6 -1
  683. package/plugins/hiddenRows/hiddenRows.js +6 -3
  684. package/plugins/hiddenRows/hiddenRows.mjs +6 -3
  685. package/plugins/index.d.ts +5 -1
  686. package/plugins/index.js +10 -0
  687. package/plugins/index.mjs +5 -1
  688. package/plugins/loading/content.d.ts +5 -3
  689. package/plugins/loading/content.js +3 -2
  690. package/plugins/loading/content.mjs +8 -5
  691. package/plugins/loading/loading.d.ts +5 -2
  692. package/plugins/loading/loading.mjs +5 -2
  693. package/plugins/manualColumnMove/manualColumnMove.d.ts +10 -0
  694. package/plugins/manualColumnMove/manualColumnMove.js +122 -20
  695. package/plugins/manualColumnMove/manualColumnMove.mjs +123 -21
  696. package/plugins/manualColumnResize/manualColumnResize.d.ts +20 -7
  697. package/plugins/manualColumnResize/manualColumnResize.js +33 -13
  698. package/plugins/manualColumnResize/manualColumnResize.mjs +34 -14
  699. package/plugins/manualRowResize/manualRowResize.d.ts +21 -8
  700. package/plugins/manualRowResize/manualRowResize.js +34 -14
  701. package/plugins/manualRowResize/manualRowResize.mjs +35 -15
  702. package/plugins/mergeCells/cellCoords.d.ts +8 -0
  703. package/plugins/mergeCells/cellCoords.js +11 -0
  704. package/plugins/mergeCells/cellCoords.mjs +11 -0
  705. package/plugins/mergeCells/cellsCollection.d.ts +46 -2
  706. package/plugins/mergeCells/cellsCollection.js +189 -68
  707. package/plugins/mergeCells/cellsCollection.mjs +189 -68
  708. package/plugins/mergeCells/focusOrder.d.ts +26 -20
  709. package/plugins/mergeCells/focusOrder.js +358 -177
  710. package/plugins/mergeCells/focusOrder.mjs +363 -172
  711. package/plugins/mergeCells/mergeCells.d.ts +13 -8
  712. package/plugins/mergeCells/mergeCells.js +322 -64
  713. package/plugins/mergeCells/mergeCells.mjs +322 -64
  714. package/plugins/moveCells/helpers.d.mts +1 -0
  715. package/plugins/moveCells/helpers.d.ts +21 -0
  716. package/plugins/moveCells/helpers.js +20 -0
  717. package/plugins/moveCells/helpers.mjs +15 -0
  718. package/plugins/moveCells/index.d.mts +1 -0
  719. package/plugins/moveCells/index.d.ts +1 -0
  720. package/plugins/moveCells/index.js +22 -0
  721. package/plugins/moveCells/index.mjs +1 -0
  722. package/plugins/moveCells/moveCells.d.mts +1 -0
  723. package/plugins/moveCells/moveCells.d.ts +80 -0
  724. package/plugins/moveCells/moveCells.js +602 -0
  725. package/plugins/moveCells/moveCells.mjs +587 -0
  726. package/plugins/multiColumnSorting/multiColumnSorting.d.ts +8 -8
  727. package/plugins/multiColumnSorting/multiColumnSorting.js +11 -16
  728. package/plugins/multiColumnSorting/multiColumnSorting.mjs +11 -16
  729. package/plugins/multiColumnSorting/rootComparator.js +26 -19
  730. package/plugins/multiColumnSorting/rootComparator.mjs +26 -19
  731. package/plugins/multipleSelectionHandles/multipleSelectionHandles.d.ts +19 -4
  732. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +273 -58
  733. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +273 -58
  734. package/plugins/nestedHeaders/nestedHeaders.d.ts +10 -1
  735. package/plugins/nestedHeaders/nestedHeaders.js +222 -23
  736. package/plugins/nestedHeaders/nestedHeaders.mjs +222 -23
  737. package/plugins/nestedHeaders/stateManager/columnArrangement.d.mts +1 -0
  738. package/plugins/nestedHeaders/stateManager/columnArrangement.d.ts +37 -0
  739. package/plugins/nestedHeaders/stateManager/columnArrangement.js +35 -0
  740. package/plugins/nestedHeaders/stateManager/columnArrangement.mjs +30 -0
  741. package/plugins/nestedHeaders/stateManager/deriveSettings.d.mts +1 -0
  742. package/plugins/nestedHeaders/stateManager/deriveSettings.d.ts +57 -0
  743. package/plugins/nestedHeaders/stateManager/deriveSettings.js +115 -0
  744. package/plugins/nestedHeaders/stateManager/deriveSettings.mjs +135 -0
  745. package/plugins/nestedHeaders/stateManager/headersTree.d.ts +14 -1
  746. package/plugins/nestedHeaders/stateManager/index.d.ts +76 -13
  747. package/plugins/nestedHeaders/stateManager/index.js +381 -38
  748. package/plugins/nestedHeaders/stateManager/index.mjs +382 -39
  749. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +3 -2
  750. package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +3 -2
  751. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
  752. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
  753. package/plugins/nestedHeaders/stateManager/sourceSettings.d.ts +23 -6
  754. package/plugins/nestedHeaders/stateManager/sourceSettings.js +20 -4
  755. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +20 -4
  756. package/plugins/nestedHeaders/stateManager/utils.d.ts +17 -1
  757. package/plugins/nestedHeaders/stateManager/utils.js +6 -1
  758. package/plugins/nestedHeaders/stateManager/utils.mjs +6 -1
  759. package/plugins/nestedHeaders/utils/ghostTable.js +21 -8
  760. package/plugins/nestedHeaders/utils/ghostTable.mjs +21 -8
  761. package/plugins/nestedRows/data/dataManager.d.ts +4 -1
  762. package/plugins/nestedRows/data/dataManager.js +10 -4
  763. package/plugins/nestedRows/data/dataManager.mjs +10 -4
  764. package/plugins/nestedRows/nestedRows.d.ts +127 -1
  765. package/plugins/nestedRows/nestedRows.js +330 -8
  766. package/plugins/nestedRows/nestedRows.mjs +330 -8
  767. package/plugins/nestedRows/ui/collapsing.d.ts +58 -0
  768. package/plugins/nestedRows/ui/collapsing.js +236 -40
  769. package/plugins/nestedRows/ui/collapsing.mjs +236 -40
  770. package/plugins/notification/notification.d.ts +2 -1
  771. package/plugins/notification/notification.js +6 -3
  772. package/plugins/notification/notification.mjs +6 -3
  773. package/plugins/notification/ui.d.ts +8 -5
  774. package/plugins/notification/ui.js +18 -6
  775. package/plugins/notification/ui.mjs +18 -6
  776. package/plugins/pagination/pagination.js +2 -2
  777. package/plugins/pagination/pagination.mjs +2 -2
  778. package/plugins/search/search.js +23 -2
  779. package/plugins/search/search.mjs +23 -2
  780. package/plugins/selectionHandles/helpers.d.mts +1 -0
  781. package/plugins/selectionHandles/helpers.d.ts +17 -0
  782. package/plugins/selectionHandles/helpers.js +16 -0
  783. package/plugins/selectionHandles/helpers.mjs +11 -0
  784. package/plugins/selectionHandles/index.d.mts +1 -0
  785. package/plugins/selectionHandles/index.d.ts +1 -0
  786. package/plugins/selectionHandles/index.js +22 -0
  787. package/plugins/selectionHandles/index.mjs +1 -0
  788. package/plugins/selectionHandles/selectionHandles.d.mts +1 -0
  789. package/plugins/selectionHandles/selectionHandles.d.ts +52 -0
  790. package/plugins/selectionHandles/selectionHandles.js +342 -0
  791. package/plugins/selectionHandles/selectionHandles.mjs +323 -0
  792. package/plugins/trimRows/trimRows.d.ts +1 -1
  793. package/plugins/trimRows/trimRows.js +6 -2
  794. package/plugins/trimRows/trimRows.mjs +6 -2
  795. package/plugins/types.d.ts +4 -0
  796. package/plugins/undoRedo/actions/cellAlignment.js +1 -1
  797. package/plugins/undoRedo/actions/cellAlignment.mjs +1 -1
  798. package/plugins/undoRedo/actions/createColumn.js +4 -1
  799. package/plugins/undoRedo/actions/createColumn.mjs +4 -1
  800. package/plugins/undoRedo/actions/createRow.js +4 -1
  801. package/plugins/undoRedo/actions/createRow.mjs +4 -1
  802. package/plugins/undoRedo/actions/fixedCounts.d.mts +1 -0
  803. package/plugins/undoRedo/actions/fixedCounts.d.ts +36 -0
  804. package/plugins/undoRedo/actions/fixedCounts.js +63 -0
  805. package/plugins/undoRedo/actions/fixedCounts.mjs +62 -0
  806. package/plugins/undoRedo/actions/index.js +2 -0
  807. package/plugins/undoRedo/actions/index.mjs +2 -0
  808. package/plugins/undoRedo/actions/moveCells.d.mts +1 -0
  809. package/plugins/undoRedo/actions/moveCells.d.ts +104 -0
  810. package/plugins/undoRedo/actions/moveCells.js +225 -0
  811. package/plugins/undoRedo/actions/moveCells.mjs +227 -0
  812. package/plugins/undoRedo/actions/removeColumn.d.ts +18 -2
  813. package/plugins/undoRedo/actions/removeColumn.js +11 -4
  814. package/plugins/undoRedo/actions/removeColumn.mjs +12 -5
  815. package/plugins/undoRedo/actions/removeRow.js +2 -57
  816. package/plugins/undoRedo/actions/removeRow.mjs +2 -57
  817. package/plugins/undoRedo/undoRedo.d.ts +26 -0
  818. package/plugins/undoRedo/undoRedo.js +36 -2
  819. package/plugins/undoRedo/undoRedo.mjs +36 -2
  820. package/plugins/undoRedo/utils.d.ts +29 -0
  821. package/plugins/undoRedo/utils.js +55 -3
  822. package/plugins/undoRedo/utils.mjs +59 -0
  823. package/renderSizeProbe.d.mts +1 -0
  824. package/renderSizeProbe.d.ts +60 -0
  825. package/renderSizeProbe.js +163 -0
  826. package/renderSizeProbe.mjs +176 -0
  827. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  828. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  829. package/renderers/index.d.ts +3 -2
  830. package/renderers/index.js +8 -0
  831. package/renderers/index.mjs +3 -1
  832. package/renderers/intlDatetimeRenderer/index.d.mts +1 -0
  833. package/renderers/intlDatetimeRenderer/index.d.ts +1 -0
  834. package/renderers/intlDatetimeRenderer/index.js +22 -0
  835. package/renderers/intlDatetimeRenderer/index.mjs +1 -0
  836. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.mts +1 -0
  837. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.ts +26 -0
  838. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.js +82 -0
  839. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.mjs +67 -0
  840. package/renderers/multiSelectRenderer/multiSelectRenderer.js +2 -3
  841. package/renderers/multiSelectRenderer/multiSelectRenderer.mjs +2 -3
  842. package/renderers/multiSelectRenderer/utils/utils.d.ts +1 -1
  843. package/renderers/multiSelectRenderer/utils/utils.js +11 -8
  844. package/renderers/multiSelectRenderer/utils/utils.mjs +11 -8
  845. package/renderers/passwordRenderer/passwordRenderer.js +6 -1
  846. package/renderers/passwordRenderer/passwordRenderer.mjs +6 -1
  847. package/renderers/renderCell.d.mts +1 -0
  848. package/renderers/renderCell.d.ts +37 -0
  849. package/renderers/renderCell.js +43 -0
  850. package/renderers/renderCell.mjs +48 -0
  851. package/selection/highlight/types/areaLayered.d.ts +3 -1
  852. package/selection/highlight/types/areaLayered.js +4 -2
  853. package/selection/highlight/types/areaLayered.mjs +6 -2
  854. package/selection/highlight/types/focus.d.ts +3 -1
  855. package/selection/highlight/types/focus.js +3 -2
  856. package/selection/highlight/types/focus.mjs +5 -2
  857. package/selection/mouseEventHandler.js +29 -26
  858. package/selection/mouseEventHandler.mjs +29 -26
  859. package/selection/moveCells.d.mts +1 -0
  860. package/selection/moveCells.d.ts +15 -0
  861. package/selection/moveCells.js +13 -0
  862. package/selection/moveCells.mjs +9 -0
  863. package/selection/selection.d.ts +56 -2
  864. package/selection/selection.js +149 -5
  865. package/selection/selection.mjs +149 -5
  866. package/selection/types.d.ts +3 -0
  867. package/settings.d.ts +24 -3
  868. package/shortcuts/context.d.ts +4 -0
  869. package/shortcuts/context.js +16 -8
  870. package/shortcuts/context.mjs +20 -8
  871. package/shortcuts/contexts/commands/populateSelectedCellsData.js +1 -1
  872. package/shortcuts/contexts/commands/populateSelectedCellsData.mjs +1 -1
  873. package/styles/handsontable.css +504 -158
  874. package/styles/handsontable.min.css +4 -4
  875. package/styles/handsontableStyles.d.mts +2 -0
  876. package/styles/handsontableStyles.d.ts +2 -0
  877. package/styles/handsontableStyles.js +1 -1
  878. package/styles/handsontableStyles.mjs +1 -1
  879. package/styles/ht-icons-horizon.css +1 -10
  880. package/styles/ht-icons-horizon.min.css +4 -4
  881. package/styles/ht-icons-main.css +1 -10
  882. package/styles/ht-icons-main.min.css +4 -4
  883. package/styles/ht-theme-classic-no-icons.css +6 -0
  884. package/styles/ht-theme-classic-no-icons.min.css +4 -4
  885. package/styles/ht-theme-classic.css +7 -10
  886. package/styles/ht-theme-classic.min.css +4 -4
  887. package/styles/ht-theme-horizon-no-icons.css +6 -0
  888. package/styles/ht-theme-horizon-no-icons.min.css +4 -4
  889. package/styles/ht-theme-horizon.css +7 -10
  890. package/styles/ht-theme-horizon.min.css +4 -4
  891. package/styles/ht-theme-main-no-icons.css +6 -0
  892. package/styles/ht-theme-main-no-icons.min.css +4 -4
  893. package/styles/ht-theme-main.css +7 -10
  894. package/styles/ht-theme-main.min.css +4 -4
  895. package/tableView.d.ts +17 -4
  896. package/tableView.js +208 -42
  897. package/tableView.mjs +209 -43
  898. package/themes/engine/index.d.ts +2 -1
  899. package/themes/engine/index.js +3 -0
  900. package/themes/engine/index.mjs +1 -1
  901. package/themes/engine/manager.d.ts +75 -3
  902. package/themes/engine/manager.js +242 -6
  903. package/themes/engine/manager.mjs +249 -6
  904. package/themes/engine/utils/cssVariables.d.ts +18 -1
  905. package/themes/engine/utils/cssVariables.js +27 -11
  906. package/themes/engine/utils/cssVariables.mjs +28 -11
  907. package/themes/engine/utils/validation.js +7 -0
  908. package/themes/engine/utils/validation.mjs +7 -0
  909. package/themes/static/variables/helpers/iconsMap.js +1 -6
  910. package/themes/static/variables/helpers/iconsMap.mjs +1 -6
  911. package/themes/static/variables/tokens/classic.js +6 -0
  912. package/themes/static/variables/tokens/classic.mjs +6 -0
  913. package/themes/static/variables/tokens/horizon.js +6 -0
  914. package/themes/static/variables/tokens/horizon.mjs +6 -0
  915. package/themes/static/variables/tokens/main.js +6 -0
  916. package/themes/static/variables/tokens/main.mjs +6 -0
  917. package/themes/types.d.ts +1 -1
  918. package/translations/indexMapper.d.ts +14 -9
  919. package/translations/indexMapper.js +104 -43
  920. package/translations/indexMapper.mjs +104 -43
  921. package/translations/mapCollections/aggregatedCollection.js +20 -35
  922. package/translations/mapCollections/aggregatedCollection.mjs +20 -35
  923. package/translations/mapCollections/mapCollection.d.ts +10 -4
  924. package/translations/mapCollections/mapCollection.js +2 -2
  925. package/translations/mapCollections/mapCollection.mjs +2 -2
  926. package/translations/maps/booleanMap.d.mts +1 -0
  927. package/translations/maps/booleanMap.d.ts +86 -0
  928. package/translations/maps/booleanMap.js +300 -0
  929. package/translations/maps/booleanMap.mjs +308 -0
  930. package/translations/maps/hidingMap.d.ts +5 -2
  931. package/translations/maps/hidingMap.js +8 -3
  932. package/translations/maps/hidingMap.mjs +8 -3
  933. package/translations/maps/index.d.ts +5 -2
  934. package/translations/maps/index.js +7 -3
  935. package/translations/maps/index.mjs +10 -2
  936. package/translations/maps/indexMap.d.ts +26 -2
  937. package/translations/maps/indexMap.js +78 -6
  938. package/translations/maps/indexMap.mjs +78 -6
  939. package/translations/maps/indexesSequence.d.ts +53 -2
  940. package/translations/maps/indexesSequence.js +225 -3
  941. package/translations/maps/indexesSequence.mjs +233 -3
  942. package/translations/maps/trimmingMap.d.ts +5 -2
  943. package/translations/maps/trimmingMap.js +8 -3
  944. package/translations/maps/trimmingMap.mjs +8 -3
  945. package/translations/maps/utils/actionsOnIndexes.js +20 -1
  946. package/translations/maps/utils/actionsOnIndexes.mjs +20 -1
  947. package/translations/maps/utils/indexesSequence.js +12 -3
  948. package/translations/maps/utils/indexesSequence.mjs +12 -3
  949. package/translations/maps/utils/physicallyIndexed.js +12 -1
  950. package/translations/maps/utils/physicallyIndexed.mjs +12 -1
  951. package/utils/entitlementLicenseKey/classify.d.mts +1 -0
  952. package/utils/entitlementLicenseKey/classify.d.ts +34 -0
  953. package/utils/entitlementLicenseKey/classify.js +97 -0
  954. package/utils/entitlementLicenseKey/classify.mjs +96 -0
  955. package/utils/entitlementLicenseKey/constants.d.mts +1 -0
  956. package/utils/entitlementLicenseKey/constants.d.ts +69 -0
  957. package/utils/entitlementLicenseKey/constants.js +54 -0
  958. package/utils/entitlementLicenseKey/constants.mjs +66 -0
  959. package/utils/entitlementLicenseKey/detectFormat.d.mts +1 -0
  960. package/utils/entitlementLicenseKey/detectFormat.d.ts +23 -0
  961. package/utils/entitlementLicenseKey/detectFormat.js +60 -0
  962. package/utils/entitlementLicenseKey/detectFormat.mjs +60 -0
  963. package/utils/entitlementLicenseKey/encoding.d.mts +1 -0
  964. package/utils/entitlementLicenseKey/encoding.d.ts +58 -0
  965. package/utils/entitlementLicenseKey/encoding.js +161 -0
  966. package/utils/entitlementLicenseKey/encoding.mjs +172 -0
  967. package/utils/entitlementLicenseKey/extractKeyData.d.mts +1 -0
  968. package/utils/entitlementLicenseKey/extractKeyData.d.ts +47 -0
  969. package/utils/entitlementLicenseKey/extractKeyData.js +213 -0
  970. package/utils/entitlementLicenseKey/extractKeyData.mjs +232 -0
  971. package/utils/entitlementLicenseKey/grants.d.mts +1 -0
  972. package/utils/entitlementLicenseKey/grants.d.ts +54 -0
  973. package/utils/entitlementLicenseKey/grants.js +68 -0
  974. package/utils/entitlementLicenseKey/grants.mjs +84 -0
  975. package/utils/entitlementLicenseKey/index.d.mts +1 -0
  976. package/utils/entitlementLicenseKey/index.d.ts +8 -0
  977. package/utils/entitlementLicenseKey/index.js +53 -0
  978. package/utils/entitlementLicenseKey/index.mjs +6 -0
  979. package/utils/entitlementLicenseKey/sha512.d.mts +1 -0
  980. package/utils/entitlementLicenseKey/sha512.d.ts +11 -0
  981. package/utils/entitlementLicenseKey/sha512.js +328 -0
  982. package/utils/entitlementLicenseKey/sha512.mjs +327 -0
  983. package/utils/entitlementLicenseKey/types.d.mts +1 -0
  984. package/utils/entitlementLicenseKey/types.d.ts +84 -0
  985. package/utils/entitlementLicenseKey/types.js +8 -0
  986. package/utils/entitlementLicenseKey/types.mjs +10 -0
  987. package/utils/ghostTable.d.ts +1 -0
  988. package/utils/ghostTable.js +60 -11
  989. package/utils/ghostTable.mjs +60 -11
  990. package/utils/licenseBranding/badge.d.mts +1 -0
  991. package/utils/licenseBranding/badge.d.ts +21 -0
  992. package/utils/licenseBranding/badge.js +237 -0
  993. package/utils/licenseBranding/badge.mjs +244 -0
  994. package/utils/licenseBranding/content.d.mts +1 -0
  995. package/utils/licenseBranding/content.d.ts +54 -0
  996. package/utils/licenseBranding/content.js +93 -0
  997. package/utils/licenseBranding/content.mjs +79 -0
  998. package/utils/licenseBranding/index.d.mts +1 -0
  999. package/utils/licenseBranding/index.d.ts +14 -0
  1000. package/utils/licenseBranding/index.js +55 -0
  1001. package/utils/licenseBranding/index.mjs +56 -0
  1002. package/utils/licenseBranding/lockScreen.d.mts +1 -0
  1003. package/utils/licenseBranding/lockScreen.d.ts +23 -0
  1004. package/utils/licenseBranding/lockScreen.js +150 -0
  1005. package/utils/licenseBranding/lockScreen.mjs +159 -0
  1006. package/utils/licenseNotification.d.ts +19 -0
  1007. package/utils/licenseNotification.js +56 -29
  1008. package/utils/licenseNotification.mjs +61 -29
  1009. package/utils/movableMeta.d.mts +1 -0
  1010. package/utils/movableMeta.d.ts +40 -0
  1011. package/utils/movableMeta.js +47 -0
  1012. package/utils/movableMeta.mjs +46 -0
  1013. package/utils/parseTable.js +16 -7
  1014. package/utils/parseTable.mjs +16 -7
  1015. package/utils/samplesGenerator.d.ts +41 -14
  1016. package/utils/samplesGenerator.js +114 -42
  1017. package/utils/samplesGenerator.mjs +114 -42
  1018. package/utils/sanitizer.d.mts +1 -0
  1019. package/utils/sanitizer.d.ts +47 -0
  1020. package/utils/sanitizer.js +43 -0
  1021. package/utils/sanitizer.mjs +55 -0
  1022. package/utils/stylesHandler.d.ts +13 -0
  1023. package/utils/stylesHandler.js +55 -2
  1024. package/utils/stylesHandler.mjs +55 -2
  1025. package/validators/autocompleteValidator/autocompleteValidator.js +3 -0
  1026. package/validators/autocompleteValidator/autocompleteValidator.mjs +3 -0
  1027. package/validators/index.d.ts +3 -2
  1028. package/validators/index.js +8 -0
  1029. package/validators/index.mjs +3 -1
  1030. package/validators/intlDatetimeValidator/index.d.mts +1 -0
  1031. package/validators/intlDatetimeValidator/index.d.ts +1 -0
  1032. package/validators/intlDatetimeValidator/index.js +25 -0
  1033. package/validators/intlDatetimeValidator/index.mjs +1 -0
  1034. package/validators/intlDatetimeValidator/intlDatetimeValidator.d.mts +1 -0
  1035. package/validators/intlDatetimeValidator/intlDatetimeValidator.d.ts +28 -0
  1036. package/validators/intlDatetimeValidator/intlDatetimeValidator.js +49 -0
  1037. package/validators/intlDatetimeValidator/intlDatetimeValidator.mjs +37 -0
  1038. package/3rdparty/walkontable/src/overlay/bottom.d.mts +0 -1
  1039. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.d.mts +0 -1
  1040. package/3rdparty/walkontable/src/overlay/inlineStart.d.mts +0 -1
  1041. package/3rdparty/walkontable/src/overlay/top.d.mts +0 -1
  1042. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.d.mts +0 -1
  1043. package/3rdparty/walkontable/src/overlays.d.ts +0 -329
  1044. package/3rdparty/walkontable/src/overlays.js +0 -870
  1045. package/3rdparty/walkontable/src/overlays.mjs +0 -860
  1046. package/3rdparty/walkontable/src/renderer/table.d.mts +0 -1
  1047. package/3rdparty/walkontable/src/renderer/table.js +0 -229
  1048. package/3rdparty/walkontable/src/settings.d.mts +0 -2
  1049. package/3rdparty/walkontable/src/settings.js +0 -196
  1050. package/3rdparty/walkontable/src/settings.mjs +0 -263
  1051. package/3rdparty/walkontable/src/table/bottom.d.mts +0 -2
  1052. package/3rdparty/walkontable/src/table/bottom.d.ts +0 -19
  1053. package/3rdparty/walkontable/src/table/bottom.js +0 -38
  1054. package/3rdparty/walkontable/src/table/bottom.mjs +0 -23
  1055. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.mts +0 -2
  1056. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.ts +0 -20
  1057. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +0 -24
  1058. package/3rdparty/walkontable/src/table/inlineStart.d.mts +0 -2
  1059. package/3rdparty/walkontable/src/table/inlineStart.d.ts +0 -16
  1060. package/3rdparty/walkontable/src/table/inlineStart.js +0 -35
  1061. package/3rdparty/walkontable/src/table/inlineStart.mjs +0 -20
  1062. package/3rdparty/walkontable/src/table/master.d.mts +0 -2
  1063. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.mts +0 -2
  1064. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.ts +0 -75
  1065. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -122
  1066. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -112
  1067. package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.mts +0 -2
  1068. package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.ts +0 -75
  1069. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -122
  1070. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -112
  1071. package/3rdparty/walkontable/src/table/top.d.mts +0 -2
  1072. package/3rdparty/walkontable/src/table/top.d.ts +0 -19
  1073. package/3rdparty/walkontable/src/table/top.js +0 -38
  1074. package/3rdparty/walkontable/src/table/top.mjs +0 -23
  1075. package/3rdparty/walkontable/src/table/topInlineStartCorner.d.mts +0 -2
  1076. package/3rdparty/walkontable/src/table/topInlineStartCorner.d.ts +0 -20
  1077. package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +0 -24
  1078. package/3rdparty/walkontable/src/table.d.mts +0 -2
  1079. package/3rdparty/walkontable/src/table.d.ts +0 -741
  1080. package/3rdparty/walkontable/src/table.js +0 -1120
  1081. package/3rdparty/walkontable/src/table.mjs +0 -1105
  1082. package/3rdparty/walkontable/src/utils/cellCoords.d.mts +0 -1
  1083. package/3rdparty/walkontable/src/utils/cellCoords.js +0 -54
  1084. package/3rdparty/walkontable/src/utils/cellCoords.mjs +0 -54
  1085. package/3rdparty/walkontable/src/utils/column.d.mts +0 -2
  1086. package/3rdparty/walkontable/src/utils/column.js +0 -75
  1087. package/3rdparty/walkontable/src/utils/column.mjs +0 -70
  1088. package/3rdparty/walkontable/src/utils/positionCache.d.mts +0 -1
  1089. package/3rdparty/walkontable/src/utils/positionCache.d.ts +0 -91
  1090. package/3rdparty/walkontable/src/utils/positionCache.js +0 -193
  1091. package/3rdparty/walkontable/src/utils/positionCache.mjs +0 -194
  1092. package/3rdparty/walkontable/src/utils/row.d.mts +0 -2
  1093. package/3rdparty/walkontable/src/utils/row.js +0 -46
  1094. package/3rdparty/walkontable/src/utils/row.mjs +0 -41
  1095. package/3rdparty/walkontable/src/viewport.d.ts +0 -254
  1096. package/3rdparty/walkontable/src/viewport.js +0 -533
  1097. package/3rdparty/walkontable/src/viewport.mjs +0 -523
  1098. /package/3rdparty/walkontable/src/{renderer → axisSizing/positionCache}/index.d.mts +0 -0
  1099. /package/3rdparty/walkontable/src/{overlays.d.mts → overlay/overlays.d.mts} +0 -0
  1100. /package/3rdparty/walkontable/src/overlay/{_base.d.mts → regions/_base.d.mts} +0 -0
  1101. /package/3rdparty/walkontable/src/{stickyScrollStrategy.d.mts → overlay/strategies/stickyScrollStrategy.d.mts} +0 -0
  1102. /package/3rdparty/walkontable/src/{renderer → render}/_base.d.mts +0 -0
  1103. /package/3rdparty/walkontable/src/{renderer → render}/_base.js +0 -0
  1104. /package/3rdparty/walkontable/src/{renderer → render}/_base.mjs +0 -0
  1105. /package/3rdparty/walkontable/src/{renderer → render}/cells.d.mts +0 -0
  1106. /package/3rdparty/walkontable/src/{renderer → render}/cells.d.ts +0 -0
  1107. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.mts +0 -0
  1108. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.ts +0 -0
  1109. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.js +0 -0
  1110. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.mjs +0 -0
  1111. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.mts +0 -0
  1112. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.ts +0 -0
  1113. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.js +0 -0
  1114. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.mjs +0 -0
  1115. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.mts +0 -0
  1116. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.mts +0 -0
  1117. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.ts +0 -0
  1118. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.js +0 -0
  1119. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.mjs +0 -0
  1120. /package/3rdparty/walkontable/src/{renderer → render}/rows.d.mts +0 -0
  1121. /package/3rdparty/walkontable/src/{renderer → render}/rows.d.ts +0 -0
  1122. /package/3rdparty/walkontable/src/{scroll.d.mts → scroll/scroll.d.mts} +0 -0
  1123. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.mts +0 -0
  1124. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.mts +0 -0
  1125. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.js +0 -0
  1126. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.mjs +0 -0
  1127. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.mts +0 -0
  1128. /package/3rdparty/walkontable/src/{viewport.d.mts → viewport/viewport.d.mts} +0 -0
@@ -31,7 +31,7 @@ const _errors = require("../errors");
31
31
  return column;
32
32
  }
33
33
  accumulatedX += width;
34
- const { colspan } = hotInstance.getCellMeta(row, column);
34
+ const { colspan } = hotInstance.getCellMetaTransient(row, column);
35
35
  if (colspan !== undefined && colspan > 1) {
36
36
  column += colspan - 1;
37
37
  }
@@ -59,13 +59,117 @@ const _errors = require("../errors");
59
59
  return row;
60
60
  }
61
61
  accumulatedY += height;
62
- const { rowspan } = hotInstance.getCellMeta(row, column);
62
+ const { rowspan } = hotInstance.getCellMetaTransient(row, column);
63
63
  if (rowspan !== undefined && rowspan > 1) {
64
64
  row += rowspan - 1;
65
65
  }
66
66
  }
67
67
  return null;
68
68
  }
69
+ /**
70
+ * Finds a column suitable for mapping a Y coordinate to a row: the first column in the range
71
+ * whose cells across the scanned rows each occupy their own single row. `findRowAtY` walks one
72
+ * column's cell heights and skips a merged cell's spanned rows, so it is distorted by a cell
73
+ * that spans multiple rows — a vertical-merge anchor or any of its slaves. Such a column is
74
+ * detected two ways: `rowspan > 1` on the anchor's meta, and element identity, since every row
75
+ * inside a vertical merge resolves to the same rendered cell. A purely horizontal merge resolves
76
+ * to a distinct, single-row master cell per row, so its columns stay valid. A merge in one column
77
+ * must not distort the row lookup used for other columns (DEV-2115).
78
+ *
79
+ * The scanned row range must match the range the returned column will be walked over (the frozen
80
+ * overlays and the scrollable body are resolved separately), so a merge confined to frozen rows
81
+ * cannot leak into the body lookup or vice versa.
82
+ *
83
+ * @param {Handsontable} hotInstance The Handsontable instance.
84
+ * @param {number} startColumn First column to consider.
85
+ * @param {number} endColumn Last column to consider (inclusive).
86
+ * @param {number} startRow First row of the scanned range.
87
+ * @param {number} endRow Last row of the scanned range (inclusive).
88
+ * @returns {number} A column index free of vertical-merge distortion, or `startColumn` if none qualifies.
89
+ */ function findRowReferenceColumn(hotInstance, startColumn, endColumn, startRow, endRow) {
90
+ for(let column = startColumn; column <= endColumn; column++){
91
+ let spansMultipleRows = false;
92
+ let hasRenderableCell = false;
93
+ let previousCell = null;
94
+ for(let row = startRow; row <= endRow; row++){
95
+ const cell = hotInstance.getCell(row, column, true);
96
+ const { rowspan } = hotInstance.getCellMetaTransient(row, column);
97
+ // A vertically merged cell reports `rowspan > 1` on its anchor and resolves to the same
98
+ // rendered element for every row it covers; either signal marks the column as distorting.
99
+ if (rowspan !== undefined && rowspan > 1 || cell !== null && cell === previousCell) {
100
+ spansMultipleRows = true;
101
+ break;
102
+ }
103
+ if (cell !== null) {
104
+ previousCell = cell;
105
+ hasRenderableCell = true;
106
+ }
107
+ }
108
+ // A hidden column (e.g. `hiddenColumns`) renders no cells, so `findRowAtY` cannot measure
109
+ // against it. Require at least one renderable cell so a hidden column between the merged
110
+ // column and a usable one is skipped rather than picked as the reference.
111
+ if (!spansMultipleRows && hasRenderableCell) {
112
+ return column;
113
+ }
114
+ }
115
+ // Best-effort fallback: every column in the scanned range is vertically merged (e.g. a grouped
116
+ // report grid whose visible columns all merge across the same band). No column is free of the
117
+ // distortion, so `findRowAtY` will still collapse the band onto its anchor — `startColumn` is
118
+ // simply the least-surprising choice. This is a known narrow case of DEV-2115, not a bug here.
119
+ return startColumn;
120
+ }
121
+ /**
122
+ * Finds a row suitable for mapping an X coordinate to a column: the first row in the range
123
+ * whose cells across the scanned columns each occupy their own single column. `findColumnAtX`
124
+ * walks one row's cell widths and skips a merged cell's spanned columns, so it is distorted by a
125
+ * cell that spans multiple columns - a horizontal-merge anchor or any of its slaves. Such a row
126
+ * is detected two ways: `colspan > 1` on the anchor's meta, and element identity, since every
127
+ * column inside a horizontal merge resolves to the same rendered cell. A purely vertical merge
128
+ * resolves to a distinct, single-column master cell per column, so its rows stay valid. A merge
129
+ * in one row must not distort the column lookup used for other rows (DEV-2124).
130
+ *
131
+ * The scanned column range must match the range the returned row will be walked over (the frozen
132
+ * overlays and the scrollable body are resolved separately), so a merge confined to frozen
133
+ * columns cannot leak into the body lookup or vice versa.
134
+ *
135
+ * @param {Handsontable} hotInstance The Handsontable instance.
136
+ * @param {number} startRow First row to consider.
137
+ * @param {number} endRow Last row to consider (inclusive).
138
+ * @param {number} startColumn First column of the scanned range.
139
+ * @param {number} endColumn Last column of the scanned range (inclusive).
140
+ * @returns {number} A row index free of horizontal-merge distortion, or `startRow` if none qualifies.
141
+ */ function findColumnReferenceRow(hotInstance, startRow, endRow, startColumn, endColumn) {
142
+ for(let row = startRow; row <= endRow; row++){
143
+ let spansMultipleColumns = false;
144
+ let hasRenderableCell = false;
145
+ let previousCell = null;
146
+ for(let column = startColumn; column <= endColumn; column++){
147
+ const cell = hotInstance.getCell(row, column, true);
148
+ const { colspan } = hotInstance.getCellMetaTransient(row, column);
149
+ // A horizontally merged cell reports `colspan > 1` on its anchor and resolves to the same
150
+ // rendered element for every column it covers; either signal marks the row as distorting.
151
+ if (colspan !== undefined && colspan > 1 || cell !== null && cell === previousCell) {
152
+ spansMultipleColumns = true;
153
+ break;
154
+ }
155
+ if (cell !== null) {
156
+ previousCell = cell;
157
+ hasRenderableCell = true;
158
+ }
159
+ }
160
+ // A hidden row (e.g. `hiddenRows`) renders no cells, so `findColumnAtX` cannot measure
161
+ // against it. Require at least one renderable cell so a hidden row between the merged
162
+ // row and a usable one is skipped rather than picked as the reference.
163
+ if (!spansMultipleColumns && hasRenderableCell) {
164
+ return row;
165
+ }
166
+ }
167
+ // Best-effort fallback: every row in the scanned range is horizontally merged (e.g. a banded
168
+ // report grid whose visible rows all merge across the same columns). No row is free of the
169
+ // distortion, so `findColumnAtX` will still collapse the band onto its anchor - `startRow` is
170
+ // simply the least-surprising choice. This is a known narrow case of DEV-2124, not a bug here.
171
+ return startRow;
172
+ }
69
173
  function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
70
174
  const { view, columnIndexMapper, rowIndexMapper } = hotInstance;
71
175
  const isRtl = hotInstance.isRtl();
@@ -101,6 +205,20 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
101
205
  const tableViewportBottom = view.isVerticallyScrollableByWindow() ? rootWindow.innerHeight : tableOffset.top + view.getViewportHeight() + columnHeaderHeight;
102
206
  const clampedX = (0, _number.clamp)(mouseX, tableViewportLeft, tableViewportRight);
103
207
  const clampedY = (0, _number.clamp)(mouseY, tableViewportTop, tableViewportBottom);
208
+ // Resolve the column against a row that has no horizontal merge across the columns being
209
+ // walked. `findColumnAtX` skips a merged cell's spanned columns, so measuring against a
210
+ // horizontally merged row collapses every X inside the band onto the merge anchor - and when
211
+ // the anchor is scrolled out of view the band's full width is counted once per slave column.
212
+ // Neither a fixed row nor the pointer's row is universally safe (a merge can live in either),
213
+ // so each column-scan branch picks the first row free of horizontal merges within its own
214
+ // column range (DEV-2124).
215
+ const columnReferenceRowStart = firstPartiallyVisibleRow ?? 0;
216
+ // When the viewport query returns null nothing is rendered, so there is no cell to measure
217
+ // against. Keep the search inside the (empty) rendered range instead of opening it to every
218
+ // row in the grid - otherwise `findColumnReferenceRow` walks the full row x column product,
219
+ // calling `getCellMetaTransient` on each step, and a single held autofill/`dragToScroll` drag
220
+ // on a large off-screen grid locks the tab.
221
+ const columnReferenceRowEnd = lastPartiallyVisibleRow ?? columnReferenceRowStart;
104
222
  let foundColumn = null;
105
223
  // Check fixed columns first
106
224
  if (numberOfFixedColumnsStart > 0) {
@@ -108,21 +226,23 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
108
226
  const lastFixedColumn = columnIndexMapper.getVisualFromRenderableIndex(numberOfFixedColumnsStart - 1);
109
227
  const firstNonHiddenColumn = firstFixedColumn !== null ? columnIndexMapper.getNearestNotHiddenIndex(firstFixedColumn, 1) : null;
110
228
  if (firstNonHiddenColumn !== null && lastFixedColumn !== null) {
111
- const fixedCell = hotInstance.getCell(firstPartiallyVisibleRow, firstNonHiddenColumn, true);
229
+ const columnReferenceRow = findColumnReferenceRow(hotInstance, columnReferenceRowStart, columnReferenceRowEnd, firstNonHiddenColumn, lastFixedColumn);
230
+ const fixedCell = hotInstance.getCell(columnReferenceRow, firstNonHiddenColumn, true);
112
231
  if (fixedCell instanceof HTMLElement) {
113
232
  const fixedCellRect = fixedCell.getBoundingClientRect();
114
233
  const fixedRelativeX = isRtl ? fixedCellRect.right - clampedX : clampedX - fixedCellRect.left;
115
- foundColumn = findColumnAtX(hotInstance, firstPartiallyVisibleRow, firstNonHiddenColumn, lastFixedColumn, fixedRelativeX);
234
+ foundColumn = findColumnAtX(hotInstance, columnReferenceRow, firstNonHiddenColumn, lastFixedColumn, fixedRelativeX);
116
235
  }
117
236
  }
118
237
  }
119
238
  // If not in fixed columns, check scrollable columns (main table)
120
239
  if (foundColumn === null) {
121
- const scrollCell = hotInstance.getCell(firstPartiallyVisibleRow, firstPartiallyVisibleColumn, true);
240
+ const columnReferenceRow = findColumnReferenceRow(hotInstance, columnReferenceRowStart, columnReferenceRowEnd, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn);
241
+ const scrollCell = hotInstance.getCell(columnReferenceRow, firstPartiallyVisibleColumn, true);
122
242
  if (scrollCell instanceof HTMLElement) {
123
243
  const scrollCellRect = scrollCell.getBoundingClientRect();
124
244
  const scrollRelativeX = isRtl ? scrollCellRect.right - clampedX : clampedX - scrollCellRect.left;
125
- foundColumn = findColumnAtX(hotInstance, firstPartiallyVisibleRow, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn, scrollRelativeX);
245
+ foundColumn = findColumnAtX(hotInstance, columnReferenceRow, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn, scrollRelativeX);
126
246
  // Fallback to edge columns if still not found.
127
247
  // If `lastPartiallyVisibleColumn` is null (e.g., the HoT is positioned off-screen and
128
248
  // viewport queries return invalid indexes), fall back to the global column bounds.
@@ -133,6 +253,21 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
133
253
  foundColumn = firstPartiallyVisibleColumn ?? 0;
134
254
  }
135
255
  }
256
+ if (foundColumn === null) {
257
+ (0, _errors.throwWithCause)('Failed to resolve cell coordinates from mouse position.');
258
+ }
259
+ // Resolve the row against a column that has no vertical merge across the rows being walked.
260
+ // `findRowAtY` skips a merged cell's spanned rows, so measuring against a vertically merged
261
+ // column collapses every Y inside the band onto the merge anchor. Neither a fixed column nor
262
+ // the pointer's column is universally safe (a merge can live in either), so each row-scan
263
+ // branch picks the first column free of vertical merges within its own row range (DEV-2115).
264
+ const rowReferenceColumnStart = firstPartiallyVisibleColumn ?? 0;
265
+ // When the viewport query returns null nothing is rendered, so there is no cell to measure
266
+ // against. Keep the search inside the (empty) rendered range instead of opening it to every
267
+ // column in the grid — otherwise `findRowReferenceColumn` walks the full column x row product,
268
+ // calling `getCellMetaTransient` on each step, and a single held autofill/`dragToScroll` drag
269
+ // on a large off-screen grid locks the tab.
270
+ const rowReferenceColumnEnd = lastPartiallyVisibleColumn ?? rowReferenceColumnStart;
136
271
  let foundRow = null;
137
272
  // Check fixed top rows first
138
273
  if (numberOfFixedRowsTop > 0) {
@@ -140,11 +275,12 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
140
275
  const lastFixedRow = rowIndexMapper.getVisualFromRenderableIndex(numberOfFixedRowsTop - 1);
141
276
  const firstNonHiddenRow = firstFixedRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(firstFixedRow, 1) : null;
142
277
  if (firstNonHiddenRow !== null && lastFixedRow !== null) {
143
- const fixedCell = hotInstance.getCell(firstNonHiddenRow, firstPartiallyVisibleColumn, true);
278
+ const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, firstNonHiddenRow, lastFixedRow);
279
+ const fixedCell = hotInstance.getCell(firstNonHiddenRow, rowReferenceColumn, true);
144
280
  if (fixedCell instanceof HTMLElement) {
145
281
  const fixedCellRect = fixedCell.getBoundingClientRect();
146
282
  const fixedRelativeY = clampedY - fixedCellRect.top;
147
- foundRow = findRowAtY(hotInstance, firstPartiallyVisibleColumn, firstNonHiddenRow, lastFixedRow, fixedRelativeY);
283
+ foundRow = findRowAtY(hotInstance, rowReferenceColumn, firstNonHiddenRow, lastFixedRow, fixedRelativeY);
148
284
  }
149
285
  }
150
286
  }
@@ -156,12 +292,13 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
156
292
  const bottomStartNonHiddenRow = bottomStartRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(bottomStartRow, 1) : null;
157
293
  const bottomEndNonHiddenRow = bottomEndRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(bottomEndRow, -1) : null;
158
294
  if (bottomStartNonHiddenRow !== null && bottomEndNonHiddenRow !== null) {
159
- const fixedBottomCell = hotInstance.getCell(bottomStartNonHiddenRow, firstPartiallyVisibleColumn, true);
295
+ const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, bottomStartNonHiddenRow, bottomEndNonHiddenRow);
296
+ const fixedBottomCell = hotInstance.getCell(bottomStartNonHiddenRow, rowReferenceColumn, true);
160
297
  if (fixedBottomCell instanceof HTMLElement) {
161
298
  const fixedBottomCellRect = fixedBottomCell.getBoundingClientRect();
162
299
  const fixedBottomRelativeY = clampedY - fixedBottomCellRect.top;
163
300
  if (fixedBottomRelativeY >= 0) {
164
- foundRow = findRowAtY(hotInstance, firstPartiallyVisibleColumn, bottomStartNonHiddenRow, bottomEndNonHiddenRow, fixedBottomRelativeY);
301
+ foundRow = findRowAtY(hotInstance, rowReferenceColumn, bottomStartNonHiddenRow, bottomEndNonHiddenRow, fixedBottomRelativeY);
165
302
  if (foundRow === null) {
166
303
  foundRow = bottomEndNonHiddenRow;
167
304
  }
@@ -171,11 +308,17 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
171
308
  }
172
309
  // Check scrollable rows (main table)
173
310
  if (foundRow === null) {
174
- const scrollCell = hotInstance.getCell(firstPartiallyVisibleRow, firstPartiallyVisibleColumn, true);
311
+ const scrollRowScanStart = firstPartiallyVisibleRow ?? 0;
312
+ // Same null-viewport guard as the column bound above: clamp the row scan to the (empty)
313
+ // rendered range rather than `countRows()`, so the reference-column search cannot walk the
314
+ // whole grid when nothing is rendered.
315
+ const scrollRowScanEnd = lastPartiallyVisibleRow ?? scrollRowScanStart;
316
+ const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, scrollRowScanStart, scrollRowScanEnd);
317
+ const scrollCell = hotInstance.getCell(firstPartiallyVisibleRow, rowReferenceColumn, true);
175
318
  if (scrollCell instanceof HTMLElement) {
176
319
  const scrollCellRect = scrollCell.getBoundingClientRect();
177
320
  const scrollRelativeY = clampedY - scrollCellRect.top;
178
- foundRow = findRowAtY(hotInstance, firstPartiallyVisibleColumn, firstPartiallyVisibleRow, lastPartiallyVisibleRow, scrollRelativeY);
321
+ foundRow = findRowAtY(hotInstance, rowReferenceColumn, firstPartiallyVisibleRow, lastPartiallyVisibleRow, scrollRelativeY);
179
322
  // Fallback to edge rows if still not found. If the viewport query returns null
180
323
  // (off-screen HoT edge case), use the global row bounds.
181
324
  if (foundRow === null) {
@@ -185,7 +328,7 @@ function getCellCoordsFromMousePosition(hotInstance, mouseX, mouseY) {
185
328
  foundRow = firstPartiallyVisibleRow ?? 0;
186
329
  }
187
330
  }
188
- if (foundRow === null || foundColumn === null) {
331
+ if (foundRow === null) {
189
332
  (0, _errors.throwWithCause)('Failed to resolve cell coordinates from mouse position.');
190
333
  }
191
334
  return hotInstance._createCellCoords(foundRow, foundColumn);
@@ -21,7 +21,7 @@ import { throwWithCause } from '../errors.mjs';
21
21
  return column;
22
22
  }
23
23
  accumulatedX += width;
24
- const { colspan } = hotInstance.getCellMeta(row, column);
24
+ const { colspan } = hotInstance.getCellMetaTransient(row, column);
25
25
  if (colspan !== undefined && colspan > 1) {
26
26
  column += colspan - 1;
27
27
  }
@@ -49,13 +49,117 @@ import { throwWithCause } from '../errors.mjs';
49
49
  return row;
50
50
  }
51
51
  accumulatedY += height;
52
- const { rowspan } = hotInstance.getCellMeta(row, column);
52
+ const { rowspan } = hotInstance.getCellMetaTransient(row, column);
53
53
  if (rowspan !== undefined && rowspan > 1) {
54
54
  row += rowspan - 1;
55
55
  }
56
56
  }
57
57
  return null;
58
58
  }
59
+ /**
60
+ * Finds a column suitable for mapping a Y coordinate to a row: the first column in the range
61
+ * whose cells across the scanned rows each occupy their own single row. `findRowAtY` walks one
62
+ * column's cell heights and skips a merged cell's spanned rows, so it is distorted by a cell
63
+ * that spans multiple rows — a vertical-merge anchor or any of its slaves. Such a column is
64
+ * detected two ways: `rowspan > 1` on the anchor's meta, and element identity, since every row
65
+ * inside a vertical merge resolves to the same rendered cell. A purely horizontal merge resolves
66
+ * to a distinct, single-row master cell per row, so its columns stay valid. A merge in one column
67
+ * must not distort the row lookup used for other columns (DEV-2115).
68
+ *
69
+ * The scanned row range must match the range the returned column will be walked over (the frozen
70
+ * overlays and the scrollable body are resolved separately), so a merge confined to frozen rows
71
+ * cannot leak into the body lookup or vice versa.
72
+ *
73
+ * @param {Handsontable} hotInstance The Handsontable instance.
74
+ * @param {number} startColumn First column to consider.
75
+ * @param {number} endColumn Last column to consider (inclusive).
76
+ * @param {number} startRow First row of the scanned range.
77
+ * @param {number} endRow Last row of the scanned range (inclusive).
78
+ * @returns {number} A column index free of vertical-merge distortion, or `startColumn` if none qualifies.
79
+ */ function findRowReferenceColumn(hotInstance, startColumn, endColumn, startRow, endRow) {
80
+ for(let column = startColumn; column <= endColumn; column++){
81
+ let spansMultipleRows = false;
82
+ let hasRenderableCell = false;
83
+ let previousCell = null;
84
+ for(let row = startRow; row <= endRow; row++){
85
+ const cell = hotInstance.getCell(row, column, true);
86
+ const { rowspan } = hotInstance.getCellMetaTransient(row, column);
87
+ // A vertically merged cell reports `rowspan > 1` on its anchor and resolves to the same
88
+ // rendered element for every row it covers; either signal marks the column as distorting.
89
+ if (rowspan !== undefined && rowspan > 1 || cell !== null && cell === previousCell) {
90
+ spansMultipleRows = true;
91
+ break;
92
+ }
93
+ if (cell !== null) {
94
+ previousCell = cell;
95
+ hasRenderableCell = true;
96
+ }
97
+ }
98
+ // A hidden column (e.g. `hiddenColumns`) renders no cells, so `findRowAtY` cannot measure
99
+ // against it. Require at least one renderable cell so a hidden column between the merged
100
+ // column and a usable one is skipped rather than picked as the reference.
101
+ if (!spansMultipleRows && hasRenderableCell) {
102
+ return column;
103
+ }
104
+ }
105
+ // Best-effort fallback: every column in the scanned range is vertically merged (e.g. a grouped
106
+ // report grid whose visible columns all merge across the same band). No column is free of the
107
+ // distortion, so `findRowAtY` will still collapse the band onto its anchor — `startColumn` is
108
+ // simply the least-surprising choice. This is a known narrow case of DEV-2115, not a bug here.
109
+ return startColumn;
110
+ }
111
+ /**
112
+ * Finds a row suitable for mapping an X coordinate to a column: the first row in the range
113
+ * whose cells across the scanned columns each occupy their own single column. `findColumnAtX`
114
+ * walks one row's cell widths and skips a merged cell's spanned columns, so it is distorted by a
115
+ * cell that spans multiple columns - a horizontal-merge anchor or any of its slaves. Such a row
116
+ * is detected two ways: `colspan > 1` on the anchor's meta, and element identity, since every
117
+ * column inside a horizontal merge resolves to the same rendered cell. A purely vertical merge
118
+ * resolves to a distinct, single-column master cell per column, so its rows stay valid. A merge
119
+ * in one row must not distort the column lookup used for other rows (DEV-2124).
120
+ *
121
+ * The scanned column range must match the range the returned row will be walked over (the frozen
122
+ * overlays and the scrollable body are resolved separately), so a merge confined to frozen
123
+ * columns cannot leak into the body lookup or vice versa.
124
+ *
125
+ * @param {Handsontable} hotInstance The Handsontable instance.
126
+ * @param {number} startRow First row to consider.
127
+ * @param {number} endRow Last row to consider (inclusive).
128
+ * @param {number} startColumn First column of the scanned range.
129
+ * @param {number} endColumn Last column of the scanned range (inclusive).
130
+ * @returns {number} A row index free of horizontal-merge distortion, or `startRow` if none qualifies.
131
+ */ function findColumnReferenceRow(hotInstance, startRow, endRow, startColumn, endColumn) {
132
+ for(let row = startRow; row <= endRow; row++){
133
+ let spansMultipleColumns = false;
134
+ let hasRenderableCell = false;
135
+ let previousCell = null;
136
+ for(let column = startColumn; column <= endColumn; column++){
137
+ const cell = hotInstance.getCell(row, column, true);
138
+ const { colspan } = hotInstance.getCellMetaTransient(row, column);
139
+ // A horizontally merged cell reports `colspan > 1` on its anchor and resolves to the same
140
+ // rendered element for every column it covers; either signal marks the row as distorting.
141
+ if (colspan !== undefined && colspan > 1 || cell !== null && cell === previousCell) {
142
+ spansMultipleColumns = true;
143
+ break;
144
+ }
145
+ if (cell !== null) {
146
+ previousCell = cell;
147
+ hasRenderableCell = true;
148
+ }
149
+ }
150
+ // A hidden row (e.g. `hiddenRows`) renders no cells, so `findColumnAtX` cannot measure
151
+ // against it. Require at least one renderable cell so a hidden row between the merged
152
+ // row and a usable one is skipped rather than picked as the reference.
153
+ if (!spansMultipleColumns && hasRenderableCell) {
154
+ return row;
155
+ }
156
+ }
157
+ // Best-effort fallback: every row in the scanned range is horizontally merged (e.g. a banded
158
+ // report grid whose visible rows all merge across the same columns). No row is free of the
159
+ // distortion, so `findColumnAtX` will still collapse the band onto its anchor - `startRow` is
160
+ // simply the least-surprising choice. This is a known narrow case of DEV-2124, not a bug here.
161
+ return startRow;
162
+ }
59
163
  /**
60
164
  * Get the cell coordinates from the mouse position. When the mouse is outside of the table,
61
165
  * the nearest cell is returned.
@@ -99,6 +203,20 @@ import { throwWithCause } from '../errors.mjs';
99
203
  const tableViewportBottom = view.isVerticallyScrollableByWindow() ? rootWindow.innerHeight : tableOffset.top + view.getViewportHeight() + columnHeaderHeight;
100
204
  const clampedX = clamp(mouseX, tableViewportLeft, tableViewportRight);
101
205
  const clampedY = clamp(mouseY, tableViewportTop, tableViewportBottom);
206
+ // Resolve the column against a row that has no horizontal merge across the columns being
207
+ // walked. `findColumnAtX` skips a merged cell's spanned columns, so measuring against a
208
+ // horizontally merged row collapses every X inside the band onto the merge anchor - and when
209
+ // the anchor is scrolled out of view the band's full width is counted once per slave column.
210
+ // Neither a fixed row nor the pointer's row is universally safe (a merge can live in either),
211
+ // so each column-scan branch picks the first row free of horizontal merges within its own
212
+ // column range (DEV-2124).
213
+ const columnReferenceRowStart = firstPartiallyVisibleRow ?? 0;
214
+ // When the viewport query returns null nothing is rendered, so there is no cell to measure
215
+ // against. Keep the search inside the (empty) rendered range instead of opening it to every
216
+ // row in the grid - otherwise `findColumnReferenceRow` walks the full row x column product,
217
+ // calling `getCellMetaTransient` on each step, and a single held autofill/`dragToScroll` drag
218
+ // on a large off-screen grid locks the tab.
219
+ const columnReferenceRowEnd = lastPartiallyVisibleRow ?? columnReferenceRowStart;
102
220
  let foundColumn = null;
103
221
  // Check fixed columns first
104
222
  if (numberOfFixedColumnsStart > 0) {
@@ -106,21 +224,23 @@ import { throwWithCause } from '../errors.mjs';
106
224
  const lastFixedColumn = columnIndexMapper.getVisualFromRenderableIndex(numberOfFixedColumnsStart - 1);
107
225
  const firstNonHiddenColumn = firstFixedColumn !== null ? columnIndexMapper.getNearestNotHiddenIndex(firstFixedColumn, 1) : null;
108
226
  if (firstNonHiddenColumn !== null && lastFixedColumn !== null) {
109
- const fixedCell = hotInstance.getCell(firstPartiallyVisibleRow, firstNonHiddenColumn, true);
227
+ const columnReferenceRow = findColumnReferenceRow(hotInstance, columnReferenceRowStart, columnReferenceRowEnd, firstNonHiddenColumn, lastFixedColumn);
228
+ const fixedCell = hotInstance.getCell(columnReferenceRow, firstNonHiddenColumn, true);
110
229
  if (fixedCell instanceof HTMLElement) {
111
230
  const fixedCellRect = fixedCell.getBoundingClientRect();
112
231
  const fixedRelativeX = isRtl ? fixedCellRect.right - clampedX : clampedX - fixedCellRect.left;
113
- foundColumn = findColumnAtX(hotInstance, firstPartiallyVisibleRow, firstNonHiddenColumn, lastFixedColumn, fixedRelativeX);
232
+ foundColumn = findColumnAtX(hotInstance, columnReferenceRow, firstNonHiddenColumn, lastFixedColumn, fixedRelativeX);
114
233
  }
115
234
  }
116
235
  }
117
236
  // If not in fixed columns, check scrollable columns (main table)
118
237
  if (foundColumn === null) {
119
- const scrollCell = hotInstance.getCell(firstPartiallyVisibleRow, firstPartiallyVisibleColumn, true);
238
+ const columnReferenceRow = findColumnReferenceRow(hotInstance, columnReferenceRowStart, columnReferenceRowEnd, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn);
239
+ const scrollCell = hotInstance.getCell(columnReferenceRow, firstPartiallyVisibleColumn, true);
120
240
  if (scrollCell instanceof HTMLElement) {
121
241
  const scrollCellRect = scrollCell.getBoundingClientRect();
122
242
  const scrollRelativeX = isRtl ? scrollCellRect.right - clampedX : clampedX - scrollCellRect.left;
123
- foundColumn = findColumnAtX(hotInstance, firstPartiallyVisibleRow, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn, scrollRelativeX);
243
+ foundColumn = findColumnAtX(hotInstance, columnReferenceRow, firstPartiallyVisibleColumn, lastPartiallyVisibleColumn, scrollRelativeX);
124
244
  // Fallback to edge columns if still not found.
125
245
  // If `lastPartiallyVisibleColumn` is null (e.g., the HoT is positioned off-screen and
126
246
  // viewport queries return invalid indexes), fall back to the global column bounds.
@@ -131,6 +251,21 @@ import { throwWithCause } from '../errors.mjs';
131
251
  foundColumn = firstPartiallyVisibleColumn ?? 0;
132
252
  }
133
253
  }
254
+ if (foundColumn === null) {
255
+ throwWithCause('Failed to resolve cell coordinates from mouse position.');
256
+ }
257
+ // Resolve the row against a column that has no vertical merge across the rows being walked.
258
+ // `findRowAtY` skips a merged cell's spanned rows, so measuring against a vertically merged
259
+ // column collapses every Y inside the band onto the merge anchor. Neither a fixed column nor
260
+ // the pointer's column is universally safe (a merge can live in either), so each row-scan
261
+ // branch picks the first column free of vertical merges within its own row range (DEV-2115).
262
+ const rowReferenceColumnStart = firstPartiallyVisibleColumn ?? 0;
263
+ // When the viewport query returns null nothing is rendered, so there is no cell to measure
264
+ // against. Keep the search inside the (empty) rendered range instead of opening it to every
265
+ // column in the grid — otherwise `findRowReferenceColumn` walks the full column x row product,
266
+ // calling `getCellMetaTransient` on each step, and a single held autofill/`dragToScroll` drag
267
+ // on a large off-screen grid locks the tab.
268
+ const rowReferenceColumnEnd = lastPartiallyVisibleColumn ?? rowReferenceColumnStart;
134
269
  let foundRow = null;
135
270
  // Check fixed top rows first
136
271
  if (numberOfFixedRowsTop > 0) {
@@ -138,11 +273,12 @@ import { throwWithCause } from '../errors.mjs';
138
273
  const lastFixedRow = rowIndexMapper.getVisualFromRenderableIndex(numberOfFixedRowsTop - 1);
139
274
  const firstNonHiddenRow = firstFixedRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(firstFixedRow, 1) : null;
140
275
  if (firstNonHiddenRow !== null && lastFixedRow !== null) {
141
- const fixedCell = hotInstance.getCell(firstNonHiddenRow, firstPartiallyVisibleColumn, true);
276
+ const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, firstNonHiddenRow, lastFixedRow);
277
+ const fixedCell = hotInstance.getCell(firstNonHiddenRow, rowReferenceColumn, true);
142
278
  if (fixedCell instanceof HTMLElement) {
143
279
  const fixedCellRect = fixedCell.getBoundingClientRect();
144
280
  const fixedRelativeY = clampedY - fixedCellRect.top;
145
- foundRow = findRowAtY(hotInstance, firstPartiallyVisibleColumn, firstNonHiddenRow, lastFixedRow, fixedRelativeY);
281
+ foundRow = findRowAtY(hotInstance, rowReferenceColumn, firstNonHiddenRow, lastFixedRow, fixedRelativeY);
146
282
  }
147
283
  }
148
284
  }
@@ -154,12 +290,13 @@ import { throwWithCause } from '../errors.mjs';
154
290
  const bottomStartNonHiddenRow = bottomStartRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(bottomStartRow, 1) : null;
155
291
  const bottomEndNonHiddenRow = bottomEndRow !== null ? rowIndexMapper.getNearestNotHiddenIndex(bottomEndRow, -1) : null;
156
292
  if (bottomStartNonHiddenRow !== null && bottomEndNonHiddenRow !== null) {
157
- const fixedBottomCell = hotInstance.getCell(bottomStartNonHiddenRow, firstPartiallyVisibleColumn, true);
293
+ const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, bottomStartNonHiddenRow, bottomEndNonHiddenRow);
294
+ const fixedBottomCell = hotInstance.getCell(bottomStartNonHiddenRow, rowReferenceColumn, true);
158
295
  if (fixedBottomCell instanceof HTMLElement) {
159
296
  const fixedBottomCellRect = fixedBottomCell.getBoundingClientRect();
160
297
  const fixedBottomRelativeY = clampedY - fixedBottomCellRect.top;
161
298
  if (fixedBottomRelativeY >= 0) {
162
- foundRow = findRowAtY(hotInstance, firstPartiallyVisibleColumn, bottomStartNonHiddenRow, bottomEndNonHiddenRow, fixedBottomRelativeY);
299
+ foundRow = findRowAtY(hotInstance, rowReferenceColumn, bottomStartNonHiddenRow, bottomEndNonHiddenRow, fixedBottomRelativeY);
163
300
  if (foundRow === null) {
164
301
  foundRow = bottomEndNonHiddenRow;
165
302
  }
@@ -169,11 +306,17 @@ import { throwWithCause } from '../errors.mjs';
169
306
  }
170
307
  // Check scrollable rows (main table)
171
308
  if (foundRow === null) {
172
- const scrollCell = hotInstance.getCell(firstPartiallyVisibleRow, firstPartiallyVisibleColumn, true);
309
+ const scrollRowScanStart = firstPartiallyVisibleRow ?? 0;
310
+ // Same null-viewport guard as the column bound above: clamp the row scan to the (empty)
311
+ // rendered range rather than `countRows()`, so the reference-column search cannot walk the
312
+ // whole grid when nothing is rendered.
313
+ const scrollRowScanEnd = lastPartiallyVisibleRow ?? scrollRowScanStart;
314
+ const rowReferenceColumn = findRowReferenceColumn(hotInstance, rowReferenceColumnStart, rowReferenceColumnEnd, scrollRowScanStart, scrollRowScanEnd);
315
+ const scrollCell = hotInstance.getCell(firstPartiallyVisibleRow, rowReferenceColumn, true);
173
316
  if (scrollCell instanceof HTMLElement) {
174
317
  const scrollCellRect = scrollCell.getBoundingClientRect();
175
318
  const scrollRelativeY = clampedY - scrollCellRect.top;
176
- foundRow = findRowAtY(hotInstance, firstPartiallyVisibleColumn, firstPartiallyVisibleRow, lastPartiallyVisibleRow, scrollRelativeY);
319
+ foundRow = findRowAtY(hotInstance, rowReferenceColumn, firstPartiallyVisibleRow, lastPartiallyVisibleRow, scrollRelativeY);
177
320
  // Fallback to edge rows if still not found. If the viewport query returns null
178
321
  // (off-screen HoT edge case), use the global row bounds.
179
322
  if (foundRow === null) {
@@ -183,7 +326,7 @@ import { throwWithCause } from '../errors.mjs';
183
326
  foundRow = firstPartiallyVisibleRow ?? 0;
184
327
  }
185
328
  }
186
- if (foundRow === null || foundColumn === null) {
329
+ if (foundRow === null) {
187
330
  throwWithCause('Failed to resolve cell coordinates from mouse position.');
188
331
  }
189
332
  return hotInstance._createCellCoords(foundRow, foundColumn);
@@ -1,3 +1,4 @@
1
+ import type { SanitizerContext } from '../../core/settings';
1
2
  /**
2
3
  * Get the parent of the specified node in the DOM tree.
3
4
  *
@@ -172,20 +173,34 @@ export declare const HTML_CHARACTERS: RegExp;
172
173
  * collapse into a single warning per Handsontable instance.
173
174
  */
174
175
  export declare const SANITIZER_WARN_KEY = "sanitizer";
176
+ /**
177
+ * Builds the missing-sanitizer warning. Every surface that writes raw HTML uses this, whether it
178
+ * goes through `fastInnerHTML` or sanitizes a string first (`utils/sanitizer.ts`), so the wording
179
+ * cannot drift between them.
180
+ *
181
+ * It lives here rather than beside its second caller because `utils/sanitizer.ts` already imports
182
+ * from this module, and the reverse direction would be a cycle. That makes it public through
183
+ * `Handsontable.dom`, like `HTML_CHARACTERS` and `SANITIZER_WARN_KEY` above it - accepted
184
+ * deliberately: it is a pure string builder, and it is useful to anyone writing their own sink.
185
+ *
186
+ * @param {string} context The write surface that is about to receive raw HTML.
187
+ * @returns {string} The warning message.
188
+ */
189
+ export declare function missingSanitizerMessage(context: string): string;
175
190
  /**
176
191
  * Insert content into element trying to avoid innerHTML method.
177
192
  *
178
193
  * @param {HTMLElement} element An element to write into.
179
194
  * @param {string} content The text to write.
180
- * @param {boolean|function(string, string): string} [sanitizer] When a function, use it as the sanitizer; when `false`,
195
+ * @param {boolean|function(string, SanitizerContext): string} [sanitizer] When a function, use it as the sanitizer; when `false`,
181
196
  * write the content as raw HTML on purpose (no warning); when `true` (the default), write the content as raw HTML and
182
197
  * warn once that no sanitizer is configured.
183
- * @param {string} [context] The sanitization context passed as the second argument to a custom sanitizer function, and
198
+ * @param {SanitizerContext} [context] The sanitization context passed as the second argument to a custom sanitizer function, and
184
199
  * used in the missing-sanitizer warning to identify the write surface.
185
- * @param {object} [scope] Object the "warn once" state is bound to (for example, `hot.rootGridElement`), so the warning
186
- * is shown at most once per Handsontable instance.
200
+ * @param {object} [scope] Object the "warn once" state is bound to (`hot.rootElement` at every call site
201
+ * inside the grid), so the warning is shown at most once per Handsontable instance.
187
202
  */
188
- export declare function fastInnerHTML(element: HTMLElement, content: string, sanitizer?: boolean | ((html: string, context: string) => string), context?: string, scope?: object): void;
203
+ export declare function fastInnerHTML(element: HTMLElement, content: string, sanitizer?: boolean | ((html: string, context: SanitizerContext) => string), context?: SanitizerContext, scope?: object): void;
189
204
  /**
190
205
  * Insert text content into element.
191
206
  *
@@ -447,10 +462,14 @@ export declare function isDetached(element: HTMLElement): boolean;
447
462
  * Set up an observer to recognize when the provided element first becomes visible and trigger a callback when it
448
463
  * happens.
449
464
  *
465
+ * The observer is returned so the caller can disconnect it earlier - a pending delivery carries the state from
466
+ * the moment its snapshot was taken, so it can arrive after the observed element (or its owner) is gone.
467
+ *
450
468
  * @param {HTMLElement} elementToBeObserved Element to be observed.
451
469
  * @param {Function} callback The callback function.
470
+ * @returns {IntersectionObserver} The observer watching the element.
452
471
  */
453
- export declare function observeVisibilityChangeOnce(elementToBeObserved: HTMLElement, callback: () => void): void;
472
+ export declare function observeVisibilityChangeOnce(elementToBeObserved: HTMLElement, callback: () => void): IntersectionObserver;
454
473
  /**
455
474
  * Add a `contenteditable` attribute, select the contents and optionally add the `invisibleSelection`
456
475
  * class to the provided element.
@@ -502,10 +521,30 @@ export declare function isHTMLInputElement(element: HTMLElement): element is HTM
502
521
  /**
503
522
  * Check if the node is a ShadowRoot (a document fragment attached to a host element).
504
523
  *
505
- * @param {Node} node Node to check.
524
+ * @param {Node|EventTarget} node Node to check.
506
525
  * @returns {boolean} `true` if the node is a ShadowRoot.
507
526
  */
508
- export declare function isShadowRoot(node: Node): node is ShadowRoot;
527
+ export declare function isShadowRoot(node: Node | EventTarget): node is ShadowRoot;
528
+ /**
529
+ * Gets the chain of shadow host elements the node is rendered within, ordered from the
530
+ * closest host outward to the host attached to the document.
531
+ *
532
+ * @param {Node} node The node to read the host chain from.
533
+ * @returns {HTMLElement[]} The shadow host elements; empty when the node is not in a Shadow DOM tree.
534
+ */
535
+ export declare function getShadowHostChain(node: Node): HTMLElement[];
536
+ /**
537
+ * Gets the deepest active (focused) element in the document. When the focus is inside
538
+ * a Shadow DOM tree, `document.activeElement` points at the shadow host instead of the
539
+ * focused element. This helper descends through the open shadow roots and returns
540
+ * the element that actually holds the focus.
541
+ *
542
+ * @param {Document} rootDocument The document to read the active element from.
543
+ * @returns {Element|null} The deepest focused element. The browser reports `document.body`
544
+ * when no other element holds the focus; `null` appears only in edge cases such as
545
+ * a document with no body.
546
+ */
547
+ export declare function getDeepActiveElement(rootDocument: Document): Element | null;
509
548
  /**
510
549
  * Gets a child node at the specified index cast to the specified HTML element type.
511
550
  *