handsontable 18.0.0 → 18.1.0-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1238) hide show
  1. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.mts +1 -0
  2. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.ts +55 -0
  3. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.js +15 -0
  4. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.mjs +14 -0
  5. package/3rdparty/walkontable/src/axisSizing/boxModel.d.mts +1 -0
  6. package/3rdparty/walkontable/src/axisSizing/boxModel.d.ts +32 -0
  7. package/3rdparty/walkontable/src/axisSizing/boxModel.js +45 -0
  8. package/3rdparty/walkontable/src/axisSizing/boxModel.mjs +33 -0
  9. package/3rdparty/walkontable/src/axisSizing/columnUtils.d.mts +2 -0
  10. package/3rdparty/walkontable/src/{utils/column.d.ts → axisSizing/columnUtils.d.ts} +12 -10
  11. package/3rdparty/walkontable/src/axisSizing/columnUtils.js +142 -0
  12. package/3rdparty/walkontable/src/axisSizing/columnUtils.mjs +137 -0
  13. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.mts +1 -0
  14. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.ts +58 -0
  15. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.js +124 -0
  16. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.mjs +114 -0
  17. package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.mts +1 -0
  18. package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.ts +162 -0
  19. package/3rdparty/walkontable/src/axisSizing/oversizedRows.js +424 -0
  20. package/3rdparty/walkontable/src/axisSizing/oversizedRows.mjs +522 -0
  21. package/3rdparty/walkontable/src/axisSizing/positionCache/index.d.ts +130 -0
  22. package/3rdparty/walkontable/src/axisSizing/positionCache/index.js +251 -0
  23. package/3rdparty/walkontable/src/axisSizing/positionCache/index.mjs +257 -0
  24. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.mts +1 -0
  25. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.ts +51 -0
  26. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.js +116 -0
  27. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.mjs +112 -0
  28. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.mts +1 -0
  29. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.ts +53 -0
  30. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.js +199 -0
  31. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.mjs +196 -0
  32. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.mts +1 -0
  33. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.ts +53 -0
  34. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.js +40 -0
  35. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.mjs +41 -0
  36. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.mts +1 -0
  37. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.ts +47 -0
  38. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.js +116 -0
  39. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.mjs +110 -0
  40. package/3rdparty/walkontable/src/axisSizing/rowUtils.d.mts +2 -0
  41. package/3rdparty/walkontable/src/{utils/row.d.ts → axisSizing/rowUtils.d.ts} +11 -9
  42. package/3rdparty/walkontable/src/axisSizing/rowUtils.js +106 -0
  43. package/3rdparty/walkontable/src/axisSizing/rowUtils.mjs +101 -0
  44. package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.mts +2 -0
  45. package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.ts +84 -0
  46. package/3rdparty/walkontable/src/axisSizing/sizeGetters.js +102 -0
  47. package/3rdparty/walkontable/src/axisSizing/sizeGetters.mjs +92 -0
  48. package/3rdparty/walkontable/src/calculator/axisCalculation.d.ts +1 -1
  49. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.d.ts +10 -0
  50. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +10 -1
  51. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +10 -1
  52. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.d.ts +9 -0
  53. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +9 -1
  54. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +9 -1
  55. package/3rdparty/walkontable/src/calculator/viewportColumns.d.ts +1 -1
  56. package/3rdparty/walkontable/src/calculator/viewportRows.d.ts +1 -1
  57. package/3rdparty/walkontable/src/cell/coords.js +4 -9
  58. package/3rdparty/walkontable/src/cell/coords.mjs +4 -9
  59. package/3rdparty/walkontable/src/cell/range.d.ts +10 -0
  60. package/3rdparty/walkontable/src/cell/range.js +19 -15
  61. package/3rdparty/walkontable/src/cell/range.mjs +16 -12
  62. package/3rdparty/walkontable/src/core/_base.d.ts +21 -21
  63. package/3rdparty/walkontable/src/core/_base.js +47 -147
  64. package/3rdparty/walkontable/src/core/_base.mjs +17 -147
  65. package/3rdparty/walkontable/src/core/clone.d.ts +4 -14
  66. package/3rdparty/walkontable/src/core/clone.js +40 -5
  67. package/3rdparty/walkontable/src/core/clone.mjs +10 -5
  68. package/3rdparty/walkontable/src/core/core.d.ts +1 -5
  69. package/3rdparty/walkontable/src/core/core.js +41 -47
  70. package/3rdparty/walkontable/src/core/core.mjs +12 -48
  71. package/3rdparty/walkontable/src/domMeasure/geometryReader.d.mts +1 -0
  72. package/3rdparty/walkontable/src/domMeasure/geometryReader.d.ts +172 -0
  73. package/3rdparty/walkontable/src/domMeasure/geometryReader.js +19 -0
  74. package/3rdparty/walkontable/src/domMeasure/geometryReader.mjs +16 -0
  75. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.mts +1 -0
  76. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.ts +134 -0
  77. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.js +195 -0
  78. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.mjs +193 -0
  79. package/3rdparty/walkontable/src/event.d.ts +25 -12
  80. package/3rdparty/walkontable/src/event.js +96 -236
  81. package/3rdparty/walkontable/src/event.mjs +95 -236
  82. package/3rdparty/walkontable/src/facade/core.d.ts +6 -6
  83. package/3rdparty/walkontable/src/index.d.ts +1 -1
  84. package/3rdparty/walkontable/src/index.js +10 -21
  85. package/3rdparty/walkontable/src/index.mjs +1 -1
  86. package/3rdparty/walkontable/src/overlay/index.d.ts +6 -6
  87. package/3rdparty/walkontable/src/overlay/index.js +11 -11
  88. package/3rdparty/walkontable/src/overlay/index.mjs +6 -6
  89. package/3rdparty/walkontable/src/overlay/overlays.d.ts +375 -0
  90. package/3rdparty/walkontable/src/overlay/overlays.js +605 -0
  91. package/3rdparty/walkontable/src/overlay/overlays.mjs +594 -0
  92. package/3rdparty/walkontable/src/overlay/{_base.d.ts → regions/_base.d.ts} +65 -16
  93. package/3rdparty/walkontable/src/overlay/{_base.js → regions/_base.js} +155 -50
  94. package/3rdparty/walkontable/src/overlay/{_base.mjs → regions/_base.mjs} +158 -47
  95. package/3rdparty/walkontable/src/overlay/regions/bottomInlineStartCornerOverlay.d.mts +1 -0
  96. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.d.ts → regions/bottomInlineStartCornerOverlay.d.ts} +5 -10
  97. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerOverlay.js} +18 -20
  98. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.mjs → regions/bottomInlineStartCornerOverlay.mjs} +18 -20
  99. package/3rdparty/walkontable/src/overlay/regions/bottomOverlay.d.mts +1 -0
  100. package/3rdparty/walkontable/src/overlay/{bottom.d.ts → regions/bottomOverlay.d.ts} +16 -11
  101. package/3rdparty/walkontable/src/overlay/{bottom.js → regions/bottomOverlay.js} +111 -66
  102. package/3rdparty/walkontable/src/overlay/{bottom.mjs → regions/bottomOverlay.mjs} +111 -66
  103. package/3rdparty/walkontable/src/overlay/regions/inlineStartOverlay.d.mts +1 -0
  104. package/3rdparty/walkontable/src/overlay/{inlineStart.d.ts → regions/inlineStartOverlay.d.ts} +17 -11
  105. package/3rdparty/walkontable/src/overlay/{inlineStart.js → regions/inlineStartOverlay.js} +120 -67
  106. package/3rdparty/walkontable/src/overlay/{inlineStart.mjs → regions/inlineStartOverlay.mjs} +120 -67
  107. package/3rdparty/walkontable/src/overlay/regions/topInlineStartCornerOverlay.d.mts +1 -0
  108. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.d.ts → regions/topInlineStartCornerOverlay.d.ts} +5 -10
  109. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.js → regions/topInlineStartCornerOverlay.js} +13 -16
  110. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.mjs → regions/topInlineStartCornerOverlay.mjs} +13 -16
  111. package/3rdparty/walkontable/src/overlay/regions/topOverlay.d.mts +1 -0
  112. package/3rdparty/walkontable/src/overlay/{top.d.ts → regions/topOverlay.d.ts} +32 -11
  113. package/3rdparty/walkontable/src/overlay/{top.js → regions/topOverlay.js} +161 -77
  114. package/3rdparty/walkontable/src/overlay/{top.mjs → regions/topOverlay.mjs} +161 -77
  115. package/3rdparty/walkontable/src/overlay/resizeMonitor.d.mts +1 -0
  116. package/3rdparty/walkontable/src/overlay/resizeMonitor.d.ts +49 -0
  117. package/3rdparty/walkontable/src/overlay/resizeMonitor.js +149 -0
  118. package/3rdparty/walkontable/src/overlay/resizeMonitor.mjs +148 -0
  119. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.mts +1 -0
  120. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.ts +62 -0
  121. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.js +283 -0
  122. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.mjs +288 -0
  123. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.mts +1 -0
  124. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.ts +176 -0
  125. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.js +542 -0
  126. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.mjs +550 -0
  127. package/3rdparty/walkontable/src/overlay/spreaderSize.d.mts +1 -0
  128. package/3rdparty/walkontable/src/overlay/spreaderSize.d.ts +67 -0
  129. package/3rdparty/walkontable/src/overlay/spreaderSize.js +173 -0
  130. package/3rdparty/walkontable/src/overlay/spreaderSize.mjs +174 -0
  131. package/3rdparty/walkontable/src/{stickyScrollStrategy.d.ts → overlay/strategies/stickyScrollStrategy.d.ts} +33 -21
  132. package/3rdparty/walkontable/src/{stickyScrollStrategy.js → overlay/strategies/stickyScrollStrategy.js} +65 -53
  133. package/3rdparty/walkontable/src/{stickyScrollStrategy.mjs → overlay/strategies/stickyScrollStrategy.mjs} +63 -50
  134. package/3rdparty/walkontable/src/ports.d.mts +1 -0
  135. package/3rdparty/walkontable/src/ports.d.ts +54 -0
  136. package/3rdparty/walkontable/src/ports.js +23 -0
  137. package/3rdparty/walkontable/src/ports.mjs +24 -0
  138. package/3rdparty/walkontable/src/{renderer → render}/_base.d.ts +1 -1
  139. package/3rdparty/walkontable/src/{renderer → render}/cells.js +1 -1
  140. package/3rdparty/walkontable/src/{renderer → render}/cells.mjs +1 -1
  141. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.ts +1 -0
  142. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.js +41 -1
  143. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.mjs +42 -2
  144. package/3rdparty/walkontable/src/render/index.d.mts +1 -0
  145. package/3rdparty/walkontable/src/{renderer → render}/index.d.ts +11 -3
  146. package/3rdparty/walkontable/src/{renderer → render}/index.js +13 -3
  147. package/3rdparty/walkontable/src/{renderer → render}/index.mjs +11 -1
  148. package/3rdparty/walkontable/src/{renderer → render}/rows.js +1 -1
  149. package/3rdparty/walkontable/src/{renderer → render}/rows.mjs +1 -1
  150. package/3rdparty/walkontable/src/render/tableRenderer.d.mts +1 -0
  151. package/3rdparty/walkontable/src/{renderer/table.d.ts → render/tableRenderer.d.ts} +12 -2
  152. package/3rdparty/walkontable/src/render/tableRenderer.js +375 -0
  153. package/3rdparty/walkontable/src/{renderer/table.mjs → render/tableRenderer.mjs} +152 -6
  154. package/3rdparty/walkontable/src/{scroll.d.ts → scroll/scroll.d.ts} +27 -10
  155. package/3rdparty/walkontable/src/{scroll.js → scroll/scroll.js} +104 -35
  156. package/3rdparty/walkontable/src/{scroll.mjs → scroll/scroll.mjs} +102 -32
  157. package/3rdparty/walkontable/src/selection/border/border.d.ts +313 -5
  158. package/3rdparty/walkontable/src/selection/border/border.js +861 -51
  159. package/3rdparty/walkontable/src/selection/border/border.mjs +863 -53
  160. package/3rdparty/walkontable/src/selection/border/types.d.ts +30 -0
  161. package/3rdparty/walkontable/src/selection/manager.js +242 -12
  162. package/3rdparty/walkontable/src/selection/manager.mjs +243 -13
  163. package/3rdparty/walkontable/src/selection/scanner.js +5 -12
  164. package/3rdparty/walkontable/src/selection/scanner.mjs +5 -12
  165. package/3rdparty/walkontable/src/settings/accessor.d.mts +2 -0
  166. package/3rdparty/walkontable/src/settings/accessor.d.ts +74 -0
  167. package/3rdparty/walkontable/src/settings/accessor.js +78 -0
  168. package/3rdparty/walkontable/src/settings/accessor.mjs +71 -0
  169. package/3rdparty/walkontable/src/settings/defaults.d.mts +1 -0
  170. package/3rdparty/walkontable/src/{settings.d.ts → settings/defaults.d.ts} +16 -77
  171. package/3rdparty/walkontable/src/settings/defaults.js +146 -0
  172. package/3rdparty/walkontable/src/settings/defaults.mjs +225 -0
  173. package/3rdparty/walkontable/src/settings/index.d.mts +1 -0
  174. package/3rdparty/walkontable/src/settings/index.d.ts +6 -0
  175. package/3rdparty/walkontable/src/settings/index.js +20 -0
  176. package/3rdparty/walkontable/src/settings/index.mjs +5 -0
  177. package/3rdparty/walkontable/src/table/baseTable.d.mts +2 -0
  178. package/3rdparty/walkontable/src/table/baseTable.d.ts +284 -0
  179. package/3rdparty/walkontable/src/table/baseTable.js +290 -0
  180. package/3rdparty/walkontable/src/table/baseTable.mjs +278 -0
  181. package/3rdparty/walkontable/src/table/cellAccess.d.mts +1 -0
  182. package/3rdparty/walkontable/src/table/cellAccess.d.ts +101 -0
  183. package/3rdparty/walkontable/src/table/cellAccess.js +238 -0
  184. package/3rdparty/walkontable/src/table/cellAccess.mjs +229 -0
  185. package/3rdparty/walkontable/src/table/domScaffold.d.mts +1 -0
  186. package/3rdparty/walkontable/src/table/domScaffold.d.ts +37 -0
  187. package/3rdparty/walkontable/src/table/domScaffold.js +145 -0
  188. package/3rdparty/walkontable/src/table/domScaffold.mjs +136 -0
  189. package/3rdparty/walkontable/src/table/drawCycle.d.mts +1 -0
  190. package/3rdparty/walkontable/src/table/drawCycle.d.ts +16 -0
  191. package/3rdparty/walkontable/src/table/drawCycle.js +405 -0
  192. package/3rdparty/walkontable/src/table/drawCycle.mjs +403 -0
  193. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.mts +1 -0
  194. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.ts +38 -0
  195. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.js +15 -0
  196. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.mjs +14 -0
  197. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.ts +1 -1
  198. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.js +1 -1
  199. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.mjs +1 -1
  200. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.ts +1 -1
  201. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.ts +1 -1
  202. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.js +1 -1
  203. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.mjs +1 -1
  204. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.mts +2 -0
  205. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.ts +226 -0
  206. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.js +251 -0
  207. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.mjs +241 -0
  208. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.mts +1 -0
  209. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.ts +14 -0
  210. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.js +196 -0
  211. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.mjs +179 -0
  212. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.mts +2 -0
  213. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.ts +16 -0
  214. package/3rdparty/walkontable/src/table/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerTable.js} +9 -12
  215. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.mjs +21 -0
  216. package/3rdparty/walkontable/src/table/regions/bottomTable.d.mts +2 -0
  217. package/3rdparty/walkontable/src/table/regions/bottomTable.d.ts +15 -0
  218. package/3rdparty/walkontable/src/table/regions/bottomTable.js +35 -0
  219. package/3rdparty/walkontable/src/table/regions/bottomTable.mjs +20 -0
  220. package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.mts +2 -0
  221. package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.ts +12 -0
  222. package/3rdparty/walkontable/src/table/regions/inlineStartTable.js +32 -0
  223. package/3rdparty/walkontable/src/table/regions/inlineStartTable.mjs +17 -0
  224. package/3rdparty/walkontable/src/table/regions/masterTable.d.mts +2 -0
  225. package/3rdparty/walkontable/src/table/{master.d.ts → regions/masterTable.d.ts} +4 -13
  226. package/3rdparty/walkontable/src/table/{master.js → regions/masterTable.js} +27 -57
  227. package/3rdparty/walkontable/src/table/{master.mjs → regions/masterTable.mjs} +26 -56
  228. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.mts +2 -0
  229. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.ts +16 -0
  230. package/3rdparty/walkontable/src/table/{topInlineStartCorner.js → regions/topInlineStartCornerTable.js} +9 -12
  231. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.mjs +21 -0
  232. package/3rdparty/walkontable/src/table/regions/topTable.d.mts +2 -0
  233. package/3rdparty/walkontable/src/table/regions/topTable.d.ts +15 -0
  234. package/3rdparty/walkontable/src/table/regions/topTable.js +35 -0
  235. package/3rdparty/walkontable/src/table/regions/topTable.mjs +20 -0
  236. package/3rdparty/walkontable/src/types.d.ts +7 -69
  237. package/3rdparty/walkontable/src/types.mjs +2 -1
  238. package/3rdparty/walkontable/src/utils/pointerToCoords.d.mts +1 -0
  239. package/3rdparty/walkontable/src/utils/{cellCoords.d.ts → pointerToCoords.d.ts} +24 -0
  240. package/3rdparty/walkontable/src/utils/pointerToCoords.js +181 -0
  241. package/3rdparty/walkontable/src/utils/pointerToCoords.mjs +186 -0
  242. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.mts +1 -0
  243. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.ts +40 -0
  244. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.js +139 -0
  245. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.mjs +131 -0
  246. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.mts +1 -0
  247. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.ts +133 -0
  248. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.js +18 -0
  249. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.mjs +18 -0
  250. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.mts +1 -0
  251. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.ts +17 -0
  252. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.js +104 -0
  253. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.mjs +99 -0
  254. package/3rdparty/walkontable/src/viewport/calculatorFactory.d.mts +1 -0
  255. package/3rdparty/walkontable/src/viewport/calculatorFactory.d.ts +84 -0
  256. package/3rdparty/walkontable/src/viewport/calculatorFactory.js +588 -0
  257. package/3rdparty/walkontable/src/viewport/calculatorFactory.mjs +601 -0
  258. package/3rdparty/walkontable/src/viewport/viewport.d.ts +267 -0
  259. package/3rdparty/walkontable/src/viewport/viewport.js +363 -0
  260. package/3rdparty/walkontable/src/viewport/viewport.mjs +355 -0
  261. package/3rdparty/walkontable/src/viewport/workspaceSize.d.mts +1 -0
  262. package/3rdparty/walkontable/src/viewport/workspaceSize.d.ts +59 -0
  263. package/3rdparty/walkontable/src/viewport/workspaceSize.js +284 -0
  264. package/3rdparty/walkontable/src/viewport/workspaceSize.mjs +282 -0
  265. package/3rdparty/walkontable/src/wire.d.mts +1 -0
  266. package/3rdparty/walkontable/src/wire.d.ts +81 -0
  267. package/3rdparty/walkontable/src/wire.js +56 -0
  268. package/3rdparty/walkontable/src/wire.mjs +56 -0
  269. package/LICENSE.txt +1 -1
  270. package/README.md +2 -2
  271. package/base.d.ts +10 -2
  272. package/base.js +2 -2
  273. package/base.mjs +2 -2
  274. package/cellTypes/checkboxType/accessors/valueSetter.d.ts +1 -1
  275. package/cellTypes/checkboxType/accessors/valueSetter.js +3 -1
  276. package/cellTypes/checkboxType/accessors/valueSetter.mjs +3 -1
  277. package/cellTypes/index.d.ts +3 -2
  278. package/cellTypes/index.js +9 -0
  279. package/cellTypes/index.mjs +5 -2
  280. package/cellTypes/intlDatetimeType/index.d.mts +1 -0
  281. package/cellTypes/intlDatetimeType/index.d.ts +1 -0
  282. package/cellTypes/intlDatetimeType/index.js +19 -0
  283. package/cellTypes/intlDatetimeType/index.mjs +1 -0
  284. package/cellTypes/intlDatetimeType/intlDatetimeType.d.mts +1 -0
  285. package/cellTypes/intlDatetimeType/intlDatetimeType.d.ts +16 -0
  286. package/cellTypes/intlDatetimeType/intlDatetimeType.js +31 -0
  287. package/cellTypes/intlDatetimeType/intlDatetimeType.mjs +15 -0
  288. package/cellTypes/multiSelectType/index.d.ts +1 -1
  289. package/cellTypes/multiSelectType/index.js +3 -0
  290. package/cellTypes/multiSelectType/index.mjs +1 -1
  291. package/cellTypes/multiSelectType/multiSelectType.d.ts +1 -0
  292. package/cellTypes/multiSelectType/multiSelectType.js +4 -0
  293. package/cellTypes/multiSelectType/multiSelectType.mjs +1 -0
  294. package/cellTypes/numericType/accessors/valueSetter.js +30 -2
  295. package/cellTypes/numericType/accessors/valueSetter.mjs +31 -3
  296. package/core/coordsMapper/rangeToRenderableMapper.js +5 -12
  297. package/core/coordsMapper/rangeToRenderableMapper.mjs +5 -12
  298. package/core/hooks/bucket.d.ts +40 -6
  299. package/core/hooks/bucket.js +113 -84
  300. package/core/hooks/bucket.mjs +118 -84
  301. package/core/hooks/constants.js +254 -16
  302. package/core/hooks/constants.mjs +254 -16
  303. package/core/hooks/index.js +28 -25
  304. package/core/hooks/index.mjs +28 -25
  305. package/core/layout/constants.d.ts +11 -0
  306. package/core/layout/constants.js +6 -0
  307. package/core/layout/constants.mjs +12 -0
  308. package/core/layout/domSlot.d.ts +3 -1
  309. package/core/layout/domSlot.js +21 -14
  310. package/core/layout/domSlot.mjs +21 -14
  311. package/core/layout/index.d.ts +2 -2
  312. package/core/layout/index.js +6 -0
  313. package/core/layout/index.mjs +2 -2
  314. package/core/layout/layoutManager.d.ts +13 -0
  315. package/core/layout/layoutManager.js +25 -13
  316. package/core/layout/layoutManager.mjs +26 -11
  317. package/core/settings.d.ts +59 -6
  318. package/core/types.d.ts +15 -1
  319. package/core/types.mjs +9 -0
  320. package/core.js +481 -85
  321. package/core.mjs +483 -87
  322. package/dataMap/dataMap.d.ts +3 -13
  323. package/dataMap/dataMap.js +101 -44
  324. package/dataMap/dataMap.mjs +102 -45
  325. package/dataMap/dataSource.js +4 -1
  326. package/dataMap/dataSource.mjs +4 -1
  327. package/dataMap/metaManager/index.d.ts +62 -8
  328. package/dataMap/metaManager/index.js +66 -0
  329. package/dataMap/metaManager/index.mjs +66 -0
  330. package/dataMap/metaManager/lazyFactoryMap.d.ts +68 -43
  331. package/dataMap/metaManager/lazyFactoryMap.js +490 -110
  332. package/dataMap/metaManager/lazyFactoryMap.mjs +504 -111
  333. package/dataMap/metaManager/metaLayers/cellMeta.d.ts +55 -8
  334. package/dataMap/metaManager/metaLayers/cellMeta.js +112 -17
  335. package/dataMap/metaManager/metaLayers/cellMeta.mjs +112 -17
  336. package/dataMap/metaManager/metaLayers/columnMeta.d.ts +2 -1
  337. package/dataMap/metaManager/metaLayers/columnMeta.js +1 -0
  338. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -0
  339. package/dataMap/metaManager/metaSchema.js +712 -31
  340. package/dataMap/metaManager/metaSchema.mjs +712 -31
  341. package/dataMap/metaManager/mods/dynamicCellMeta.d.ts +24 -10
  342. package/dataMap/metaManager/mods/dynamicCellMeta.js +245 -28
  343. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +246 -29
  344. package/dataMap/metaManager/mods/extendMetaProperties.js +4 -9
  345. package/dataMap/metaManager/mods/extendMetaProperties.mjs +4 -9
  346. package/dataMap/sourceDataValidator.d.ts +13 -21
  347. package/dataMap/sourceDataValidator.js +39 -29
  348. package/dataMap/sourceDataValidator.mjs +50 -33
  349. package/dist/handsontable.full.js +34553 -9903
  350. package/dist/handsontable.full.min.js +168 -112
  351. package/dist/handsontable.js +31541 -13409
  352. package/dist/handsontable.min.js +172 -116
  353. package/dist/languages/all.js +2 -1
  354. package/dist/languages/all.min.js +1 -1
  355. package/dist/languages/fa-IR.js +2 -1
  356. package/dist/languages/fa-IR.min.js +1 -1
  357. package/dist/themes/classic.js +9 -3
  358. package/dist/themes/classic.min.js +4 -4
  359. package/dist/themes/horizon.js +9 -3
  360. package/dist/themes/horizon.min.js +4 -4
  361. package/dist/themes/main.js +9 -3
  362. package/dist/themes/main.min.js +4 -4
  363. package/dist/themes/static/variables/colors/ant.js +3 -3
  364. package/dist/themes/static/variables/colors/ant.min.js +3 -3
  365. package/dist/themes/static/variables/colors/classic.js +3 -3
  366. package/dist/themes/static/variables/colors/classic.min.js +3 -3
  367. package/dist/themes/static/variables/colors/horizon.js +3 -3
  368. package/dist/themes/static/variables/colors/horizon.min.js +3 -3
  369. package/dist/themes/static/variables/colors/main.js +3 -3
  370. package/dist/themes/static/variables/colors/main.min.js +3 -3
  371. package/dist/themes/static/variables/colors/material.js +3 -3
  372. package/dist/themes/static/variables/colors/material.min.js +3 -3
  373. package/dist/themes/static/variables/colors/shadcn.js +3 -3
  374. package/dist/themes/static/variables/colors/shadcn.min.js +3 -3
  375. package/dist/themes/static/variables/density.js +3 -3
  376. package/dist/themes/static/variables/density.min.js +3 -3
  377. package/dist/themes/static/variables/helpers/iconsMap.js +4 -9
  378. package/dist/themes/static/variables/helpers/iconsMap.min.js +4 -9
  379. package/dist/themes/static/variables/icons/horizon.js +3 -3
  380. package/dist/themes/static/variables/icons/horizon.min.js +3 -3
  381. package/dist/themes/static/variables/icons/main.js +3 -3
  382. package/dist/themes/static/variables/icons/main.min.js +3 -3
  383. package/dist/themes/static/variables/sizing.js +3 -3
  384. package/dist/themes/static/variables/sizing.min.js +3 -3
  385. package/dist/themes/static/variables/tokens/classic.js +9 -3
  386. package/dist/themes/static/variables/tokens/classic.min.js +4 -4
  387. package/dist/themes/static/variables/tokens/horizon.js +9 -3
  388. package/dist/themes/static/variables/tokens/horizon.min.js +4 -4
  389. package/dist/themes/static/variables/tokens/main.js +9 -3
  390. package/dist/themes/static/variables/tokens/main.min.js +4 -4
  391. package/editorManager.js +1 -3
  392. package/editorManager.mjs +1 -3
  393. package/editors/autocompleteEditor/autocompleteEditor.js +48 -22
  394. package/editors/autocompleteEditor/autocompleteEditor.mjs +48 -22
  395. package/editors/baseEditor/baseEditor.d.ts +15 -3
  396. package/editors/baseEditor/baseEditor.js +6 -6
  397. package/editors/baseEditor/baseEditor.mjs +16 -6
  398. package/editors/factory.js +5 -2
  399. package/editors/factory.mjs +5 -2
  400. package/editors/index.d.ts +3 -2
  401. package/editors/index.js +8 -0
  402. package/editors/index.mjs +3 -1
  403. package/editors/intlDatetimeEditor/index.d.mts +1 -0
  404. package/editors/intlDatetimeEditor/index.d.ts +1 -0
  405. package/editors/intlDatetimeEditor/index.js +19 -0
  406. package/editors/intlDatetimeEditor/index.mjs +1 -0
  407. package/editors/intlDatetimeEditor/intlDatetimeEditor.d.mts +1 -0
  408. package/editors/intlDatetimeEditor/intlDatetimeEditor.d.ts +42 -0
  409. package/editors/intlDatetimeEditor/intlDatetimeEditor.js +108 -0
  410. package/editors/intlDatetimeEditor/intlDatetimeEditor.mjs +93 -0
  411. package/editors/multiSelectEditor/controllers/dropdownController.js +5 -12
  412. package/editors/multiSelectEditor/controllers/dropdownController.mjs +5 -12
  413. package/editors/multiSelectEditor/controllers/inputController.js +1 -3
  414. package/editors/multiSelectEditor/controllers/inputController.mjs +1 -3
  415. package/editors/multiSelectEditor/multiSelectEditor.js +16 -21
  416. package/editors/multiSelectEditor/multiSelectEditor.mjs +17 -22
  417. package/editors/passwordEditor/passwordEditor.js +5 -12
  418. package/editors/passwordEditor/passwordEditor.mjs +5 -12
  419. package/editors/registry.js +4 -9
  420. package/editors/registry.mjs +4 -9
  421. package/editors/textEditor/textEditor.js +1 -1
  422. package/editors/textEditor/textEditor.mjs +2 -2
  423. package/eventManager.d.ts +3 -3
  424. package/focusManager/grid.d.ts +28 -0
  425. package/focusManager/grid.js +84 -14
  426. package/focusManager/grid.mjs +80 -15
  427. package/focusManager/scopeManager.js +1 -1
  428. package/focusManager/scopeManager.mjs +2 -2
  429. package/handsontable-non-commercial-license.pdf +0 -0
  430. package/helpers/array.d.ts +25 -0
  431. package/helpers/array.js +41 -4
  432. package/helpers/array.mjs +56 -4
  433. package/helpers/dateTime.d.ts +14 -0
  434. package/helpers/dateTime.js +74 -2
  435. package/helpers/dateTime.mjs +73 -2
  436. package/helpers/dom/cellCoords.js +156 -13
  437. package/helpers/dom/cellCoords.mjs +156 -13
  438. package/helpers/dom/element.d.ts +27 -3
  439. package/helpers/dom/element.js +92 -16
  440. package/helpers/dom/element.mjs +107 -17
  441. package/helpers/dom/event.d.ts +58 -0
  442. package/helpers/dom/event.js +39 -0
  443. package/helpers/dom/event.mjs +63 -0
  444. package/helpers/errors.d.ts +5 -0
  445. package/helpers/errors.js +10 -6
  446. package/helpers/errors.mjs +10 -6
  447. package/helpers/feature.d.ts +19 -0
  448. package/helpers/feature.js +21 -0
  449. package/helpers/feature.mjs +30 -0
  450. package/helpers/function.d.ts +1 -1
  451. package/helpers/function.js +4 -1
  452. package/helpers/function.mjs +4 -1
  453. package/helpers/mixed.d.ts +103 -0
  454. package/helpers/mixed.js +373 -4
  455. package/helpers/mixed.mjs +413 -4
  456. package/helpers/moves.js +2 -1
  457. package/helpers/moves.mjs +2 -1
  458. package/helpers/number.d.ts +22 -0
  459. package/helpers/number.js +49 -0
  460. package/helpers/number.mjs +66 -0
  461. package/i18n/languages/ar-AR.js +8 -19
  462. package/i18n/languages/cs-CZ.js +8 -19
  463. package/i18n/languages/de-CH.js +8 -19
  464. package/i18n/languages/de-DE.js +8 -19
  465. package/i18n/languages/en-US.js +8 -19
  466. package/i18n/languages/es-MX.js +8 -19
  467. package/i18n/languages/fa-IR.d.ts +1 -0
  468. package/i18n/languages/fa-IR.js +9 -19
  469. package/i18n/languages/fa-IR.mjs +1 -0
  470. package/i18n/languages/fr-FR.js +8 -19
  471. package/i18n/languages/hr-HR.js +8 -19
  472. package/i18n/languages/it-IT.js +8 -19
  473. package/i18n/languages/ja-JP.js +8 -19
  474. package/i18n/languages/ko-KR.js +8 -19
  475. package/i18n/languages/lv-LV.js +8 -19
  476. package/i18n/languages/nb-NO.js +8 -19
  477. package/i18n/languages/nl-NL.js +8 -19
  478. package/i18n/languages/pl-PL.js +8 -19
  479. package/i18n/languages/pt-BR.js +8 -19
  480. package/i18n/languages/ru-RU.js +8 -19
  481. package/i18n/languages/sr-SP.js +8 -19
  482. package/i18n/languages/zh-CN.js +8 -19
  483. package/i18n/languages/zh-TW.js +8 -19
  484. package/i18n/registry.js +8 -19
  485. package/index.d.ts +2 -2
  486. package/index.js +8 -19
  487. package/languages/all.js +2 -1
  488. package/languages/fa-IR.js +2 -1
  489. package/languages/fa-IR.mjs +1 -0
  490. package/languages/index.js +2 -1
  491. package/package.json +61 -1
  492. package/plugins/autoColumnSize/autoColumnSize.d.ts +24 -1
  493. package/plugins/autoColumnSize/autoColumnSize.js +506 -94
  494. package/plugins/autoColumnSize/autoColumnSize.mjs +513 -95
  495. package/plugins/autoRowSize/autoRowSize.d.ts +40 -5
  496. package/plugins/autoRowSize/autoRowSize.js +73 -36
  497. package/plugins/autoRowSize/autoRowSize.mjs +103 -41
  498. package/plugins/autofill/autofill.js +35 -24
  499. package/plugins/autofill/autofill.mjs +35 -24
  500. package/plugins/base/base.d.ts +10 -0
  501. package/plugins/base/base.js +5 -12
  502. package/plugins/base/base.mjs +5 -12
  503. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +4 -9
  504. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +4 -9
  505. package/plugins/collapsibleColumns/collapsibleColumns.d.ts +4 -0
  506. package/plugins/collapsibleColumns/collapsibleColumns.js +94 -20
  507. package/plugins/collapsibleColumns/collapsibleColumns.mjs +98 -20
  508. package/plugins/columnSorting/columnSorting.d.ts +31 -2
  509. package/plugins/columnSorting/columnSorting.js +153 -33
  510. package/plugins/columnSorting/columnSorting.mjs +155 -35
  511. package/plugins/columnSorting/columnStatesManager.d.ts +1 -1
  512. package/plugins/columnSorting/columnStatesManager.js +1 -7
  513. package/plugins/columnSorting/columnStatesManager.mjs +1 -7
  514. package/plugins/columnSorting/domHelpers.d.ts +3 -0
  515. package/plugins/columnSorting/domHelpers.js +9 -0
  516. package/plugins/columnSorting/domHelpers.mjs +3 -3
  517. package/plugins/columnSorting/rootComparator.js +21 -16
  518. package/plugins/columnSorting/rootComparator.mjs +21 -16
  519. package/plugins/columnSorting/sortFunction/checkbox.js +7 -5
  520. package/plugins/columnSorting/sortFunction/checkbox.mjs +7 -5
  521. package/plugins/columnSorting/sortFunction/default.js +15 -4
  522. package/plugins/columnSorting/sortFunction/default.mjs +15 -4
  523. package/plugins/columnSorting/sortFunction/intlDatetime.d.mts +1 -0
  524. package/plugins/columnSorting/sortFunction/intlDatetime.d.ts +10 -0
  525. package/plugins/columnSorting/sortFunction/intlDatetime.js +23 -0
  526. package/plugins/columnSorting/sortFunction/intlDatetime.mjs +12 -0
  527. package/plugins/columnSorting/sortService/registry.js +2 -0
  528. package/plugins/columnSorting/sortService/registry.mjs +2 -0
  529. package/plugins/columnSorting/utils.d.ts +8 -0
  530. package/plugins/columnSorting/utils.js +37 -45
  531. package/plugins/columnSorting/utils.mjs +42 -47
  532. package/plugins/columnSummary/columnSummary.js +13 -14
  533. package/plugins/columnSummary/columnSummary.mjs +13 -14
  534. package/plugins/columnSummary/endpoints.d.ts +69 -2
  535. package/plugins/columnSummary/endpoints.js +176 -29
  536. package/plugins/columnSummary/endpoints.mjs +176 -29
  537. package/plugins/comments/commentEditor.js +5 -10
  538. package/plugins/comments/commentEditor.mjs +6 -11
  539. package/plugins/comments/comments.js +5 -12
  540. package/plugins/comments/comments.mjs +5 -12
  541. package/plugins/comments/contextMenuItem/addEditComment.js +8 -19
  542. package/plugins/comments/contextMenuItem/readOnlyComment.js +8 -19
  543. package/plugins/comments/contextMenuItem/removeComment.js +8 -19
  544. package/plugins/comments/editorResizeObserver.js +5 -12
  545. package/plugins/comments/editorResizeObserver.mjs +5 -12
  546. package/plugins/contextMenu/contextMenu.d.ts +12 -1
  547. package/plugins/contextMenu/contextMenu.js +34 -15
  548. package/plugins/contextMenu/contextMenu.mjs +34 -15
  549. package/plugins/contextMenu/index.d.ts +1 -1
  550. package/plugins/contextMenu/menu/menu.d.ts +22 -1
  551. package/plugins/contextMenu/menu/menu.js +216 -15
  552. package/plugins/contextMenu/menu/menu.mjs +217 -16
  553. package/plugins/contextMenu/menu/positioner.js +4 -9
  554. package/plugins/contextMenu/menu/positioner.mjs +4 -9
  555. package/plugins/contextMenu/predefinedItems/alignment.js +22 -33
  556. package/plugins/contextMenu/predefinedItems/alignment.mjs +14 -14
  557. package/plugins/contextMenu/predefinedItems/clearColumn.js +9 -20
  558. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -1
  559. package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -19
  560. package/plugins/contextMenu/predefinedItems/columnRight.js +8 -19
  561. package/plugins/contextMenu/predefinedItems/index.js +8 -19
  562. package/plugins/contextMenu/predefinedItems/readOnly.js +11 -22
  563. package/plugins/contextMenu/predefinedItems/readOnly.mjs +3 -3
  564. package/plugins/contextMenu/predefinedItems/redo.js +8 -19
  565. package/plugins/contextMenu/predefinedItems/removeColumn.js +8 -19
  566. package/plugins/contextMenu/predefinedItems/removeRow.js +8 -19
  567. package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -19
  568. package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -19
  569. package/plugins/contextMenu/predefinedItems/undo.js +8 -19
  570. package/plugins/contextMenu/utils.js +1 -1
  571. package/plugins/contextMenu/utils.mjs +1 -1
  572. package/plugins/copyPaste/contextMenuItem/cut.js +8 -19
  573. package/plugins/copyPaste/copyPaste.js +62 -20
  574. package/plugins/copyPaste/copyPaste.mjs +63 -21
  575. package/plugins/copyPaste/copyableRanges.js +11 -14
  576. package/plugins/copyPaste/copyableRanges.mjs +11 -14
  577. package/plugins/copyPaste/pasteEvent.d.ts +1 -1
  578. package/plugins/customBorders/contextMenuItem/bottom.js +8 -19
  579. package/plugins/customBorders/contextMenuItem/left.js +8 -19
  580. package/plugins/customBorders/contextMenuItem/noBorders.js +8 -19
  581. package/plugins/customBorders/contextMenuItem/right.js +8 -19
  582. package/plugins/customBorders/contextMenuItem/top.js +8 -19
  583. package/plugins/customBorders/customBorders.d.ts +21 -40
  584. package/plugins/customBorders/customBorders.js +1084 -223
  585. package/plugins/customBorders/customBorders.mjs +1078 -206
  586. package/plugins/customBorders/utils.d.ts +71 -0
  587. package/plugins/customBorders/utils.js +63 -0
  588. package/plugins/customBorders/utils.mjs +101 -0
  589. package/plugins/dataProvider/dataProvider.js +35 -38
  590. package/plugins/dataProvider/dataProvider.mjs +27 -19
  591. package/plugins/dataProvider/query/crud.js +1 -1
  592. package/plugins/dataProvider/query/crud.mjs +1 -1
  593. package/plugins/dialog/dialog.js +15 -33
  594. package/plugins/dialog/dialog.mjs +7 -14
  595. package/plugins/dialog/ui.js +5 -12
  596. package/plugins/dialog/ui.mjs +5 -12
  597. package/plugins/dragToScroll/autoScroller.js +4 -9
  598. package/plugins/dragToScroll/autoScroller.mjs +4 -9
  599. package/plugins/dragToScroll/dragToScroll.d.ts +2 -2
  600. package/plugins/dragToScroll/dragToScroll.js +155 -26
  601. package/plugins/dragToScroll/dragToScroll.mjs +156 -27
  602. package/plugins/dragToScroll/scrollTimer.js +4 -9
  603. package/plugins/dragToScroll/scrollTimer.mjs +4 -9
  604. package/plugins/dropdownMenu/dropdownMenu.d.ts +5 -1
  605. package/plugins/dropdownMenu/dropdownMenu.js +50 -15
  606. package/plugins/dropdownMenu/dropdownMenu.mjs +51 -16
  607. package/plugins/dropdownMenu/index.d.ts +1 -0
  608. package/plugins/emptyDataState/emptyDataState.js +15 -33
  609. package/plugins/emptyDataState/emptyDataState.mjs +7 -14
  610. package/plugins/emptyDataState/ui.js +4 -9
  611. package/plugins/emptyDataState/ui.mjs +4 -9
  612. package/plugins/exportFile/dataProvider.js +5 -1
  613. package/plugins/exportFile/dataProvider.mjs +5 -1
  614. package/plugins/exportFile/exportFile.js +13 -31
  615. package/plugins/exportFile/exportFile.mjs +5 -12
  616. package/plugins/exportFile/types/csv.js +1 -3
  617. package/plugins/exportFile/types/csv.mjs +1 -3
  618. package/plugins/exportFile/types/xlsx/cell-style.js +4 -2
  619. package/plugins/exportFile/types/xlsx/cell-style.mjs +4 -2
  620. package/plugins/exportFile/types/xlsx/date-utils.d.ts +15 -0
  621. package/plugins/exportFile/types/xlsx/date-utils.js +31 -0
  622. package/plugins/exportFile/types/xlsx/date-utils.mjs +36 -0
  623. package/plugins/exportFile/types/xlsx.js +10 -3
  624. package/plugins/exportFile/types/xlsx.mjs +11 -4
  625. package/plugins/filters/component/_base.d.ts +1 -2
  626. package/plugins/filters/component/_base.js +1 -2
  627. package/plugins/filters/component/_base.mjs +1 -2
  628. package/plugins/filters/component/actionBar.js +9 -22
  629. package/plugins/filters/component/actionBar.mjs +1 -3
  630. package/plugins/filters/component/condition.d.ts +1 -0
  631. package/plugins/filters/component/condition.js +11 -22
  632. package/plugins/filters/component/condition.mjs +3 -3
  633. package/plugins/filters/component/operators.js +1 -3
  634. package/plugins/filters/component/operators.mjs +1 -3
  635. package/plugins/filters/component/value.d.ts +5 -6
  636. package/plugins/filters/component/value.js +62 -56
  637. package/plugins/filters/component/value.mjs +55 -38
  638. package/plugins/filters/condition/beginsWith.js +8 -19
  639. package/plugins/filters/condition/between.js +8 -19
  640. package/plugins/filters/condition/contains.js +8 -19
  641. package/plugins/filters/condition/date/after.js +10 -20
  642. package/plugins/filters/condition/date/after.mjs +2 -1
  643. package/plugins/filters/condition/date/afterOrEqual.js +10 -20
  644. package/plugins/filters/condition/date/afterOrEqual.mjs +2 -1
  645. package/plugins/filters/condition/date/before.js +10 -20
  646. package/plugins/filters/condition/date/before.mjs +2 -1
  647. package/plugins/filters/condition/date/beforeOrEqual.js +10 -20
  648. package/plugins/filters/condition/date/beforeOrEqual.mjs +2 -1
  649. package/plugins/filters/condition/date/today.js +8 -19
  650. package/plugins/filters/condition/date/tomorrow.js +8 -19
  651. package/plugins/filters/condition/date/yesterday.js +8 -19
  652. package/plugins/filters/condition/empty.js +8 -19
  653. package/plugins/filters/condition/endsWith.js +8 -19
  654. package/plugins/filters/condition/equal.d.ts +7 -0
  655. package/plugins/filters/condition/equal.js +12 -19
  656. package/plugins/filters/condition/equal.mjs +10 -0
  657. package/plugins/filters/condition/greaterThan.js +8 -19
  658. package/plugins/filters/condition/greaterThanOrEqual.js +8 -19
  659. package/plugins/filters/condition/intlDate/after.js +8 -19
  660. package/plugins/filters/condition/intlDate/afterOrEqual.js +8 -19
  661. package/plugins/filters/condition/intlDate/before.js +8 -19
  662. package/plugins/filters/condition/intlDate/beforeOrEqual.js +8 -19
  663. package/plugins/filters/condition/intlDate/between.js +8 -19
  664. package/plugins/filters/condition/intlDate/today.js +8 -19
  665. package/plugins/filters/condition/intlDate/tomorrow.js +8 -19
  666. package/plugins/filters/condition/intlDate/yesterday.js +8 -19
  667. package/plugins/filters/condition/intlDatetime/after.d.mts +1 -0
  668. package/plugins/filters/condition/intlDatetime/after.d.ts +18 -0
  669. package/plugins/filters/condition/intlDatetime/after.js +66 -0
  670. package/plugins/filters/condition/intlDatetime/after.mjs +22 -0
  671. package/plugins/filters/condition/intlDatetime/afterOrEqual.d.mts +1 -0
  672. package/plugins/filters/condition/intlDatetime/afterOrEqual.d.ts +18 -0
  673. package/plugins/filters/condition/intlDatetime/afterOrEqual.js +66 -0
  674. package/plugins/filters/condition/intlDatetime/afterOrEqual.mjs +22 -0
  675. package/plugins/filters/condition/intlDatetime/before.d.mts +1 -0
  676. package/plugins/filters/condition/intlDatetime/before.d.ts +18 -0
  677. package/plugins/filters/condition/intlDatetime/before.js +66 -0
  678. package/plugins/filters/condition/intlDatetime/before.mjs +22 -0
  679. package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.mts +1 -0
  680. package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.ts +18 -0
  681. package/plugins/filters/condition/intlDatetime/beforeOrEqual.js +66 -0
  682. package/plugins/filters/condition/intlDatetime/beforeOrEqual.mjs +22 -0
  683. package/plugins/filters/condition/intlDatetime/between.d.mts +1 -0
  684. package/plugins/filters/condition/intlDatetime/between.d.ts +18 -0
  685. package/plugins/filters/condition/intlDatetime/between.js +67 -0
  686. package/plugins/filters/condition/intlDatetime/between.mjs +23 -0
  687. package/plugins/filters/condition/intlDatetime/today.d.mts +1 -0
  688. package/plugins/filters/condition/intlDatetime/today.d.ts +17 -0
  689. package/plugins/filters/condition/intlDatetime/today.js +65 -0
  690. package/plugins/filters/condition/intlDatetime/today.mjs +20 -0
  691. package/plugins/filters/condition/intlDatetime/tomorrow.d.mts +1 -0
  692. package/plugins/filters/condition/intlDatetime/tomorrow.d.ts +17 -0
  693. package/plugins/filters/condition/intlDatetime/tomorrow.js +66 -0
  694. package/plugins/filters/condition/intlDatetime/tomorrow.mjs +21 -0
  695. package/plugins/filters/condition/intlDatetime/yesterday.d.mts +1 -0
  696. package/plugins/filters/condition/intlDatetime/yesterday.d.ts +17 -0
  697. package/plugins/filters/condition/intlDatetime/yesterday.js +66 -0
  698. package/plugins/filters/condition/intlDatetime/yesterday.mjs +21 -0
  699. package/plugins/filters/condition/intlTime/after.js +8 -19
  700. package/plugins/filters/condition/intlTime/afterOrEqual.js +8 -19
  701. package/plugins/filters/condition/intlTime/before.js +8 -19
  702. package/plugins/filters/condition/intlTime/beforeOrEqual.js +8 -19
  703. package/plugins/filters/condition/intlTime/between.js +8 -19
  704. package/plugins/filters/condition/lessThan.js +8 -19
  705. package/plugins/filters/condition/lessThanOrEqual.js +8 -19
  706. package/plugins/filters/condition/none.js +8 -19
  707. package/plugins/filters/condition/notBetween.js +8 -19
  708. package/plugins/filters/condition/notContains.js +8 -19
  709. package/plugins/filters/condition/notEmpty.js +8 -19
  710. package/plugins/filters/condition/notEqual.js +8 -19
  711. package/plugins/filters/conditionCollection.js +4 -7
  712. package/plugins/filters/conditionCollection.mjs +4 -7
  713. package/plugins/filters/conditionUpdateObserver.d.ts +2 -2
  714. package/plugins/filters/conditionUpdateObserver.js +144 -52
  715. package/plugins/filters/conditionUpdateObserver.mjs +144 -52
  716. package/plugins/filters/constants.d.ts +1 -0
  717. package/plugins/filters/constants.js +31 -0
  718. package/plugins/filters/constants.mjs +28 -0
  719. package/plugins/filters/dataFilter.d.ts +4 -12
  720. package/plugins/filters/dataFilter.js +7 -19
  721. package/plugins/filters/dataFilter.mjs +8 -20
  722. package/plugins/filters/filters.d.ts +33 -9
  723. package/plugins/filters/filters.js +104 -62
  724. package/plugins/filters/filters.mjs +97 -44
  725. package/plugins/filters/logicalOperations/conjunction.js +8 -19
  726. package/plugins/filters/logicalOperations/disjunction.js +8 -19
  727. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +8 -19
  728. package/plugins/filters/sortComparators.d.ts +9 -2
  729. package/plugins/filters/sortComparators.js +34 -1
  730. package/plugins/filters/sortComparators.mjs +38 -3
  731. package/plugins/filters/ui/_base.js +8 -19
  732. package/plugins/filters/ui/input.d.ts +4 -0
  733. package/plugins/filters/ui/input.js +23 -18
  734. package/plugins/filters/ui/input.mjs +23 -18
  735. package/plugins/filters/ui/link.js +4 -9
  736. package/plugins/filters/ui/link.mjs +4 -9
  737. package/plugins/filters/ui/multipleSelect.js +40 -35
  738. package/plugins/filters/ui/multipleSelect.mjs +32 -16
  739. package/plugins/filters/ui/radioInput.js +4 -9
  740. package/plugins/filters/ui/radioInput.mjs +4 -9
  741. package/plugins/filters/ui/select.js +14 -32
  742. package/plugins/filters/ui/select.mjs +6 -13
  743. package/plugins/formulas/engine/register.d.ts +5 -4
  744. package/plugins/formulas/engine/register.js +5 -2
  745. package/plugins/formulas/engine/register.mjs +9 -5
  746. package/plugins/formulas/engine/settings.d.ts +2 -6
  747. package/plugins/formulas/engine/settings.js +29 -4
  748. package/plugins/formulas/engine/settings.mjs +29 -4
  749. package/plugins/formulas/engine/types.d.ts +12 -2
  750. package/plugins/formulas/formulas.d.ts +39 -0
  751. package/plugins/formulas/formulas.js +748 -55
  752. package/plugins/formulas/formulas.mjs +752 -57
  753. package/plugins/formulas/hyperlinkUrl.d.mts +1 -0
  754. package/plugins/formulas/hyperlinkUrl.d.ts +12 -0
  755. package/plugins/formulas/hyperlinkUrl.js +32 -0
  756. package/plugins/formulas/hyperlinkUrl.mjs +32 -0
  757. package/plugins/formulas/indexSyncer/axisSyncer.d.ts +1 -0
  758. package/plugins/formulas/indexSyncer/axisSyncer.js +77 -27
  759. package/plugins/formulas/indexSyncer/axisSyncer.mjs +77 -27
  760. package/plugins/formulas/indexSyncer/index.js +4 -9
  761. package/plugins/formulas/indexSyncer/index.mjs +4 -9
  762. package/plugins/formulas/utils.d.ts +9 -0
  763. package/plugins/formulas/utils.js +21 -0
  764. package/plugins/formulas/utils.mjs +25 -0
  765. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +8 -19
  766. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +14 -20
  767. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +6 -1
  768. package/plugins/hiddenColumns/hiddenColumns.js +11 -15
  769. package/plugins/hiddenColumns/hiddenColumns.mjs +11 -15
  770. package/plugins/hiddenRows/contextMenuItem/hideRow.js +8 -19
  771. package/plugins/hiddenRows/contextMenuItem/showRow.js +14 -20
  772. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +6 -1
  773. package/plugins/hiddenRows/hiddenRows.js +11 -15
  774. package/plugins/hiddenRows/hiddenRows.mjs +11 -15
  775. package/plugins/index.d.ts +5 -1
  776. package/plugins/index.js +10 -0
  777. package/plugins/index.mjs +5 -1
  778. package/plugins/loading/loading.js +13 -31
  779. package/plugins/loading/loading.mjs +5 -12
  780. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +8 -19
  781. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +8 -19
  782. package/plugins/manualColumnFreeze/manualColumnFreeze.js +5 -12
  783. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +5 -12
  784. package/plugins/manualColumnMove/manualColumnMove.d.ts +10 -0
  785. package/plugins/manualColumnMove/manualColumnMove.js +128 -33
  786. package/plugins/manualColumnMove/manualColumnMove.mjs +129 -34
  787. package/plugins/manualColumnResize/manualColumnResize.d.ts +12 -1
  788. package/plugins/manualColumnResize/manualColumnResize.js +28 -17
  789. package/plugins/manualColumnResize/manualColumnResize.mjs +28 -17
  790. package/plugins/manualRowMove/manualRowMove.js +5 -12
  791. package/plugins/manualRowMove/manualRowMove.mjs +5 -12
  792. package/plugins/manualRowResize/manualRowResize.d.ts +13 -2
  793. package/plugins/manualRowResize/manualRowResize.js +29 -18
  794. package/plugins/manualRowResize/manualRowResize.mjs +29 -18
  795. package/plugins/mergeCells/cellCoords.d.ts +8 -0
  796. package/plugins/mergeCells/cellCoords.js +15 -9
  797. package/plugins/mergeCells/cellCoords.mjs +15 -9
  798. package/plugins/mergeCells/cellsCollection.d.ts +46 -2
  799. package/plugins/mergeCells/cellsCollection.js +190 -71
  800. package/plugins/mergeCells/cellsCollection.mjs +190 -71
  801. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +8 -19
  802. package/plugins/mergeCells/focusOrder.d.ts +26 -20
  803. package/plugins/mergeCells/focusOrder.js +363 -189
  804. package/plugins/mergeCells/focusOrder.mjs +368 -184
  805. package/plugins/mergeCells/mergeCells.d.ts +13 -8
  806. package/plugins/mergeCells/mergeCells.js +327 -76
  807. package/plugins/mergeCells/mergeCells.mjs +327 -76
  808. package/plugins/moveCells/helpers.d.mts +1 -0
  809. package/plugins/moveCells/helpers.d.ts +21 -0
  810. package/plugins/moveCells/helpers.js +20 -0
  811. package/plugins/moveCells/helpers.mjs +15 -0
  812. package/plugins/moveCells/index.d.mts +1 -0
  813. package/plugins/moveCells/index.d.ts +1 -0
  814. package/plugins/moveCells/index.js +22 -0
  815. package/plugins/moveCells/index.mjs +1 -0
  816. package/plugins/moveCells/moveCells.d.mts +1 -0
  817. package/plugins/moveCells/moveCells.d.ts +80 -0
  818. package/plugins/moveCells/moveCells.js +595 -0
  819. package/plugins/moveCells/moveCells.mjs +580 -0
  820. package/plugins/multiColumnSorting/multiColumnSorting.d.ts +8 -8
  821. package/plugins/multiColumnSorting/multiColumnSorting.js +11 -16
  822. package/plugins/multiColumnSorting/multiColumnSorting.mjs +11 -16
  823. package/plugins/multiColumnSorting/rootComparator.js +26 -19
  824. package/plugins/multiColumnSorting/rootComparator.mjs +26 -19
  825. package/plugins/multipleSelectionHandles/multipleSelectionHandles.d.ts +19 -4
  826. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +266 -58
  827. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +266 -58
  828. package/plugins/nestedHeaders/nestedHeaders.d.ts +10 -1
  829. package/plugins/nestedHeaders/nestedHeaders.js +227 -35
  830. package/plugins/nestedHeaders/nestedHeaders.mjs +227 -35
  831. package/plugins/nestedHeaders/stateManager/columnArrangement.d.mts +1 -0
  832. package/plugins/nestedHeaders/stateManager/columnArrangement.d.ts +37 -0
  833. package/plugins/nestedHeaders/stateManager/columnArrangement.js +35 -0
  834. package/plugins/nestedHeaders/stateManager/columnArrangement.mjs +30 -0
  835. package/plugins/nestedHeaders/stateManager/deriveSettings.d.mts +1 -0
  836. package/plugins/nestedHeaders/stateManager/deriveSettings.d.ts +57 -0
  837. package/plugins/nestedHeaders/stateManager/deriveSettings.js +115 -0
  838. package/plugins/nestedHeaders/stateManager/deriveSettings.mjs +135 -0
  839. package/plugins/nestedHeaders/stateManager/headersTree.d.ts +14 -1
  840. package/plugins/nestedHeaders/stateManager/headersTree.js +4 -9
  841. package/plugins/nestedHeaders/stateManager/headersTree.mjs +4 -9
  842. package/plugins/nestedHeaders/stateManager/index.d.ts +76 -13
  843. package/plugins/nestedHeaders/stateManager/index.js +386 -50
  844. package/plugins/nestedHeaders/stateManager/index.mjs +387 -51
  845. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +3 -2
  846. package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +3 -2
  847. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
  848. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
  849. package/plugins/nestedHeaders/stateManager/sourceSettings.d.ts +23 -6
  850. package/plugins/nestedHeaders/stateManager/sourceSettings.js +24 -13
  851. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +24 -13
  852. package/plugins/nestedHeaders/stateManager/utils.d.ts +17 -1
  853. package/plugins/nestedHeaders/stateManager/utils.js +6 -1
  854. package/plugins/nestedHeaders/stateManager/utils.mjs +6 -1
  855. package/plugins/nestedHeaders/utils/ghostTable.js +1 -3
  856. package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -3
  857. package/plugins/nestedRows/data/dataManager.d.ts +4 -1
  858. package/plugins/nestedRows/data/dataManager.js +10 -4
  859. package/plugins/nestedRows/data/dataManager.mjs +10 -4
  860. package/plugins/nestedRows/nestedRows.d.ts +127 -1
  861. package/plugins/nestedRows/nestedRows.js +332 -17
  862. package/plugins/nestedRows/nestedRows.mjs +332 -17
  863. package/plugins/nestedRows/ui/collapsing.d.ts +58 -0
  864. package/plugins/nestedRows/ui/collapsing.js +234 -40
  865. package/plugins/nestedRows/ui/collapsing.mjs +234 -40
  866. package/plugins/nestedRows/ui/contextMenu.js +12 -28
  867. package/plugins/nestedRows/ui/contextMenu.mjs +4 -9
  868. package/plugins/notification/notification.js +13 -31
  869. package/plugins/notification/notification.mjs +5 -12
  870. package/plugins/notification/ui.js +4 -9
  871. package/plugins/notification/ui.mjs +4 -9
  872. package/plugins/pagination/pagination.js +7 -14
  873. package/plugins/pagination/pagination.mjs +7 -14
  874. package/plugins/pagination/ui.js +13 -31
  875. package/plugins/pagination/ui.mjs +5 -12
  876. package/plugins/search/search.js +27 -11
  877. package/plugins/search/search.mjs +27 -11
  878. package/plugins/selectionHandles/helpers.d.mts +1 -0
  879. package/plugins/selectionHandles/helpers.d.ts +17 -0
  880. package/plugins/selectionHandles/helpers.js +16 -0
  881. package/plugins/selectionHandles/helpers.mjs +11 -0
  882. package/plugins/selectionHandles/index.d.mts +1 -0
  883. package/plugins/selectionHandles/index.d.ts +1 -0
  884. package/plugins/selectionHandles/index.js +22 -0
  885. package/plugins/selectionHandles/index.mjs +1 -0
  886. package/plugins/selectionHandles/selectionHandles.d.mts +1 -0
  887. package/plugins/selectionHandles/selectionHandles.d.ts +52 -0
  888. package/plugins/selectionHandles/selectionHandles.js +335 -0
  889. package/plugins/selectionHandles/selectionHandles.mjs +316 -0
  890. package/plugins/stretchColumns/calculator.js +5 -12
  891. package/plugins/stretchColumns/calculator.mjs +5 -12
  892. package/plugins/stretchColumns/strategies/last.js +4 -9
  893. package/plugins/stretchColumns/strategies/last.mjs +4 -9
  894. package/plugins/stretchColumns/stretchColumns.js +4 -9
  895. package/plugins/stretchColumns/stretchColumns.mjs +4 -9
  896. package/plugins/touchScroll/touchScroll.js +4 -9
  897. package/plugins/touchScroll/touchScroll.mjs +4 -9
  898. package/plugins/trimRows/trimRows.d.ts +1 -1
  899. package/plugins/trimRows/trimRows.js +10 -11
  900. package/plugins/trimRows/trimRows.mjs +10 -11
  901. package/plugins/types.d.ts +4 -0
  902. package/plugins/undoRedo/actions/cellAlignment.js +1 -1
  903. package/plugins/undoRedo/actions/cellAlignment.mjs +1 -1
  904. package/plugins/undoRedo/actions/createColumn.js +4 -1
  905. package/plugins/undoRedo/actions/createColumn.mjs +4 -1
  906. package/plugins/undoRedo/actions/createRow.js +4 -1
  907. package/plugins/undoRedo/actions/createRow.mjs +4 -1
  908. package/plugins/undoRedo/actions/fixedCounts.d.mts +1 -0
  909. package/plugins/undoRedo/actions/fixedCounts.d.ts +36 -0
  910. package/plugins/undoRedo/actions/fixedCounts.js +63 -0
  911. package/plugins/undoRedo/actions/fixedCounts.mjs +62 -0
  912. package/plugins/undoRedo/actions/index.js +2 -0
  913. package/plugins/undoRedo/actions/index.mjs +2 -0
  914. package/plugins/undoRedo/actions/moveCells.d.mts +1 -0
  915. package/plugins/undoRedo/actions/moveCells.d.ts +104 -0
  916. package/plugins/undoRedo/actions/moveCells.js +225 -0
  917. package/plugins/undoRedo/actions/moveCells.mjs +227 -0
  918. package/plugins/undoRedo/actions/removeColumn.d.ts +18 -2
  919. package/plugins/undoRedo/actions/removeColumn.js +11 -4
  920. package/plugins/undoRedo/actions/removeColumn.mjs +12 -5
  921. package/plugins/undoRedo/actions/removeRow.js +2 -57
  922. package/plugins/undoRedo/actions/removeRow.mjs +2 -57
  923. package/plugins/undoRedo/undoRedo.d.ts +26 -0
  924. package/plugins/undoRedo/undoRedo.js +40 -11
  925. package/plugins/undoRedo/undoRedo.mjs +40 -11
  926. package/plugins/undoRedo/utils.d.ts +29 -0
  927. package/plugins/undoRedo/utils.js +55 -3
  928. package/plugins/undoRedo/utils.mjs +59 -0
  929. package/renderSizeProbe.d.mts +1 -0
  930. package/renderSizeProbe.d.ts +60 -0
  931. package/renderSizeProbe.js +161 -0
  932. package/renderSizeProbe.mjs +174 -0
  933. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  934. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  935. package/renderers/index.d.ts +3 -2
  936. package/renderers/index.js +8 -0
  937. package/renderers/index.mjs +3 -1
  938. package/renderers/intlDatetimeRenderer/index.d.mts +1 -0
  939. package/renderers/intlDatetimeRenderer/index.d.ts +1 -0
  940. package/renderers/intlDatetimeRenderer/index.js +22 -0
  941. package/renderers/intlDatetimeRenderer/index.mjs +1 -0
  942. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.mts +1 -0
  943. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.ts +26 -0
  944. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.js +82 -0
  945. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.mjs +67 -0
  946. package/renderers/multiSelectRenderer/multiSelectRenderer.js +2 -3
  947. package/renderers/multiSelectRenderer/multiSelectRenderer.mjs +2 -3
  948. package/renderers/multiSelectRenderer/utils/utils.d.ts +1 -1
  949. package/renderers/multiSelectRenderer/utils/utils.js +11 -8
  950. package/renderers/multiSelectRenderer/utils/utils.mjs +11 -8
  951. package/renderers/renderCell.d.mts +1 -0
  952. package/renderers/renderCell.d.ts +37 -0
  953. package/renderers/renderCell.js +43 -0
  954. package/renderers/renderCell.mjs +48 -0
  955. package/selection/highlight/highlight.js +1 -3
  956. package/selection/highlight/highlight.mjs +1 -3
  957. package/selection/highlight/types/areaLayered.d.ts +3 -1
  958. package/selection/highlight/types/areaLayered.js +4 -2
  959. package/selection/highlight/types/areaLayered.mjs +6 -2
  960. package/selection/highlight/types/focus.d.ts +3 -1
  961. package/selection/highlight/types/focus.js +3 -2
  962. package/selection/highlight/types/focus.mjs +5 -2
  963. package/selection/mouseEventHandler.js +29 -26
  964. package/selection/mouseEventHandler.mjs +29 -26
  965. package/selection/moveCells.d.mts +1 -0
  966. package/selection/moveCells.d.ts +15 -0
  967. package/selection/moveCells.js +13 -0
  968. package/selection/moveCells.mjs +9 -0
  969. package/selection/selection.d.ts +56 -2
  970. package/selection/selection.js +162 -36
  971. package/selection/selection.mjs +154 -17
  972. package/selection/transformation/_base.js +5 -12
  973. package/selection/transformation/_base.mjs +5 -12
  974. package/selection/types.d.ts +3 -0
  975. package/settings.d.ts +24 -3
  976. package/shortcuts/context.d.ts +4 -0
  977. package/shortcuts/context.js +16 -8
  978. package/shortcuts/context.mjs +20 -8
  979. package/shortcuts/contexts/commands/populateSelectedCellsData.js +1 -1
  980. package/shortcuts/contexts/commands/populateSelectedCellsData.mjs +1 -1
  981. package/styles/handsontable.css +504 -158
  982. package/styles/handsontable.min.css +4 -4
  983. package/styles/handsontableStyles.js +1 -1
  984. package/styles/handsontableStyles.mjs +1 -1
  985. package/styles/ht-icons-horizon.css +1 -10
  986. package/styles/ht-icons-horizon.min.css +4 -4
  987. package/styles/ht-icons-main.css +1 -10
  988. package/styles/ht-icons-main.min.css +4 -4
  989. package/styles/ht-theme-classic-no-icons.css +6 -0
  990. package/styles/ht-theme-classic-no-icons.min.css +4 -4
  991. package/styles/ht-theme-classic.css +7 -10
  992. package/styles/ht-theme-classic.min.css +4 -4
  993. package/styles/ht-theme-horizon-no-icons.css +6 -0
  994. package/styles/ht-theme-horizon-no-icons.min.css +4 -4
  995. package/styles/ht-theme-horizon.css +7 -10
  996. package/styles/ht-theme-horizon.min.css +4 -4
  997. package/styles/ht-theme-main-no-icons.css +6 -0
  998. package/styles/ht-theme-main-no-icons.min.css +4 -4
  999. package/styles/ht-theme-main.css +7 -10
  1000. package/styles/ht-theme-main.min.css +4 -4
  1001. package/tableView.d.ts +17 -4
  1002. package/tableView.js +211 -53
  1003. package/tableView.mjs +212 -54
  1004. package/themes/engine/builder.js +5 -12
  1005. package/themes/engine/builder.mjs +5 -12
  1006. package/themes/engine/index.d.ts +2 -1
  1007. package/themes/engine/index.js +3 -0
  1008. package/themes/engine/index.mjs +1 -1
  1009. package/themes/engine/manager.d.ts +75 -3
  1010. package/themes/engine/manager.js +247 -18
  1011. package/themes/engine/manager.mjs +254 -18
  1012. package/themes/engine/utils/cssVariables.d.ts +18 -1
  1013. package/themes/engine/utils/cssVariables.js +27 -11
  1014. package/themes/engine/utils/cssVariables.mjs +28 -11
  1015. package/themes/engine/utils/validation.js +7 -0
  1016. package/themes/engine/utils/validation.mjs +7 -0
  1017. package/themes/static/variables/helpers/iconsMap.js +1 -6
  1018. package/themes/static/variables/helpers/iconsMap.mjs +1 -6
  1019. package/themes/static/variables/tokens/classic.js +6 -0
  1020. package/themes/static/variables/tokens/classic.mjs +6 -0
  1021. package/themes/static/variables/tokens/horizon.js +6 -0
  1022. package/themes/static/variables/tokens/horizon.mjs +6 -0
  1023. package/themes/static/variables/tokens/main.js +6 -0
  1024. package/themes/static/variables/tokens/main.mjs +6 -0
  1025. package/themes/types.d.ts +1 -1
  1026. package/translations/changesObservable/observable.js +4 -9
  1027. package/translations/changesObservable/observable.mjs +4 -9
  1028. package/translations/changesObservable/observer.js +4 -9
  1029. package/translations/changesObservable/observer.mjs +4 -9
  1030. package/translations/indexMapper.d.ts +14 -9
  1031. package/translations/indexMapper.js +109 -49
  1032. package/translations/indexMapper.mjs +109 -49
  1033. package/translations/mapCollections/aggregatedCollection.js +20 -35
  1034. package/translations/mapCollections/aggregatedCollection.mjs +20 -35
  1035. package/translations/mapCollections/mapCollection.d.ts +10 -4
  1036. package/translations/mapCollections/mapCollection.js +2 -2
  1037. package/translations/mapCollections/mapCollection.mjs +2 -2
  1038. package/translations/maps/booleanMap.d.mts +1 -0
  1039. package/translations/maps/booleanMap.d.ts +86 -0
  1040. package/translations/maps/booleanMap.js +293 -0
  1041. package/translations/maps/booleanMap.mjs +301 -0
  1042. package/translations/maps/hidingMap.d.ts +5 -2
  1043. package/translations/maps/hidingMap.js +8 -3
  1044. package/translations/maps/hidingMap.mjs +8 -3
  1045. package/translations/maps/index.d.ts +5 -2
  1046. package/translations/maps/index.js +7 -3
  1047. package/translations/maps/index.mjs +10 -2
  1048. package/translations/maps/indexMap.d.ts +26 -2
  1049. package/translations/maps/indexMap.js +73 -6
  1050. package/translations/maps/indexMap.mjs +73 -6
  1051. package/translations/maps/indexesSequence.d.ts +53 -2
  1052. package/translations/maps/indexesSequence.js +218 -3
  1053. package/translations/maps/indexesSequence.mjs +226 -3
  1054. package/translations/maps/trimmingMap.d.ts +5 -2
  1055. package/translations/maps/trimmingMap.js +8 -3
  1056. package/translations/maps/trimmingMap.mjs +8 -3
  1057. package/translations/maps/utils/actionsOnIndexes.js +20 -1
  1058. package/translations/maps/utils/actionsOnIndexes.mjs +20 -1
  1059. package/translations/maps/utils/indexesSequence.js +12 -3
  1060. package/translations/maps/utils/indexesSequence.mjs +12 -3
  1061. package/translations/maps/utils/physicallyIndexed.js +12 -1
  1062. package/translations/maps/utils/physicallyIndexed.mjs +12 -1
  1063. package/utils/entitlementLicenseKey/classify.d.mts +1 -0
  1064. package/utils/entitlementLicenseKey/classify.d.ts +34 -0
  1065. package/utils/entitlementLicenseKey/classify.js +97 -0
  1066. package/utils/entitlementLicenseKey/classify.mjs +96 -0
  1067. package/utils/entitlementLicenseKey/constants.d.mts +1 -0
  1068. package/utils/entitlementLicenseKey/constants.d.ts +69 -0
  1069. package/utils/entitlementLicenseKey/constants.js +54 -0
  1070. package/utils/entitlementLicenseKey/constants.mjs +66 -0
  1071. package/utils/entitlementLicenseKey/detectFormat.d.mts +1 -0
  1072. package/utils/entitlementLicenseKey/detectFormat.d.ts +23 -0
  1073. package/utils/entitlementLicenseKey/detectFormat.js +60 -0
  1074. package/utils/entitlementLicenseKey/detectFormat.mjs +60 -0
  1075. package/utils/entitlementLicenseKey/encoding.d.mts +1 -0
  1076. package/utils/entitlementLicenseKey/encoding.d.ts +58 -0
  1077. package/utils/entitlementLicenseKey/encoding.js +161 -0
  1078. package/utils/entitlementLicenseKey/encoding.mjs +172 -0
  1079. package/utils/entitlementLicenseKey/extractKeyData.d.mts +1 -0
  1080. package/utils/entitlementLicenseKey/extractKeyData.d.ts +47 -0
  1081. package/utils/entitlementLicenseKey/extractKeyData.js +213 -0
  1082. package/utils/entitlementLicenseKey/extractKeyData.mjs +232 -0
  1083. package/utils/entitlementLicenseKey/grants.d.mts +1 -0
  1084. package/utils/entitlementLicenseKey/grants.d.ts +54 -0
  1085. package/utils/entitlementLicenseKey/grants.js +68 -0
  1086. package/utils/entitlementLicenseKey/grants.mjs +84 -0
  1087. package/utils/entitlementLicenseKey/index.d.mts +1 -0
  1088. package/utils/entitlementLicenseKey/index.d.ts +8 -0
  1089. package/utils/entitlementLicenseKey/index.js +53 -0
  1090. package/utils/entitlementLicenseKey/index.mjs +6 -0
  1091. package/utils/entitlementLicenseKey/sha512.d.mts +1 -0
  1092. package/utils/entitlementLicenseKey/sha512.d.ts +11 -0
  1093. package/utils/entitlementLicenseKey/sha512.js +328 -0
  1094. package/utils/entitlementLicenseKey/sha512.mjs +327 -0
  1095. package/utils/entitlementLicenseKey/types.d.mts +1 -0
  1096. package/utils/entitlementLicenseKey/types.d.ts +84 -0
  1097. package/utils/entitlementLicenseKey/types.js +8 -0
  1098. package/utils/entitlementLicenseKey/types.mjs +10 -0
  1099. package/utils/ghostTable.d.ts +1 -0
  1100. package/utils/ghostTable.js +58 -11
  1101. package/utils/ghostTable.mjs +58 -11
  1102. package/utils/interval.js +5 -12
  1103. package/utils/interval.mjs +5 -12
  1104. package/utils/licenseBranding/badge.d.mts +1 -0
  1105. package/utils/licenseBranding/badge.d.ts +21 -0
  1106. package/utils/licenseBranding/badge.js +237 -0
  1107. package/utils/licenseBranding/badge.mjs +244 -0
  1108. package/utils/licenseBranding/content.d.mts +1 -0
  1109. package/utils/licenseBranding/content.d.ts +54 -0
  1110. package/utils/licenseBranding/content.js +93 -0
  1111. package/utils/licenseBranding/content.mjs +79 -0
  1112. package/utils/licenseBranding/index.d.mts +1 -0
  1113. package/utils/licenseBranding/index.d.ts +14 -0
  1114. package/utils/licenseBranding/index.js +55 -0
  1115. package/utils/licenseBranding/index.mjs +56 -0
  1116. package/utils/licenseBranding/lockScreen.d.mts +1 -0
  1117. package/utils/licenseBranding/lockScreen.d.ts +23 -0
  1118. package/utils/licenseBranding/lockScreen.js +150 -0
  1119. package/utils/licenseBranding/lockScreen.mjs +159 -0
  1120. package/utils/licenseNotification.d.ts +19 -0
  1121. package/utils/licenseNotification.js +56 -29
  1122. package/utils/licenseNotification.mjs +61 -29
  1123. package/utils/movableMeta.d.mts +1 -0
  1124. package/utils/movableMeta.d.ts +40 -0
  1125. package/utils/movableMeta.js +47 -0
  1126. package/utils/movableMeta.mjs +46 -0
  1127. package/utils/parseTable.js +1 -1
  1128. package/utils/parseTable.mjs +1 -1
  1129. package/utils/samplesGenerator.d.ts +41 -14
  1130. package/utils/samplesGenerator.js +112 -42
  1131. package/utils/samplesGenerator.mjs +112 -42
  1132. package/utils/stylesHandler.d.ts +13 -0
  1133. package/utils/stylesHandler.js +60 -14
  1134. package/utils/stylesHandler.mjs +60 -14
  1135. package/validators/autocompleteValidator/autocompleteValidator.js +3 -0
  1136. package/validators/autocompleteValidator/autocompleteValidator.mjs +3 -0
  1137. package/validators/index.d.ts +3 -2
  1138. package/validators/index.js +8 -0
  1139. package/validators/index.mjs +3 -1
  1140. package/validators/intlDatetimeValidator/index.d.mts +1 -0
  1141. package/validators/intlDatetimeValidator/index.d.ts +1 -0
  1142. package/validators/intlDatetimeValidator/index.js +25 -0
  1143. package/validators/intlDatetimeValidator/index.mjs +1 -0
  1144. package/validators/intlDatetimeValidator/intlDatetimeValidator.d.mts +1 -0
  1145. package/validators/intlDatetimeValidator/intlDatetimeValidator.d.ts +28 -0
  1146. package/validators/intlDatetimeValidator/intlDatetimeValidator.js +49 -0
  1147. package/validators/intlDatetimeValidator/intlDatetimeValidator.mjs +37 -0
  1148. package/3rdparty/walkontable/src/overlay/bottom.d.mts +0 -1
  1149. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.d.mts +0 -1
  1150. package/3rdparty/walkontable/src/overlay/inlineStart.d.mts +0 -1
  1151. package/3rdparty/walkontable/src/overlay/top.d.mts +0 -1
  1152. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.d.mts +0 -1
  1153. package/3rdparty/walkontable/src/overlays.d.ts +0 -329
  1154. package/3rdparty/walkontable/src/overlays.js +0 -870
  1155. package/3rdparty/walkontable/src/overlays.mjs +0 -860
  1156. package/3rdparty/walkontable/src/renderer/table.d.mts +0 -1
  1157. package/3rdparty/walkontable/src/renderer/table.js +0 -229
  1158. package/3rdparty/walkontable/src/settings.d.mts +0 -2
  1159. package/3rdparty/walkontable/src/settings.js +0 -196
  1160. package/3rdparty/walkontable/src/settings.mjs +0 -263
  1161. package/3rdparty/walkontable/src/table/bottom.d.mts +0 -2
  1162. package/3rdparty/walkontable/src/table/bottom.d.ts +0 -19
  1163. package/3rdparty/walkontable/src/table/bottom.js +0 -38
  1164. package/3rdparty/walkontable/src/table/bottom.mjs +0 -23
  1165. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.mts +0 -2
  1166. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.ts +0 -20
  1167. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +0 -24
  1168. package/3rdparty/walkontable/src/table/inlineStart.d.mts +0 -2
  1169. package/3rdparty/walkontable/src/table/inlineStart.d.ts +0 -16
  1170. package/3rdparty/walkontable/src/table/inlineStart.js +0 -35
  1171. package/3rdparty/walkontable/src/table/inlineStart.mjs +0 -20
  1172. package/3rdparty/walkontable/src/table/master.d.mts +0 -2
  1173. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.mts +0 -2
  1174. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.ts +0 -75
  1175. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -122
  1176. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -112
  1177. package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.mts +0 -2
  1178. package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.ts +0 -75
  1179. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -122
  1180. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -112
  1181. package/3rdparty/walkontable/src/table/top.d.mts +0 -2
  1182. package/3rdparty/walkontable/src/table/top.d.ts +0 -19
  1183. package/3rdparty/walkontable/src/table/top.js +0 -38
  1184. package/3rdparty/walkontable/src/table/top.mjs +0 -23
  1185. package/3rdparty/walkontable/src/table/topInlineStartCorner.d.mts +0 -2
  1186. package/3rdparty/walkontable/src/table/topInlineStartCorner.d.ts +0 -20
  1187. package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +0 -24
  1188. package/3rdparty/walkontable/src/table.d.mts +0 -2
  1189. package/3rdparty/walkontable/src/table.d.ts +0 -741
  1190. package/3rdparty/walkontable/src/table.js +0 -1120
  1191. package/3rdparty/walkontable/src/table.mjs +0 -1105
  1192. package/3rdparty/walkontable/src/utils/cellCoords.d.mts +0 -1
  1193. package/3rdparty/walkontable/src/utils/cellCoords.js +0 -54
  1194. package/3rdparty/walkontable/src/utils/cellCoords.mjs +0 -54
  1195. package/3rdparty/walkontable/src/utils/column.d.mts +0 -2
  1196. package/3rdparty/walkontable/src/utils/column.js +0 -75
  1197. package/3rdparty/walkontable/src/utils/column.mjs +0 -70
  1198. package/3rdparty/walkontable/src/utils/positionCache.d.mts +0 -1
  1199. package/3rdparty/walkontable/src/utils/positionCache.d.ts +0 -91
  1200. package/3rdparty/walkontable/src/utils/positionCache.js +0 -193
  1201. package/3rdparty/walkontable/src/utils/positionCache.mjs +0 -194
  1202. package/3rdparty/walkontable/src/utils/row.d.mts +0 -2
  1203. package/3rdparty/walkontable/src/utils/row.js +0 -46
  1204. package/3rdparty/walkontable/src/utils/row.mjs +0 -41
  1205. package/3rdparty/walkontable/src/viewport.d.ts +0 -254
  1206. package/3rdparty/walkontable/src/viewport.js +0 -533
  1207. package/3rdparty/walkontable/src/viewport.mjs +0 -523
  1208. /package/3rdparty/walkontable/src/{renderer → axisSizing/positionCache}/index.d.mts +0 -0
  1209. /package/3rdparty/walkontable/src/{overlays.d.mts → overlay/overlays.d.mts} +0 -0
  1210. /package/3rdparty/walkontable/src/overlay/{_base.d.mts → regions/_base.d.mts} +0 -0
  1211. /package/3rdparty/walkontable/src/{stickyScrollStrategy.d.mts → overlay/strategies/stickyScrollStrategy.d.mts} +0 -0
  1212. /package/3rdparty/walkontable/src/{renderer → render}/_base.d.mts +0 -0
  1213. /package/3rdparty/walkontable/src/{renderer → render}/_base.js +0 -0
  1214. /package/3rdparty/walkontable/src/{renderer → render}/_base.mjs +0 -0
  1215. /package/3rdparty/walkontable/src/{renderer → render}/cells.d.mts +0 -0
  1216. /package/3rdparty/walkontable/src/{renderer → render}/cells.d.ts +0 -0
  1217. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.mts +0 -0
  1218. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.ts +0 -0
  1219. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.js +0 -0
  1220. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.mjs +0 -0
  1221. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.mts +0 -0
  1222. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.ts +0 -0
  1223. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.js +0 -0
  1224. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.mjs +0 -0
  1225. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.mts +0 -0
  1226. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.mts +0 -0
  1227. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.ts +0 -0
  1228. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.js +0 -0
  1229. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.mjs +0 -0
  1230. /package/3rdparty/walkontable/src/{renderer → render}/rows.d.mts +0 -0
  1231. /package/3rdparty/walkontable/src/{renderer → render}/rows.d.ts +0 -0
  1232. /package/3rdparty/walkontable/src/{scroll.d.mts → scroll/scroll.d.mts} +0 -0
  1233. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.mts +0 -0
  1234. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.mts +0 -0
  1235. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.js +0 -0
  1236. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.mjs +0 -0
  1237. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.mts +0 -0
  1238. /package/3rdparty/walkontable/src/{viewport.d.mts → viewport/viewport.d.mts} +0 -0
