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
@@ -136,6 +136,16 @@ import { isObjectEqual } from '../../helpers/object.mjs';
136
136
  * @default undefined
137
137
  */ _userDefinedMetaProps: undefined,
138
138
  /**
139
+ * Information on which cell meta properties were set through `setCellMeta` - both imperatively
140
+ * (user, context menu) and declaratively (the `cell` option). Unlike values derived on demand by
141
+ * `getCellMeta` (the cascade, the `cells` function, `type` expansion), these are not rebuilt on
142
+ * access, so the viewport-eviction pass keeps any cell whose set is non-empty.
143
+ *
144
+ * @private
145
+ * @type {Set}
146
+ * @default undefined
147
+ */ _persistedMetaProps: undefined,
148
+ /**
139
149
  * The `activeHeaderClassName` option lets you add a CSS class name
140
150
  * to every currently-active, currently-selected header (when a whole column or row is selected).
141
151
  *
@@ -180,7 +190,11 @@ import { isObjectEqual } from '../../helpers/object.mjs';
180
190
  * | `false` | - Don't accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` or `''` values with as `invalid` |
181
191
  *
182
192
  * ::: tip
183
- * To use the [`allowEmpty`](#allowempty) option, you need to set the [`validator`](#validator) option (or the [`type`](#type) option).
193
+ * The [`allowEmpty`](#allowempty) option only takes effect when the cell has a [`validator`](#validator).
194
+ * You can set a validator directly, or use a [`type`](#type) that comes with a built-in validator,
195
+ * such as `numeric`, `date`, `time`, `autocomplete`, `dropdown`, or `multiSelect`.
196
+ * Types without a built-in validator, such as `text`, `checkbox`, `password`, and `handsontable`,
197
+ * ignore the `allowEmpty` option unless you also set a `validator`.
184
198
  * :::
185
199
  *
186
200
  * This option can be set at any level of the [cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration):
@@ -227,11 +241,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
227
241
  * | `true` | The [`source`](#source) data is treated as HTML |
228
242
  *
229
243
  * __Warning:__ Setting the `allowHtml` option to `true` can cause serious XSS vulnerabilities.
244
+ * The [`sanitizer`](#sanitizer) option does not apply to this content: `allowHtml` exists to render
245
+ * the markup you supply, so sanitize the [`source`](#source) items yourself before passing them in.
230
246
  *
231
247
  * Read more:
232
248
  * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
233
249
  * - [Dropdown cell type](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md)
234
250
  * - [`source`](#source)
251
+ * - [`sanitizer`](#sanitizer)
235
252
  *
236
253
  * @memberof Options#
237
254
  * @type {boolean}
@@ -276,6 +293,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
276
293
  * - **Insert row above**
277
294
  * - **Insert row below**
278
295
  *
296
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
297
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
298
+ *
279
299
  * @memberof Options#
280
300
  * @type {boolean}
281
301
  * @default true
@@ -346,6 +366,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
346
366
  * Read more:
347
367
  * - [Context menu](@/guides/accessories-and-menus/context-menu/context-menu.md)
348
368
  *
369
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
370
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
371
+ *
349
372
  * @memberof Options#
350
373
  * @type {boolean}
351
374
  * @default true
@@ -398,6 +421,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
398
421
  * Read more:
399
422
  * - [Plugins: `AutoColumnSize`](@/api/autoColumnSize.md)
400
423
  *
424
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
425
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
426
+ *
401
427
  * @memberof Options#
402
428
  * @type {object|boolean}
403
429
  * @default undefined
@@ -432,15 +458,20 @@ import { isObjectEqual } from '../../helpers/object.mjs';
432
458
  *
433
459
  * If you set the `autoRowSize` option to an object, you can set the following [`AutoRowSize`](@/api/autoRowSize.md) plugin options:
434
460
  *
435
- * | Property | Possible values | Description |
436
- * | ----------- | ------------------------------- | ----------------------------------------------------------------- |
437
- * | `syncLimit` | A number \| A percentage string | The number/percentage of rows to keep in sync<br>(default: `500`) |
461
+ * | Property | Possible values | Description |
462
+ * | ----------------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------- |
463
+ * | `syncLimit` | A number \| A percentage string | The number/percentage of rows to keep in sync<br>(default: `500`) |
464
+ * | `samplingRatio` | A number | The number of samples of the same length to be used in row height calculations |
465
+ * | `allowSampleDuplicates` | `true` \| `false` | When calculating row heights:<br>`true`: Allow duplicate samples<br>`false`: Don't allow duplicate samples |
438
466
  *
439
467
  * Using the [`rowHeights`](#rowHeights) option forcibly disables the [`AutoRowSize`](@/api/autoRowSize.md) plugin.
440
468
  *
441
469
  * Read more:
442
470
  * - [Plugins: `AutoRowSize`](@/api/autoRowSize.md)
443
471
  *
472
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
473
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
474
+ *
444
475
  * @memberof Options#
445
476
  * @type {object|boolean}
446
477
  * @default undefined
@@ -450,7 +481,11 @@ import { isObjectEqual } from '../../helpers/object.mjs';
450
481
  * ```js
451
482
  * autoRowSize: {
452
483
  * // keep 40% of rows in sync (the rest of rows: async)
453
- * syncLimit: '40%'
484
+ * syncLimit: '40%',
485
+ * // when calculating row heights, use 10 samples of the same length
486
+ * samplingRatio: 10,
487
+ * // when calculating row heights, allow duplicate samples
488
+ * allowSampleDuplicates: true
454
489
  * },
455
490
  * ```
456
491
  */ autoRowSize: undefined,
@@ -460,6 +495,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
460
495
  * | `false` (default) | When you select a bottom-most cell, pressing <kbd>**↓**</kbd> doesn't do anything.<br><br>When you select a top-most cell, pressing <kbd>**↑**</kbd> doesn't do anything. |
461
496
  * | `true` | When you select a bottom-most cell, pressing <kbd>**↓**</kbd> takes you to the top-most cell of the next column.<br><br>When you select a top-most cell, pressing <kbd>**↑**</kbd> takes you to the bottom-most cell of the previous column. |
462
497
  *
498
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
499
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
500
+ *
463
501
  * @memberof Options#
464
502
  * @type {boolean}
465
503
  * @default false