@@ -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):
@@ -276,6 +290,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
276
290
  * - **Insert row above**
277
291
  * - **Insert row below**
278
292
  *
293
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
294
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
295
+ *
279
296
  * @memberof Options#
280
297
  * @type {boolean}
281
298
  * @default true
@@ -346,6 +363,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
346
363
  * Read more:
347
364
  * - [Context menu](@/guides/accessories-and-menus/context-menu/context-menu.md)
348
365
  *
366
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
367
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
368
+ *
349
369
  * @memberof Options#
350
370
  * @type {boolean}
351
371
  * @default true
@@ -398,6 +418,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
398
418
  * Read more:
399
419
  * - [Plugins: `AutoColumnSize`](@/api/autoColumnSize.md)
400
420
  *
421
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
422
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
423
+ *
401
424
  * @memberof Options#
402
425
  * @type {object|boolean}
403
426
  * @default undefined
@@ -432,15 +455,20 @@ import { isObjectEqual } from '../../helpers/object.mjs';
432
455
  *
433
456
  * If you set the `autoRowSize` option to an object, you can set the following [`AutoRowSize`](@/api/autoRowSize.md) plugin options:
434
457
  *
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`) |
458
+ * | Property | Possible values | Description |
459
+ * | ----------------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------- |
460
+ * | `syncLimit` | A number \| A percentage string | The number/percentage of rows to keep in sync<br>(default: `500`) |
461
+ * | `samplingRatio` | A number | The number of samples of the same length to be used in row height calculations |
462
+ * | `allowSampleDuplicates` | `true` \| `false` | When calculating row heights:<br>`true`: Allow duplicate samples<br>`false`: Don't allow duplicate samples |
438
463
  *
439
464
  * Using the [`rowHeights`](#rowHeights) option forcibly disables the [`AutoRowSize`](@/api/autoRowSize.md) plugin.
440
465
  *
441
466
  * Read more:
442
467
  * - [Plugins: `AutoRowSize`](@/api/autoRowSize.md)
443
468
  *
469
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
470
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
471
+ *
444
472
  * @memberof Options#
445
473
  * @type {object|boolean}
446
474
  * @default undefined
@@ -450,7 +478,11 @@ import { isObjectEqual } from '../../helpers/object.mjs';
450
478
  * ```js
451
479
  * autoRowSize: {
452
480
  * // keep 40% of rows in sync (the rest of rows: async)
453
- * syncLimit: '40%'
481
+ * syncLimit: '40%',
482
+ * // when calculating row heights, use 10 samples of the same length
483
+ * samplingRatio: 10,
484
+ * // when calculating row heights, allow duplicate samples
485
+ * allowSampleDuplicates: true
454
486
  * },
455
487
  * ```
456
488
  */ autoRowSize: undefined,
@@ -460,6 +492,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
460
492
  * | `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
493
  * | `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
494
  *
495
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
496
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
497
+ *
463
498
  * @memberof Options#
464
499
  * @type {boolean}
465
500
  * @default false
@@ -485,6 +520,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
485
520
  * \* The exact key depends on your [`layoutDirection`](#layoutdirection) configuration.<br>
486
521
  * \*\* Unless [`tabNavigation`](#tabnavigation) is set to `false`.
487
522
  *
523
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
524
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
525
+ *
488
526
  * @memberof Options#
489
527
  * @type {boolean}
490
528
  * @default false
@@ -539,9 +577,16 @@ import { isObjectEqual } from '../../helpers/object.mjs';
539
577
  * The `cell` option overwrites the [top-level grid options](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options),
540
578
  * and the [`columns`](#columns) options.
541
579
  *
580
+ * Each entry's `row` and `col` are **visual** indexes. This differs from the [`cells`](#cells)
581
+ * option, whose `row` and `column` are physical indexes.
582
+ *
542
583
  * Read more:
543
584
  * - [Configuration options: Setting cell options](@/guides/getting-started/configuration-options/configuration-options.md#set-cell-options)
544
585
  * - [`columns`](#columns)
586
+ * - [`cells`](#cells)
587
+ *
588
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
589
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
545
590
  *
546
591
  * @memberof Options#
547
592
  * @type {Array[]}
@@ -575,6 +620,12 @@ import { isObjectEqual } from '../../helpers/object.mjs';
575
620
  * | `column` | Yes | Number | A physical column index |
576
621
  * | `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