@@ -485,6 +523,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
485
523
  * \* The exact key depends on your [`layoutDirection`](#layoutdirection) configuration.<br>
486
524
  * \*\* Unless [`tabNavigation`](#tabnavigation) is set to `false`.
487
525
  *
526
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
527
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
528
+ *
488
529
  * @memberof Options#
489
530
  * @type {boolean}
490
531
  * @default false
@@ -539,9 +580,16 @@ import { isObjectEqual } from '../../helpers/object.mjs';
539
580
  * The `cell` option overwrites the [top-level grid options](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options),
540
581
  * and the [`columns`](#columns) options.
541
582
  *
583
+ * Each entry's `row` and `col` are **visual** indexes. This differs from the [`cells`](#cells)
584
+ * option, whose `row` and `column` are physical indexes.
585
+ *
542
586
  * Read more:
543
587
  * - [Configuration options: Setting cell options](@/guides/getting-started/configuration-options/configuration-options.md#set-cell-options)
544
588
  * - [`columns`](#columns)
589
+ * - [`cells`](#cells)
590
+ *
591
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
592
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
545
593
  *
546
594
  * @memberof Options#
547
595
  * @type {Array[]}
@@ -575,6 +623,12 @@ import { isObjectEqual } from '../../helpers/object.mjs';
575
623
  * | `column` | Yes | Number | A physical column index |
576
624
  * | `prop` | No | String \| Number | If [`data`](#data) is set to an [array of arrays](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-arrays), `prop` is the same number as `column`.<br><br>If [`data`](#data) is set to an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects), `prop` is a property name for the column's data object. |
577
625
  *
626
+ * Inside a regular (non-arrow) `cells` function, `this` is the cell meta object. Its
627
+ * `this.instance` property is the Handsontable instance, so you can call core API methods
628
+ * such as `this.instance.toVisualRow(row)` or `this.instance.toVisualColumn(column)` (as in
629
+ * the example below). Arrow functions (`cells: () => {}`) do not bind `this`, so
630
+ * `this.instance` is not available inside them – use a regular or shorthand function instead.
631
+ *
578
632
  * Read more:
579
633
  * - [Configuration options: Implementing custom logic](@/guides/getting-started/configuration-options/configuration-options.md#implement-custom-logic)
580
634
  * - [Configuration options: Setting row options](@/guides/getting-started/configuration-options/configuration-options.md#set-row-options)
@@ -655,14 +709,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
655
709
  * ```
656
710
  */ checkedTemplate: undefined,
657
711
  /**
658
- * The `className` option lets you add CSS class names to every currently-selected element.
712
+ * The `className` option lets you add CSS class names to every cell that has this option set.
659
713
  *
660
714
  * You can set the `className` option to one of the following:
661
715
  *
662
- * | Setting | Description |
663
- * | ------------------- | ---------------------------------------------------------------- |
664
- * | A string | Add a single CSS class name to every currently-selected element |
665
- * | An array of strings | Add multiple CSS class names to every currently-selected element |
716
+ * | Setting | Description |
717
+ * | ------------------- | --------------------------------------------------- |
718
+ * | A string | Add a single CSS class name to every matching cell |
719
+ * | An array of strings | Add multiple CSS class names to every matching cell |
666
720
  *
667
721
  * ::: tip
668
722
  * Don't change the `className` metadata of the [column summary](@/guides/columns/column-summary/column-summary.md) row.
@@ -691,12 +745,10 @@ import { isObjectEqual } from '../../helpers/object.mjs';
691
745
  *
692
746
  * @example
693
747
  * ```js
694
- * // add a `your-class-name` CSS class name
695
- * // to every currently-selected element
748
+ * // add a `your-class-name` CSS class name to every cell
696
749
  * className: 'your-class-name',
697
750
  *
698
- * // add `first-class-name` and `second-class-name` CSS class names
699
- * // to every currently-selected element
751
+ * // add `first-class-name` and `second-class-name` CSS class names to every cell
700
752
  * className: ['first-class-name', 'second-class-name'],
701
753
  * ```
702
754
  */ className: undefined,
@@ -712,8 +764,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
712
764
  * | An array | Define your own column headers (e.g. `['One', 'Two', 'Three', ...]`) |
713
765
  * | A function | Define your own column headers, using a function |
714
766
  *
767
+ * To set the header label of an individual column, use that column's [`title`](#title) option.
768
+ *
715
769
  * Read more:
716
770
  * - [Column header](@/guides/columns/column-header/column-header.md)
771
+ * - [`title`](#title)
772
+ *
773
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
774
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
717
775
  *
718
776
  * @memberof Options#
719
777
  * @type {boolean|string[]|Function}
@@ -756,6 +814,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
756
814
  *
757
815
  * Read more:
758
816
  * - [Plugins: `CollapsibleColumns`](@/api/collapsibleColumns.md)
817
+ * - [Column groups: Collapsible headers](@/guides/columns/column-groups/column-groups.md#collapsible-headers)
759
818
  * - [`nestedHeaders`](#nestedHeaders)
760
819
  *
761
820
  * @memberof Options#
@@ -786,6 +845,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
786
845
  * | A number | Set the same height for every column header |
787
846
  * | An array | Set different heights for individual column headers |
788
847
  *
848
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
849
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
850
+ *
789
851
  * @memberof Options#
790
852
  * @type {number|number[]}
791
853
  * @default undefined
@@ -819,6 +881,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
819
881
  * - [`maxCols`](#maxCols)
820
882
  * - [`data`](#data)
821
883
  *
884
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
885
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
886
+ *
822
887
  * @memberof Options#
823
888
  * @type {object[]|Function}
824
889
  * @default undefined
@@ -953,6 +1018,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
953
1018
  * - [Column summary](@/guides/columns/column-summary/column-summary.md)
954
1019
  * - [Plugins: `ColumnSummary`](@/api/columnSummary.md)
955
1020
  *
1021
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1022
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1023
+ *
956
1024
  * @memberof Options#
957
1025
  * @type {object[]|Function}
958
1026
  * @default undefined
@@ -1004,6 +1072,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1004
1072
  * - [Hooks: `modifyColWidth`](@/api/hooks.md#modifyColWidth)
1005
1073
  * - [`autoColumnSize`](#autoColumnSize)
1006
1074
  *
1075
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1076
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1077
+ *
1007
1078
  * @memberof Options#
1008
1079
  * @type {number|number[]|string|string[]|Array<undefined>|Function}
1009
1080
  * @default undefined
@@ -1087,6 +1158,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1087
1158
  * - [`readOnly`](#readOnly)
1088
1159
  * - [`commentedCellClassName`](#commentedCellClassName)
1089
1160
  *
1161
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1162
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1163
+ *
1090
1164
  * @memberof Options#
1091
1165
  * @type {boolean|object[]}
1092
1166
  * @default false
@@ -1132,6 +1206,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1132
1206
  * - [Context menu: Context menu with fully custom configuration options](@/guides/accessories-and-menus/context-menu/context-menu.md#context-menu-with-a-fully-custom-configuration)
1133
1207
  * - [Plugins: `ContextMenu`](@/api/contextMenu.md)
1134
1208
  *
1209
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1210
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1211
+ *
1135
1212
  * @memberof Options#
1136
1213
  * @type {boolean|string[]|object}
1137
1214
  * @default undefined
@@ -1251,6 +1328,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1251
1328
  * - [Plugins: `CopyPaste`](@/api/copyPaste.md)
1252
1329
  * - [Guides: Clipboard](@/guides/cell-features/clipboard/clipboard.md)
1253
1330
  *
1331
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1332
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1333
+ *
1254
1334
  * @memberof Options#
1255
1335
  * @type {object|boolean}
1256
1336
  * @default true
@@ -1305,6 +1385,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1305
1385
  * - [`TableClassName`](#TableClassName)
1306
1386
  * - [`className`](#className)
1307
1387
  *
1388
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1389
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1390
+ *
1308
1391
  * @memberof Options#
1309
1392
  * @type {string}
1310
1393
  * @default undefined
@@ -1332,6 +1415,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1332
1415
  * - [`TableClassName`](#TableClassName)
1333
1416
  * - [`className`](#className)
1334
1417
  *
1418
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1419
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1420
+ *
1335
1421
  * @memberof Options#
1336
1422
  * @type {string}
1337
1423
  * @default 'ht__highlight'
@@ -1360,6 +1446,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1360
1446
  * - [`TableClassName`](#TableClassName)
1361
1447
  * - [`className`](#className)
1362
1448
  *
1449
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1450
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1451
+ *
1363
1452
  * @memberof Options#
1364
1453
  * @type {string}
1365
1454
  * @default undefined
@@ -1414,6 +1503,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1414
1503
  * - [Layout direction](@/guides/internationalization/layout-direction/layout-direction.md)
1415
1504
  * - [`layoutDirection`](#layoutDirection)
1416
1505
  *
1506
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1507
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1508
+ *
1417
1509
  * @memberof Options#
1418
1510
  * @type {boolean|object[]}
1419
1511
  * @default false
@@ -1487,6 +1579,38 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1487
1579
  */ customBorders: false,
1488
1580
  /**
1489
1581
  * @description
1582
+ * The `customBordersProgressive` option controls how a large [`customBorders`](#customborders)
1583
+ * configuration is applied at initialization.
1584
+ *
1585
+ * By default (`false`), all custom borders are built synchronously before the first render, which
1586
+ * can block the initial paint when the configuration contains a very large number of borders.
1587
+ *
1588
+ * Set it to `true` to apply the borders in background batches after the grid has rendered: the
1589
+ * grid becomes interactive immediately and the borders fill in progressively. Pass an object to
1590
+ * tune the batch size, for example `{ chunkSize: 5000 }`.
1591
+ *
1592
+ * When enabled, [`getBorders()`](@/api/customBorders.md#getborders) and the borders' cell meta
1593
+ * are populated incrementally, so they may be incomplete until the
1594
+ * [`afterCustomBordersUpdate`](@/api/hooks.md#aftercustombordersupdate) hook fires.
1595
+ *
1596
+ * @since 18.1.0
1597
+ * @memberof Options#
1598
+ * @type {boolean|object}
1599
+ * @default false
1600
+ * @category CustomBorders
1601
+ *
1602
+ * @example
1603
+ * ```js
1604
+ * // apply a large custom-borders config in background batches
1605
+ * customBorders: [ / * ...many borders... * / ],
1606
+ * customBordersProgressive: true,
1607
+ *
1608
+ * // tune the batch size
1609
+ * customBordersProgressive: { chunkSize: 5000 },
1610
+ * ```
1611
+ */ customBordersProgressive: false,
1612
+ /**
1613
+ * @description
1490
1614
  * The `data` option sets the initial [data](@/guides/getting-started/binding-to-data/binding-to-data.md) of your Handsontable instance.
1491
1615
  *
1492
1616
  * Handsontable's data is bound to your source data by reference (i.e. when you edit Handsontable's data, your source data alters as well).
@@ -1507,6 +1631,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1507
1631
  * - [`startRows`](#startRows)
1508
1632
  * - [`startCols`](#startCols)
1509
1633
  *
1634
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1635
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1636
+ *
1510
1637
  * @memberof Options#
1511
1638
  * @type {Array[]|object[]}
1512
1639
  * @default undefined
@@ -1545,6 +1672,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1545
1672
  * map cleanly to your backend. Pair with **`pagination`** for server-side paging.
1546
1673
  * Valid cell edits apply at once; if **`onRowsUpdate`** fails or **`beforeRowsMutation`** blocks the update, affected cells roll back.
1547
1674
  *
1675
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1676
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1677
+ *
1548
1678
  * @since 17.1.0
1549
1679
  * @memberof Options#
1550
1680
  * @type {object}
@@ -1582,6 +1712,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1582
1712
  *
1583
1713
  * The option only works when defined in the global table settings.
1584
1714
  *
1715
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1716
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1717
+ *
1585
1718
  * @since 14.4.0
1586
1719
  * @memberof Options#
1587
1720
  * @type {boolean}
@@ -1628,6 +1761,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1628
1761
  * - [Binding to data: Function data source and schema](@/guides/getting-started/binding-to-data/binding-to-data.md#function-data-source-and-schema)
1629
1762
  * - [`data`](#data)
1630
1763
  *
1764
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1765
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1766
+ *
1631
1767
  * @memberof Options#
1632
1768
  * @type {object|Function}
1633
1769
  * @default undefined
@@ -1660,6 +1796,11 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1660
1796
  * Source data must be in ISO 8601 date format (`YYYY-MM-DD`). Otherwise operations such
1661
1797
  * as sorting and filtering can be unstable or unpredictable. The `dateFormat` object affects only how dates are
1662
1798
  * displayed; the underlying value should remain ISO.
1799
+ *
1800
+ * Time-related options (`hour`, `minute`, `second`, `timeStyle`, `hour12`, `hourCycle`,
1801
+ * `fractionalSecondDigits`) only affect display and always render midnight (`00:00:00`) for
1802
+ * `date`/`intl-date` cells, because their source data is date-only. For editable date *and*
1803
+ * time values, use the [`intl-datetime` cell type](@/guides/cell-types/datetime-cell-type/datetime-cell-type.md).
1663
1804
  * :::
1664
1805
  *
1665
1806
  * **Style shortcuts:**
@@ -1790,6 +1931,53 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1790
1931
  minute: '2-digit'
1791
1932
  },
1792
1933
  /**
1934
+ * Configures the date-time format for `intl-datetime` cells using an
1935
+ * [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat)
1936
+ * options object. The locale is controlled separately via the [`locale`](@/api/options.md#locale) option.
1937
+ *
1938
+ * ::: tip Source data format
1939
+ * Source data must be in ISO 8601 date-time format (`YYYY-MM-DDTHH:mm:ss`; a date-only
1940
+ * `YYYY-MM-DD` value is treated as midnight). Otherwise operations such as sorting and filtering
1941
+ * can be unstable or unpredictable. The `dateTimeFormat` object affects only how values are
1942
+ * displayed; the underlying value should remain ISO.
1943
+ * :::
1944
+ *
1945
+ * For the full list of supported properties, see
1946
+ * [MDN: Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat).
1947
+ *
1948
+ * Read more:
1949
+ * - [Date-time cell type](@/guides/cell-types/datetime-cell-type/datetime-cell-type.md)
1950
+ * - [`locale`](@/api/options.md#locale)
1951
+ *
1952
+ * @since 18.1.0
1953
+ * @memberof Options#
1954
+ * @type {object}
1955
+ * @default { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }
1956
+ * @category Core
1957
+ *
1958
+ * @example
1959
+ * ```js
1960
+ * columns: [
1961
+ * {
1962
+ * type: 'intl-datetime',
1963
+ * locale: 'en-US',
1964
+ * dateTimeFormat: {
1965
+ * dateStyle: 'medium',
1966
+ * timeStyle: 'short'
1967
+ * }
1968
+ * }
1969
+ * ]
1970
+ * ```
1971
+ */ dateTimeFormat: {
1972
+ year: 'numeric',
1973
+ month: '2-digit',
1974
+ day: '2-digit',
1975
+ hour: '2-digit',
1976
+ minute: '2-digit',
1977
+ second: '2-digit',
1978
+ hour12: false
1979
+ },
1980
+ /**
1793
1981
  * The `defaultDate` option configures the date pre-selected in the date picker editor
1794
1982
  * when opening an empty [`date`](@/guides/cell-types/date-cell-type/date-cell-type.md) cell for editing.
1795
1983
  *
@@ -1839,9 +2027,6 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1839
2027
  * | `'header'` | - Show single-cell selection<br>- Show range selection<br>- Don't show header selection |
1840
2028
  * | An array | A combination of `'current'`, `'area'`, and/or `'header'` |
1841
2029
  *
1842
- * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1843
- * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1844
- *
1845
2030
  * When set to any non-`false` value, the second-click deselect behavior
1846
2031
  * (Ctrl/Cmd+click on an already-selected cell removing it from a multi-cell selection)
1847
2032
  * is also skipped. Without visible feedback, toggling layers off can cause unexpected
@@ -1894,7 +2079,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1894
2079
  * | `template.description` | The description of the template | The description of the template |
1895
2080
  * | `template.buttons` | Array of objects with the buttons configuration (default: `[]`) | The buttons of the template |
1896
2081
  * | `template.buttons.text` | The text of the button | The text of the button |
1897
- * | `template.buttons.type` | The type of the button ('primary' | 'secondary') | The type of the button |
2082
+ * | `template.buttons.type` | The type of the button (`'primary'` \| `'secondary'`) | The type of the button |
1898
2083
  * | `template.buttons.callback` | The callback function to trigger when the button is clicked | The callback function to trigger when the button is clicked |
1899
2084
  * | `content` | A string, HTMLElement or DocumentFragment (default: `''`) | The content of the dialog |
1900
2085
  * | `customClassName` | A string (default: `''`) | The custom class name of the dialog |
@@ -1903,7 +2088,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1903
2088
  * | `animation` | Boolean (default: `true`) | Whether to show the animation |
1904
2089
  * | `closable` | Boolean (default: `false`) | Whether to make the dialog closable |
1905
2090
  * | `a11y` | Object with accessibility options (default: `{ role: 'dialog', ariaLabel: 'Dialog', ariaLabelledby: '', ariaDescribedby: '' }`) | Accessibility options for the dialog |
1906
- * | `a11y.role` | The role of the dialog ('dialog' | 'alertdialog') | The role of the dialog |
2091
+ * | `a11y.role` | The role of the dialog (`'dialog'` \| `'alertdialog'`) | The role of the dialog |
1907
2092
  * | `a11y.ariaLabel` | The label of the dialog | The label of the dialog |
1908
2093
  * | `a11y.ariaLabelledby` | The ID of the element that labels the dialog | The ID of the element that labels the dialog |
1909
2094
  * | `a11y.ariaDescribedby` | The ID of the element that describes the dialog | The ID of the element that describes the dialog |
@@ -1911,6 +2096,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1911
2096
  * Read more:
1912
2097
  * - [Plugins: `Dialog`](@/api/dialog.md)
1913
2098
  *
2099
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2100
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2101
+ *
1914
2102
  * @since 16.1.0
1915
2103
  * @memberof Options#
1916
2104
  * @type {boolean|object}
@@ -2067,6 +2255,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2067
2255
  * Read more:
2068
2256
  * - [Plugins: `DragToScroll`](@/api/dragToScroll.md)
2069
2257
  *
2258
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2259
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2260
+ *
2070
2261
  * @memberof Options#
2071
2262
  * @type {boolean|object}
2072
2263
  * @default true
@@ -2174,10 +2365,18 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2174
2365
  * You'll still be able to change cells' content through Handsontable's API
2175
2366
  * or through plugins (e.g. [`CopyPaste`](@/api/copyPaste.md)), though.
2176
2367
  *
2368
+ * When the `editor` option is set to `false`, you can still use these keyboard shortcuts:
2369
+ *
2370
+ * | Shortcut | Action |
2371
+ * | --------------------------------------- | ----------------------------------------------------------- |
2372
+ * | `Delete` / `Backspace` | Clear the contents of the selected cells |
2373
+ * | `Ctrl` + `Enter` / `Cmd` + `Enter` | Fill selected cells with the value of the active cell |
2374
+ *
2177
2375
  * To set the [`editor`](#editor), [`renderer`](#renderer), and [`validator`](#validator)
2178
2376
  * options all at once, use the [`type`](#type) option.
2179
2377
  *
2180
2378
  * Read more:
2379
+ * - [Keyboard shortcuts](@/guides/navigation/keyboard-shortcuts/keyboard-shortcuts.md)
2181
2380
  * - [Cell editor](@/guides/cell-functions/cell-editor/cell-editor.md)
2182
2381
  * - [Cell type](@/guides/cell-types/cell-type/cell-type.md)
2183
2382
  * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration)
@@ -2250,6 +2449,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2250
2449
  * Read more:
2251
2450
  * - [Plugins: `EmptyDataState`](@/api/emptyDataState.md)
2252
2451
  *
2452
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2453
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2454
+ *
2253
2455
  * @since 16.2.0
2254
2456
  * @memberof Options#
2255
2457
  * @type {boolean|object}
@@ -2313,6 +2515,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2313
2515
  * Read more:
2314
2516
  * - [`enterMoves`](#enterMoves)
2315
2517
  *
2518
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2519
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2520
+ *
2316
2521
  * @memberof Options#
2317
2522
  * @type {boolean}
2318
2523
  * @default true
@@ -2370,6 +2575,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2370
2575
  * Read more:
2371
2576
  * - [`enterBeginsEditing`](#enterBeginsEditing)
2372
2577
  *
2578
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2579
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2580
+ *
2373
2581
  * @memberof Options#
2374
2582
  * @type {object|Function}
2375
2583
  * @default {col: 0, row: 1}
@@ -2451,6 +2659,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2451
2659
  * Read more:
2452
2660
  * - [AutoFill values](@/guides/cell-features/autofill-values/autofill-values.md)
2453
2661
  *
2662
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2663
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2664
+ *
2454
2665
  * @memberof Options#
2455
2666
  * @type {boolean|string|object}
2456
2667
  * @default true
@@ -2513,10 +2724,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2513
2724
  * // set the `type` of each cell in this column to `autocomplete`
2514
2725
  * type: 'autocomplete',
2515
2726
  * // set options available in every `autocomplete` cell of this column
2516
- * source: ['A', 'B', 'C'],
2517
- * // when the end user types in `A`, display only the A option
2518
- * // when the end user types in `B`, display only the B option
2519
- * // when the end user types in `C`, display only the C option
2727
+ * source: ['Apple', 'Apricot', 'Avocado', 'Banana', 'Blueberry'],
2728
+ * // when the end user types in `a`, display options that contain `a`
2729
+ * // when the end user types in `ap`, display only `Apple` and `Apricot`
2520
2730
  * filter: true
2521
2731
  * }],
2522
2732
  * ```
@@ -2584,6 +2794,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2584
2794
  * - [Plugins: `Filters`](@/api/filters.md)
2585
2795
  * - [`dropdownMenu`](#dropdownMenu)
2586
2796
  *
2797
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2798
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2799
+ *
2587
2800
  * @memberof Options#
2588
2801
  * @type {boolean}
2589
2802
  * @default undefined
@@ -2623,6 +2836,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2623
2836
  * Read more:
2624
2837
  * - [`fixedColumnsStart`](#fixedcolumnsstart)
2625
2838
  *
2839
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2840
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2841
+ *
2626
2842
  * @memberof Options#
2627
2843
  * @type {number}
2628
2844
  * @default 0
@@ -2645,6 +2861,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2645
2861
  * - [`fixedColumnsLeft`](#fixedcolumnsleft)
2646
2862
  * - [`layoutDirection`](#layoutDirection)
2647
2863
  *
2864
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2865
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2866
+ *
2648
2867
  * @memberof Options#
2649
2868
  * @type {number}
2650
2869
  * @default 0
@@ -2685,6 +2904,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2685
2904
  * - [Row freezing](@/guides/rows/row-freezing/row-freezing.md)
2686
2905
  * - [`height`](#height)
2687
2906
  *
2907
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2908
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2909
+ *
2688
2910
  * @memberof Options#
2689
2911
  * @type {number}
2690
2912
  * @default 0
@@ -2709,6 +2931,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2709
2931
  * - [Row freezing](@/guides/rows/row-freezing/row-freezing.md)
2710
2932
  * - [`height`](#height)
2711
2933
  *
2934
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2935
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2936
+ *
2712
2937
  * @memberof Options#
2713
2938
  * @type {number}
2714
2939
  * @default 0
@@ -2734,6 +2959,17 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2734
2959
  * | `engine` | `HyperFormula` \|<br>A [HyperFormula](https://handsontable.github.io/hyperformula/) instance \|<br>A [HyperFormula configuration](https://handsontable.github.io/hyperformula/api/interfaces/configparams.html) object |
2735
2960
  * | `sheetId` | A number |
2736
2961
  * | `sheetName` | A string |
2962
+ * | `language` | A [HyperFormula language pack](https://handsontable.github.io/hyperformula/guide/localizing-functions.html), imported from `hyperformula/es/i18n/languages` |
2963
+ * | `hyperlinks` | `true` \|<br>`false` (default) |
2964
+ *
2965
+ * Set `hyperlinks` to `true` to render a cell whose formula is `HYPERLINK()` as a link. The cell
2966
+ * keeps its own renderer, and the link label is the value the formula returns. Only a cell whose
2967
+ * root expression is `HYPERLINK()` becomes a link, so a nested call such as
2968
+ * `=CONCATENATE("see ", HYPERLINK("https://example.com"))` renders as plain text.
2969
+ *
2970
+ * A link is created only for the `http`, `https`, `mailto` and `tel` schemes. Any other scheme,
2971
+ * `javascript:` included, renders the label as plain text instead. Press
2972
+ * <kbd>**Alt**</kbd>+<kbd>**Enter**</kbd> to open the link of the selected cell.
2737
2973
  *
2738
2974
  * Read more:
2739
2975
  * - [Plugins: `Formulas`](@/api/formulas.md)
@@ -2741,6 +2977,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2741
2977
  * - [HyperFormula documentation: Client-side installation](https://handsontable.github.io/hyperformula/guide/client-side-installation)
2742
2978
  * - [HyperFormula documentation: Configuration options](https://handsontable.github.io/hyperformula/api/interfaces/configparams.html)
2743
2979
  *
2980
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2981
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2982
+ *
2744
2983
  * @memberof Options#
2745
2984
  * @type {object}
2746
2985
  * @default undefined
@@ -2756,6 +2995,12 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2756
2995
  * sheetName: 'Sheet 1'
2757
2996
  * }
2758
2997
  *
2998
+ * // or, render `HYPERLINK()` formulas as links
2999
+ * formulas: {
3000
+ * engine: HyperFormula,
3001
+ * hyperlinks: true
3002
+ * }
3003
+ *
2759
3004
  * // or, add a HyperFormula instance
2760
3005
  * // initialized with the `'internal-use-in-handsontable'` license key
2761
3006
  * const hyperformulaInstance = HyperFormula.buildEmpty({
@@ -2796,6 +3041,22 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2796
3041
  * sheetId: 1,
2797
3042
  * sheetName: 'Sheet 1'
2798
3043
  * }
3044
+ *
3045
+ * // set a language pack for the built-in function names and formula syntax
3046
+ * import plPL from 'hyperformula/es/i18n/languages/plPL';
3047
+ *
3048
+ * formulas: {
3049
+ * engine: HyperFormula,
3050
+ * sheetName: 'Sheet 1',
3051
+ * language: plPL
3052
+ * }
3053
+ *
3054
+ * // update the language at runtime
3055
+ * hot.updateSettings({
3056
+ * formulas: {
3057
+ * language: plPL
3058
+ * }
3059
+ * });
2799
3060
  * ```
2800
3061
  */ formulas: undefined,
2801
3062
  /**
@@ -2809,6 +3070,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2809
3070
  * | `true` | Enable text selection in multiple cells at a time |
2810
3071
  * | `'cell'` | Enable text selection in one cell at a time |
2811
3072
  *
3073
+ * With `fragmentSelection: true`, copying text across multiple cells requires a
3074
+ * [`selectionMode`](@/api/options.md#selectionmode) that allows selecting more than one cell.
3075
+ * When [`selectionMode`](@/api/options.md#selectionmode) is set to `'single'`, copying is
3076
+ * limited to a single cell.
3077
+ *
3078
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3079
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3080
+ *
2812
3081
  * @memberof Options#
2813
3082
  * @type {boolean|string}
2814
3083
  * @default false
@@ -2948,6 +3217,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2948
3217
  * Read more:
2949
3218
  * - [Grid size](@/guides/getting-started/grid-size/grid-size.md)
2950
3219
  *
3220
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3221
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3222
+ *
2951
3223
  * @memberof Options#
2952
3224
  * @type {number|'auto'|string|Function}
2953
3225
  * @default undefined
@@ -2993,6 +3265,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2993
3265
  * - [Plugins: `HiddenColumns`](@/api/hiddenColumns.md)
2994
3266
  * - [Column hiding](@/guides/columns/column-hiding/column-hiding.md)
2995
3267
  *
3268
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3269
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3270
+ *
2996
3271
  * @memberof Options#
2997
3272
  * @type {boolean|object}
2998
3273
  * @default undefined
@@ -3037,6 +3312,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3037
3312
  * - [Plugins: `HiddenRows`](@/api/hiddenRows.md)
3038
3313
  * - [Row hiding](@/guides/rows/row-hiding/row-hiding.md)
3039
3314
  *
3315
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3316
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3317
+ *
3040
3318
  * @memberof Options#
3041
3319
  * @type {boolean|object}
3042
3320
  * @default undefined
@@ -3065,6 +3343,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3065
3343
  * Note: The `initialState` option is ignored when passed to the
3066
3344
  * [`updateSettings()`](@/api/core.md#updatesettings) method.
3067
3345
  *
3346
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3347
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3348
+ *
3068
3349
  * @since 16.1.0
3069
3350
  * @memberof Options#
3070
3351
  * @type {object | undefined}
@@ -3113,6 +3394,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3113
3394
  *
3114
3395
  * Enabling this option can make a negative impact on how some screen readers handle reading the table cells.
3115
3396
  *
3397
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3398
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3399
+ *
3116
3400
  * @since 14.0.0
3117
3401
  * @memberof Options#
3118
3402
  * @type {boolean}
@@ -3320,6 +3604,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3320
3604
  * - [`fixedColumnsStart`](#fixedcolumnsstart)
3321
3605
  * - [`customBorders`](#customBorders)
3322
3606
  *
3607
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3608
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3609
+ *
3323
3610
  * @memberof Options#
3324
3611
  * @type {string}
3325
3612
  * @default 'inherit'
@@ -3348,6 +3635,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3348
3635
  * modal layer, such as the dialog) are not orderable through this option. The license
3349
3636
  * notification is not orderable either; it always renders last in the `bottom` slot.
3350
3637
  *
3638
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3639
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3640
+ *
3351
3641
  * @since 18.0.0
3352
3642
  * @memberof Options#
3353
3643
  * @type {object}
@@ -3370,11 +3660,15 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3370
3660
  * | Setting | Description |
3371
3661
  * | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
3372
3662
  * | A string with your [commercial license key](@/guides/getting-started/license-key/license-key.md#commercial-license) | For [commercial use](@/guides/technical-specification/software-license/software-license.md#commercial-use) |
3663
+ * | A string with your [entitlement license key](@/guides/getting-started/license-key/license-key.md#entitlement-license-keys) (plain-English text ending with a `[...]` block) | For trial, subscription, or perpetual use |
3373
3664
  * | `'non-commercial-and-evaluation'` | For [non-commercial use](@/guides/technical-specification/software-license/software-license.md#non-commercial-use) |
3374
3665
  *
3375
3666
  * Read more:
3376
3667
  * - [License key](@/guides/getting-started/license-key/license-key.md)
3377
3668
  *
3669
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3670
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3671
+ *
3378
3672
  * @memberof Options#
3379
3673
  * @type {string}
3380
3674
  * @default undefined
@@ -3382,9 +3676,13 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3382
3676
  *
3383
3677
  * @example
3384
3678
  * ```js
3385
- * // for commercial use
3679
+ * // for commercial use (legacy 25-character format)
3386
3680
  * licenseKey: 'xxxxx-xxxxx-xxxxx-xxxxx-xxxxx', // your commercial license key
3387
3681
  *
3682
+ * // for an entitlement license key (trial, subscription, or perpetual),
3683
+ * // pass the whole key string exactly as you received it
3684
+ * licenseKey: 'This is a Handsontable license key for Acme Corp, ... [eyJwcm9kdWN0cyI6...3a4f8361]',
3685
+ *
3388
3686
  * // for non-commercial use
3389
3687
  * licenseKey: 'non-commercial-and-evaluation',
3390
3688
  * ```
@@ -3446,8 +3744,15 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3446
3744
  * | `title` | A string | Custom loading title to display (default: `'Loading...'`) |
3447
3745
  * | `description` | A string | Custom loading description to display (default: `''`) |
3448
3746
  *
3747
+ * `title` and `description` render as text. Markup passed in them shows up literally rather
3748
+ * than being interpreted, so use `icon` for the one slot that takes markup.
3749
+ *
3449
3750
  * Read more:
3450
3751
  * - [Plugins: `Loading`](@/api/loading.md)
3752
+ *
3753
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3754
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3755
+ *
3451
3756
  * @since 16.1.0
3452
3757
  * @memberof Options#
3453
3758
  * @type {boolean|object}
@@ -3489,6 +3794,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3489
3794
  * Read more:
3490
3795
  * - [Plugins: `Notification`](@/api/notification.md)
3491
3796
  *
3797
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3798
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3799
+ *
3492
3800
  * @since 17.1.0
3493
3801
  * @memberof Options#
3494
3802
  * @type {boolean|object}
@@ -3513,6 +3821,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3513
3821
  * Read more:
3514
3822
  * - [Column freezing](@/guides/columns/column-freezing/column-freezing.md#user-triggered-freeze)
3515
3823
  *
3824
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3825
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3826
+ *
3516
3827
  * @memberof Options#
3517
3828
  * @type {boolean}
3518
3829
  * @default undefined
@@ -3538,6 +3849,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3538
3849
  * Read more:
3539
3850
  * - [Column moving](@/guides/columns/column-moving/column-moving.md)
3540
3851
  *
3852
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3853
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3854
+ *
3541
3855
  * @memberof Options#
3542
3856
  * @type {boolean|number[]}
3543
3857
  * @default undefined
@@ -3569,6 +3883,13 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3569
3883
  *
3570
3884
  * Read more:
3571
3885
  * - [Column width: Column stretching](@/guides/columns/column-width/column-width.md#column-stretching)
3886
+ * - [Column width: Column stretching and manual resizing](@/guides/columns/column-width/column-width.md#column-stretching-and-manual-resizing)
3887
+ *
3888
+ * When you set initial widths through the array form, those columns are excluded from
3889
+ * [`stretchH`](#stretchh) redistribution. Only the columns without a pre-defined width are stretched.
3890
+ *
3891
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3892
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3572
3893
  *
3573
3894
  * @memberof Options#
3574
3895
  * @type {boolean|number[]}
@@ -3602,6 +3923,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3602
3923
  * Read more:
3603
3924
  * - [Row moving](@/guides/rows/row-moving/row-moving.md)
3604
3925
  *
3926
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3927
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3928
+ *
3605
3929
  * @memberof Options#
3606
3930
  * @type {boolean|number[]}
3607
3931
  * @default undefined
@@ -3634,6 +3958,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3634
3958
  * Read more:
3635
3959
  * - [Row height: Adjust the row height manually](@/guides/rows/row-height/row-height.md#adjust-the-row-height-manually)
3636
3960
  *
3961
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3962
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3963
+ *
3637
3964
  * @memberof Options#
3638
3965
  * @type {boolean|number[]}
3639
3966
  * @default undefined
@@ -3659,6 +3986,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3659
3986
  * Handsontable trims columns from the right.
3660
3987
  * - At runtime: for example, when inserting columns.
3661
3988
  *
3989
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3990
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3991
+ *
3662
3992
  * @memberof Options#
3663
3993
  * @type {number}
3664
3994
  * @default Infinity
@@ -3678,6 +4008,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3678
4008
  * Handsontable trims rows from the bottom.
3679
4009
  * - At runtime: for example, when inserting rows.
3680
4010
  *
4011
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4012
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4013
+ *
3681
4014
  * @memberof Options#
3682
4015
  * @type {number}
3683
4016
  * @default Infinity
@@ -3727,8 +4060,8 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3727
4060
  *
3728
4061
  * | Property | Description |
3729
4062
  * | --------- | ---------------------------------------------------------- |
3730
- * | `row` | The row index of the merged section's beginning |
3731
- * | `col` | The column index of the merged section's beginning |
4063
+ * | `row` | The visual row index of the merged section's beginning |
4064
+ * | `col` | The visual column index of the merged section's beginning |
3732
4065
  * | `rowspan` | The width (as a number of rows) of the merged section |
3733
4066
  * | `colspan` | The height (as a number of columns ) of the merged section |
3734
4067
  *
@@ -3789,6 +4122,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3789
4122
  * - The [`dataSchema`](#dataSchema) option
3790
4123
  * - The [`columns`](#columns) option
3791
4124
  *
4125
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4126
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4127
+ *
3792
4128
  * @memberof Options#
3793
4129
  * @type {number}
3794
4130
  * @default 0
@@ -3805,6 +4141,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3805
4141
  *
3806
4142
  * See the [`rowHeights`](#rowHeights) option description for more information.
3807
4143
  *
4144
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4145
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4146
+ *
3808
4147
  * @since 16.2.0
3809
4148
  * @memberof Options#
3810
4149
  * @type {number|number[]|string|string[]|Array<undefined>|Function}
@@ -3838,6 +4177,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3838
4177
  * Handsontable adds empty rows at the bottom.
3839
4178
  * - At runtime: for example, when removing rows.
3840
4179
  *
4180
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4181
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4182
+ *
3841
4183
  * @memberof Options#
3842
4184
  * @type {number}
3843
4185
  * @default 0
@@ -3865,6 +4207,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3865
4207
  * - The [`dataSchema`](#dataSchema) option
3866
4208
  * - The [`columns`](#columns) option
3867
4209
  *
4210
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4211
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4212
+ *
3868
4213
  * @memberof Options#
3869
4214
  * @type {number}
3870
4215
  * @default 0
@@ -3885,6 +4230,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3885
4230
  *
3886
4231
  * The total number of rows can't exceed the [`maxRows`](#maxRows) value.
3887
4232
  *
4233
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4234
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4235
+ *
3888
4236
  * @memberof Options#
3889
4237
  * @type {number}
3890
4238
  * @default 0
@@ -3971,6 +4319,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3971
4319
  /**
3972
4320
  * When set to `true`, the `navigableHeaders` option lets you navigate [row headers](@/guides/rows/row-header/row-header.md) and [column headers](@/guides/columns/column-header/column-header.md), using the arrow keys or the <kbd>**Tab**</kbd> key (if the [`tabNavigation`](#tabNavigation) option is set to `true`).
3973
4321
  *
4322
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4323
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4324
+ *
3974
4325
  * @since 14.0.0
3975
4326
  * @memberof Options#
3976
4327
  * @type {boolean}
@@ -3992,6 +4343,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3992
4343
  * no more captures that shortcuts to make the grid navigation available (`tabNavigation: true`)
3993
4344
  * but returns control to the browser so the native page navigation is possible.
3994
4345
  *
4346
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4347
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4348
+ *
3995
4349
  * @since 14.0.0
3996
4350
  * @memberof Options#
3997
4351
  * @type {boolean}
@@ -4038,6 +4392,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4038
4392
  * | `rowspan` | `number` | The number of header rows the header spans (an integer greater than `1`). |
4039
4393
  * | `headerClassName` | `string` | One or more space-separated CSS class names added to the header element (for example, `'htRight'`). |
4040
4394
  * | `visibleWhen` | `string` | For a header inside a collapsible group, sets in which collapse state the header (and its columns) stays visible: `'collapsed'` (visible only while the group is collapsed), `'expanded'` (visible only while the group is expanded), or `'always'` (visible in both states). When omitted, a header in such a group defaults to `'expanded'` - it is hidden when the group collapses. At least one column of a group always stays visible. |
4395
+ * | `columnDropMode` | `string` | Controls what a group does when a column move (with the [`ManualColumnMove`](#manualcolumnmove) plugin) drops a foreign column (one belonging to another group) into its span. With `'adopt'` (default), the group adopts that column as a child and stays one banner. With `'split'`, the group keeps its identity and renders as several same-label banners around the foreign column (it splits). A group always reclaims its own columns when they move back into its span, regardless of this setting. Meaningful only on a header that spans columns. |
4041
4396
  *
4042
4397
  * ::: tip
4043
4398
  * A header group is made collapsible through the [`collapsibleColumns`](#collapsibleColumns) option, not through
@@ -4050,11 +4405,22 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4050
4405
  * column is replaced by the `label` from `nestedHeaders`. The `nestedHeaders` label takes precedence.
4051
4406
  * :::
4052
4407
  *
4408
+ * ::: warning
4409
+ * A `label` is written to the DOM as HTML, so a label built from user input or an external system can
4410
+ * inject markup. Handsontable does not sanitize it by default. Set the [`sanitizer`](#sanitizer) option,
4411
+ * which receives nested header labels under the `'header'` source. The `sanitizer` option is grid-level,
4412
+ * so it cannot be narrowed to one header or one column.
4413
+ * :::
4414
+ *
4053
4415
  * Read more:
4054
4416
  * - [Plugins: `NestedHeaders`](@/api/nestedHeaders.md)
4417
+ * - [Security: Content sanitizing](@/guides/security/security/security.md#content-sanitizing)
4055
4418
  * - [Column groups: Nested headers](@/guides/columns/column-groups/column-groups.md#nested-headers)
4056
4419
  * - [Column groups: Choose which columns stay visible when collapsed](@/guides/columns/column-groups/column-groups.md#choose-which-columns-stay-visible-when-collapsed)
4057
4420
  *
4421
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4422
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4423
+ *
4058
4424
  * @memberof Options#
4059
4425
  * @type {boolean|Array[]}
4060
4426
  * @default undefined
@@ -4092,6 +4458,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4092
4458
  * Read more:
4093
4459
  * - [Plugins: `NestedRows`](@/guides/rows/row-parent-child/row-parent-child.md)
4094
4460
  *
4461
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4462
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4463
+ *
4095
4464
  * @example
4096
4465
  * ```js
4097
4466
  * // enable the `NestedRows` plugin
@@ -4223,6 +4592,47 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4223
4592
  * ```
4224
4593
  */ numericFormat: undefined,
4225
4594
  /**
4595
+ * Controls whether a [`numeric`](@/guides/cell-types/numeric-cell-type/numeric-cell-type.md)
4596
+ * cell keeps the exact text you typed when converting it to a JavaScript number would lose
4597
+ * information.
4598
+ *
4599
+ * By default (`false`), a numeric cell always stores the parsed JavaScript number, so a value
4600
+ * like `9.0` is stored as `9` and the editor shows `9` the next time you open it. Numbers whose
4601
+ * magnitude exceeds the safe-integer limit (`9007199254740991`) also lose precision.
4602
+ *
4603
+ * When set to `true`, and only when parsing would be lossy, the cell keeps the original literal
4604
+ * string instead of the number. This preserves trailing decimal zeros (`9.0`, `9.50`) and the
4605
+ * full precision of large numbers in the cell editor, matching spreadsheet software. Values
4606
+ * that convert without loss (for example `9`, `9.5`, `1000`) are still stored as numbers, so
4607
+ * sorting, filtering, and formula calculations are unaffected. A preserved literal also keeps
4608
+ * behaving like a number in those features: column sorting and filter conditions compare it
4609
+ * numerically, and the [`Formulas`](@/api/formulas.md) engine parses the literal as a number,
4610
+ * so functions such as `SUM` still include the cell. The cell renderer still formats
4611
+ * the value according to [`numericFormat`](@/api/options.md#numericformat); only the editor
4612
+ * shows the preserved literal. One exception: the filter menu's "Filter by value" checkbox
4613
+ * list compares values strictly, so a preserved literal (`'9.0'`) and its plain number (`9`)
4614
+ * appear as two separate entries.
4615
+ *
4616
+ * The default is `false` so existing configurations keep their current behavior.
4617
+ *
4618
+ * @memberof Options#
4619
+ * @since 18.1.0
4620
+ * @type {boolean}
4621
+ * @default false
4622
+ * @category Core
4623
+ *
4624
+ * @example
4625
+ * ```js
4626
+ * columns: [
4627
+ * {
4628
+ * type: 'numeric',
4629
+ * // keep `9.0` and very large numbers as typed in the editor
4630
+ * preserveNumericLiteral: true,
4631
+ * }
4632
+ * ],
4633
+ * ```
4634
+ */ preserveNumericLiteral: false,
4635
+ /**
4226
4636
  * If the `observeDOMVisibility` option is set to `true`,
4227
4637
  * Handsontable rerenders every time it detects that the grid was made visible in the DOM.
4228
4638
  *
@@ -4231,6 +4641,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4231
4641
  * Handsontable automatically triggers a rerender to ensure correct layout and dimensions.
4232
4642
  * Set this option to `false` if you want to control rendering manually (e.g. by calling `render()` yourself).
4233
4643
  *
4644
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4645
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4646
+ *
4234
4647
  * @memberof Options#
4235
4648
  * @type {boolean}
4236
4649
  * @default true
@@ -4254,6 +4667,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4254
4667
  * | `false` | On a mouse click outside of the grid, keep the current [selection](@/guides/cell-features/selection/selection.md) |
4255
4668
  * | A function | A function that takes the click event target and returns a boolean |
4256
4669
  *
4670
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4671
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4672
+ *
4257
4673
  * @memberof Options#
4258
4674
  * @type {boolean|Function}
4259
4675
  * @default true
@@ -4307,6 +4723,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4307
4723
  * - [Rows pagination](@/guides/rows/rows-pagination/rows-pagination.md)
4308
4724
  * - [Plugins: `Pagination`](@/api/pagination.md)
4309
4725
  *
4726
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4727
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4728
+ *
4310
4729
  * @since 16.1.0
4311
4730
  * @memberof Options#
4312
4731
  * @type {boolean}
@@ -4400,6 +4819,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4400
4819
  * | `'horizontal'` | Prevent horizontal overflowing |
4401
4820
  * | `'vertical'` | Prevent vertical overflowing |
4402
4821
  *
4822
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4823
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4824
+ *
4403
4825
  * @memberof Options#
4404
4826
  * @type {string|boolean}
4405
4827
  * @default false
@@ -4436,9 +4858,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4436
4858
  */ preventWheel: false,
4437
4859
  /**
4438
4860
  * @description
4439
- * The `readOnly` option determines whether a [cell](@/guides/cell-features/disabled-cells/disabled-cells.md#read-only-specific-cells),
4440
- * [comment](@/guides/cell-features/comments/comments.md#make-a-comment-read-only), [column](@/guides/cell-features/disabled-cells/disabled-cells.md#read-only-columns)
4441
- * or the [entire grid](@/guides/cell-features/disabled-cells/disabled-cells.md#read-only-grid) is editable or not. You can configure it as follows:
4861
+ * The `readOnly` option determines whether a [cell](@/guides/cell-features/read-only-cells/read-only-cells.md#make-specific-cells-read-only),
4862
+ * [comment](@/guides/cell-features/comments/comments.md#make-a-comment-read-only), [column](@/guides/cell-features/read-only-cells/read-only-cells.md#make-a-column-read-only)
4863
+ * or the [entire grid](@/guides/cell-features/read-only-cells/read-only-cells.md#make-the-grid-read-only) is editable or not. You can configure it as follows:
4442
4864
  *
4443
4865
  * | Setting | Description |
4444
4866
  * | ----------------- | ------------------------------------------------------------------------------------------------------------------------- |
@@ -4448,7 +4870,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4448
4870
  * `readOnly` cells can't be changed by the [`populateFromArray()`](@/api/core.md#populatefromarray) method.
4449
4871
  *
4450
4872
  * Read more:
4451
- * - [Disabled cells](@/guides/cell-features/disabled-cells/disabled-cells.md)
4873
+ * - [Read-only cells](@/guides/cell-features/read-only-cells/read-only-cells.md)
4452
4874
  * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration)
4453
4875
  *
4454
4876
  * @memberof Options#
@@ -4526,6 +4948,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4526
4948
  * Read more:
4527
4949
  * - [Row virtualization](@/guides/rows/row-virtualization/row-virtualization.md)
4528
4950
  *
4951
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4952
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4953
+ *
4529
4954
  * @memberof Options#
4530
4955
  * @type {boolean}
4531
4956
  * @default false
@@ -4552,6 +4977,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4552
4977
  * Read more:
4553
4978
  * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
4554
4979
  *
4980
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4981
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4982
+ *
4555
4983
  * @since 14.1.0
4556
4984
  * @memberof Options#
4557
4985
  * @type {boolean}
@@ -4798,6 +5226,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4798
5226
  * Read more:
4799
5227
  * - [Row header](@/guides/rows/row-header/row-header.md)
4800
5228
  *
5229
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5230
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5231
+ *
4801
5232
  * @memberof Options#
4802
5233
  * @type {boolean|string[]|Function}
4803
5234
  * @default undefined
@@ -4828,6 +5259,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4828
5259
  * | A number | Set the same width for every row header |
4829
5260
  * | An array | Set different widths for individual row headers |
4830
5261
  *
5262
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5263
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5264
+ *
4831
5265
  * @memberof Options#
4832
5266
  * @type {number|number[]}
4833
5267
  * @default undefined
@@ -4862,6 +5296,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4862
5296
  * Read more:
4863
5297
  * - [Row height](@/guides/rows/row-height/row-height.md)
4864
5298
  *
5299
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5300
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5301
+ *
4865
5302
  * @memberof Options#
4866
5303
  * @type {number|number[]|string|string[]|Array<undefined>|Function}
4867
5304
  * @default undefined
@@ -4993,9 +5430,15 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4993
5430
  * | `'range'` | Allow the user to select one range of cells at a time. |
4994
5431
  * | `'multiple'` | Allow the user to select multiple ranges of cells at a time. |
4995
5432
  *
5433
+ * When `selectionMode` is set to `'single'`, copying with
5434
+ * [`fragmentSelection`](@/api/options.md#fragmentselection) enabled is limited to a single cell.
5435
+ *
4996
5436
  * Read more:
4997
5437
  * - [Selection: Selecting ranges](@/guides/cell-features/selection/selection.md#select-ranges)
4998
5438
  *
5439
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5440
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5441
+ *
4999
5442
  * @memberof Options#
5000
5443
  * @type {string}
5001
5444
  * @default 'multiple'
@@ -5014,6 +5457,61 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5014
5457
  * ```
5015
5458
  */ selectionMode: 'multiple',
5016
5459
  /**
5460
+ * The `selectionHandles` option enables draggable handles on the edges of a
5461
+ * [selection](@/guides/cell-features/selection/selection.md). When enabled, hovering over a
5462
+ * selected range shows a pill-shaped handle at the midpoint of each edge; dragging a handle
5463
+ * resizes that edge of the selection. This adjusts the selected area only – it does not move,
5464
+ * fill, or change any cell data.
5465
+ *
5466
+ * Handles are shown on desktop only and are hidden on any edge that is flush with the grid
5467
+ * boundary -- or that lands on a frozen-pane line ([`fixedRowsTop`](#fixedrowstop),
5468
+ * [`fixedRowsBottom`](#fixedrowsbottom), [`fixedColumnsStart`](#fixedcolumnsstart)). The option
5469
+ * has no effect when [`selectionMode`](#selectionmode) is `'single'`.
5470
+ *
5471
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5472
+ *
5473
+ * @since 18.1.0
5474
+ * @memberof Options#
5475
+ * @type {boolean}
5476
+ * @default false
5477
+ * @category Core
5478
+ *
5479
+ * @example
5480
+ * ```js
5481
+ * // enable draggable selection-edge handles
5482
+ * selectionHandles: true,
5483
+ * ```
5484
+ */ selectionHandles: false,
5485
+ /**
5486
+ * The `moveCells` option lets you move a [selection](@/guides/cell-features/selection/selection.md) by
5487
+ * dragging its edge. When enabled, hovering the border of a selected cell range shows a grab cursor;
5488
+ * dragging the border moves the block's data (values, the [`className`](#classname) cell meta, and – with the
5489
+ * [`formulas`](@/api/options.md#formulas) plugin – adjusted formula references) to the new location.
5490
+ * Other cell meta (for example [`numericFormat`](#numericformat) or [`readOnly`](#readonly)) stays at the
5491
+ * source cells.
5492
+ * Hold <kbd>Ctrl</kbd>/<kbd>Cmd</kbd> during the drag to copy instead of move.
5493
+ *
5494
+ * The move applies to a single contiguous cell range only. It has no effect on full-row, full-column,
5495
+ * select-all, or multiple selections, the range may span at most 100,000 cells, and the source and
5496
+ * target must stay within the grid. Neither the target nor
5497
+ * the source may overlap read-only cells, because a move has to clear the source — a copy leaves the
5498
+ * source in place, so a read-only source cell blocks a move but not a copy.
5499
+ *
5500
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5501
+ *
5502
+ * @since 18.1.0
5503
+ * @memberof Options#
5504
+ * @type {boolean}
5505
+ * @default false
5506
+ * @category Core
5507
+ *
5508
+ * @example
5509
+ * ```js
5510
+ * // enable drag-to-move for selections
5511
+ * moveCells: true,
5512
+ * ```
5513
+ */ moveCells: false,
5514
+ /**
5017
5515
  * The `selectOptions` option configures options that the end user can choose from in [`select`](@/guides/cell-types/select-cell-type/select-cell-type.md) cells.
5018
5516
  *
5019
5517
  * You can set the `selectOptions` option to one of the following:
@@ -5266,6 +5764,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5266
5764
  * `startCols` and `minSpareCols`.
5267
5765
  * :::
5268
5766
  *
5767
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5768
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5769
+ *
5269
5770
  * @memberof Options#
5270
5771
  * @type {number}
5271
5772
  * @default 5
@@ -5289,6 +5790,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5289
5790
  * `startRows` and `minSpareRows`.
5290
5791
  * :::
5291
5792
  *
5793
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5794
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5795
+ *
5292
5796
  * @memberof Options#
5293
5797
  * @type {number}
5294
5798
  * @default 5
@@ -5315,6 +5819,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5315
5819
  *
5316
5820
  * Read more:
5317
5821
  * - [Column width: Column stretching](@/guides/columns/column-width/column-width.md#column-stretching)
5822
+ * - [Column width: Column stretching and manual resizing](@/guides/columns/column-width/column-width.md#column-stretching-and-manual-resizing)
5823
+ *
5824
+ * When used with [`manualColumnResize`](#manualcolumnresize), columns that have a width set
5825
+ * through pre-defined manual sizes are excluded from stretching. Only the remaining columns
5826
+ * are stretched to fill the container.
5827
+ *
5828
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5829
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5318
5830
  *
5319
5831
  * @memberof Options#
5320
5832
  * @type {string}
@@ -5387,6 +5899,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5387
5899
  * - [`commentedCellClassName`](#commentedCellClassName)
5388
5900
  * - [`className`](#className)
5389
5901
  *
5902
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5903
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5904
+ *
5390
5905
  * @memberof Options#
5391
5906
  * @type {string|string[]}
5392
5907
  * @default undefined
@@ -5439,6 +5954,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5439
5954
  * Read more:
5440
5955
  * - [Themes](@/guides/styling/themes/themes.md)
5441
5956
  *
5957
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5958
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5959
+ *
5442
5960
  * @memberof Options#
5443
5961
  * @type {string|undefined}
5444
5962
  * @default undefined
@@ -5474,6 +5992,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5474
5992
  * - [Themes](@/guides/styling/themes/themes.md)
5475
5993
  * - [`themeName`](#themeName)
5476
5994
  *
5995
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5996
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5997
+ *
5477
5998
  * @memberof Options#
5478
5999
  * @type {ThemeBuilder|string|undefined}
5479
6000
  * @default undefined
@@ -5517,6 +6038,108 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5517
6038
  * ```
5518
6039
  */ theme: undefined,
5519
6040
  /**
6041
+ * The `colorScheme` option sets the color scheme of the grid without declaring a theme.
6042
+ *
6043
+ * You can set it to one of the following:
6044
+ *
6045
+ * | Setting | Description |
6046
+ * | --------------------- | --------------------------------------------------------------- |
6047
+ * | `undefined` (default) | Use the color scheme of the current theme |
6048
+ * | `'light'` | Always render the light color scheme |
6049
+ * | `'dark'` | Always render the dark color scheme |
6050
+ * | `'auto'` | Follow the color scheme of the operating system |
6051
+ *
6052
+ * The option is a per-instance override. It applies on top of the current theme, so the theme
6053
+ * itself stays unchanged and other grids that use the same theme keep their own color scheme.
6054
+ * You can change it at runtime with [`updateSettings()`](@/api/core.md#updatesettings).
6055
+ *
6056
+ * The option requires the theme engine, so it has no effect when the theme comes from a CSS
6057
+ * class name (the [`theme`](#theme) option set to a string, or an `ht-theme-*` class on the
6058
+ * container element). In that case, use the theme's dark class name instead.
6059
+ *
6060
+ * An unsupported value is ignored with a console warning rather than throwing.
6061
+ *
6062
+ * Read more:
6063
+ * - [Themes](@/guides/styling/themes/themes.md)
6064
+ * - [`density`](#density)
6065
+ * - [`theme`](#theme)
6066
+ *
6067
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6068
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6069
+ *
6070
+ * @memberof Options#
6071
+ * @type {string|undefined}
6072
+ * @default undefined
6073
+ * @category Core
6074
+ * @since 18.1.0
6075
+ *
6076
+ * @example
6077
+ * ```js
6078
+ * // Render the grid in dark mode, without declaring a theme
6079
+ * const hot = new Handsontable(container, {
6080
+ * colorScheme: 'dark',
6081
+ * });
6082
+ * ```
6083
+ * @example
6084
+ * ```js
6085
+ * // Switch the color scheme at runtime
6086
+ * hot.updateSettings({
6087
+ * colorScheme: 'auto',
6088
+ * });
6089
+ * ```
6090
+ */ colorScheme: undefined,
6091
+ /**
6092
+ * The `density` option sets the amount of white space inside the grid without declaring a theme.
6093
+ *
6094
+ * You can set it to one of the following:
6095
+ *
6096
+ * | Setting | Description |
6097
+ * | --------------------- | -------------------------------------------------------- |
6098
+ * | `undefined` (default) | Use the density of the current theme |
6099
+ * | `'default'` | Standard spacing |
6100
+ * | `'compact'` | Tighter spacing, fits more rows on the screen |
6101
+ * | `'comfortable'` | Looser spacing, easier to read and to tap |
6102
+ *
6103
+ * The option is a per-instance override. It applies on top of the current theme, so the theme
6104
+ * itself stays unchanged and other grids that use the same theme keep their own density.
6105
+ * You can change it at runtime with [`updateSettings()`](@/api/core.md#updatesettings).
6106
+ *
6107
+ * The option requires the theme engine, so it has no effect when the theme comes from a CSS
6108
+ * class name (the [`theme`](#theme) option set to a string, or an `ht-theme-*` class on the
6109
+ * container element).
6110
+ *
6111
+ * An unsupported value is ignored with a console warning rather than throwing.
6112
+ *
6113
+ * Read more:
6114
+ * - [Themes](@/guides/styling/themes/themes.md)
6115
+ * - [`colorScheme`](#colorScheme)
6116
+ * - [`theme`](#theme)
6117
+ *
6118
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6119
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6120
+ *
6121
+ * @memberof Options#
6122
+ * @type {string|undefined}
6123
+ * @default undefined
6124
+ * @category Core
6125
+ * @since 18.1.0
6126
+ *
6127
+ * @example
6128
+ * ```js
6129
+ * // Render the grid with tighter spacing, without declaring a theme
6130
+ * const hot = new Handsontable(container, {
6131
+ * density: 'compact',
6132
+ * });
6133
+ * ```
6134
+ * @example
6135
+ * ```js
6136
+ * // Change the density at runtime
6137
+ * hot.updateSettings({
6138
+ * density: 'comfortable',
6139
+ * });
6140
+ * ```
6141
+ */ density: undefined,
6142
+ /**
5520
6143
  * The `injectCoreCss` option controls whether Handsontable injects its core CSS into the document.
5521
6144
  *
5522
6145
  * You can set the `injectCoreCss` option to one of the following:
@@ -5529,6 +6152,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5529
6152
  * Read more:
5530
6153
  * - [Themes](@/guides/styling/themes/themes.md)
5531
6154
  *
6155
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6156
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6157
+ *
5532
6158
  * @memberof Options#
5533
6159
  * @type {boolean}
5534
6160
  * @default true
@@ -5555,6 +6181,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5555
6181
  * | `row` | Number | - On pressing <kbd>**Tab**</kbd>, move selection `row` rows down<br>- On pressing <kbd>**Shift**</kbd>+<kbd>**Tab**</kbd>, move selection `row` rows up |
5556
6182
  * | `col` | Number | - On pressing <kbd>**Tab**</kbd>, move selection `col` columns right<br>- On pressing <kbd>**Shift**</kbd>+<kbd>**Tab**</kbd>, move selection `col` columns left |
5557
6183
  *
6184
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6185
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6186
+ *
5558
6187
  * @memberof Options#
5559
6188
  * @type {object|Function}
5560
6189
  * @default {row: 0, col: 1}
@@ -5583,10 +6212,16 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5583
6212
  *
5584
6213
  * You can set the `title` option to a string.
5585
6214
  *
6215
+ * To set the labels of all column headers at once, use the [`colHeaders`](#colheaders) option.
6216
+ *
5586
6217
  * Read more:
5587
6218
  * - [Column header](@/guides/columns/column-header/column-header.md)
6219
+ * - [`colHeaders`](#colheaders)
5588
6220
  * - [`columns`](#columns)
5589
6221
  *
6222
+ * This option can only be set at the [`columns`](#columns) level.
6223
+ * It has no effect when set at the grid level, or in the [`cells`](#cells) or [`cell`](#cell) options.
6224
+ *
5590
6225
  * @memberof Options#
5591
6226
  * @type {string}
5592
6227
  * @default undefined
@@ -5614,14 +6249,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5614
6249
  *
5615
6250
  * When set to `true` (default), the list is trimmed to match the width of the edited cell,
5616
6251
  * which can truncate long option labels. When set to `false`, the list expands to fit its
5617
- * longest option, which may make the list wider than the cell.
6252
+ * longest option – it can grow wider than the cell, but never narrower.
5618
6253
  *
5619
6254
  * You can set the `trimDropdown` option to one of the following:
5620
6255
  *
5621
6256
  * | Setting | Description |
5622
6257
  * | ---------------- | ------------------------------------------------------------------------------- |
5623
6258
  * | `true` (default) | Make the dropdown/autocomplete list's width the same as the edited cell's width |
5624
- * | `false` | Scale the dropdown/autocomplete list's width to the list's content |
6259
+ * | `false` | Expand the list to its content, but keep it at least as wide as the edited cell |
5625
6260
  *
5626
6261
  * This option can be set at any level of the [cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration):
5627
6262
  * the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options), the [`columns`](#columns) level, the [`cells`](#cells) level, and the [`cell`](#cell) level.
@@ -5669,6 +6304,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5669
6304
  * - [Plugins: `TrimRows`](@/api/trimRows.md)
5670
6305
  * - [Row trimming](@/guides/rows/row-trimming/row-trimming.md)
5671
6306
  *
6307
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6308
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6309
+ *
5672
6310
  * @memberof Options#
5673
6311
  * @type {boolean|number[]}
5674
6312
  * @default undefined
@@ -5732,6 +6370,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5732
6370
  * | `'text'` | Renderer: `TextRenderer`<br>Editor: `TextEditor`<br>Validator: - |
5733
6371
  * | [`'time`'](@/guides/cell-types/time-cell-type/time-cell-type.md) | Renderer: `TimeRenderer`<br>Editor: `TimeEditor`<br>Validator: `TimeValidator` |
5734
6372
  * | [`'intl-time'`](@/guides/cell-types/time-cell-type/time-cell-type.md) | Renderer: `IntlTimeRenderer`<br>Editor: `IntlTimeEditor`<br>Validator: `IntlTimeValidator` |
6373
+ * | [`'intl-datetime'`](@/guides/cell-types/datetime-cell-type/datetime-cell-type.md) | Renderer: `IntlDatetimeRenderer`<br>Editor: `IntlDatetimeEditor`<br>Validator: `IntlDatetimeValidator` |
5735
6374
  *
5736
6375
  * Read more:
5737
6376
  * - [Cell type](@/guides/cell-types/cell-type/cell-type.md)
@@ -5835,6 +6474,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5835
6474
  * Read more:
5836
6475
  * - [Undo and redo](@/guides/accessories-and-menus/undo-redo/undo-redo.md)
5837
6476
  *
6477
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6478
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6479
+ *
5838
6480
  * @memberof Options#
5839
6481
  * @type {boolean}
5840
6482
  * @default undefined
@@ -5903,7 +6545,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5903
6545
  * {
5904
6546
  * // add a custom cell validator function
5905
6547
  * validator(value, callback) {
5906
- * ...
6548
+ * callback(value >= 0 && value <= 100);
5907
6549
  * }
5908
6550
  * },
5909
6551
  * ],
@@ -5927,6 +6569,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5927
6569
  * Optionally set [`sourceDataWarningMessage`](@/api/options.md#sourcedatawarningmessage) to customize the
5928
6570
  * message logged for invalid values.
5929
6571
  *
6572
+ * __Limitation:__ source-data validation only sees a `sourceDataValidator` (and a validating cell
6573
+ * [`type`](@/api/options.md#type)) that you define in the global settings, the
6574
+ * [`columns`](@/api/options.md#columns) option, the [`cell`](@/api/options.md#cell) option, or with
6575
+ * [`setCellMeta()`](@/api/core.md#setcellmeta). It does __not__ run the [`cells`](@/api/options.md#cells)
6576
+ * function or the [`beforeGetCellMeta`](@/api/hooks.md#beforegetcellmeta) /
6577
+ * [`afterGetCellMeta`](@/api/hooks.md#aftergetcellmeta) hooks, so a validator that you add only through those
6578
+ * is skipped. Define the validator in one of the supported places to validate the source data.
6579
+ *
5930
6580
  * @example
5931
6581
  * ```js
5932
6582
  * sourceDataWarningMessage: 'The source data is invalid.',
@@ -6023,11 +6673,29 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6023
6673
  * | `auto` (default) | Use the offset calculated automatically by Handsontable |
6024
6674
  * | A number | Set the offset manually |
6025
6675
  *
6676
+ * With `auto`, the option works in a dynamic overscan mode: Handsontable renders 1 extra
6677
+ * column on each side of the viewport and, while you scroll horizontally, extends the
6678
+ * rendered area by up to 8 extra columns in the scroll direction, so consecutive scroll
6679
+ * steps reuse the already-rendered columns instead of re-rendering them.
6680
+ *
6681
+ * The scroll-direction overscan works only when Handsontable knows every column's width up
6682
+ * front and all columns share the same width: set [`colWidths`](#colWidths) to a single
6683
+ * number. Features that measure or change individual column widths turn the overscan off for
6684
+ * the column axis – for example, [`autoColumnSize`](#autoColumnSize) (enabled by default),
6685
+ * [`manualColumnResize`](#manualColumnResize), or [`hiddenColumns`](#hiddenColumns). The grid
6686
+ * then keeps the static offset of 1 column on each side.
6687
+ *
6688
+ * An explicit number switches the option to a manual mode: exactly that many extra columns
6689
+ * render on both sides, with no scroll-direction overscan.
6690
+ *
6026
6691
  * The `viewportColumnRenderingOffset` setting is ignored when [`renderAllColumns`](#renderAllColumns) is set to `true`.
6027
6692
  *
6028
6693
  * Read more:
6029
6694
  * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
6030
6695
  *
6696
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6697
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6698
+ *
6031
6699
  * @memberof Options#
6032
6700
  * @type {number|'auto'}
6033
6701
  * @default 'auto'
@@ -6051,12 +6719,30 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6051
6719
  * | `auto` (default) | Use the offset calculated automatically by Handsontable |
6052
6720
  * | A number | Set the offset manually |
6053
6721
  *
6722
+ * With `auto`, the option works in a dynamic overscan mode: Handsontable renders 1 extra row
6723
+ * on each side of the viewport and, while you scroll vertically, extends the rendered area by
6724
+ * up to 4 extra rows in the scroll direction, so consecutive scroll steps reuse the
6725
+ * already-rendered rows instead of re-rendering them.
6726
+ *
6727
+ * The scroll-direction overscan works only when Handsontable knows every row's height up
6728
+ * front and all rows share the same height: keep the default [`rowHeights`](#rowHeights) or
6729
+ * set it to a single number. Features that measure or change individual row heights turn the
6730
+ * overscan off for the row axis – for example, [`autoRowSize`](#autoRowSize),
6731
+ * [`manualRowResize`](#manualRowResize), or [`hiddenRows`](#hiddenRows). The grid then keeps
6732
+ * the static offset of 1 row on each side.
6733
+ *
6734
+ * An explicit number switches the option to a manual mode: exactly that many extra rows
6735
+ * render on both sides, with no scroll-direction overscan.
6736
+ *
6054
6737
  * The `viewportRowRenderingOffset` setting is ignored when [`renderAllRows`](#renderAllRows) is set to `true`.
6055
6738
  *
6056
6739
  * Read more:
6057
6740
  * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
6058
6741
  * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
6059
6742
  *
6743
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6744
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6745
+ *
6060
6746
  * @memberof Options#
6061
6747
  * @type {number|'auto'}
6062
6748
  * @default 'auto'
@@ -6086,6 +6772,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6086
6772
  * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
6087
6773
  * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
6088
6774
  *
6775
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6776
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6777
+ *
6089
6778
  * @memberof Options#
6090
6779
  * @since 1.14.7
6091
6780
  * @type {number|'auto'}
@@ -6118,6 +6807,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6118
6807
  * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
6119
6808
  * - [Row virtualization](@/guides/rows/row-virtualization/row-virtualization.md)
6120
6809
  *
6810
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6811
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6812
+ *
6121
6813
  * @memberof Options#
6122
6814
  * @since 1.14.7
6123
6815
  * @type {number|'auto'}
@@ -6276,24 +6968,52 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6276
6968
  */ wordWrap: true,
6277
6969
  /**
6278
6970
  * The `sanitizer` option configures the function used to sanitize HTML before it is written to the DOM.
6279
- * Whenever Handsontable sets HTML (e.g. cell content, headers, context menu labels, dialog content,
6280
- * paste from clipboard), it can pass the string through this function first. Sanitization is important
6281
- * when content comes from users or external sources to prevent XSS (e.g. script injection, event handlers).
6971
+ * Sanitization is important when content comes from users or external sources to prevent XSS
6972
+ * (e.g. script injection, event handlers).
6282
6973
  *
6283
6974
  * By default (when no sanitizer is set), HTML is applied as-is (pass-through). You are responsible for
6284
6975
  * XSS protection. Set a sanitizer when you need to allow rich content while stripping or neutralizing
6285
6976
  * dangerous markup.
6286
6977
  *
6287
- * The function receives the raw HTML string and an optional second argument (source) indicating where
6288
- * the content is used (e.g. `'innerHTML'`, `'CopyPaste.paste'`), so you can apply different rules per source.
6978
+ * The sanitizer covers the HTML that Handsontable writes on your behalf:
6979
+ *
6980
+ * - cells rendered by the [`password`](@/guides/cell-types/password-cell-type/password-cell-type.md) cell type
6981
+ * - column and row headers, including [`nestedHeaders`](#nestedheaders) labels
6982
+ * - [context menu](#contextmenu) and [dropdown menu](#dropdownmenu) item labels
6983
+ * - [`select`](@/api/options.md#selectoptions) editor options
6984
+ * - [dialog](#dialog) and [notification](#notification) content
6985
+ * - HTML pasted from the clipboard, and Handsontable's own clipboard payload carrying the source
6986
+ * data behind copied cells
6987
+ *
6988
+ * Two surfaces are deliberately excluded, because both exist to render raw markup you supply:
6989
+ * the [`html`](@/guides/cell-types/cell-type/cell-type.md) cell type, and
6990
+ * [`allowHtml`](#allowhtml) sources in `autocomplete` and `dropdown` cells. Sanitize that content
6991
+ * yourself before passing it to the grid.
6992
+ *
6993
+ * The function receives the raw HTML string and a second argument (source) naming the write surface
6994
+ * (`'header'`, `'password'`, `'contextMenu'`, `'selectEditor'`, `'dialog'`, `'notification'`,
6995
+ * `'CopyPaste.paste'`, `'CopyPaste.paste.sourceData'`), so you can apply different rules per source.
6289
6996
  * It must return a string that is safe to assign to `innerHTML`.
6290
6997
  *
6998
+ * In TypeScript, annotate that parameter with the exported `SanitizerContext` type
6999
+ * (see [TypeScript types](@/guides/tools-and-building/typescript-types/typescript-types.md))
7000
+ * to get editor completion on the values above.
7001
+ *
7002
+ * `'CopyPaste.paste.sourceData'` carries Handsontable's own clipboard payload, the one that lets an
7003
+ * object-valued cell survive a copy between grids. It is parsed into an inert document, so returning it
7004
+ * unchanged does not expose you to a crafted clipboard, and doing so is what keeps
7005
+ * [`parsePastedValue`](#parsepastedvalue) working under a sanitizer that escapes HTML rather than
7006
+ * stripping it.
7007
+ *
6291
7008
  * This option is only respected when set in the table settings. It does not work when defined per column
6292
7009
  * or per cell (e.g. in `columns` or cell meta).
6293
7010
  *
7011
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
7012
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
7013
+ *
6294
7014
  * @since 17.0.0
6295
7015
  * @memberof Options#
6296
- * @type {function(string, string): string}
7016
+ * @type {function(string, SanitizerContext): string}
6297
7017
  * @default undefined
6298
7018
  * @category Core
6299
7019
  *