622
  *
623
+ * Inside a regular (non-arrow) `cells` function, `this` is the cell meta object. Its
624
+ * `this.instance` property is the Handsontable instance, so you can call core API methods
625
+ * such as `this.instance.toVisualRow(row)` or `this.instance.toVisualColumn(column)` (as in
626
+ * the example below). Arrow functions (`cells: () => {}`) do not bind `this`, so
627
+ * `this.instance` is not available inside them – use a regular or shorthand function instead.
628
+ *
578
629
  * Read more:
579
630
  * - [Configuration options: Implementing custom logic](@/guides/getting-started/configuration-options/configuration-options.md#implement-custom-logic)
580
631
  * - [Configuration options: Setting row options](@/guides/getting-started/configuration-options/configuration-options.md#set-row-options)
@@ -655,14 +706,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
655
706
  * ```
656
707
  */ checkedTemplate: undefined,
657
708
  /**
658
- * The `className` option lets you add CSS class names to every currently-selected element.
709
+ * The `className` option lets you add CSS class names to every cell that has this option set.
659
710
  *
660
711
  * You can set the `className` option to one of the following:
661
712
  *
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 |
713
+ * | Setting | Description |
714
+ * | ------------------- | --------------------------------------------------- |
715
+ * | A string | Add a single CSS class name to every matching cell |
716
+ * | An array of strings | Add multiple CSS class names to every matching cell |
666
717
  *
667
718
  * ::: tip
668
719
  * Don't change the `className` metadata of the [column summary](@/guides/columns/column-summary/column-summary.md) row.
@@ -691,12 +742,10 @@ import { isObjectEqual } from '../../helpers/object.mjs';
691
742
  *
692
743
  * @example
693
744
  * ```js
694
- * // add a `your-class-name` CSS class name
695
- * // to every currently-selected element
745
+ * // add a `your-class-name` CSS class name to every cell
696
746
  * className: 'your-class-name',
697
747
  *
698
- * // add `first-class-name` and `second-class-name` CSS class names
699
- * // to every currently-selected element
748
+ * // add `first-class-name` and `second-class-name` CSS class names to every cell
700
749
  * className: ['first-class-name', 'second-class-name'],
701
750
  * ```
702
751
  */ className: undefined,
@@ -712,8 +761,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
712
761
  * | An array | Define your own column headers (e.g. `['One', 'Two', 'Three', ...]`) |
713
762
  * | A function | Define your own column headers, using a function |
714
763
  *
764
+ * To set the header label of an individual column, use that column's [`title`](#title) option.
765
+ *
715
766
  * Read more:
716
767
  * - [Column header](@/guides/columns/column-header/column-header.md)
768
+ * - [`title`](#title)
769
+ *
770
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
771
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
717
772
  *
718
773
  * @memberof Options#
719
774
  * @type {boolean|string[]|Function}
@@ -756,6 +811,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
756
811
  *
757
812
  * Read more:
758
813
  * - [Plugins: `CollapsibleColumns`](@/api/collapsibleColumns.md)
814
+ * - [Column groups: Collapsible headers](@/guides/columns/column-groups/column-groups.md#collapsible-headers)
759
815
  * - [`nestedHeaders`](#nestedHeaders)
760
816
  *
761
817
  * @memberof Options#
@@ -786,6 +842,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
786
842
  * | A number | Set the same height for every column header |
787
843
  * | An array | Set different heights for individual column headers |
788
844
  *
845
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
846
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
847
+ *
789
848
  * @memberof Options#
790
849
  * @type {number|number[]}
791
850
  * @default undefined
@@ -819,6 +878,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
819
878
  * - [`maxCols`](#maxCols)
820
879
  * - [`data`](#data)
821
880
  *
881
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
882
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
883
+ *
822
884
  * @memberof Options#
823
885
  * @type {object[]|Function}
824
886
  * @default undefined
@@ -953,6 +1015,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
953
1015
  * - [Column summary](@/guides/columns/column-summary/column-summary.md)
954
1016
  * - [Plugins: `ColumnSummary`](@/api/columnSummary.md)
955
1017
  *
1018
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1019
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1020
+ *
956
1021
  * @memberof Options#
957
1022
  * @type {object[]|Function}
958
1023
  * @default undefined
@@ -1004,6 +1069,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1004
1069
  * - [Hooks: `modifyColWidth`](@/api/hooks.md#modifyColWidth)
1005
1070
  * - [`autoColumnSize`](#autoColumnSize)
1006
1071
  *
1072
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1073
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1074
+ *
1007
1075
  * @memberof Options#
1008
1076
  * @type {number|number[]|string|string[]|Array<undefined>|Function}
1009
1077
  * @default undefined
@@ -1087,6 +1155,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1087
1155
  * - [`readOnly`](#readOnly)
1088
1156
  * - [`commentedCellClassName`](#commentedCellClassName)
1089
1157
  *
1158
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1159
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1160
+ *
1090
1161
  * @memberof Options#
1091
1162
  * @type {boolean|object[]}
1092
1163
  * @default false
@@ -1132,6 +1203,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1132
1203
  * - [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
1204
  * - [Plugins: `ContextMenu`](@/api/contextMenu.md)
1134
1205
  *
1206
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1207
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1208
+ *
1135
1209
  * @memberof Options#
1136
1210
  * @type {boolean|string[]|object}
1137
1211
  * @default undefined
@@ -1251,6 +1325,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1251
1325
  * - [Plugins: `CopyPaste`](@/api/copyPaste.md)
1252
1326
  * - [Guides: Clipboard](@/guides/cell-features/clipboard/clipboard.md)
1253
1327
  *
1328
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1329
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1330
+ *
1254
1331
  * @memberof Options#
1255
1332
  * @type {object|boolean}
1256
1333
  * @default true
@@ -1305,6 +1382,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1305
1382
  * - [`TableClassName`](#TableClassName)
1306
1383
  * - [`className`](#className)
1307
1384
  *
1385
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1386
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1387
+ *
1308
1388
  * @memberof Options#
1309
1389
  * @type {string}
1310
1390
  * @default undefined
@@ -1332,6 +1412,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1332
1412
  * - [`TableClassName`](#TableClassName)
1333
1413
  * - [`className`](#className)
1334
1414
  *
1415
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1416
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1417
+ *
1335
1418
  * @memberof Options#
1336
1419
  * @type {string}
1337
1420
  * @default 'ht__highlight'
@@ -1360,6 +1443,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1360
1443
  * - [`TableClassName`](#TableClassName)
1361
1444
  * - [`className`](#className)
1362
1445
  *
1446
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1447
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1448
+ *
1363
1449
  * @memberof Options#
1364
1450
  * @type {string}
1365
1451
  * @default undefined
@@ -1414,6 +1500,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1414
1500
  * - [Layout direction](@/guides/internationalization/layout-direction/layout-direction.md)
1415
1501
  * - [`layoutDirection`](#layoutDirection)
1416
1502
  *
1503
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1504
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1505
+ *
1417
1506
  * @memberof Options#
1418
1507
  * @type {boolean|object[]}
1419
1508
  * @default false
@@ -1487,6 +1576,38 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1487
1576
  */ customBorders: false,
1488
1577
  /**
1489
1578
  * @description
1579
+ * The `customBordersProgressive` option controls how a large [`customBorders`](#customborders)
1580
+ * configuration is applied at initialization.
1581
+ *
1582
+ * By default (`false`), all custom borders are built synchronously before the first render, which
1583
+ * can block the initial paint when the configuration contains a very large number of borders.
1584
+ *
1585
+ * Set it to `true` to apply the borders in background batches after the grid has rendered: the
1586
+ * grid becomes interactive immediately and the borders fill in progressively. Pass an object to
1587
+ * tune the batch size, for example `{ chunkSize: 5000 }`.
1588
+ *
1589
+ * When enabled, [`getBorders()`](@/api/customBorders.md#getborders) and the borders' cell meta
1590
+ * are populated incrementally, so they may be incomplete until the
1591
+ * [`afterCustomBordersUpdate`](@/api/hooks.md#aftercustombordersupdate) hook fires.
1592
+ *
1593
+ * @since 18.1.0
1594
+ * @memberof Options#
1595
+ * @type {boolean|object}
1596
+ * @default false
1597
+ * @category CustomBorders
1598
+ *
1599
+ * @example
1600
+ * ```js
1601
+ * // apply a large custom-borders config in background batches
1602
+ * customBorders: [ / * ...many borders... * / ],
1603
+ * customBordersProgressive: true,
1604
+ *
1605
+ * // tune the batch size
1606
+ * customBordersProgressive: { chunkSize: 5000 },
1607
+ * ```
1608
+ */ customBordersProgressive: false,
1609
+ /**
1610
+ * @description
1490
1611
  * The `data` option sets the initial [data](@/guides/getting-started/binding-to-data/binding-to-data.md) of your Handsontable instance.
1491
1612
  *
1492
1613
  * 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 +1628,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1507
1628
  * - [`startRows`](#startRows)
1508
1629
  * - [`startCols`](#startCols)
1509
1630
  *
1631
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1632
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1633
+ *
1510
1634
  * @memberof Options#
1511
1635
  * @type {Array[]|object[]}
1512
1636
  * @default undefined
@@ -1545,6 +1669,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1545
1669
  * map cleanly to your backend. Pair with **`pagination`** for server-side paging.
1546
1670
  * Valid cell edits apply at once; if **`onRowsUpdate`** fails or **`beforeRowsMutation`** blocks the update, affected cells roll back.
1547
1671
  *
1672
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1673
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1674
+ *
1548
1675
  * @since 17.1.0
1549
1676
  * @memberof Options#
1550
1677
  * @type {object}
@@ -1582,6 +1709,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1582
1709
  *
1583
1710
  * The option only works when defined in the global table settings.
1584
1711
  *
1712
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1713
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1714
+ *
1585
1715
  * @since 14.4.0
1586
1716
  * @memberof Options#
1587
1717
  * @type {boolean}
@@ -1628,6 +1758,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1628
1758
  * - [Binding to data: Function data source and schema](@/guides/getting-started/binding-to-data/binding-to-data.md#function-data-source-and-schema)
1629
1759
  * - [`data`](#data)
1630
1760
  *
1761
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
1762
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
1763
+ *
1631
1764
  * @memberof Options#
1632
1765
  * @type {object|Function}
1633
1766
  * @default undefined
@@ -1660,6 +1793,11 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1660
1793
  * Source data must be in ISO 8601 date format (`YYYY-MM-DD`). Otherwise operations such
1661
1794
  * as sorting and filtering can be unstable or unpredictable. The `dateFormat` object affects only how dates are
1662
1795
  * displayed; the underlying value should remain ISO.
1796
+ *
1797
+ * Time-related options (`hour`, `minute`, `second`, `timeStyle`, `hour12`, `hourCycle`,
1798
+ * `fractionalSecondDigits`) only affect display and always render midnight (`00:00:00`) for
1799
+ * `date`/`intl-date` cells, because their source data is date-only. For editable date *and*
1800
+ * time values, use the [`intl-datetime` cell type](@/guides/cell-types/datetime-cell-type/datetime-cell-type.md).
1663
1801
  * :::
1664
1802
  *
1665
1803
  * **Style shortcuts:**
@@ -1790,6 +1928,53 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1790
1928
  minute: '2-digit'
1791
1929
  },
1792
1930
  /**
1931
+ * Configures the date-time format for `intl-datetime` cells using an
1932
+ * [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat)
1933
+ * options object. The locale is controlled separately via the [`locale`](@/api/options.md#locale) option.
1934
+ *
1935
+ * ::: tip Source data format
1936
+ * Source data must be in ISO 8601 date-time format (`YYYY-MM-DDTHH:mm:ss`; a date-only
1937
+ * `YYYY-MM-DD` value is treated as midnight). Otherwise operations such as sorting and filtering
1938
+ * can be unstable or unpredictable. The `dateTimeFormat` object affects only how values are
1939
+ * displayed; the underlying value should remain ISO.
1940
+ * :::
1941
+ *
1942
+ * For the full list of supported properties, see
1943
+ * [MDN: Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat).
1944
+ *
1945
+ * Read more:
1946
+ * - [Date-time cell type](@/guides/cell-types/datetime-cell-type/datetime-cell-type.md)
1947
+ * - [`locale`](@/api/options.md#locale)
1948
+ *
1949
+ * @since 18.1.0
1950
+ * @memberof Options#
1951
+ * @type {object}
1952
+ * @default { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }
1953
+ * @category Core
1954
+ *
1955
+ * @example
1956
+ * ```js
1957
+ * columns: [
1958
+ * {
1959
+ * type: 'intl-datetime',
1960
+ * locale: 'en-US',
1961
+ * dateTimeFormat: {
1962
+ * dateStyle: 'medium',
1963
+ * timeStyle: 'short'
1964
+ * }
1965
+ * }
1966
+ * ]
1967
+ * ```
1968
+ */ dateTimeFormat: {
1969
+ year: 'numeric',
1970
+ month: '2-digit',
1971
+ day: '2-digit',
1972
+ hour: '2-digit',
1973
+ minute: '2-digit',
1974
+ second: '2-digit',
1975
+ hour12: false
1976
+ },
1977
+ /**
1793
1978
  * The `defaultDate` option configures the date pre-selected in the date picker editor
1794
1979
  * when opening an empty [`date`](@/guides/cell-types/date-cell-type/date-cell-type.md) cell for editing.
1795
1980
  *
@@ -1839,9 +2024,6 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1839
2024
  * | `'header'` | - Show single-cell selection<br>- Show range selection<br>- Don't show header selection |
1840
2025
  * | An array | A combination of `'current'`, `'area'`, and/or `'header'` |
1841
2026
  *
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
2027
  * When set to any non-`false` value, the second-click deselect behavior
1846
2028
  * (Ctrl/Cmd+click on an already-selected cell removing it from a multi-cell selection)
1847
2029
  * is also skipped. Without visible feedback, toggling layers off can cause unexpected
@@ -1911,6 +2093,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
1911
2093
  * Read more:
1912
2094
  * - [Plugins: `Dialog`](@/api/dialog.md)
1913
2095
  *
2096
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2097
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2098
+ *
1914
2099
  * @since 16.1.0
1915
2100
  * @memberof Options#
1916
2101
  * @type {boolean|object}
@@ -2067,6 +2252,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2067
2252
  * Read more:
2068
2253
  * - [Plugins: `DragToScroll`](@/api/dragToScroll.md)
2069
2254
  *
2255
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2256
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2257
+ *
2070
2258
  * @memberof Options#
2071
2259
  * @type {boolean|object}
2072
2260
  * @default true
@@ -2174,10 +2362,18 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2174
2362
  * You'll still be able to change cells' content through Handsontable's API
2175
2363
  * or through plugins (e.g. [`CopyPaste`](@/api/copyPaste.md)), though.
2176
2364
  *
2365
+ * When the `editor` option is set to `false`, you can still use these keyboard shortcuts:
2366
+ *
2367
+ * | Shortcut | Action |
2368
+ * | --------------------------------------- | ----------------------------------------------------------- |
2369
+ * | `Delete` / `Backspace` | Clear the contents of the selected cells |
2370
+ * | `Ctrl` + `Enter` / `Cmd` + `Enter` | Fill selected cells with the value of the active cell |
2371
+ *
2177
2372
  * To set the [`editor`](#editor), [`renderer`](#renderer), and [`validator`](#validator)
2178
2373
  * options all at once, use the [`type`](#type) option.
2179
2374
  *
2180
2375
  * Read more:
2376
+ * - [Keyboard shortcuts](@/guides/navigation/keyboard-shortcuts/keyboard-shortcuts.md)
2181
2377
  * - [Cell editor](@/guides/cell-functions/cell-editor/cell-editor.md)
2182
2378
  * - [Cell type](@/guides/cell-types/cell-type/cell-type.md)
2183
2379
  * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration)
@@ -2250,6 +2446,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2250
2446
  * Read more:
2251
2447
  * - [Plugins: `EmptyDataState`](@/api/emptyDataState.md)
2252
2448
  *
2449
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2450
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2451
+ *
2253
2452
  * @since 16.2.0
2254
2453
  * @memberof Options#
2255
2454
  * @type {boolean|object}
@@ -2313,6 +2512,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2313
2512
  * Read more:
2314
2513
  * - [`enterMoves`](#enterMoves)
2315
2514
  *
2515
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2516
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2517
+ *
2316
2518
  * @memberof Options#
2317
2519
  * @type {boolean}
2318
2520
  * @default true
@@ -2370,6 +2572,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2370
2572
  * Read more:
2371
2573
  * - [`enterBeginsEditing`](#enterBeginsEditing)
2372
2574
  *
2575
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2576
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2577
+ *
2373
2578
  * @memberof Options#
2374
2579
  * @type {object|Function}
2375
2580
  * @default {col: 0, row: 1}
@@ -2451,6 +2656,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2451
2656
  * Read more:
2452
2657
  * - [AutoFill values](@/guides/cell-features/autofill-values/autofill-values.md)
2453
2658
  *
2659
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2660
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2661
+ *
2454
2662
  * @memberof Options#
2455
2663
  * @type {boolean|string|object}
2456
2664
  * @default true
@@ -2513,10 +2721,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2513
2721
  * // set the `type` of each cell in this column to `autocomplete`
2514
2722
  * type: 'autocomplete',
2515
2723
  * // 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
2724
+ * source: ['Apple', 'Apricot', 'Avocado', 'Banana', 'Blueberry'],
2725
+ * // when the end user types in `a`, display options that contain `a`
2726
+ * // when the end user types in `ap`, display only `Apple` and `Apricot`
2520
2727
  * filter: true
2521
2728
  * }],
2522
2729
  * ```
@@ -2584,6 +2791,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2584
2791
  * - [Plugins: `Filters`](@/api/filters.md)
2585
2792
  * - [`dropdownMenu`](#dropdownMenu)
2586
2793
  *
2794
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2795
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2796
+ *
2587
2797
  * @memberof Options#
2588
2798
  * @type {boolean}
2589
2799
  * @default undefined
@@ -2623,6 +2833,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2623
2833
  * Read more:
2624
2834
  * - [`fixedColumnsStart`](#fixedcolumnsstart)
2625
2835
  *
2836
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2837
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2838
+ *
2626
2839
  * @memberof Options#
2627
2840
  * @type {number}
2628
2841
  * @default 0
@@ -2645,6 +2858,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2645
2858
  * - [`fixedColumnsLeft`](#fixedcolumnsleft)
2646
2859
  * - [`layoutDirection`](#layoutDirection)
2647
2860
  *
2861
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2862
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2863
+ *
2648
2864
  * @memberof Options#
2649
2865
  * @type {number}
2650
2866
  * @default 0
@@ -2685,6 +2901,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2685
2901
  * - [Row freezing](@/guides/rows/row-freezing/row-freezing.md)
2686
2902
  * - [`height`](#height)
2687
2903
  *
2904
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2905
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2906
+ *
2688
2907
  * @memberof Options#
2689
2908
  * @type {number}
2690
2909
  * @default 0
@@ -2709,6 +2928,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2709
2928
  * - [Row freezing](@/guides/rows/row-freezing/row-freezing.md)
2710
2929
  * - [`height`](#height)
2711
2930
  *
2931
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2932
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2933
+ *
2712
2934
  * @memberof Options#
2713
2935
  * @type {number}
2714
2936
  * @default 0
@@ -2734,6 +2956,17 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2734
2956
  * | `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
2957
  * | `sheetId` | A number |
2736
2958
  * | `sheetName` | A string |
2959
+ * | `language` | A [HyperFormula language pack](https://handsontable.github.io/hyperformula/guide/localizing-functions.html), imported from `hyperformula/es/i18n/languages` |
2960
+ * | `hyperlinks` | `true` \|<br>`false` (default) |
2961
+ *
2962
+ * Set `hyperlinks` to `true` to render a cell whose formula is `HYPERLINK()` as a link. The cell
2963
+ * keeps its own renderer, and the link label is the value the formula returns. Only a cell whose
2964
+ * root expression is `HYPERLINK()` becomes a link, so a nested call such as
2965
+ * `=CONCATENATE("see ", HYPERLINK("https://example.com"))` renders as plain text.
2966
+ *
2967
+ * A link is created only for the `http`, `https`, `mailto` and `tel` schemes. Any other scheme,
2968
+ * `javascript:` included, renders the label as plain text instead. Press
2969
+ * <kbd>**Alt**</kbd>+<kbd>**Enter**</kbd> to open the link of the selected cell.
2737
2970
  *
2738
2971
  * Read more:
2739
2972
  * - [Plugins: `Formulas`](@/api/formulas.md)
@@ -2741,6 +2974,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2741
2974
  * - [HyperFormula documentation: Client-side installation](https://handsontable.github.io/hyperformula/guide/client-side-installation)
2742
2975
  * - [HyperFormula documentation: Configuration options](https://handsontable.github.io/hyperformula/api/interfaces/configparams.html)
2743
2976
  *
2977
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
2978
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
2979
+ *
2744
2980
  * @memberof Options#
2745
2981
  * @type {object}
2746
2982
  * @default undefined
@@ -2756,6 +2992,12 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2756
2992
  * sheetName: 'Sheet 1'
2757
2993
  * }
2758
2994
  *
2995
+ * // or, render `HYPERLINK()` formulas as links
2996
+ * formulas: {
2997
+ * engine: HyperFormula,
2998
+ * hyperlinks: true
2999
+ * }
3000
+ *
2759
3001
  * // or, add a HyperFormula instance
2760
3002
  * // initialized with the `'internal-use-in-handsontable'` license key
2761
3003
  * const hyperformulaInstance = HyperFormula.buildEmpty({
@@ -2796,6 +3038,22 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2796
3038
  * sheetId: 1,
2797
3039
  * sheetName: 'Sheet 1'
2798
3040
  * }
3041
+ *
3042
+ * // set a language pack for the built-in function names and formula syntax
3043
+ * import plPL from 'hyperformula/es/i18n/languages/plPL';
3044
+ *
3045
+ * formulas: {
3046
+ * engine: HyperFormula,
3047
+ * sheetName: 'Sheet 1',
3048
+ * language: plPL
3049
+ * }
3050
+ *
3051
+ * // update the language at runtime
3052
+ * hot.updateSettings({
3053
+ * formulas: {
3054
+ * language: plPL
3055
+ * }
3056
+ * });
2799
3057
  * ```
2800
3058
  */ formulas: undefined,
2801
3059
  /**
@@ -2809,6 +3067,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2809
3067
  * | `true` | Enable text selection in multiple cells at a time |
2810
3068
  * | `'cell'` | Enable text selection in one cell at a time |
2811
3069
  *
3070
+ * With `fragmentSelection: true`, copying text across multiple cells requires a
3071
+ * [`selectionMode`](@/api/options.md#selectionmode) that allows selecting more than one cell.
3072
+ * When [`selectionMode`](@/api/options.md#selectionmode) is set to `'single'`, copying is
3073
+ * limited to a single cell.
3074
+ *
3075
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3076
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3077
+ *
2812
3078
  * @memberof Options#
2813
3079
  * @type {boolean|string}
2814
3080
  * @default false
@@ -2948,6 +3214,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2948
3214
  * Read more:
2949
3215
  * - [Grid size](@/guides/getting-started/grid-size/grid-size.md)
2950
3216
  *
3217
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3218
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3219
+ *
2951
3220
  * @memberof Options#
2952
3221
  * @type {number|'auto'|string|Function}
2953
3222
  * @default undefined
@@ -2993,6 +3262,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
2993
3262
  * - [Plugins: `HiddenColumns`](@/api/hiddenColumns.md)
2994
3263
  * - [Column hiding](@/guides/columns/column-hiding/column-hiding.md)
2995
3264
  *
3265
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3266
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3267
+ *
2996
3268
  * @memberof Options#
2997
3269
  * @type {boolean|object}
2998
3270
  * @default undefined
@@ -3037,6 +3309,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3037
3309
  * - [Plugins: `HiddenRows`](@/api/hiddenRows.md)
3038
3310
  * - [Row hiding](@/guides/rows/row-hiding/row-hiding.md)
3039
3311
  *
3312
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3313
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3314
+ *
3040
3315
  * @memberof Options#
3041
3316
  * @type {boolean|object}
3042
3317
  * @default undefined
@@ -3065,6 +3340,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3065
3340
  * Note: The `initialState` option is ignored when passed to the
3066
3341
  * [`updateSettings()`](@/api/core.md#updatesettings) method.
3067
3342
  *
3343
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3344
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3345
+ *
3068
3346
  * @since 16.1.0
3069
3347
  * @memberof Options#
3070
3348
  * @type {object | undefined}
@@ -3113,6 +3391,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3113
3391
  *
3114
3392
  * Enabling this option can make a negative impact on how some screen readers handle reading the table cells.
3115
3393
  *
3394
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3395
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3396
+ *
3116
3397
  * @since 14.0.0
3117
3398
  * @memberof Options#
3118
3399
  * @type {boolean}
@@ -3320,6 +3601,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3320
3601
  * - [`fixedColumnsStart`](#fixedcolumnsstart)
3321
3602
  * - [`customBorders`](#customBorders)
3322
3603
  *
3604
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3605
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3606
+ *
3323
3607
  * @memberof Options#
3324
3608
  * @type {string}
3325
3609
  * @default 'inherit'
@@ -3348,6 +3632,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3348
3632
  * modal layer, such as the dialog) are not orderable through this option. The license
3349
3633
  * notification is not orderable either; it always renders last in the `bottom` slot.
3350
3634
  *
3635
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3636
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3637
+ *
3351
3638
  * @since 18.0.0
3352
3639
  * @memberof Options#
3353
3640
  * @type {object}
@@ -3370,11 +3657,15 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3370
3657
  * | Setting | Description |
3371
3658
  * | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
3372
3659
  * | 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) |
3660
+ * | 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
3661
  * | `'non-commercial-and-evaluation'` | For [non-commercial use](@/guides/technical-specification/software-license/software-license.md#non-commercial-use) |
3374
3662
  *
3375
3663
  * Read more:
3376
3664
  * - [License key](@/guides/getting-started/license-key/license-key.md)
3377
3665
  *
3666
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3667
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3668
+ *
3378
3669
  * @memberof Options#
3379
3670
  * @type {string}
3380
3671
  * @default undefined
@@ -3382,9 +3673,13 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3382
3673
  *
3383
3674
  * @example
3384
3675
  * ```js
3385
- * // for commercial use
3676
+ * // for commercial use (legacy 25-character format)
3386
3677
  * licenseKey: 'xxxxx-xxxxx-xxxxx-xxxxx-xxxxx', // your commercial license key
3387
3678
  *
3679
+ * // for an entitlement license key (trial, subscription, or perpetual),
3680
+ * // pass the whole key string exactly as you received it
3681
+ * licenseKey: 'This is a Handsontable license key for Acme Corp, ... [eyJwcm9kdWN0cyI6...3a4f8361]',
3682
+ *
3388
3683
  * // for non-commercial use
3389
3684
  * licenseKey: 'non-commercial-and-evaluation',
3390
3685
  * ```
@@ -3448,6 +3743,10 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3448
3743
  *
3449
3744
  * Read more:
3450
3745
  * - [Plugins: `Loading`](@/api/loading.md)
3746
+ *
3747
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3748
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3749
+ *
3451
3750
  * @since 16.1.0
3452
3751
  * @memberof Options#
3453
3752
  * @type {boolean|object}
@@ -3489,6 +3788,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3489
3788
  * Read more:
3490
3789
  * - [Plugins: `Notification`](@/api/notification.md)
3491
3790
  *
3791
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3792
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3793
+ *
3492
3794
  * @since 17.1.0
3493
3795
  * @memberof Options#
3494
3796
  * @type {boolean|object}
@@ -3513,6 +3815,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3513
3815
  * Read more:
3514
3816
  * - [Column freezing](@/guides/columns/column-freezing/column-freezing.md#user-triggered-freeze)
3515
3817
  *
3818
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3819
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3820
+ *
3516
3821
  * @memberof Options#
3517
3822
  * @type {boolean}
3518
3823
  * @default undefined
@@ -3538,6 +3843,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3538
3843
  * Read more:
3539
3844
  * - [Column moving](@/guides/columns/column-moving/column-moving.md)
3540
3845
  *
3846
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3847
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3848
+ *
3541
3849
  * @memberof Options#
3542
3850
  * @type {boolean|number[]}
3543
3851
  * @default undefined
@@ -3569,6 +3877,13 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3569
3877
  *
3570
3878
  * Read more:
3571
3879
  * - [Column width: Column stretching](@/guides/columns/column-width/column-width.md#column-stretching)
3880
+ * - [Column width: Column stretching and manual resizing](@/guides/columns/column-width/column-width.md#column-stretching-and-manual-resizing)
3881
+ *
3882
+ * When you set initial widths through the array form, those columns are excluded from
3883
+ * [`stretchH`](#stretchh) redistribution. Only the columns without a pre-defined width are stretched.
3884
+ *
3885
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3886
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3572
3887
  *
3573
3888
  * @memberof Options#
3574
3889
  * @type {boolean|number[]}
@@ -3602,6 +3917,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3602
3917
  * Read more:
3603
3918
  * - [Row moving](@/guides/rows/row-moving/row-moving.md)
3604
3919
  *
3920
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3921
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3922
+ *
3605
3923
  * @memberof Options#
3606
3924
  * @type {boolean|number[]}
3607
3925
  * @default undefined
@@ -3634,6 +3952,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3634
3952
  * Read more:
3635
3953
  * - [Row height: Adjust the row height manually](@/guides/rows/row-height/row-height.md#adjust-the-row-height-manually)
3636
3954
  *
3955
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3956
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3957
+ *
3637
3958
  * @memberof Options#
3638
3959
  * @type {boolean|number[]}
3639
3960
  * @default undefined
@@ -3659,6 +3980,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3659
3980
  * Handsontable trims columns from the right.
3660
3981
  * - At runtime: for example, when inserting columns.
3661
3982
  *
3983
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
3984
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
3985
+ *
3662
3986
  * @memberof Options#
3663
3987
  * @type {number}
3664
3988
  * @default Infinity
@@ -3678,6 +4002,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3678
4002
  * Handsontable trims rows from the bottom.
3679
4003
  * - At runtime: for example, when inserting rows.
3680
4004
  *
4005
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4006
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4007
+ *
3681
4008
  * @memberof Options#
3682
4009
  * @type {number}
3683
4010
  * @default Infinity
@@ -3727,8 +4054,8 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3727
4054
  *
3728
4055
  * | Property | Description |
3729
4056
  * | --------- | ---------------------------------------------------------- |
3730
- * | `row` | The row index of the merged section's beginning |
3731
- * | `col` | The column index of the merged section's beginning |
4057
+ * | `row` | The visual row index of the merged section's beginning |
4058
+ * | `col` | The visual column index of the merged section's beginning |
3732
4059
  * | `rowspan` | The width (as a number of rows) of the merged section |
3733
4060
  * | `colspan` | The height (as a number of columns ) of the merged section |
3734
4061
  *
@@ -3789,6 +4116,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3789
4116
  * - The [`dataSchema`](#dataSchema) option
3790
4117
  * - The [`columns`](#columns) option
3791
4118
  *
4119
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4120
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4121
+ *
3792
4122
  * @memberof Options#
3793
4123
  * @type {number}
3794
4124
  * @default 0
@@ -3805,6 +4135,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3805
4135
  *
3806
4136
  * See the [`rowHeights`](#rowHeights) option description for more information.
3807
4137
  *
4138
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4139
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4140
+ *
3808
4141
  * @since 16.2.0
3809
4142
  * @memberof Options#
3810
4143
  * @type {number|number[]|string|string[]|Array<undefined>|Function}
@@ -3838,6 +4171,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3838
4171
  * Handsontable adds empty rows at the bottom.
3839
4172
  * - At runtime: for example, when removing rows.
3840
4173
  *
4174
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4175
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4176
+ *
3841
4177
  * @memberof Options#
3842
4178
  * @type {number}
3843
4179
  * @default 0
@@ -3865,6 +4201,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3865
4201
  * - The [`dataSchema`](#dataSchema) option
3866
4202
  * - The [`columns`](#columns) option
3867
4203
  *
4204
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4205
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4206
+ *
3868
4207
  * @memberof Options#
3869
4208
  * @type {number}
3870
4209
  * @default 0
@@ -3885,6 +4224,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3885
4224
  *
3886
4225
  * The total number of rows can't exceed the [`maxRows`](#maxRows) value.
3887
4226
  *
4227
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4228
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4229
+ *
3888
4230
  * @memberof Options#
3889
4231
  * @type {number}
3890
4232
  * @default 0
@@ -3971,6 +4313,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3971
4313
  /**
3972
4314
  * 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
4315
  *
4316
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4317
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4318
+ *
3974
4319
  * @since 14.0.0
3975
4320
  * @memberof Options#
3976
4321
  * @type {boolean}
@@ -3992,6 +4337,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
3992
4337
  * no more captures that shortcuts to make the grid navigation available (`tabNavigation: true`)
3993
4338
  * but returns control to the browser so the native page navigation is possible.
3994
4339
  *
4340
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4341
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4342
+ *
3995
4343
  * @since 14.0.0
3996
4344
  * @memberof Options#
3997
4345
  * @type {boolean}
@@ -4038,6 +4386,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4038
4386
  * | `rowspan` | `number` | The number of header rows the header spans (an integer greater than `1`). |
4039
4387
  * | `headerClassName` | `string` | One or more space-separated CSS class names added to the header element (for example, `'htRight'`). |
4040
4388
  * | `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. |
4389
+ * | `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
4390
  *
4042
4391
  * ::: tip
4043
4392
  * A header group is made collapsible through the [`collapsibleColumns`](#collapsibleColumns) option, not through
@@ -4055,6 +4404,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4055
4404
  * - [Column groups: Nested headers](@/guides/columns/column-groups/column-groups.md#nested-headers)
4056
4405
  * - [Column groups: Choose which columns stay visible when collapsed](@/guides/columns/column-groups/column-groups.md#choose-which-columns-stay-visible-when-collapsed)
4057
4406
  *
4407
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4408
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4409
+ *
4058
4410
  * @memberof Options#
4059
4411
  * @type {boolean|Array[]}
4060
4412
  * @default undefined
@@ -4092,6 +4444,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4092
4444
  * Read more:
4093
4445
  * - [Plugins: `NestedRows`](@/guides/rows/row-parent-child/row-parent-child.md)
4094
4446
  *
4447
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4448
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4449
+ *
4095
4450
  * @example
4096
4451
  * ```js
4097
4452
  * // enable the `NestedRows` plugin
@@ -4223,6 +4578,47 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4223
4578
  * ```
4224
4579
  */ numericFormat: undefined,
4225
4580
  /**
4581
+ * Controls whether a [`numeric`](@/guides/cell-types/numeric-cell-type/numeric-cell-type.md)
4582
+ * cell keeps the exact text you typed when converting it to a JavaScript number would lose
4583
+ * information.
4584
+ *
4585
+ * By default (`false`), a numeric cell always stores the parsed JavaScript number, so a value
4586
+ * like `9.0` is stored as `9` and the editor shows `9` the next time you open it. Numbers whose
4587
+ * magnitude exceeds the safe-integer limit (`9007199254740991`) also lose precision.
4588
+ *
4589
+ * When set to `true`, and only when parsing would be lossy, the cell keeps the original literal
4590
+ * string instead of the number. This preserves trailing decimal zeros (`9.0`, `9.50`) and the
4591
+ * full precision of large numbers in the cell editor, matching spreadsheet software. Values
4592
+ * that convert without loss (for example `9`, `9.5`, `1000`) are still stored as numbers, so
4593
+ * sorting, filtering, and formula calculations are unaffected. A preserved literal also keeps
4594
+ * behaving like a number in those features: column sorting and filter conditions compare it
4595
+ * numerically, and the [`Formulas`](@/api/formulas.md) engine parses the literal as a number,
4596
+ * so functions such as `SUM` still include the cell. The cell renderer still formats
4597
+ * the value according to [`numericFormat`](@/api/options.md#numericformat); only the editor
4598
+ * shows the preserved literal. One exception: the filter menu's "Filter by value" checkbox
4599
+ * list compares values strictly, so a preserved literal (`'9.0'`) and its plain number (`9`)
4600
+ * appear as two separate entries.
4601
+ *
4602
+ * The default is `false` so existing configurations keep their current behavior.
4603
+ *
4604
+ * @memberof Options#
4605
+ * @since 18.1.0
4606
+ * @type {boolean}
4607
+ * @default false
4608
+ * @category Core
4609
+ *
4610
+ * @example
4611
+ * ```js
4612
+ * columns: [
4613
+ * {
4614
+ * type: 'numeric',
4615
+ * // keep `9.0` and very large numbers as typed in the editor
4616
+ * preserveNumericLiteral: true,
4617
+ * }
4618
+ * ],
4619
+ * ```
4620
+ */ preserveNumericLiteral: false,
4621
+ /**
4226
4622
  * If the `observeDOMVisibility` option is set to `true`,
4227
4623
  * Handsontable rerenders every time it detects that the grid was made visible in the DOM.
4228
4624
  *
@@ -4231,6 +4627,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4231
4627
  * Handsontable automatically triggers a rerender to ensure correct layout and dimensions.
4232
4628
  * Set this option to `false` if you want to control rendering manually (e.g. by calling `render()` yourself).
4233
4629
  *
4630
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4631
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4632
+ *
4234
4633
  * @memberof Options#
4235
4634
  * @type {boolean}
4236
4635
  * @default true
@@ -4254,6 +4653,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4254
4653
  * | `false` | On a mouse click outside of the grid, keep the current [selection](@/guides/cell-features/selection/selection.md) |
4255
4654
  * | A function | A function that takes the click event target and returns a boolean |
4256
4655
  *
4656
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4657
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4658
+ *
4257
4659
  * @memberof Options#
4258
4660
  * @type {boolean|Function}
4259
4661
  * @default true
@@ -4307,6 +4709,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4307
4709
  * - [Rows pagination](@/guides/rows/rows-pagination/rows-pagination.md)
4308
4710
  * - [Plugins: `Pagination`](@/api/pagination.md)
4309
4711
  *
4712
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4713
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4714
+ *
4310
4715
  * @since 16.1.0
4311
4716
  * @memberof Options#
4312
4717
  * @type {boolean}
@@ -4400,6 +4805,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4400
4805
  * | `'horizontal'` | Prevent horizontal overflowing |
4401
4806
  * | `'vertical'` | Prevent vertical overflowing |
4402
4807
  *
4808
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4809
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4810
+ *
4403
4811
  * @memberof Options#
4404
4812
  * @type {string|boolean}
4405
4813
  * @default false
@@ -4436,9 +4844,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4436
4844
  */ preventWheel: false,
4437
4845
  /**
4438
4846
  * @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:
4847
+ * The `readOnly` option determines whether a [cell](@/guides/cell-features/read-only-cells/read-only-cells.md#make-specific-cells-read-only),
4848
+ * [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)
4849
+ * 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
4850
  *
4443
4851
  * | Setting | Description |
4444
4852
  * | ----------------- | ------------------------------------------------------------------------------------------------------------------------- |
@@ -4448,7 +4856,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4448
4856
  * `readOnly` cells can't be changed by the [`populateFromArray()`](@/api/core.md#populatefromarray) method.
4449
4857
  *
4450
4858
  * Read more:
4451
- * - [Disabled cells](@/guides/cell-features/disabled-cells/disabled-cells.md)
4859
+ * - [Read-only cells](@/guides/cell-features/read-only-cells/read-only-cells.md)
4452
4860
  * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration)
4453
4861
  *
4454
4862
  * @memberof Options#
@@ -4526,6 +4934,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4526
4934
  * Read more:
4527
4935
  * - [Row virtualization](@/guides/rows/row-virtualization/row-virtualization.md)
4528
4936
  *
4937
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4938
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4939
+ *
4529
4940
  * @memberof Options#
4530
4941
  * @type {boolean}
4531
4942
  * @default false
@@ -4552,6 +4963,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4552
4963
  * Read more:
4553
4964
  * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
4554
4965
  *
4966
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
4967
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
4968
+ *
4555
4969
  * @since 14.1.0
4556
4970
  * @memberof Options#
4557
4971
  * @type {boolean}
@@ -4798,6 +5212,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4798
5212
  * Read more:
4799
5213
  * - [Row header](@/guides/rows/row-header/row-header.md)
4800
5214
  *
5215
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5216
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5217
+ *
4801
5218
  * @memberof Options#
4802
5219
  * @type {boolean|string[]|Function}
4803
5220
  * @default undefined
@@ -4828,6 +5245,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4828
5245
  * | A number | Set the same width for every row header |
4829
5246
  * | An array | Set different widths for individual row headers |
4830
5247
  *
5248
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5249
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5250
+ *
4831
5251
  * @memberof Options#
4832
5252
  * @type {number|number[]}
4833
5253
  * @default undefined
@@ -4862,6 +5282,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4862
5282
  * Read more:
4863
5283
  * - [Row height](@/guides/rows/row-height/row-height.md)
4864
5284
  *
5285
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5286
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5287
+ *
4865
5288
  * @memberof Options#
4866
5289
  * @type {number|number[]|string|string[]|Array<undefined>|Function}
4867
5290
  * @default undefined
@@ -4993,9 +5416,15 @@ import { isObjectEqual } from '../../helpers/object.mjs';
4993
5416
  * | `'range'` | Allow the user to select one range of cells at a time. |
4994
5417
  * | `'multiple'` | Allow the user to select multiple ranges of cells at a time. |
4995
5418
  *
5419
+ * When `selectionMode` is set to `'single'`, copying with
5420
+ * [`fragmentSelection`](@/api/options.md#fragmentselection) enabled is limited to a single cell.
5421
+ *
4996
5422
  * Read more:
4997
5423
  * - [Selection: Selecting ranges](@/guides/cell-features/selection/selection.md#select-ranges)
4998
5424
  *
5425
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5426
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5427
+ *
4999
5428
  * @memberof Options#
5000
5429
  * @type {string}
5001
5430
  * @default 'multiple'
@@ -5014,6 +5443,61 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5014
5443
  * ```
5015
5444
  */ selectionMode: 'multiple',
5016
5445
  /**
5446
+ * The `selectionHandles` option enables draggable handles on the edges of a
5447
+ * [selection](@/guides/cell-features/selection/selection.md). When enabled, hovering over a
5448
+ * selected range shows a pill-shaped handle at the midpoint of each edge; dragging a handle
5449
+ * resizes that edge of the selection. This adjusts the selected area only – it does not move,
5450
+ * fill, or change any cell data.
5451
+ *
5452
+ * Handles are shown on desktop only and are hidden on any edge that is flush with the grid
5453
+ * boundary -- or that lands on a frozen-pane line ([`fixedRowsTop`](#fixedrowstop),
5454
+ * [`fixedRowsBottom`](#fixedrowsbottom), [`fixedColumnsStart`](#fixedcolumnsstart)). The option
5455
+ * has no effect when [`selectionMode`](#selectionmode) is `'single'`.
5456
+ *
5457
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5458
+ *
5459
+ * @since 18.1.0
5460
+ * @memberof Options#
5461
+ * @type {boolean}
5462
+ * @default false
5463
+ * @category Core
5464
+ *
5465
+ * @example
5466
+ * ```js
5467
+ * // enable draggable selection-edge handles
5468
+ * selectionHandles: true,
5469
+ * ```
5470
+ */ selectionHandles: false,
5471
+ /**
5472
+ * The `moveCells` option lets you move a [selection](@/guides/cell-features/selection/selection.md) by
5473
+ * dragging its edge. When enabled, hovering the border of a selected cell range shows a grab cursor;
5474
+ * dragging the border moves the block's data (values, the [`className`](#classname) cell meta, and – with the
5475
+ * [`formulas`](@/api/options.md#formulas) plugin – adjusted formula references) to the new location.
5476
+ * Other cell meta (for example [`numericFormat`](#numericformat) or [`readOnly`](#readonly)) stays at the
5477
+ * source cells.
5478
+ * Hold <kbd>Ctrl</kbd>/<kbd>Cmd</kbd> during the drag to copy instead of move.
5479
+ *
5480
+ * The move applies to a single contiguous cell range only. It has no effect on full-row, full-column,
5481
+ * select-all, or multiple selections, the range may span at most 100,000 cells, and the source and
5482
+ * target must stay within the grid. Neither the target nor
5483
+ * the source may overlap read-only cells, because a move has to clear the source — a copy leaves the
5484
+ * source in place, so a read-only source cell blocks a move but not a copy.
5485
+ *
5486
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5487
+ *
5488
+ * @since 18.1.0
5489
+ * @memberof Options#
5490
+ * @type {boolean}
5491
+ * @default false
5492
+ * @category Core
5493
+ *
5494
+ * @example
5495
+ * ```js
5496
+ * // enable drag-to-move for selections
5497
+ * moveCells: true,
5498
+ * ```
5499
+ */ moveCells: false,
5500
+ /**
5017
5501
  * 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
5502
  *
5019
5503
  * You can set the `selectOptions` option to one of the following:
@@ -5266,6 +5750,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5266
5750
  * `startCols` and `minSpareCols`.
5267
5751
  * :::
5268
5752
  *
5753
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5754
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5755
+ *
5269
5756
  * @memberof Options#
5270
5757
  * @type {number}
5271
5758
  * @default 5
@@ -5289,6 +5776,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5289
5776
  * `startRows` and `minSpareRows`.
5290
5777
  * :::
5291
5778
  *
5779
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5780
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5781
+ *
5292
5782
  * @memberof Options#
5293
5783
  * @type {number}
5294
5784
  * @default 5
@@ -5315,6 +5805,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5315
5805
  *
5316
5806
  * Read more:
5317
5807
  * - [Column width: Column stretching](@/guides/columns/column-width/column-width.md#column-stretching)
5808
+ * - [Column width: Column stretching and manual resizing](@/guides/columns/column-width/column-width.md#column-stretching-and-manual-resizing)
5809
+ *
5810
+ * When used with [`manualColumnResize`](#manualcolumnresize), columns that have a width set
5811
+ * through pre-defined manual sizes are excluded from stretching. Only the remaining columns
5812
+ * are stretched to fill the container.
5813
+ *
5814
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5815
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5318
5816
  *
5319
5817
  * @memberof Options#
5320
5818
  * @type {string}
@@ -5387,6 +5885,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5387
5885
  * - [`commentedCellClassName`](#commentedCellClassName)
5388
5886
  * - [`className`](#className)
5389
5887
  *
5888
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5889
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5890
+ *
5390
5891
  * @memberof Options#
5391
5892
  * @type {string|string[]}
5392
5893
  * @default undefined
@@ -5439,6 +5940,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5439
5940
  * Read more:
5440
5941
  * - [Themes](@/guides/styling/themes/themes.md)
5441
5942
  *
5943
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5944
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5945
+ *
5442
5946
  * @memberof Options#
5443
5947
  * @type {string|undefined}
5444
5948
  * @default undefined
@@ -5474,6 +5978,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5474
5978
  * - [Themes](@/guides/styling/themes/themes.md)
5475
5979
  * - [`themeName`](#themeName)
5476
5980
  *
5981
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
5982
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
5983
+ *
5477
5984
  * @memberof Options#
5478
5985
  * @type {ThemeBuilder|string|undefined}
5479
5986
  * @default undefined
@@ -5517,6 +6024,108 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5517
6024
  * ```
5518
6025
  */ theme: undefined,
5519
6026
  /**
6027
+ * The `colorScheme` option sets the color scheme of the grid without declaring a theme.
6028
+ *
6029
+ * You can set it to one of the following:
6030
+ *
6031
+ * | Setting | Description |
6032
+ * | --------------------- | --------------------------------------------------------------- |
6033
+ * | `undefined` (default) | Use the color scheme of the current theme |
6034
+ * | `'light'` | Always render the light color scheme |
6035
+ * | `'dark'` | Always render the dark color scheme |
6036
+ * | `'auto'` | Follow the color scheme of the operating system |
6037
+ *
6038
+ * The option is a per-instance override. It applies on top of the current theme, so the theme
6039
+ * itself stays unchanged and other grids that use the same theme keep their own color scheme.
6040
+ * You can change it at runtime with [`updateSettings()`](@/api/core.md#updatesettings).
6041
+ *
6042
+ * The option requires the theme engine, so it has no effect when the theme comes from a CSS
6043
+ * class name (the [`theme`](#theme) option set to a string, or an `ht-theme-*` class on the
6044
+ * container element). In that case, use the theme's dark class name instead.
6045
+ *
6046
+ * An unsupported value is ignored with a console warning rather than throwing.
6047
+ *
6048
+ * Read more:
6049
+ * - [Themes](@/guides/styling/themes/themes.md)
6050
+ * - [`density`](#density)
6051
+ * - [`theme`](#theme)
6052
+ *
6053
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6054
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6055
+ *
6056
+ * @memberof Options#
6057
+ * @type {string|undefined}
6058
+ * @default undefined
6059
+ * @category Core
6060
+ * @since 18.1.0
6061
+ *
6062
+ * @example
6063
+ * ```js
6064
+ * // Render the grid in dark mode, without declaring a theme
6065
+ * const hot = new Handsontable(container, {
6066
+ * colorScheme: 'dark',
6067
+ * });
6068
+ * ```
6069
+ * @example
6070
+ * ```js
6071
+ * // Switch the color scheme at runtime
6072
+ * hot.updateSettings({
6073
+ * colorScheme: 'auto',
6074
+ * });
6075
+ * ```
6076
+ */ colorScheme: undefined,
6077
+ /**
6078
+ * The `density` option sets the amount of white space inside the grid without declaring a theme.
6079
+ *
6080
+ * You can set it to one of the following:
6081
+ *
6082
+ * | Setting | Description |
6083
+ * | --------------------- | -------------------------------------------------------- |
6084
+ * | `undefined` (default) | Use the density of the current theme |
6085
+ * | `'default'` | Standard spacing |
6086
+ * | `'compact'` | Tighter spacing, fits more rows on the screen |
6087
+ * | `'comfortable'` | Looser spacing, easier to read and to tap |
6088
+ *
6089
+ * The option is a per-instance override. It applies on top of the current theme, so the theme
6090
+ * itself stays unchanged and other grids that use the same theme keep their own density.
6091
+ * You can change it at runtime with [`updateSettings()`](@/api/core.md#updatesettings).
6092
+ *
6093
+ * The option requires the theme engine, so it has no effect when the theme comes from a CSS
6094
+ * class name (the [`theme`](#theme) option set to a string, or an `ht-theme-*` class on the
6095
+ * container element).
6096
+ *
6097
+ * An unsupported value is ignored with a console warning rather than throwing.
6098
+ *
6099
+ * Read more:
6100
+ * - [Themes](@/guides/styling/themes/themes.md)
6101
+ * - [`colorScheme`](#colorScheme)
6102
+ * - [`theme`](#theme)
6103
+ *
6104
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6105
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6106
+ *
6107
+ * @memberof Options#
6108
+ * @type {string|undefined}
6109
+ * @default undefined
6110
+ * @category Core
6111
+ * @since 18.1.0
6112
+ *
6113
+ * @example
6114
+ * ```js
6115
+ * // Render the grid with tighter spacing, without declaring a theme
6116
+ * const hot = new Handsontable(container, {
6117
+ * density: 'compact',
6118
+ * });
6119
+ * ```
6120
+ * @example
6121
+ * ```js
6122
+ * // Change the density at runtime
6123
+ * hot.updateSettings({
6124
+ * density: 'comfortable',
6125
+ * });
6126
+ * ```
6127
+ */ density: undefined,
6128
+ /**
5520
6129
  * The `injectCoreCss` option controls whether Handsontable injects its core CSS into the document.
5521
6130
  *
5522
6131
  * You can set the `injectCoreCss` option to one of the following:
@@ -5529,6 +6138,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5529
6138
  * Read more:
5530
6139
  * - [Themes](@/guides/styling/themes/themes.md)
5531
6140
  *
6141
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6142
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6143
+ *
5532
6144
  * @memberof Options#
5533
6145
  * @type {boolean}
5534
6146
  * @default true
@@ -5555,6 +6167,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5555
6167
  * | `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
6168
  * | `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
6169
  *
6170
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6171
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6172
+ *
5558
6173
  * @memberof Options#
5559
6174
  * @type {object|Function}
5560
6175
  * @default {row: 0, col: 1}
@@ -5583,10 +6198,16 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5583
6198
  *
5584
6199
  * You can set the `title` option to a string.
5585
6200
  *
6201
+ * To set the labels of all column headers at once, use the [`colHeaders`](#colheaders) option.
6202
+ *
5586
6203
  * Read more:
5587
6204
  * - [Column header](@/guides/columns/column-header/column-header.md)
6205
+ * - [`colHeaders`](#colheaders)
5588
6206
  * - [`columns`](#columns)
5589
6207
  *
6208
+ * This option can only be set at the [`columns`](#columns) level.
6209
+ * It has no effect when set at the grid level, or in the [`cells`](#cells) or [`cell`](#cell) options.
6210
+ *
5590
6211
  * @memberof Options#
5591
6212
  * @type {string}
5592
6213
  * @default undefined
@@ -5614,14 +6235,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5614
6235
  *
5615
6236
  * When set to `true` (default), the list is trimmed to match the width of the edited cell,
5616
6237
  * 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.
6238
+ * longest option – it can grow wider than the cell, but never narrower.
5618
6239
  *
5619
6240
  * You can set the `trimDropdown` option to one of the following:
5620
6241
  *
5621
6242
  * | Setting | Description |
5622
6243
  * | ---------------- | ------------------------------------------------------------------------------- |
5623
6244
  * | `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 |
6245
+ * | `false` | Expand the list to its content, but keep it at least as wide as the edited cell |
5625
6246
  *
5626
6247
  * This option can be set at any level of the [cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration):
5627
6248
  * 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 +6290,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5669
6290
  * - [Plugins: `TrimRows`](@/api/trimRows.md)
5670
6291
  * - [Row trimming](@/guides/rows/row-trimming/row-trimming.md)
5671
6292
  *
6293
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6294
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6295
+ *
5672
6296
  * @memberof Options#
5673
6297
  * @type {boolean|number[]}
5674
6298
  * @default undefined
@@ -5732,6 +6356,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5732
6356
  * | `'text'` | Renderer: `TextRenderer`<br>Editor: `TextEditor`<br>Validator: - |
5733
6357
  * | [`'time`'](@/guides/cell-types/time-cell-type/time-cell-type.md) | Renderer: `TimeRenderer`<br>Editor: `TimeEditor`<br>Validator: `TimeValidator` |
5734
6358
  * | [`'intl-time'`](@/guides/cell-types/time-cell-type/time-cell-type.md) | Renderer: `IntlTimeRenderer`<br>Editor: `IntlTimeEditor`<br>Validator: `IntlTimeValidator` |
6359
+ * | [`'intl-datetime'`](@/guides/cell-types/datetime-cell-type/datetime-cell-type.md) | Renderer: `IntlDatetimeRenderer`<br>Editor: `IntlDatetimeEditor`<br>Validator: `IntlDatetimeValidator` |
5735
6360
  *
5736
6361
  * Read more:
5737
6362
  * - [Cell type](@/guides/cell-types/cell-type/cell-type.md)
@@ -5835,6 +6460,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5835
6460
  * Read more:
5836
6461
  * - [Undo and redo](@/guides/accessories-and-menus/undo-redo/undo-redo.md)
5837
6462
  *
6463
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6464
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6465
+ *
5838
6466
  * @memberof Options#
5839
6467
  * @type {boolean}
5840
6468
  * @default undefined
@@ -5903,7 +6531,7 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5903
6531
  * {
5904
6532
  * // add a custom cell validator function
5905
6533
  * validator(value, callback) {
5906
- * ...
6534
+ * callback(value >= 0 && value <= 100);
5907
6535
  * }
5908
6536
  * },
5909
6537
  * ],
@@ -5927,6 +6555,14 @@ import { isObjectEqual } from '../../helpers/object.mjs';
5927
6555
  * Optionally set [`sourceDataWarningMessage`](@/api/options.md#sourcedatawarningmessage) to customize the
5928
6556
  * message logged for invalid values.
5929
6557
  *
6558
+ * __Limitation:__ source-data validation only sees a `sourceDataValidator` (and a validating cell
6559
+ * [`type`](@/api/options.md#type)) that you define in the global settings, the
6560
+ * [`columns`](@/api/options.md#columns) option, the [`cell`](@/api/options.md#cell) option, or with
6561
+ * [`setCellMeta()`](@/api/core.md#setcellmeta). It does __not__ run the [`cells`](@/api/options.md#cells)
6562
+ * function or the [`beforeGetCellMeta`](@/api/hooks.md#beforegetcellmeta) /
6563
+ * [`afterGetCellMeta`](@/api/hooks.md#aftergetcellmeta) hooks, so a validator that you add only through those
6564
+ * is skipped. Define the validator in one of the supported places to validate the source data.
6565
+ *
5930
6566
  * @example
5931
6567
  * ```js
5932
6568
  * sourceDataWarningMessage: 'The source data is invalid.',
@@ -6023,11 +6659,29 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6023
6659
  * | `auto` (default) | Use the offset calculated automatically by Handsontable |
6024
6660
  * | A number | Set the offset manually |
6025
6661
  *
6662
+ * With `auto`, the option works in a dynamic overscan mode: Handsontable renders 1 extra
6663
+ * column on each side of the viewport and, while you scroll horizontally, extends the
6664
+ * rendered area by up to 8 extra columns in the scroll direction, so consecutive scroll
6665
+ * steps reuse the already-rendered columns instead of re-rendering them.
6666
+ *
6667
+ * The scroll-direction overscan works only when Handsontable knows every column's width up
6668
+ * front and all columns share the same width: set [`colWidths`](#colWidths) to a single
6669
+ * number. Features that measure or change individual column widths turn the overscan off for
6670
+ * the column axis – for example, [`autoColumnSize`](#autoColumnSize) (enabled by default),
6671
+ * [`manualColumnResize`](#manualColumnResize), or [`hiddenColumns`](#hiddenColumns). The grid
6672
+ * then keeps the static offset of 1 column on each side.
6673
+ *
6674
+ * An explicit number switches the option to a manual mode: exactly that many extra columns
6675
+ * render on both sides, with no scroll-direction overscan.
6676
+ *
6026
6677
  * The `viewportColumnRenderingOffset` setting is ignored when [`renderAllColumns`](#renderAllColumns) is set to `true`.
6027
6678
  *
6028
6679
  * Read more:
6029
6680
  * - [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
6681
  *
6682
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6683
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6684
+ *
6031
6685
  * @memberof Options#
6032
6686
  * @type {number|'auto'}
6033
6687
  * @default 'auto'
@@ -6051,12 +6705,30 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6051
6705
  * | `auto` (default) | Use the offset calculated automatically by Handsontable |
6052
6706
  * | A number | Set the offset manually |
6053
6707
  *
6708
+ * With `auto`, the option works in a dynamic overscan mode: Handsontable renders 1 extra row
6709
+ * on each side of the viewport and, while you scroll vertically, extends the rendered area by
6710
+ * up to 4 extra rows in the scroll direction, so consecutive scroll steps reuse the
6711
+ * already-rendered rows instead of re-rendering them.
6712
+ *
6713
+ * The scroll-direction overscan works only when Handsontable knows every row's height up
6714
+ * front and all rows share the same height: keep the default [`rowHeights`](#rowHeights) or
6715
+ * set it to a single number. Features that measure or change individual row heights turn the
6716
+ * overscan off for the row axis – for example, [`autoRowSize`](#autoRowSize),
6717
+ * [`manualRowResize`](#manualRowResize), or [`hiddenRows`](#hiddenRows). The grid then keeps
6718
+ * the static offset of 1 row on each side.
6719
+ *
6720
+ * An explicit number switches the option to a manual mode: exactly that many extra rows
6721
+ * render on both sides, with no scroll-direction overscan.
6722
+ *
6054
6723
  * The `viewportRowRenderingOffset` setting is ignored when [`renderAllRows`](#renderAllRows) is set to `true`.
6055
6724
  *
6056
6725
  * Read more:
6057
6726
  * - [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
6727
  * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
6059
6728
  *
6729
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6730
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6731
+ *
6060
6732
  * @memberof Options#
6061
6733
  * @type {number|'auto'}
6062
6734
  * @default 'auto'
@@ -6086,6 +6758,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6086
6758
  * - [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
6759
  * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
6088
6760
  *
6761
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6762
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6763
+ *
6089
6764
  * @memberof Options#
6090
6765
  * @since 1.14.7
6091
6766
  * @type {number|'auto'}
@@ -6118,6 +6793,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6118
6793
  * - [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
6794
  * - [Row virtualization](@/guides/rows/row-virtualization/row-virtualization.md)
6120
6795
  *
6796
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6797
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6798
+ *
6121
6799
  * @memberof Options#
6122
6800
  * @since 1.14.7
6123
6801
  * @type {number|'auto'}
@@ -6291,6 +6969,9 @@ import { isObjectEqual } from '../../helpers/object.mjs';
6291
6969
  * This option is only respected when set in the table settings. It does not work when defined per column
6292
6970
  * or per cell (e.g. in `columns` or cell meta).
6293
6971
  *
6972
+ * This option can only be set at the [grid level](@/guides/getting-started/configuration-options/configuration-options.md#set-grid-options).
6973
+ * It has no effect when set in the [`columns`](#columns), [`cells`](#cells), or [`cell`](#cell) options.
6974
+ *
6294
6975
  * @since 17.0.0
6295
6976
  * @memberof Options#
6296
6977
  * @type {function(string, string): string}