handsontable 0.0.0-next-9ec04ce-20221121

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.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (1232) hide show
  1. package/3rdparty/SheetClip/SheetClip.js +128 -0
  2. package/3rdparty/SheetClip/SheetClip.mjs +123 -0
  3. package/3rdparty/SheetClip/index.js +7 -0
  4. package/3rdparty/SheetClip/index.mjs +1 -0
  5. package/3rdparty/autoResize/autoResize.js +164 -0
  6. package/3rdparty/autoResize/autoResize.mjs +160 -0
  7. package/3rdparty/autoResize/index.js +6 -0
  8. package/3rdparty/autoResize/index.mjs +1 -0
  9. package/3rdparty/walkontable/src/border.js +746 -0
  10. package/3rdparty/walkontable/src/border.mjs +741 -0
  11. package/3rdparty/walkontable/src/calculator/constants.js +30 -0
  12. package/3rdparty/walkontable/src/calculator/constants.mjs +23 -0
  13. package/3rdparty/walkontable/src/calculator/index.js +22 -0
  14. package/3rdparty/walkontable/src/calculator/index.mjs +4 -0
  15. package/3rdparty/walkontable/src/calculator/viewportColumns.d.ts +18 -0
  16. package/3rdparty/walkontable/src/calculator/viewportColumns.js +297 -0
  17. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +292 -0
  18. package/3rdparty/walkontable/src/calculator/viewportRows.js +175 -0
  19. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +170 -0
  20. package/3rdparty/walkontable/src/cell/coords.d.ts +16 -0
  21. package/3rdparty/walkontable/src/cell/coords.js +185 -0
  22. package/3rdparty/walkontable/src/cell/coords.mjs +180 -0
  23. package/3rdparty/walkontable/src/cell/range.d.ts +59 -0
  24. package/3rdparty/walkontable/src/cell/range.js +888 -0
  25. package/3rdparty/walkontable/src/cell/range.mjs +882 -0
  26. package/3rdparty/walkontable/src/core/_base.js +395 -0
  27. package/3rdparty/walkontable/src/core/_base.mjs +390 -0
  28. package/3rdparty/walkontable/src/core/clone.js +59 -0
  29. package/3rdparty/walkontable/src/core/clone.mjs +54 -0
  30. package/3rdparty/walkontable/src/core/core.js +130 -0
  31. package/3rdparty/walkontable/src/core/core.mjs +125 -0
  32. package/3rdparty/walkontable/src/event.js +401 -0
  33. package/3rdparty/walkontable/src/event.mjs +396 -0
  34. package/3rdparty/walkontable/src/facade/core.js +236 -0
  35. package/3rdparty/walkontable/src/facade/core.mjs +231 -0
  36. package/3rdparty/walkontable/src/filter/column.js +107 -0
  37. package/3rdparty/walkontable/src/filter/column.mjs +102 -0
  38. package/3rdparty/walkontable/src/filter/row.js +107 -0
  39. package/3rdparty/walkontable/src/filter/row.mjs +102 -0
  40. package/3rdparty/walkontable/src/index.d.ts +1 -0
  41. package/3rdparty/walkontable/src/index.js +37 -0
  42. package/3rdparty/walkontable/src/index.mjs +10 -0
  43. package/3rdparty/walkontable/src/overlay/_base.js +363 -0
  44. package/3rdparty/walkontable/src/overlay/_base.mjs +357 -0
  45. package/3rdparty/walkontable/src/overlay/bottom.js +397 -0
  46. package/3rdparty/walkontable/src/overlay/bottom.mjs +391 -0
  47. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.js +140 -0
  48. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.mjs +134 -0
  49. package/3rdparty/walkontable/src/overlay/constants.js +26 -0
  50. package/3rdparty/walkontable/src/overlay/constants.mjs +15 -0
  51. package/3rdparty/walkontable/src/overlay/index.js +34 -0
  52. package/3rdparty/walkontable/src/overlay/index.mjs +7 -0
  53. package/3rdparty/walkontable/src/overlay/inlineStart.js +385 -0
  54. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +379 -0
  55. package/3rdparty/walkontable/src/overlay/top.js +415 -0
  56. package/3rdparty/walkontable/src/overlay/top.mjs +409 -0
  57. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +130 -0
  58. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +124 -0
  59. package/3rdparty/walkontable/src/overlays.js +675 -0
  60. package/3rdparty/walkontable/src/overlays.mjs +670 -0
  61. package/3rdparty/walkontable/src/renderer/_base.js +83 -0
  62. package/3rdparty/walkontable/src/renderer/_base.mjs +78 -0
  63. package/3rdparty/walkontable/src/renderer/cells.js +127 -0
  64. package/3rdparty/walkontable/src/renderer/cells.mjs +122 -0
  65. package/3rdparty/walkontable/src/renderer/colGroup.js +101 -0
  66. package/3rdparty/walkontable/src/renderer/colGroup.mjs +96 -0
  67. package/3rdparty/walkontable/src/renderer/columnHeaders.js +115 -0
  68. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +110 -0
  69. package/3rdparty/walkontable/src/renderer/index.js +118 -0
  70. package/3rdparty/walkontable/src/renderer/index.mjs +107 -0
  71. package/3rdparty/walkontable/src/renderer/rowHeaders.js +119 -0
  72. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +114 -0
  73. package/3rdparty/walkontable/src/renderer/rows.js +99 -0
  74. package/3rdparty/walkontable/src/renderer/rows.mjs +94 -0
  75. package/3rdparty/walkontable/src/renderer/table.js +317 -0
  76. package/3rdparty/walkontable/src/renderer/table.mjs +313 -0
  77. package/3rdparty/walkontable/src/scroll.js +316 -0
  78. package/3rdparty/walkontable/src/scroll.mjs +311 -0
  79. package/3rdparty/walkontable/src/selection.js +349 -0
  80. package/3rdparty/walkontable/src/selection.mjs +343 -0
  81. package/3rdparty/walkontable/src/settings.js +306 -0
  82. package/3rdparty/walkontable/src/settings.mjs +302 -0
  83. package/3rdparty/walkontable/src/table/bottom.js +56 -0
  84. package/3rdparty/walkontable/src/table/bottom.mjs +50 -0
  85. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +57 -0
  86. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +51 -0
  87. package/3rdparty/walkontable/src/table/inlineStart.js +53 -0
  88. package/3rdparty/walkontable/src/table/inlineStart.mjs +47 -0
  89. package/3rdparty/walkontable/src/table/master.js +132 -0
  90. package/3rdparty/walkontable/src/table/master.mjs +126 -0
  91. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +93 -0
  92. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +88 -0
  93. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +93 -0
  94. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +88 -0
  95. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +85 -0
  96. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +80 -0
  97. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +90 -0
  98. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +85 -0
  99. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +85 -0
  100. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +80 -0
  101. package/3rdparty/walkontable/src/table/top.js +56 -0
  102. package/3rdparty/walkontable/src/table/top.mjs +50 -0
  103. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +57 -0
  104. package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +51 -0
  105. package/3rdparty/walkontable/src/table.js +1171 -0
  106. package/3rdparty/walkontable/src/table.mjs +1165 -0
  107. package/3rdparty/walkontable/src/types.js +98 -0
  108. package/3rdparty/walkontable/src/types.mjs +97 -0
  109. package/3rdparty/walkontable/src/utils/column.js +121 -0
  110. package/3rdparty/walkontable/src/utils/column.mjs +117 -0
  111. package/3rdparty/walkontable/src/utils/nodesPool.js +48 -0
  112. package/3rdparty/walkontable/src/utils/nodesPool.mjs +44 -0
  113. package/3rdparty/walkontable/src/utils/orderView/constants.js +30 -0
  114. package/3rdparty/walkontable/src/utils/orderView/constants.mjs +23 -0
  115. package/3rdparty/walkontable/src/utils/orderView/index.js +8 -0
  116. package/3rdparty/walkontable/src/utils/orderView/index.mjs +3 -0
  117. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +81 -0
  118. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +76 -0
  119. package/3rdparty/walkontable/src/utils/orderView/view.js +216 -0
  120. package/3rdparty/walkontable/src/utils/orderView/view.mjs +211 -0
  121. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +68 -0
  122. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +64 -0
  123. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +137 -0
  124. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +132 -0
  125. package/3rdparty/walkontable/src/utils/row.js +43 -0
  126. package/3rdparty/walkontable/src/utils/row.mjs +39 -0
  127. package/3rdparty/walkontable/src/viewport.js +491 -0
  128. package/3rdparty/walkontable/src/viewport.mjs +486 -0
  129. package/CHANGELOG.md +716 -0
  130. package/LICENSE.txt +25 -0
  131. package/README.md +140 -0
  132. package/base.d.ts +3 -0
  133. package/base.js +54 -0
  134. package/base.mjs +44 -0
  135. package/cellTypes/autocompleteType/autocompleteType.d.ts +17 -0
  136. package/cellTypes/autocompleteType/autocompleteType.js +16 -0
  137. package/cellTypes/autocompleteType/autocompleteType.mjs +10 -0
  138. package/cellTypes/autocompleteType/index.d.ts +1 -0
  139. package/cellTypes/autocompleteType/index.js +7 -0
  140. package/cellTypes/autocompleteType/index.mjs +1 -0
  141. package/cellTypes/base.d.ts +14 -0
  142. package/cellTypes/checkboxType/checkboxType.d.ts +14 -0
  143. package/cellTypes/checkboxType/checkboxType.js +14 -0
  144. package/cellTypes/checkboxType/checkboxType.mjs +8 -0
  145. package/cellTypes/checkboxType/index.d.ts +1 -0
  146. package/cellTypes/checkboxType/index.js +7 -0
  147. package/cellTypes/checkboxType/index.mjs +1 -0
  148. package/cellTypes/dateType/dateType.d.ts +17 -0
  149. package/cellTypes/dateType/dateType.js +17 -0
  150. package/cellTypes/dateType/dateType.mjs +11 -0
  151. package/cellTypes/dateType/index.d.ts +1 -0
  152. package/cellTypes/dateType/index.js +7 -0
  153. package/cellTypes/dateType/index.mjs +1 -0
  154. package/cellTypes/dropdownType/dropdownType.d.ts +17 -0
  155. package/cellTypes/dropdownType/dropdownType.js +17 -0
  156. package/cellTypes/dropdownType/dropdownType.mjs +11 -0
  157. package/cellTypes/dropdownType/index.d.ts +1 -0
  158. package/cellTypes/dropdownType/index.js +7 -0
  159. package/cellTypes/dropdownType/index.mjs +1 -0
  160. package/cellTypes/handsontableType/handsontableType.d.ts +14 -0
  161. package/cellTypes/handsontableType/handsontableType.js +15 -0
  162. package/cellTypes/handsontableType/handsontableType.mjs +9 -0
  163. package/cellTypes/handsontableType/index.d.ts +1 -0
  164. package/cellTypes/handsontableType/index.js +7 -0
  165. package/cellTypes/handsontableType/index.mjs +1 -0
  166. package/cellTypes/index.d.ts +47 -0
  167. package/cellTypes/index.js +52 -0
  168. package/cellTypes/index.mjs +26 -0
  169. package/cellTypes/numericType/index.d.ts +1 -0
  170. package/cellTypes/numericType/index.js +7 -0
  171. package/cellTypes/numericType/index.mjs +1 -0
  172. package/cellTypes/numericType/numericType.d.ts +17 -0
  173. package/cellTypes/numericType/numericType.js +17 -0
  174. package/cellTypes/numericType/numericType.mjs +11 -0
  175. package/cellTypes/passwordType/index.d.ts +1 -0
  176. package/cellTypes/passwordType/index.js +7 -0
  177. package/cellTypes/passwordType/index.mjs +1 -0
  178. package/cellTypes/passwordType/passwordType.d.ts +14 -0
  179. package/cellTypes/passwordType/passwordType.js +15 -0
  180. package/cellTypes/passwordType/passwordType.mjs +9 -0
  181. package/cellTypes/registry.d.ts +18 -0
  182. package/cellTypes/registry.js +60 -0
  183. package/cellTypes/registry.mjs +51 -0
  184. package/cellTypes/textType/index.d.ts +1 -0
  185. package/cellTypes/textType/index.js +7 -0
  186. package/cellTypes/textType/index.mjs +1 -0
  187. package/cellTypes/textType/textType.d.ts +14 -0
  188. package/cellTypes/textType/textType.js +14 -0
  189. package/cellTypes/textType/textType.mjs +8 -0
  190. package/cellTypes/timeType/index.d.ts +1 -0
  191. package/cellTypes/timeType/index.js +7 -0
  192. package/cellTypes/timeType/index.mjs +1 -0
  193. package/cellTypes/timeType/timeType.d.ts +17 -0
  194. package/cellTypes/timeType/timeType.js +16 -0
  195. package/cellTypes/timeType/timeType.mjs +10 -0
  196. package/common.d.ts +74 -0
  197. package/core.d.ts +167 -0
  198. package/core.js +4684 -0
  199. package/core.mjs +4679 -0
  200. package/dataMap/dataMap.js +975 -0
  201. package/dataMap/dataMap.mjs +970 -0
  202. package/dataMap/dataSource.js +325 -0
  203. package/dataMap/dataSource.mjs +320 -0
  204. package/dataMap/index.js +16 -0
  205. package/dataMap/index.mjs +7 -0
  206. package/dataMap/metaManager/index.js +339 -0
  207. package/dataMap/metaManager/index.mjs +334 -0
  208. package/dataMap/metaManager/lazyFactoryMap.js +370 -0
  209. package/dataMap/metaManager/lazyFactoryMap.mjs +366 -0
  210. package/dataMap/metaManager/metaLayers/cellMeta.js +275 -0
  211. package/dataMap/metaManager/metaLayers/cellMeta.mjs +270 -0
  212. package/dataMap/metaManager/metaLayers/columnMeta.js +153 -0
  213. package/dataMap/metaManager/metaLayers/columnMeta.mjs +148 -0
  214. package/dataMap/metaManager/metaLayers/globalMeta.js +103 -0
  215. package/dataMap/metaManager/metaLayers/globalMeta.mjs +98 -0
  216. package/dataMap/metaManager/metaLayers/tableMeta.js +73 -0
  217. package/dataMap/metaManager/metaLayers/tableMeta.mjs +69 -0
  218. package/dataMap/metaManager/metaSchema.js +4610 -0
  219. package/dataMap/metaManager/metaSchema.mjs +4605 -0
  220. package/dataMap/metaManager/mods/dynamicCellMeta.js +107 -0
  221. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +101 -0
  222. package/dataMap/metaManager/mods/extendMetaProperties.js +104 -0
  223. package/dataMap/metaManager/mods/extendMetaProperties.mjs +99 -0
  224. package/dataMap/metaManager/utils.js +99 -0
  225. package/dataMap/metaManager/utils.mjs +91 -0
  226. package/dataMap/replaceData.js +119 -0
  227. package/dataMap/replaceData.mjs +115 -0
  228. package/dist/README.md +54 -0
  229. package/dist/handsontable.css +1941 -0
  230. package/dist/handsontable.full.css +2172 -0
  231. package/dist/handsontable.full.js +150392 -0
  232. package/dist/handsontable.full.min.css +47 -0
  233. package/dist/handsontable.full.min.js +869 -0
  234. package/dist/handsontable.js +94075 -0
  235. package/dist/handsontable.min.css +43 -0
  236. package/dist/handsontable.min.js +31 -0
  237. package/dist/languages/all.js +583 -0
  238. package/dist/languages/all.min.js +1 -0
  239. package/dist/languages/ar-AR.js +157 -0
  240. package/dist/languages/ar-AR.min.js +1 -0
  241. package/dist/languages/cs-CZ.js +157 -0
  242. package/dist/languages/cs-CZ.min.js +1 -0
  243. package/dist/languages/de-CH.js +158 -0
  244. package/dist/languages/de-CH.min.js +1 -0
  245. package/dist/languages/de-DE.js +159 -0
  246. package/dist/languages/de-DE.min.js +1 -0
  247. package/dist/languages/en-US.js +160 -0
  248. package/dist/languages/en-US.min.js +1 -0
  249. package/dist/languages/es-MX.js +161 -0
  250. package/dist/languages/es-MX.min.js +1 -0
  251. package/dist/languages/fr-FR.js +162 -0
  252. package/dist/languages/fr-FR.min.js +1 -0
  253. package/dist/languages/it-IT.js +164 -0
  254. package/dist/languages/it-IT.min.js +1 -0
  255. package/dist/languages/ja-JP.js +161 -0
  256. package/dist/languages/ja-JP.min.js +1 -0
  257. package/dist/languages/ko-KR.js +161 -0
  258. package/dist/languages/ko-KR.min.js +1 -0
  259. package/dist/languages/lv-LV.js +161 -0
  260. package/dist/languages/lv-LV.min.js +1 -0
  261. package/dist/languages/nb-NO.js +161 -0
  262. package/dist/languages/nb-NO.min.js +1 -0
  263. package/dist/languages/nl-NL.js +161 -0
  264. package/dist/languages/nl-NL.min.js +1 -0
  265. package/dist/languages/pl-PL.js +161 -0
  266. package/dist/languages/pl-PL.min.js +1 -0
  267. package/dist/languages/pt-BR.js +161 -0
  268. package/dist/languages/pt-BR.min.js +1 -0
  269. package/dist/languages/ru-RU.js +161 -0
  270. package/dist/languages/ru-RU.min.js +1 -0
  271. package/dist/languages/sr-SP.js +161 -0
  272. package/dist/languages/sr-SP.min.js +1 -0
  273. package/dist/languages/zh-CN.js +161 -0
  274. package/dist/languages/zh-CN.min.js +1 -0
  275. package/dist/languages/zh-TW.js +161 -0
  276. package/dist/languages/zh-TW.min.js +1 -0
  277. package/editorManager.js +522 -0
  278. package/editorManager.mjs +514 -0
  279. package/editors/autocompleteEditor/autocompleteEditor.d.ts +29 -0
  280. package/editors/autocompleteEditor/autocompleteEditor.js +584 -0
  281. package/editors/autocompleteEditor/autocompleteEditor.mjs +578 -0
  282. package/editors/autocompleteEditor/index.d.ts +1 -0
  283. package/editors/autocompleteEditor/index.js +7 -0
  284. package/editors/autocompleteEditor/index.mjs +1 -0
  285. package/editors/baseEditor/baseEditor.d.ts +45 -0
  286. package/editors/baseEditor/baseEditor.js +688 -0
  287. package/editors/baseEditor/baseEditor.mjs +679 -0
  288. package/editors/baseEditor/index.d.ts +1 -0
  289. package/editors/baseEditor/index.js +8 -0
  290. package/editors/baseEditor/index.mjs +1 -0
  291. package/editors/checkboxEditor/checkboxEditor.d.ts +12 -0
  292. package/editors/checkboxEditor/checkboxEditor.js +85 -0
  293. package/editors/checkboxEditor/checkboxEditor.mjs +79 -0
  294. package/editors/checkboxEditor/index.d.ts +1 -0
  295. package/editors/checkboxEditor/index.js +7 -0
  296. package/editors/checkboxEditor/index.mjs +1 -0
  297. package/editors/dateEditor/dateEditor.d.ts +18 -0
  298. package/editors/dateEditor/dateEditor.js +325 -0
  299. package/editors/dateEditor/dateEditor.mjs +318 -0
  300. package/editors/dateEditor/index.d.ts +1 -0
  301. package/editors/dateEditor/index.js +7 -0
  302. package/editors/dateEditor/index.mjs +1 -0
  303. package/editors/dropdownEditor/dropdownEditor.d.ts +7 -0
  304. package/editors/dropdownEditor/dropdownEditor.js +81 -0
  305. package/editors/dropdownEditor/dropdownEditor.mjs +74 -0
  306. package/editors/dropdownEditor/index.d.ts +1 -0
  307. package/editors/dropdownEditor/index.js +7 -0
  308. package/editors/dropdownEditor/index.mjs +1 -0
  309. package/editors/handsontableEditor/handsontableEditor.d.ts +10 -0
  310. package/editors/handsontableEditor/handsontableEditor.js +306 -0
  311. package/editors/handsontableEditor/handsontableEditor.mjs +300 -0
  312. package/editors/handsontableEditor/index.d.ts +1 -0
  313. package/editors/handsontableEditor/index.js +7 -0
  314. package/editors/handsontableEditor/index.mjs +1 -0
  315. package/editors/index.d.ts +56 -0
  316. package/editors/index.js +63 -0
  317. package/editors/index.mjs +30 -0
  318. package/editors/numericEditor/index.d.ts +1 -0
  319. package/editors/numericEditor/index.js +7 -0
  320. package/editors/numericEditor/index.mjs +1 -0
  321. package/editors/numericEditor/numericEditor.d.ts +7 -0
  322. package/editors/numericEditor/numericEditor.js +49 -0
  323. package/editors/numericEditor/numericEditor.mjs +43 -0
  324. package/editors/passwordEditor/index.d.ts +1 -0
  325. package/editors/passwordEditor/index.js +7 -0
  326. package/editors/passwordEditor/index.mjs +1 -0
  327. package/editors/passwordEditor/passwordEditor.d.ts +7 -0
  328. package/editors/passwordEditor/passwordEditor.js +68 -0
  329. package/editors/passwordEditor/passwordEditor.mjs +62 -0
  330. package/editors/registry.d.ts +29 -0
  331. package/editors/registry.js +106 -0
  332. package/editors/registry.mjs +94 -0
  333. package/editors/selectEditor/index.d.ts +1 -0
  334. package/editors/selectEditor/index.js +7 -0
  335. package/editors/selectEditor/index.mjs +1 -0
  336. package/editors/selectEditor/selectEditor.d.ts +16 -0
  337. package/editors/selectEditor/selectEditor.js +302 -0
  338. package/editors/selectEditor/selectEditor.mjs +296 -0
  339. package/editors/textEditor/caretPositioner.js +37 -0
  340. package/editors/textEditor/caretPositioner.mjs +33 -0
  341. package/editors/textEditor/index.d.ts +1 -0
  342. package/editors/textEditor/index.js +7 -0
  343. package/editors/textEditor/index.mjs +1 -0
  344. package/editors/textEditor/textEditor.d.ts +24 -0
  345. package/editors/textEditor/textEditor.js +612 -0
  346. package/editors/textEditor/textEditor.mjs +605 -0
  347. package/editors/timeEditor/index.d.ts +1 -0
  348. package/editors/timeEditor/index.js +7 -0
  349. package/editors/timeEditor/index.mjs +1 -0
  350. package/editors/timeEditor/timeEditor.d.ts +7 -0
  351. package/editors/timeEditor/timeEditor.js +70 -0
  352. package/editors/timeEditor/timeEditor.mjs +64 -0
  353. package/eventManager.d.ts +13 -0
  354. package/eventManager.js +236 -0
  355. package/eventManager.mjs +231 -0
  356. package/handsontable-non-commercial-license.pdf +0 -0
  357. package/helpers/array.d.ts +18 -0
  358. package/helpers/array.js +353 -0
  359. package/helpers/array.mjs +333 -0
  360. package/helpers/browser.d.ts +25 -0
  361. package/helpers/browser.js +231 -0
  362. package/helpers/browser.mjs +210 -0
  363. package/helpers/console.d.ts +4 -0
  364. package/helpers/console.js +65 -0
  365. package/helpers/console.mjs +56 -0
  366. package/helpers/data.d.ts +12 -0
  367. package/helpers/data.js +247 -0
  368. package/helpers/data.mjs +234 -0
  369. package/helpers/date.d.ts +1 -0
  370. package/helpers/date.js +22 -0
  371. package/helpers/date.mjs +18 -0
  372. package/helpers/dom/element.d.ts +49 -0
  373. package/helpers/dom/element.js +1117 -0
  374. package/helpers/dom/element.mjs +1064 -0
  375. package/helpers/dom/event.d.ts +4 -0
  376. package/helpers/dom/event.js +46 -0
  377. package/helpers/dom/event.mjs +39 -0
  378. package/helpers/dom/index.d.ts +2 -0
  379. package/helpers/feature.d.ts +11 -0
  380. package/helpers/feature.js +184 -0
  381. package/helpers/feature.mjs +172 -0
  382. package/helpers/function.d.ts +10 -0
  383. package/helpers/function.js +319 -0
  384. package/helpers/function.mjs +307 -0
  385. package/helpers/index.d.ts +14 -0
  386. package/helpers/mixed.d.ts +5 -0
  387. package/helpers/mixed.js +230 -0
  388. package/helpers/mixed.mjs +220 -0
  389. package/helpers/number.d.ts +5 -0
  390. package/helpers/number.js +142 -0
  391. package/helpers/number.mjs +134 -0
  392. package/helpers/object.d.ts +16 -0
  393. package/helpers/object.js +371 -0
  394. package/helpers/object.mjs +352 -0
  395. package/helpers/string.d.ts +7 -0
  396. package/helpers/string.js +115 -0
  397. package/helpers/string.mjs +104 -0
  398. package/helpers/templateLiteralTag.d.ts +1 -0
  399. package/helpers/templateLiteralTag.js +26 -0
  400. package/helpers/templateLiteralTag.mjs +22 -0
  401. package/helpers/unicode.d.ts +73 -0
  402. package/helpers/unicode.js +158 -0
  403. package/helpers/unicode.mjs +148 -0
  404. package/helpers/wrappers/jquery.js +50 -0
  405. package/helpers/wrappers/jquery.mjs +46 -0
  406. package/i18n/constants.js +162 -0
  407. package/i18n/constants.mjs +82 -0
  408. package/i18n/index.d.ts +2 -0
  409. package/i18n/index.js +18 -0
  410. package/i18n/index.mjs +2 -0
  411. package/i18n/languages/ar-AR.js +25 -0
  412. package/i18n/languages/ar-AR.mjs +15 -0
  413. package/i18n/languages/cs-CZ.js +24 -0
  414. package/i18n/languages/cs-CZ.mjs +14 -0
  415. package/i18n/languages/de-CH.d.ts +5 -0
  416. package/i18n/languages/de-CH.js +24 -0
  417. package/i18n/languages/de-CH.mjs +14 -0
  418. package/i18n/languages/de-DE.d.ts +5 -0
  419. package/i18n/languages/de-DE.js +24 -0
  420. package/i18n/languages/de-DE.mjs +14 -0
  421. package/i18n/languages/en-US.d.ts +5 -0
  422. package/i18n/languages/en-US.js +24 -0
  423. package/i18n/languages/en-US.mjs +14 -0
  424. package/i18n/languages/es-MX.d.ts +5 -0
  425. package/i18n/languages/es-MX.js +24 -0
  426. package/i18n/languages/es-MX.mjs +13 -0
  427. package/i18n/languages/fr-FR.d.ts +5 -0
  428. package/i18n/languages/fr-FR.js +24 -0
  429. package/i18n/languages/fr-FR.mjs +14 -0
  430. package/i18n/languages/index.d.ts +35 -0
  431. package/i18n/languages/index.js +42 -0
  432. package/i18n/languages/index.mjs +20 -0
  433. package/i18n/languages/it-IT.d.ts +5 -0
  434. package/i18n/languages/it-IT.js +24 -0
  435. package/i18n/languages/it-IT.mjs +14 -0
  436. package/i18n/languages/ja-JP.d.ts +5 -0
  437. package/i18n/languages/ja-JP.js +24 -0
  438. package/i18n/languages/ja-JP.mjs +14 -0
  439. package/i18n/languages/ko-KR.d.ts +5 -0
  440. package/i18n/languages/ko-KR.js +24 -0
  441. package/i18n/languages/ko-KR.mjs +14 -0
  442. package/i18n/languages/lv-LV.d.ts +5 -0
  443. package/i18n/languages/lv-LV.js +24 -0
  444. package/i18n/languages/lv-LV.mjs +14 -0
  445. package/i18n/languages/nb-NO.d.ts +5 -0
  446. package/i18n/languages/nb-NO.js +24 -0
  447. package/i18n/languages/nb-NO.mjs +14 -0
  448. package/i18n/languages/nl-NL.d.ts +5 -0
  449. package/i18n/languages/nl-NL.js +24 -0
  450. package/i18n/languages/nl-NL.mjs +14 -0
  451. package/i18n/languages/pl-PL.d.ts +5 -0
  452. package/i18n/languages/pl-PL.js +24 -0
  453. package/i18n/languages/pl-PL.mjs +14 -0
  454. package/i18n/languages/pt-BR.d.ts +5 -0
  455. package/i18n/languages/pt-BR.js +24 -0
  456. package/i18n/languages/pt-BR.mjs +14 -0
  457. package/i18n/languages/ru-RU.d.ts +5 -0
  458. package/i18n/languages/ru-RU.js +24 -0
  459. package/i18n/languages/ru-RU.mjs +14 -0
  460. package/i18n/languages/sr-SP.js +24 -0
  461. package/i18n/languages/sr-SP.mjs +14 -0
  462. package/i18n/languages/zh-CN.d.ts +5 -0
  463. package/i18n/languages/zh-CN.js +24 -0
  464. package/i18n/languages/zh-CN.mjs +14 -0
  465. package/i18n/languages/zh-TW.d.ts +5 -0
  466. package/i18n/languages/zh-TW.js +24 -0
  467. package/i18n/languages/zh-TW.mjs +14 -0
  468. package/i18n/phraseFormatters/index.js +31 -0
  469. package/i18n/phraseFormatters/index.mjs +26 -0
  470. package/i18n/phraseFormatters/pluralize.js +21 -0
  471. package/i18n/phraseFormatters/pluralize.mjs +17 -0
  472. package/i18n/phraseFormatters/substituteVariables.js +22 -0
  473. package/i18n/phraseFormatters/substituteVariables.mjs +18 -0
  474. package/i18n/registry.d.ts +13 -0
  475. package/i18n/registry.js +180 -0
  476. package/i18n/registry.mjs +155 -0
  477. package/i18n/utils.js +90 -0
  478. package/i18n/utils.mjs +83 -0
  479. package/index.d.ts +520 -0
  480. package/index.js +130 -0
  481. package/index.mjs +112 -0
  482. package/languages/all.js +583 -0
  483. package/languages/ar-AR.js +157 -0
  484. package/languages/ar-AR.mjs +17 -0
  485. package/languages/cs-CZ.js +157 -0
  486. package/languages/cs-CZ.mjs +16 -0
  487. package/languages/de-CH.js +158 -0
  488. package/languages/de-CH.mjs +16 -0
  489. package/languages/de-DE.js +159 -0
  490. package/languages/de-DE.mjs +16 -0
  491. package/languages/en-US.js +160 -0
  492. package/languages/en-US.mjs +16 -0
  493. package/languages/es-MX.js +161 -0
  494. package/languages/es-MX.mjs +15 -0
  495. package/languages/fr-FR.js +162 -0
  496. package/languages/fr-FR.mjs +16 -0
  497. package/languages/index.js +583 -0
  498. package/languages/index.mjs +20 -0
  499. package/languages/it-IT.js +164 -0
  500. package/languages/it-IT.mjs +16 -0
  501. package/languages/ja-JP.js +161 -0
  502. package/languages/ja-JP.mjs +16 -0
  503. package/languages/ko-KR.js +161 -0
  504. package/languages/ko-KR.mjs +16 -0
  505. package/languages/lv-LV.js +161 -0
  506. package/languages/lv-LV.mjs +16 -0
  507. package/languages/nb-NO.js +161 -0
  508. package/languages/nb-NO.mjs +16 -0
  509. package/languages/nl-NL.js +161 -0
  510. package/languages/nl-NL.mjs +16 -0
  511. package/languages/pl-PL.js +161 -0
  512. package/languages/pl-PL.mjs +16 -0
  513. package/languages/pt-BR.js +161 -0
  514. package/languages/pt-BR.mjs +16 -0
  515. package/languages/ru-RU.js +161 -0
  516. package/languages/ru-RU.mjs +16 -0
  517. package/languages/sr-SP.js +161 -0
  518. package/languages/sr-SP.mjs +16 -0
  519. package/languages/zh-CN.js +161 -0
  520. package/languages/zh-CN.mjs +16 -0
  521. package/languages/zh-TW.js +161 -0
  522. package/languages/zh-TW.mjs +16 -0
  523. package/mixins/hooksRefRegisterer.js +61 -0
  524. package/mixins/hooksRefRegisterer.mjs +56 -0
  525. package/mixins/localHooks.js +71 -0
  526. package/mixins/localHooks.mjs +66 -0
  527. package/package.json +751 -0
  528. package/pluginHooks.d.ts +256 -0
  529. package/pluginHooks.js +2750 -0
  530. package/pluginHooks.mjs +2744 -0
  531. package/plugins/autoColumnSize/autoColumnSize.d.ts +27 -0
  532. package/plugins/autoColumnSize/autoColumnSize.js +796 -0
  533. package/plugins/autoColumnSize/autoColumnSize.mjs +788 -0
  534. package/plugins/autoColumnSize/index.d.ts +1 -0
  535. package/plugins/autoColumnSize/index.js +8 -0
  536. package/plugins/autoColumnSize/index.mjs +1 -0
  537. package/plugins/autoRowSize/autoRowSize.d.ts +27 -0
  538. package/plugins/autoRowSize/autoRowSize.js +735 -0
  539. package/plugins/autoRowSize/autoRowSize.mjs +727 -0
  540. package/plugins/autoRowSize/index.d.ts +1 -0
  541. package/plugins/autoRowSize/index.js +8 -0
  542. package/plugins/autoRowSize/index.mjs +1 -0
  543. package/plugins/autofill/autofill.d.ts +18 -0
  544. package/plugins/autofill/autofill.js +694 -0
  545. package/plugins/autofill/autofill.mjs +687 -0
  546. package/plugins/autofill/index.d.ts +1 -0
  547. package/plugins/autofill/index.js +8 -0
  548. package/plugins/autofill/index.mjs +1 -0
  549. package/plugins/autofill/utils.js +134 -0
  550. package/plugins/autofill/utils.mjs +126 -0
  551. package/plugins/base/base.d.ts +27 -0
  552. package/plugins/base/base.js +345 -0
  553. package/plugins/base/base.mjs +339 -0
  554. package/plugins/base/index.d.ts +1 -0
  555. package/plugins/base/index.js +7 -0
  556. package/plugins/base/index.mjs +1 -0
  557. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.d.ts +9 -0
  558. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +169 -0
  559. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +161 -0
  560. package/plugins/bindRowsWithHeaders/index.d.ts +1 -0
  561. package/plugins/bindRowsWithHeaders/index.js +8 -0
  562. package/plugins/bindRowsWithHeaders/index.mjs +1 -0
  563. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +80 -0
  564. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +75 -0
  565. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +103 -0
  566. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +98 -0
  567. package/plugins/collapsibleColumns/collapsibleColumns.d.ts +22 -0
  568. package/plugins/collapsibleColumns/collapsibleColumns.js +592 -0
  569. package/plugins/collapsibleColumns/collapsibleColumns.mjs +584 -0
  570. package/plugins/collapsibleColumns/index.d.ts +1 -0
  571. package/plugins/collapsibleColumns/index.js +8 -0
  572. package/plugins/collapsibleColumns/index.mjs +1 -0
  573. package/plugins/columnSorting/columnSorting.d.ts +30 -0
  574. package/plugins/columnSorting/columnSorting.js +865 -0
  575. package/plugins/columnSorting/columnSorting.mjs +857 -0
  576. package/plugins/columnSorting/columnStatesManager.js +273 -0
  577. package/plugins/columnSorting/columnStatesManager.mjs +268 -0
  578. package/plugins/columnSorting/domHelpers.js +54 -0
  579. package/plugins/columnSorting/domHelpers.mjs +49 -0
  580. package/plugins/columnSorting/index.d.ts +1 -0
  581. package/plugins/columnSorting/index.js +8 -0
  582. package/plugins/columnSorting/index.mjs +1 -0
  583. package/plugins/columnSorting/rootComparator.js +52 -0
  584. package/plugins/columnSorting/rootComparator.mjs +48 -0
  585. package/plugins/columnSorting/sortFunction/checkbox.js +64 -0
  586. package/plugins/columnSorting/sortFunction/checkbox.mjs +58 -0
  587. package/plugins/columnSorting/sortFunction/date.js +61 -0
  588. package/plugins/columnSorting/sortFunction/date.mjs +54 -0
  589. package/plugins/columnSorting/sortFunction/default.js +65 -0
  590. package/plugins/columnSorting/sortFunction/default.mjs +59 -0
  591. package/plugins/columnSorting/sortFunction/numeric.js +49 -0
  592. package/plugins/columnSorting/sortFunction/numeric.mjs +43 -0
  593. package/plugins/columnSorting/sortService/engine.js +26 -0
  594. package/plugins/columnSorting/sortService/engine.mjs +18 -0
  595. package/plugins/columnSorting/sortService/index.js +13 -0
  596. package/plugins/columnSorting/sortService/index.mjs +3 -0
  597. package/plugins/columnSorting/sortService/registry.js +37 -0
  598. package/plugins/columnSorting/sortService/registry.mjs +30 -0
  599. package/plugins/columnSorting/utils.js +122 -0
  600. package/plugins/columnSorting/utils.mjs +110 -0
  601. package/plugins/columnSummary/columnSummary.d.ts +72 -0
  602. package/plugins/columnSummary/columnSummary.js +544 -0
  603. package/plugins/columnSummary/columnSummary.mjs +536 -0
  604. package/plugins/columnSummary/endpoints.js +557 -0
  605. package/plugins/columnSummary/endpoints.mjs +552 -0
  606. package/plugins/columnSummary/index.d.ts +1 -0
  607. package/plugins/columnSummary/index.js +8 -0
  608. package/plugins/columnSummary/index.mjs +1 -0
  609. package/plugins/columnSummary/utils.js +13 -0
  610. package/plugins/columnSummary/utils.mjs +9 -0
  611. package/plugins/comments/commentEditor.js +241 -0
  612. package/plugins/comments/commentEditor.mjs +236 -0
  613. package/plugins/comments/comments.d.ts +50 -0
  614. package/plugins/comments/comments.js +942 -0
  615. package/plugins/comments/comments.mjs +932 -0
  616. package/plugins/comments/displaySwitch.js +115 -0
  617. package/plugins/comments/displaySwitch.mjs +109 -0
  618. package/plugins/comments/index.d.ts +1 -0
  619. package/plugins/comments/index.js +8 -0
  620. package/plugins/comments/index.mjs +1 -0
  621. package/plugins/contextMenu/commandExecutor.js +113 -0
  622. package/plugins/contextMenu/commandExecutor.mjs +108 -0
  623. package/plugins/contextMenu/contextMenu.d.ts +65 -0
  624. package/plugins/contextMenu/contextMenu.js +445 -0
  625. package/plugins/contextMenu/contextMenu.mjs +437 -0
  626. package/plugins/contextMenu/cursor.js +126 -0
  627. package/plugins/contextMenu/cursor.mjs +121 -0
  628. package/plugins/contextMenu/index.d.ts +1 -0
  629. package/plugins/contextMenu/index.js +8 -0
  630. package/plugins/contextMenu/index.mjs +1 -0
  631. package/plugins/contextMenu/itemsFactory.js +136 -0
  632. package/plugins/contextMenu/itemsFactory.mjs +131 -0
  633. package/plugins/contextMenu/menu.js +1003 -0
  634. package/plugins/contextMenu/menu.mjs +997 -0
  635. package/plugins/contextMenu/predefinedItems/alignment.js +277 -0
  636. package/plugins/contextMenu/predefinedItems/alignment.mjs +259 -0
  637. package/plugins/contextMenu/predefinedItems/clearColumn.js +47 -0
  638. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +29 -0
  639. package/plugins/contextMenu/predefinedItems/columnLeft.js +57 -0
  640. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +39 -0
  641. package/plugins/contextMenu/predefinedItems/columnRight.js +55 -0
  642. package/plugins/contextMenu/predefinedItems/columnRight.mjs +37 -0
  643. package/plugins/contextMenu/predefinedItems/noItems.js +22 -0
  644. package/plugins/contextMenu/predefinedItems/noItems.mjs +16 -0
  645. package/plugins/contextMenu/predefinedItems/readOnly.js +69 -0
  646. package/plugins/contextMenu/predefinedItems/readOnly.mjs +51 -0
  647. package/plugins/contextMenu/predefinedItems/redo.js +42 -0
  648. package/plugins/contextMenu/predefinedItems/redo.mjs +24 -0
  649. package/plugins/contextMenu/predefinedItems/removeColumn.js +79 -0
  650. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +68 -0
  651. package/plugins/contextMenu/predefinedItems/removeRow.js +78 -0
  652. package/plugins/contextMenu/predefinedItems/removeRow.mjs +67 -0
  653. package/plugins/contextMenu/predefinedItems/rowAbove.js +53 -0
  654. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +35 -0
  655. package/plugins/contextMenu/predefinedItems/rowBelow.js +51 -0
  656. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +33 -0
  657. package/plugins/contextMenu/predefinedItems/separator.js +16 -0
  658. package/plugins/contextMenu/predefinedItems/separator.mjs +10 -0
  659. package/plugins/contextMenu/predefinedItems/undo.js +42 -0
  660. package/plugins/contextMenu/predefinedItems/undo.mjs +24 -0
  661. package/plugins/contextMenu/predefinedItems.js +76 -0
  662. package/plugins/contextMenu/predefinedItems.mjs +57 -0
  663. package/plugins/contextMenu/utils.js +278 -0
  664. package/plugins/contextMenu/utils.mjs +261 -0
  665. package/plugins/copyPaste/clipboardData.js +29 -0
  666. package/plugins/copyPaste/clipboardData.mjs +25 -0
  667. package/plugins/copyPaste/contextMenuItem/copy.js +45 -0
  668. package/plugins/copyPaste/contextMenuItem/copy.mjs +29 -0
  669. package/plugins/copyPaste/contextMenuItem/cut.js +45 -0
  670. package/plugins/copyPaste/contextMenuItem/cut.mjs +29 -0
  671. package/plugins/copyPaste/copyPaste.d.ts +35 -0
  672. package/plugins/copyPaste/copyPaste.js +721 -0
  673. package/plugins/copyPaste/copyPaste.mjs +713 -0
  674. package/plugins/copyPaste/focusableElement.js +210 -0
  675. package/plugins/copyPaste/focusableElement.mjs +204 -0
  676. package/plugins/copyPaste/index.d.ts +1 -0
  677. package/plugins/copyPaste/index.js +8 -0
  678. package/plugins/copyPaste/index.mjs +1 -0
  679. package/plugins/copyPaste/pasteEvent.js +17 -0
  680. package/plugins/copyPaste/pasteEvent.mjs +12 -0
  681. package/plugins/customBorders/contextMenuItem/bottom.js +39 -0
  682. package/plugins/customBorders/contextMenuItem/bottom.mjs +23 -0
  683. package/plugins/customBorders/contextMenuItem/index.js +14 -0
  684. package/plugins/customBorders/contextMenuItem/index.mjs +6 -0
  685. package/plugins/customBorders/contextMenuItem/left.js +40 -0
  686. package/plugins/customBorders/contextMenuItem/left.mjs +24 -0
  687. package/plugins/customBorders/contextMenuItem/noBorders.js +36 -0
  688. package/plugins/customBorders/contextMenuItem/noBorders.mjs +20 -0
  689. package/plugins/customBorders/contextMenuItem/right.js +40 -0
  690. package/plugins/customBorders/contextMenuItem/right.mjs +24 -0
  691. package/plugins/customBorders/contextMenuItem/top.js +39 -0
  692. package/plugins/customBorders/contextMenuItem/top.mjs +23 -0
  693. package/plugins/customBorders/customBorders.d.ts +38 -0
  694. package/plugins/customBorders/customBorders.js +887 -0
  695. package/plugins/customBorders/customBorders.mjs +877 -0
  696. package/plugins/customBorders/index.d.ts +1 -0
  697. package/plugins/customBorders/index.js +8 -0
  698. package/plugins/customBorders/index.mjs +1 -0
  699. package/plugins/customBorders/utils.js +265 -0
  700. package/plugins/customBorders/utils.mjs +249 -0
  701. package/plugins/dragToScroll/dragToScroll.d.ts +15 -0
  702. package/plugins/dragToScroll/dragToScroll.js +335 -0
  703. package/plugins/dragToScroll/dragToScroll.mjs +327 -0
  704. package/plugins/dragToScroll/index.d.ts +1 -0
  705. package/plugins/dragToScroll/index.js +8 -0
  706. package/plugins/dragToScroll/index.mjs +1 -0
  707. package/plugins/dropdownMenu/dropdownMenu.d.ts +24 -0
  708. package/plugins/dropdownMenu/dropdownMenu.js +511 -0
  709. package/plugins/dropdownMenu/dropdownMenu.mjs +504 -0
  710. package/plugins/dropdownMenu/index.d.ts +1 -0
  711. package/plugins/dropdownMenu/index.js +8 -0
  712. package/plugins/dropdownMenu/index.mjs +1 -0
  713. package/plugins/exportFile/dataProvider.js +200 -0
  714. package/plugins/exportFile/dataProvider.mjs +195 -0
  715. package/plugins/exportFile/exportFile.d.ts +12 -0
  716. package/plugins/exportFile/exportFile.js +262 -0
  717. package/plugins/exportFile/exportFile.mjs +250 -0
  718. package/plugins/exportFile/index.d.ts +1 -0
  719. package/plugins/exportFile/index.js +8 -0
  720. package/plugins/exportFile/index.mjs +1 -0
  721. package/plugins/exportFile/typeFactory.js +30 -0
  722. package/plugins/exportFile/typeFactory.mjs +21 -0
  723. package/plugins/exportFile/types/_base.js +78 -0
  724. package/plugins/exportFile/types/_base.mjs +73 -0
  725. package/plugins/exportFile/types/csv.js +131 -0
  726. package/plugins/exportFile/types/csv.mjs +125 -0
  727. package/plugins/filters/component/_base.js +169 -0
  728. package/plugins/filters/component/_base.mjs +163 -0
  729. package/plugins/filters/component/actionBar.js +161 -0
  730. package/plugins/filters/component/actionBar.mjs +151 -0
  731. package/plugins/filters/component/condition.js +325 -0
  732. package/plugins/filters/component/condition.mjs +316 -0
  733. package/plugins/filters/component/operators.js +222 -0
  734. package/plugins/filters/component/operators.mjs +216 -0
  735. package/plugins/filters/component/value.js +278 -0
  736. package/plugins/filters/component/value.mjs +269 -0
  737. package/plugins/filters/condition/beginsWith.js +50 -0
  738. package/plugins/filters/condition/beginsWith.mjs +39 -0
  739. package/plugins/filters/condition/between.js +64 -0
  740. package/plugins/filters/condition/between.mjs +53 -0
  741. package/plugins/filters/condition/byValue.js +48 -0
  742. package/plugins/filters/condition/byValue.mjs +42 -0
  743. package/plugins/filters/condition/contains.js +50 -0
  744. package/plugins/filters/condition/contains.mjs +39 -0
  745. package/plugins/filters/condition/date/after.js +55 -0
  746. package/plugins/filters/condition/date/after.mjs +43 -0
  747. package/plugins/filters/condition/date/before.js +55 -0
  748. package/plugins/filters/condition/date/before.mjs +43 -0
  749. package/plugins/filters/condition/date/today.js +39 -0
  750. package/plugins/filters/condition/date/today.mjs +20 -0
  751. package/plugins/filters/condition/date/tomorrow.js +39 -0
  752. package/plugins/filters/condition/date/tomorrow.mjs +20 -0
  753. package/plugins/filters/condition/date/yesterday.js +39 -0
  754. package/plugins/filters/condition/date/yesterday.mjs +20 -0
  755. package/plugins/filters/condition/empty.js +35 -0
  756. package/plugins/filters/condition/empty.mjs +17 -0
  757. package/plugins/filters/condition/endsWith.js +50 -0
  758. package/plugins/filters/condition/endsWith.mjs +39 -0
  759. package/plugins/filters/condition/equal.js +49 -0
  760. package/plugins/filters/condition/equal.mjs +38 -0
  761. package/plugins/filters/condition/false.js +18 -0
  762. package/plugins/filters/condition/false.mjs +12 -0
  763. package/plugins/filters/condition/greaterThan.js +52 -0
  764. package/plugins/filters/condition/greaterThan.mjs +41 -0
  765. package/plugins/filters/condition/greaterThanOrEqual.js +52 -0
  766. package/plugins/filters/condition/greaterThanOrEqual.mjs +41 -0
  767. package/plugins/filters/condition/lessThan.js +52 -0
  768. package/plugins/filters/condition/lessThan.mjs +41 -0
  769. package/plugins/filters/condition/lessThanOrEqual.js +52 -0
  770. package/plugins/filters/condition/lessThanOrEqual.mjs +41 -0
  771. package/plugins/filters/condition/none.js +33 -0
  772. package/plugins/filters/condition/none.mjs +15 -0
  773. package/plugins/filters/condition/notBetween.js +36 -0
  774. package/plugins/filters/condition/notBetween.mjs +18 -0
  775. package/plugins/filters/condition/notContains.js +36 -0
  776. package/plugins/filters/condition/notContains.mjs +18 -0
  777. package/plugins/filters/condition/notEmpty.js +36 -0
  778. package/plugins/filters/condition/notEmpty.mjs +18 -0
  779. package/plugins/filters/condition/notEqual.js +36 -0
  780. package/plugins/filters/condition/notEqual.mjs +18 -0
  781. package/plugins/filters/condition/true.js +18 -0
  782. package/plugins/filters/condition/true.mjs +12 -0
  783. package/plugins/filters/conditionCollection.d.ts +32 -0
  784. package/plugins/filters/conditionCollection.js +343 -0
  785. package/plugins/filters/conditionCollection.mjs +337 -0
  786. package/plugins/filters/conditionRegisterer.js +61 -0
  787. package/plugins/filters/conditionRegisterer.mjs +53 -0
  788. package/plugins/filters/conditionUpdateObserver.d.ts +10 -0
  789. package/plugins/filters/conditionUpdateObserver.js +248 -0
  790. package/plugins/filters/conditionUpdateObserver.mjs +242 -0
  791. package/plugins/filters/constants.js +103 -0
  792. package/plugins/filters/constants.mjs +69 -0
  793. package/plugins/filters/dataFilter.js +98 -0
  794. package/plugins/filters/dataFilter.mjs +93 -0
  795. package/plugins/filters/filters.d.ts +56 -0
  796. package/plugins/filters/filters.js +1037 -0
  797. package/plugins/filters/filters.mjs +1026 -0
  798. package/plugins/filters/index.d.ts +1 -0
  799. package/plugins/filters/index.js +8 -0
  800. package/plugins/filters/index.mjs +1 -0
  801. package/plugins/filters/logicalOperationRegisterer.js +50 -0
  802. package/plugins/filters/logicalOperationRegisterer.mjs +42 -0
  803. package/plugins/filters/logicalOperations/conjunction.js +36 -0
  804. package/plugins/filters/logicalOperations/conjunction.mjs +18 -0
  805. package/plugins/filters/logicalOperations/disjunction.js +36 -0
  806. package/plugins/filters/logicalOperations/disjunction.mjs +18 -0
  807. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +40 -0
  808. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +22 -0
  809. package/plugins/filters/ui/_base.js +249 -0
  810. package/plugins/filters/ui/_base.mjs +231 -0
  811. package/plugins/filters/ui/input.js +140 -0
  812. package/plugins/filters/ui/input.mjs +134 -0
  813. package/plugins/filters/ui/link.js +86 -0
  814. package/plugins/filters/ui/link.mjs +80 -0
  815. package/plugins/filters/ui/multipleSelect.js +441 -0
  816. package/plugins/filters/ui/multipleSelect.mjs +434 -0
  817. package/plugins/filters/ui/radioInput.js +130 -0
  818. package/plugins/filters/ui/radioInput.mjs +124 -0
  819. package/plugins/filters/ui/select.js +269 -0
  820. package/plugins/filters/ui/select.mjs +261 -0
  821. package/plugins/filters/utils.js +143 -0
  822. package/plugins/filters/utils.mjs +134 -0
  823. package/plugins/formulas/engine/register.js +259 -0
  824. package/plugins/formulas/engine/register.mjs +247 -0
  825. package/plugins/formulas/engine/settings.js +115 -0
  826. package/plugins/formulas/engine/settings.mjs +107 -0
  827. package/plugins/formulas/formulas.d.ts +31 -0
  828. package/plugins/formulas/formulas.js +1229 -0
  829. package/plugins/formulas/formulas.mjs +1221 -0
  830. package/plugins/formulas/index.d.ts +1 -0
  831. package/plugins/formulas/index.js +8 -0
  832. package/plugins/formulas/index.mjs +1 -0
  833. package/plugins/formulas/utils.js +24 -0
  834. package/plugins/formulas/utils.mjs +19 -0
  835. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +76 -0
  836. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +67 -0
  837. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +124 -0
  838. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +115 -0
  839. package/plugins/hiddenColumns/hiddenColumns.d.ts +21 -0
  840. package/plugins/hiddenColumns/hiddenColumns.js +620 -0
  841. package/plugins/hiddenColumns/hiddenColumns.mjs +612 -0
  842. package/plugins/hiddenColumns/index.d.ts +1 -0
  843. package/plugins/hiddenColumns/index.js +8 -0
  844. package/plugins/hiddenColumns/index.mjs +1 -0
  845. package/plugins/hiddenRows/contextMenuItem/hideRow.js +76 -0
  846. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +67 -0
  847. package/plugins/hiddenRows/contextMenuItem/showRow.js +124 -0
  848. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +115 -0
  849. package/plugins/hiddenRows/hiddenRows.d.ts +21 -0
  850. package/plugins/hiddenRows/hiddenRows.js +612 -0
  851. package/plugins/hiddenRows/hiddenRows.mjs +604 -0
  852. package/plugins/hiddenRows/index.d.ts +1 -0
  853. package/plugins/hiddenRows/index.js +8 -0
  854. package/plugins/hiddenRows/index.mjs +1 -0
  855. package/plugins/index.d.ts +111 -0
  856. package/plugins/index.js +115 -0
  857. package/plugins/index.mjs +75 -0
  858. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +58 -0
  859. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +49 -0
  860. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +58 -0
  861. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +49 -0
  862. package/plugins/manualColumnFreeze/index.d.ts +1 -0
  863. package/plugins/manualColumnFreeze/index.js +8 -0
  864. package/plugins/manualColumnFreeze/index.mjs +1 -0
  865. package/plugins/manualColumnFreeze/manualColumnFreeze.d.ts +11 -0
  866. package/plugins/manualColumnFreeze/manualColumnFreeze.js +250 -0
  867. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +242 -0
  868. package/plugins/manualColumnMove/index.d.ts +1 -0
  869. package/plugins/manualColumnMove/index.js +8 -0
  870. package/plugins/manualColumnMove/index.mjs +1 -0
  871. package/plugins/manualColumnMove/manualColumnMove.d.ts +14 -0
  872. package/plugins/manualColumnMove/manualColumnMove.js +775 -0
  873. package/plugins/manualColumnMove/manualColumnMove.mjs +767 -0
  874. package/plugins/manualColumnMove/ui/_base.js +209 -0
  875. package/plugins/manualColumnMove/ui/_base.mjs +204 -0
  876. package/plugins/manualColumnMove/ui/backlight.js +60 -0
  877. package/plugins/manualColumnMove/ui/backlight.mjs +54 -0
  878. package/plugins/manualColumnMove/ui/guideline.js +60 -0
  879. package/plugins/manualColumnMove/ui/guideline.mjs +54 -0
  880. package/plugins/manualColumnResize/index.d.ts +1 -0
  881. package/plugins/manualColumnResize/index.js +8 -0
  882. package/plugins/manualColumnResize/index.mjs +1 -0
  883. package/plugins/manualColumnResize/manualColumnResize.d.ts +30 -0
  884. package/plugins/manualColumnResize/manualColumnResize.js +690 -0
  885. package/plugins/manualColumnResize/manualColumnResize.mjs +680 -0
  886. package/plugins/manualRowMove/index.d.ts +1 -0
  887. package/plugins/manualRowMove/index.js +8 -0
  888. package/plugins/manualRowMove/index.mjs +1 -0
  889. package/plugins/manualRowMove/manualRowMove.d.ts +14 -0
  890. package/plugins/manualRowMove/manualRowMove.js +757 -0
  891. package/plugins/manualRowMove/manualRowMove.mjs +749 -0
  892. package/plugins/manualRowMove/ui/_base.js +196 -0
  893. package/plugins/manualRowMove/ui/_base.mjs +191 -0
  894. package/plugins/manualRowMove/ui/backlight.js +60 -0
  895. package/plugins/manualRowMove/ui/backlight.mjs +54 -0
  896. package/plugins/manualRowMove/ui/guideline.js +60 -0
  897. package/plugins/manualRowMove/ui/guideline.mjs +54 -0
  898. package/plugins/manualRowResize/index.d.ts +1 -0
  899. package/plugins/manualRowResize/index.js +8 -0
  900. package/plugins/manualRowResize/index.mjs +1 -0
  901. package/plugins/manualRowResize/manualRowResize.d.ts +29 -0
  902. package/plugins/manualRowResize/manualRowResize.js +652 -0
  903. package/plugins/manualRowResize/manualRowResize.mjs +642 -0
  904. package/plugins/mergeCells/calculations/autofill.js +464 -0
  905. package/plugins/mergeCells/calculations/autofill.mjs +459 -0
  906. package/plugins/mergeCells/calculations/selection.js +204 -0
  907. package/plugins/mergeCells/calculations/selection.mjs +199 -0
  908. package/plugins/mergeCells/cellCoords.js +347 -0
  909. package/plugins/mergeCells/cellCoords.mjs +342 -0
  910. package/plugins/mergeCells/cellsCollection.js +344 -0
  911. package/plugins/mergeCells/cellsCollection.mjs +338 -0
  912. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +55 -0
  913. package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +38 -0
  914. package/plugins/mergeCells/index.d.ts +1 -0
  915. package/plugins/mergeCells/index.js +8 -0
  916. package/plugins/mergeCells/index.mjs +1 -0
  917. package/plugins/mergeCells/mergeCells.d.ts +22 -0
  918. package/plugins/mergeCells/mergeCells.js +1290 -0
  919. package/plugins/mergeCells/mergeCells.mjs +1282 -0
  920. package/plugins/mergeCells/utils.js +30 -0
  921. package/plugins/mergeCells/utils.mjs +26 -0
  922. package/plugins/multiColumnSorting/domHelpers.js +44 -0
  923. package/plugins/multiColumnSorting/domHelpers.mjs +39 -0
  924. package/plugins/multiColumnSorting/index.d.ts +1 -0
  925. package/plugins/multiColumnSorting/index.js +8 -0
  926. package/plugins/multiColumnSorting/index.mjs +1 -0
  927. package/plugins/multiColumnSorting/multiColumnSorting.d.ts +8 -0
  928. package/plugins/multiColumnSorting/multiColumnSorting.js +336 -0
  929. package/plugins/multiColumnSorting/multiColumnSorting.mjs +329 -0
  930. package/plugins/multiColumnSorting/rootComparator.js +55 -0
  931. package/plugins/multiColumnSorting/rootComparator.mjs +51 -0
  932. package/plugins/multiColumnSorting/utils.js +16 -0
  933. package/plugins/multiColumnSorting/utils.mjs +12 -0
  934. package/plugins/multipleSelectionHandles/index.d.ts +1 -0
  935. package/plugins/multipleSelectionHandles/index.js +8 -0
  936. package/plugins/multipleSelectionHandles/index.mjs +1 -0
  937. package/plugins/multipleSelectionHandles/multipleSelectionHandles.d.ts +21 -0
  938. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +394 -0
  939. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +386 -0
  940. package/plugins/nestedHeaders/index.d.ts +1 -0
  941. package/plugins/nestedHeaders/index.js +8 -0
  942. package/plugins/nestedHeaders/index.mjs +1 -0
  943. package/plugins/nestedHeaders/nestedHeaders.d.ts +17 -0
  944. package/plugins/nestedHeaders/nestedHeaders.js +666 -0
  945. package/plugins/nestedHeaders/nestedHeaders.mjs +658 -0
  946. package/plugins/nestedHeaders/stateManager/headersTree.js +288 -0
  947. package/plugins/nestedHeaders/stateManager/headersTree.mjs +283 -0
  948. package/plugins/nestedHeaders/stateManager/index.js +417 -0
  949. package/plugins/nestedHeaders/stateManager/index.mjs +412 -0
  950. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +102 -0
  951. package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +99 -0
  952. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +98 -0
  953. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +94 -0
  954. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.js +95 -0
  955. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.mjs +91 -0
  956. package/plugins/nestedHeaders/stateManager/nodeModifiers/hideColumn.js +54 -0
  957. package/plugins/nestedHeaders/stateManager/nodeModifiers/hideColumn.mjs +50 -0
  958. package/plugins/nestedHeaders/stateManager/nodeModifiers/index.js +40 -0
  959. package/plugins/nestedHeaders/stateManager/nodeModifiers/index.mjs +35 -0
  960. package/plugins/nestedHeaders/stateManager/nodeModifiers/showColumn.js +55 -0
  961. package/plugins/nestedHeaders/stateManager/nodeModifiers/showColumn.mjs +51 -0
  962. package/plugins/nestedHeaders/stateManager/nodeModifiers/utils/tree.js +61 -0
  963. package/plugins/nestedHeaders/stateManager/nodeModifiers/utils/tree.mjs +55 -0
  964. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +122 -0
  965. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +119 -0
  966. package/plugins/nestedHeaders/stateManager/sourceSettings.js +250 -0
  967. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +245 -0
  968. package/plugins/nestedHeaders/stateManager/utils.js +75 -0
  969. package/plugins/nestedHeaders/stateManager/utils.mjs +70 -0
  970. package/plugins/nestedHeaders/utils/ghostTable.js +167 -0
  971. package/plugins/nestedHeaders/utils/ghostTable.mjs +162 -0
  972. package/plugins/nestedRows/data/dataManager.js +809 -0
  973. package/plugins/nestedRows/data/dataManager.mjs +804 -0
  974. package/plugins/nestedRows/index.d.ts +1 -0
  975. package/plugins/nestedRows/index.js +8 -0
  976. package/plugins/nestedRows/index.mjs +1 -0
  977. package/plugins/nestedRows/nestedRows.d.ts +12 -0
  978. package/plugins/nestedRows/nestedRows.js +592 -0
  979. package/plugins/nestedRows/nestedRows.mjs +584 -0
  980. package/plugins/nestedRows/ui/_base.js +28 -0
  981. package/plugins/nestedRows/ui/_base.mjs +23 -0
  982. package/plugins/nestedRows/ui/collapsing.js +562 -0
  983. package/plugins/nestedRows/ui/collapsing.mjs +556 -0
  984. package/plugins/nestedRows/ui/contextMenu.js +147 -0
  985. package/plugins/nestedRows/ui/contextMenu.mjs +138 -0
  986. package/plugins/nestedRows/ui/headers.js +157 -0
  987. package/plugins/nestedRows/ui/headers.mjs +151 -0
  988. package/plugins/nestedRows/utils/rowMoveController.js +331 -0
  989. package/plugins/nestedRows/utils/rowMoveController.mjs +327 -0
  990. package/plugins/persistentState/index.d.ts +1 -0
  991. package/plugins/persistentState/index.js +8 -0
  992. package/plugins/persistentState/index.mjs +1 -0
  993. package/plugins/persistentState/persistentState.d.ts +13 -0
  994. package/plugins/persistentState/persistentState.js +207 -0
  995. package/plugins/persistentState/persistentState.mjs +199 -0
  996. package/plugins/persistentState/storage.js +138 -0
  997. package/plugins/persistentState/storage.mjs +133 -0
  998. package/plugins/registry.d.ts +9 -0
  999. package/plugins/registry.js +150 -0
  1000. package/plugins/registry.mjs +146 -0
  1001. package/plugins/search/index.d.ts +1 -0
  1002. package/plugins/search/index.js +8 -0
  1003. package/plugins/search/index.mjs +1 -0
  1004. package/plugins/search/search.d.ts +28 -0
  1005. package/plugins/search/search.js +377 -0
  1006. package/plugins/search/search.mjs +370 -0
  1007. package/plugins/touchScroll/index.d.ts +1 -0
  1008. package/plugins/touchScroll/index.js +8 -0
  1009. package/plugins/touchScroll/index.mjs +1 -0
  1010. package/plugins/touchScroll/touchScroll.d.ts +13 -0
  1011. package/plugins/touchScroll/touchScroll.js +250 -0
  1012. package/plugins/touchScroll/touchScroll.mjs +243 -0
  1013. package/plugins/trimRows/index.d.ts +1 -0
  1014. package/plugins/trimRows/index.js +8 -0
  1015. package/plugins/trimRows/index.mjs +1 -0
  1016. package/plugins/trimRows/trimRows.d.ts +17 -0
  1017. package/plugins/trimRows/trimRows.js +393 -0
  1018. package/plugins/trimRows/trimRows.mjs +386 -0
  1019. package/plugins/undoRedo/index.d.ts +1 -0
  1020. package/plugins/undoRedo/index.js +18 -0
  1021. package/plugins/undoRedo/index.mjs +2 -0
  1022. package/plugins/undoRedo/undoRedo.d.ts +49 -0
  1023. package/plugins/undoRedo/undoRedo.js +935 -0
  1024. package/plugins/undoRedo/undoRedo.mjs +928 -0
  1025. package/registry.d.ts +6 -0
  1026. package/registry.js +35 -0
  1027. package/registry.mjs +26 -0
  1028. package/renderers/autocompleteRenderer/autocompleteRenderer.d.ts +5 -0
  1029. package/renderers/autocompleteRenderer/autocompleteRenderer.js +59 -0
  1030. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +52 -0
  1031. package/renderers/autocompleteRenderer/index.d.ts +1 -0
  1032. package/renderers/autocompleteRenderer/index.js +7 -0
  1033. package/renderers/autocompleteRenderer/index.mjs +1 -0
  1034. package/renderers/base.d.ts +3 -0
  1035. package/renderers/baseRenderer/baseRenderer.d.ts +5 -0
  1036. package/renderers/baseRenderer/baseRenderer.js +46 -0
  1037. package/renderers/baseRenderer/baseRenderer.mjs +39 -0
  1038. package/renderers/baseRenderer/index.d.ts +1 -0
  1039. package/renderers/baseRenderer/index.js +7 -0
  1040. package/renderers/baseRenderer/index.mjs +1 -0
  1041. package/renderers/checkboxRenderer/checkboxRenderer.d.ts +5 -0
  1042. package/renderers/checkboxRenderer/checkboxRenderer.js +398 -0
  1043. package/renderers/checkboxRenderer/checkboxRenderer.mjs +391 -0
  1044. package/renderers/checkboxRenderer/index.d.ts +1 -0
  1045. package/renderers/checkboxRenderer/index.js +7 -0
  1046. package/renderers/checkboxRenderer/index.mjs +1 -0
  1047. package/renderers/htmlRenderer/htmlRenderer.d.ts +5 -0
  1048. package/renderers/htmlRenderer/htmlRenderer.js +25 -0
  1049. package/renderers/htmlRenderer/htmlRenderer.mjs +19 -0
  1050. package/renderers/htmlRenderer/index.d.ts +1 -0
  1051. package/renderers/htmlRenderer/index.js +7 -0
  1052. package/renderers/htmlRenderer/index.mjs +1 -0
  1053. package/renderers/index.d.ts +45 -0
  1054. package/renderers/index.js +48 -0
  1055. package/renderers/index.mjs +24 -0
  1056. package/renderers/numericRenderer/index.d.ts +1 -0
  1057. package/renderers/numericRenderer/index.js +7 -0
  1058. package/renderers/numericRenderer/index.mjs +1 -0
  1059. package/renderers/numericRenderer/numericRenderer.d.ts +5 -0
  1060. package/renderers/numericRenderer/numericRenderer.js +57 -0
  1061. package/renderers/numericRenderer/numericRenderer.mjs +50 -0
  1062. package/renderers/passwordRenderer/index.d.ts +1 -0
  1063. package/renderers/passwordRenderer/index.js +7 -0
  1064. package/renderers/passwordRenderer/index.mjs +1 -0
  1065. package/renderers/passwordRenderer/passwordRenderer.d.ts +5 -0
  1066. package/renderers/passwordRenderer/passwordRenderer.js +32 -0
  1067. package/renderers/passwordRenderer/passwordRenderer.mjs +26 -0
  1068. package/renderers/registry.d.ts +18 -0
  1069. package/renderers/registry.js +48 -0
  1070. package/renderers/registry.mjs +38 -0
  1071. package/renderers/textRenderer/index.d.ts +1 -0
  1072. package/renderers/textRenderer/index.js +7 -0
  1073. package/renderers/textRenderer/index.mjs +1 -0
  1074. package/renderers/textRenderer/textRenderer.d.ts +5 -0
  1075. package/renderers/textRenderer/textRenderer.js +48 -0
  1076. package/renderers/textRenderer/textRenderer.mjs +42 -0
  1077. package/renderers/timeRenderer/index.d.ts +1 -0
  1078. package/renderers/timeRenderer/index.js +7 -0
  1079. package/renderers/timeRenderer/index.mjs +1 -0
  1080. package/renderers/timeRenderer/timeRenderer.d.ts +5 -0
  1081. package/renderers/timeRenderer/timeRenderer.js +26 -0
  1082. package/renderers/timeRenderer/timeRenderer.mjs +20 -0
  1083. package/selection/highlight/constants.js +16 -0
  1084. package/selection/highlight/constants.mjs +6 -0
  1085. package/selection/highlight/highlight.js +330 -0
  1086. package/selection/highlight/highlight.mjs +325 -0
  1087. package/selection/highlight/types/activeHeader.js +38 -0
  1088. package/selection/highlight/types/activeHeader.mjs +32 -0
  1089. package/selection/highlight/types/area.js +49 -0
  1090. package/selection/highlight/types/area.mjs +43 -0
  1091. package/selection/highlight/types/cell.js +46 -0
  1092. package/selection/highlight/types/cell.mjs +40 -0
  1093. package/selection/highlight/types/customSelection.js +41 -0
  1094. package/selection/highlight/types/customSelection.mjs +35 -0
  1095. package/selection/highlight/types/fill.js +41 -0
  1096. package/selection/highlight/types/fill.mjs +35 -0
  1097. package/selection/highlight/types/header.js +49 -0
  1098. package/selection/highlight/types/header.mjs +43 -0
  1099. package/selection/highlight/types/index.js +43 -0
  1100. package/selection/highlight/types/index.mjs +39 -0
  1101. package/selection/highlight/visualSelection.js +277 -0
  1102. package/selection/highlight/visualSelection.mjs +272 -0
  1103. package/selection/index.d.ts +5 -0
  1104. package/selection/index.js +30 -0
  1105. package/selection/index.mjs +6 -0
  1106. package/selection/mouseEventHandler.js +135 -0
  1107. package/selection/mouseEventHandler.mjs +129 -0
  1108. package/selection/range.js +173 -0
  1109. package/selection/range.mjs +168 -0
  1110. package/selection/selection.js +802 -0
  1111. package/selection/selection.mjs +796 -0
  1112. package/selection/transformation.js +169 -0
  1113. package/selection/transformation.mjs +163 -0
  1114. package/selection/utils.js +256 -0
  1115. package/selection/utils.mjs +242 -0
  1116. package/settings.d.ts +210 -0
  1117. package/shortcuts/context.d.ts +20 -0
  1118. package/shortcuts/context.js +241 -0
  1119. package/shortcuts/context.mjs +236 -0
  1120. package/shortcuts/index.d.ts +1 -0
  1121. package/shortcuts/index.js +6 -0
  1122. package/shortcuts/index.mjs +1 -0
  1123. package/shortcuts/keyObserver.js +58 -0
  1124. package/shortcuts/keyObserver.mjs +54 -0
  1125. package/shortcuts/manager.d.ts +10 -0
  1126. package/shortcuts/manager.js +165 -0
  1127. package/shortcuts/manager.mjs +159 -0
  1128. package/shortcuts/recorder.js +165 -0
  1129. package/shortcuts/recorder.mjs +161 -0
  1130. package/shortcuts/utils.js +58 -0
  1131. package/shortcuts/utils.mjs +51 -0
  1132. package/tableView.js +1313 -0
  1133. package/tableView.mjs +1307 -0
  1134. package/translations/changesObservable/observable.js +175 -0
  1135. package/translations/changesObservable/observable.mjs +170 -0
  1136. package/translations/changesObservable/observer.js +100 -0
  1137. package/translations/changesObservable/observer.mjs +94 -0
  1138. package/translations/changesObservable/utils.js +50 -0
  1139. package/translations/changesObservable/utils.mjs +46 -0
  1140. package/translations/index.d.ts +1 -0
  1141. package/translations/index.js +29 -0
  1142. package/translations/index.mjs +4 -0
  1143. package/translations/indexMapper.d.ts +48 -0
  1144. package/translations/indexMapper.js +865 -0
  1145. package/translations/indexMapper.mjs +859 -0
  1146. package/translations/mapCollections/aggregatedCollection.js +139 -0
  1147. package/translations/mapCollections/aggregatedCollection.mjs +134 -0
  1148. package/translations/mapCollections/index.js +18 -0
  1149. package/translations/mapCollections/index.mjs +2 -0
  1150. package/translations/mapCollections/mapCollection.js +164 -0
  1151. package/translations/mapCollections/mapCollection.mjs +156 -0
  1152. package/translations/maps/hidingMap.js +63 -0
  1153. package/translations/maps/hidingMap.mjs +58 -0
  1154. package/translations/maps/index.js +59 -0
  1155. package/translations/maps/index.mjs +29 -0
  1156. package/translations/maps/indexMap.d.ts +10 -0
  1157. package/translations/maps/indexMap.js +203 -0
  1158. package/translations/maps/indexMap.mjs +197 -0
  1159. package/translations/maps/indexesSequence.js +82 -0
  1160. package/translations/maps/indexesSequence.mjs +77 -0
  1161. package/translations/maps/linkedPhysicalIndexToValueMap.js +216 -0
  1162. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +211 -0
  1163. package/translations/maps/physicalIndexToValueMap.js +76 -0
  1164. package/translations/maps/physicalIndexToValueMap.mjs +71 -0
  1165. package/translations/maps/trimmingMap.js +63 -0
  1166. package/translations/maps/trimmingMap.mjs +58 -0
  1167. package/translations/maps/utils/actionsOnIndexes.js +42 -0
  1168. package/translations/maps/utils/actionsOnIndexes.mjs +37 -0
  1169. package/translations/maps/utils/index.js +28 -0
  1170. package/translations/maps/utils/index.mjs +22 -0
  1171. package/translations/maps/utils/indexesSequence.js +52 -0
  1172. package/translations/maps/utils/indexesSequence.mjs +47 -0
  1173. package/translations/maps/utils/physicallyIndexed.js +61 -0
  1174. package/translations/maps/utils/physicallyIndexed.mjs +56 -0
  1175. package/utils/dataStructures/linkedList.js +263 -0
  1176. package/utils/dataStructures/linkedList.mjs +258 -0
  1177. package/utils/dataStructures/priorityMap.js +106 -0
  1178. package/utils/dataStructures/priorityMap.mjs +99 -0
  1179. package/utils/dataStructures/queue.js +83 -0
  1180. package/utils/dataStructures/queue.mjs +78 -0
  1181. package/utils/dataStructures/stack.js +83 -0
  1182. package/utils/dataStructures/stack.mjs +78 -0
  1183. package/utils/dataStructures/tree.js +254 -0
  1184. package/utils/dataStructures/tree.mjs +246 -0
  1185. package/utils/dataStructures/uniqueMap.js +144 -0
  1186. package/utils/dataStructures/uniqueMap.mjs +140 -0
  1187. package/utils/dataStructures/uniqueSet.js +78 -0
  1188. package/utils/dataStructures/uniqueSet.mjs +74 -0
  1189. package/utils/ghostTable.js +536 -0
  1190. package/utils/ghostTable.mjs +531 -0
  1191. package/utils/interval.js +134 -0
  1192. package/utils/interval.mjs +129 -0
  1193. package/utils/parseTable.d.ts +5 -0
  1194. package/utils/parseTable.js +305 -0
  1195. package/utils/parseTable.mjs +299 -0
  1196. package/utils/rootInstance.js +48 -0
  1197. package/utils/rootInstance.mjs +38 -0
  1198. package/utils/samplesGenerator.js +210 -0
  1199. package/utils/samplesGenerator.mjs +205 -0
  1200. package/utils/staticRegister.js +92 -0
  1201. package/utils/staticRegister.mjs +86 -0
  1202. package/validators/autocompleteValidator/autocompleteValidator.d.ts +5 -0
  1203. package/validators/autocompleteValidator/autocompleteValidator.js +56 -0
  1204. package/validators/autocompleteValidator/autocompleteValidator.mjs +50 -0
  1205. package/validators/autocompleteValidator/index.d.ts +1 -0
  1206. package/validators/autocompleteValidator/index.js +7 -0
  1207. package/validators/autocompleteValidator/index.mjs +1 -0
  1208. package/validators/base.d.ts +6 -0
  1209. package/validators/dateValidator/dateValidator.d.ts +5 -0
  1210. package/validators/dateValidator/dateValidator.js +77 -0
  1211. package/validators/dateValidator/dateValidator.mjs +69 -0
  1212. package/validators/dateValidator/index.d.ts +1 -0
  1213. package/validators/dateValidator/index.js +8 -0
  1214. package/validators/dateValidator/index.mjs +1 -0
  1215. package/validators/index.d.ts +33 -0
  1216. package/validators/index.js +32 -0
  1217. package/validators/index.mjs +16 -0
  1218. package/validators/numericValidator/index.d.ts +1 -0
  1219. package/validators/numericValidator/index.js +7 -0
  1220. package/validators/numericValidator/index.mjs +1 -0
  1221. package/validators/numericValidator/numericValidator.d.ts +5 -0
  1222. package/validators/numericValidator/numericValidator.js +30 -0
  1223. package/validators/numericValidator/numericValidator.mjs +24 -0
  1224. package/validators/registry.d.ts +18 -0
  1225. package/validators/registry.js +48 -0
  1226. package/validators/registry.mjs +38 -0
  1227. package/validators/timeValidator/index.d.ts +1 -0
  1228. package/validators/timeValidator/index.js +7 -0
  1229. package/validators/timeValidator/index.mjs +1 -0
  1230. package/validators/timeValidator/timeValidator.d.ts +5 -0
  1231. package/validators/timeValidator/timeValidator.js +66 -0
  1232. package/validators/timeValidator/timeValidator.mjs +60 -0
@@ -0,0 +1,4610 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ require("core-js/modules/es.symbol.js");
6
+ require("core-js/modules/es.symbol.description.js");
7
+ require("core-js/modules/es.object.to-string.js");
8
+ require("core-js/modules/es.symbol.iterator.js");
9
+ require("core-js/modules/es.array.iterator.js");
10
+ require("core-js/modules/es.string.iterator.js");
11
+ require("core-js/modules/web.dom-collections.iterator.js");
12
+ var _mixed = require("../../helpers/mixed");
13
+ var _object = require("../../helpers/object");
14
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
15
+ /* eslint-disable jsdoc/require-description-complete-sentence */
16
+ /**
17
+ * @alias Options
18
+ * @class Options
19
+ * @description
20
+ *
21
+ * [Configuration options](@/guides/getting-started/configuration-options.md) let you heavily customize your Handsontable instance. For example, you can:
22
+ *
23
+ * - Enable and disable built-in features
24
+ * - Enable and configure additional [plugins](@/guides/tools-and-building/custom-plugins.md)
25
+ * - Personalize Handsontable's look
26
+ * - Adjust Handsontable's behavior
27
+ * - Implement your own custom features
28
+ *
29
+ * ::: only-for javascript
30
+ *
31
+ * To apply [configuration options](@/guides/getting-started/configuration-options.md), pass them as
32
+ * a second argument of the [Handsontable constructor](@/guides/getting-started/installation.md#initialize-handsontable),
33
+ * using the [object literal notation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer):
34
+ *
35
+ * Read more on the [Configuration options](@/guides/getting-started/configuration-options.md) page.
36
+ *
37
+ * ```js
38
+ * const container = document.getElementById('example');
39
+ *
40
+ * const hot = new Handsontable(container, {
41
+ * // configuration options, in the object literal notation
42
+ * licenseKey: 'non-commercial-and-evaluation',
43
+ * data: [
44
+ * ['A1', 'B1', 'C1', 'D1', 'E1'],
45
+ * ['A2', 'B2', 'C2', 'D2', 'E2'],
46
+ * ['A3', 'B3', 'C3', 'D3', 'E3'],
47
+ * ['A4', 'B4', 'C4', 'D4', 'E4'],
48
+ * ['A5', 'B5', 'C5', 'D5', 'E5'],
49
+ * ],
50
+ * width: 400,
51
+ * height: 300,
52
+ * colHeaders: true,
53
+ * rowHeaders: true,
54
+ * customBorders: true,
55
+ * dropdownMenu: true,
56
+ * multiColumnSorting: true,
57
+ * filters: true,
58
+ * manualRowMove: true,
59
+ * });
60
+ * ```
61
+ * :::
62
+ *
63
+ * ::: only-for react
64
+ *
65
+ * To apply configuration options, pass them as individual props
66
+ * of the [`HotTable`](@/guides/getting-started/installation.md##hottable-component)
67
+ * or [`HotColumn`](@/guides/columns/react-hot-column.md) components.
68
+ *
69
+ * Read more on the [Configuration options](@/guides/getting-started/configuration-options.md) page.
70
+ *
71
+ * ```jsx
72
+ * <HotTable
73
+ * // configuration options, in the object literal notation
74
+ * licenseKey='non-commercial-and-evaluation'
75
+ * data={[
76
+ * ['A1', 'B1', 'C1', 'D1', 'E1'],
77
+ * ['A2', 'B2', 'C2', 'D2', 'E2'],
78
+ * ['A3', 'B3', 'C3', 'D3', 'E3'],
79
+ * ['A4', 'B4', 'C4', 'D4', 'E4'],
80
+ * ['A5', 'B5', 'C5', 'D5', 'E5'],
81
+ * ]}
82
+ * width={400}
83
+ * height={300}
84
+ * colHeaders={true}
85
+ * rowHeaders={true}
86
+ * customBorders={true}
87
+ * dropdownMenu={true}
88
+ * multiColumnSorting={true}
89
+ * filters={true}
90
+ * manualRowMove={true}
91
+ * />
92
+ * ```
93
+ * :::
94
+ *
95
+ * Depending on your needs, you can apply [configuration options](@/api/options.md) to different elements of your grid:
96
+ * - [The entire grid](@/guides/getting-started/configuration-options.md#setting-grid-options)
97
+ * - [Individual columns](@/guides/getting-started/configuration-options.md#setting-column-options)
98
+ * - [Individual rows](@/guides/getting-started/configuration-options.md#setting-row-options)
99
+ * - [Individual cells](@/guides/getting-started/configuration-options.md#setting-cell-options)
100
+ * - [Individual grid elements, based on any logic you implement](@/guides/getting-started/configuration-options.md#implementing-custom-logic)
101
+ *
102
+ * Read more:
103
+ * - [Configuration options](@/guides/getting-started/configuration-options.md)
104
+ */
105
+ var _default = function _default() {
106
+ return {
107
+ /* eslint-disable jsdoc/require-description-complete-sentence */
108
+
109
+ /**
110
+ * Information on which of the meta properties were added automatically.
111
+ * For example: setting the `renderer` property directly won't extend the `_automaticallyAssignedMetaProps`
112
+ * entry, but setting a `type` will modify it to:
113
+ * ```
114
+ * _automaticallyAssignedMetaProps: {
115
+ * renderer: true,
116
+ * editor: true,
117
+ * validator: true
118
+ * }
119
+ * ```
120
+ *
121
+ * @private
122
+ * @type {object}
123
+ * @default {}
124
+ */
125
+ _automaticallyAssignedMetaProps: {},
126
+ /**
127
+ * The `activeHeaderClassName` option lets you add a CSS class name
128
+ * to every currently-active, currently-selected header (when a whole column or row is selected).
129
+ *
130
+ * Read more:
131
+ * - [`currentRowClassName`](#currentRowClassName)
132
+ * - [`currentColClassName`](#currentColClassName)
133
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
134
+ * - [`invalidCellClassName`](#invalidCellClassName)
135
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
136
+ * - [`commentedCellClassName`](#commentedCellClassName)
137
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
138
+ * - [`TableClassName`](#TableClassName)
139
+ * - [`className`](#className)
140
+ *
141
+ * @memberof Options#
142
+ * @type {string}
143
+ * @since 0.38.2
144
+ * @default 'ht__active_highlight'
145
+ * @category Core
146
+ *
147
+ * @example
148
+ * ```js
149
+ * // add an `ht__active_highlight` CSS class name
150
+ * // to every currently-active, currently-selected header
151
+ * activeHeaderClassName: 'ht__active_highlight',
152
+ * ```
153
+ */
154
+ activeHeaderClassName: 'ht__active_highlight',
155
+ /**
156
+ * The `allowEmpty` option determines whether Handsontable accepts the following values:
157
+ * - `null`
158
+ * - `undefined`
159
+ * - `''`
160
+ *
161
+ * You can set the `allowEmpty` option to one of the following:
162
+ *
163
+ * | Setting | Description |
164
+ * | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
165
+ * | `true` (default) | - Accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` or `''` values as `valid` |
166
+ * | `false` | - Don't accept `null`, `undefined` and `''` values<br>- Mark cells that contain `null`, `undefined` or `''` values with as `invalid` |
167
+ *
168
+ * ::: tip
169
+ * To use the [`allowEmpty`](#allowempty) option, you need to set the [`validator`](#validator) option (or the [`type`](#type) option).
170
+ * :::
171
+ *
172
+ * @memberof Options#
173
+ * @type {boolean}
174
+ * @default true
175
+ * @category Core
176
+ *
177
+ * @example
178
+ * ```js
179
+ * // allow empty values in each cell of the entire grid
180
+ * allowEmpty: true,
181
+ *
182
+ * // or
183
+ * columns: [
184
+ * {
185
+ * type: 'date',
186
+ * dateFormat: 'DD/MM/YYYY',
187
+ * // allow empty values in each cell of the 'date' column
188
+ * allowEmpty: true
189
+ * }
190
+ * ],
191
+ * ```
192
+ */
193
+ allowEmpty: true,
194
+ /**
195
+ * The `allowHtml` option configures whether [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md)
196
+ * and [`dropdown`](@/guides/cell-types/dropdown-cell-type.md) cells' [`source`](#source) data
197
+ * is treated as HTML.
198
+ *
199
+ * You can set the `allowHtml` option to one of the following:
200
+ *
201
+ * | Setting | Description |
202
+ * | ----------------- | --------------------------------------------------- |
203
+ * | `false` (default) | The [`source`](#source) data is not treated as HTML |
204
+ * | `true` | The [`source`](#source) data is treated as HTML |
205
+ *
206
+ * __Warning:__ Setting the `allowHtml` option to `true` can cause serious XSS vulnerabilities.
207
+ *
208
+ * Read more:
209
+ * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type.md)
210
+ * - [Dropdown cell type](@/guides/cell-types/dropdown-cell-type.md)
211
+ * - [`source`](#source)
212
+ *
213
+ * @memberof Options#
214
+ * @type {boolean}
215
+ * @default false
216
+ * @category Core
217
+ *
218
+ * @example
219
+ * ```js
220
+ * columns: [
221
+ * {
222
+ * // set the `type` of each cell in this column to `autocomplete`
223
+ * type: 'autocomplete',
224
+ * // set options available in every `autocomplete` cell of this column
225
+ * source: ['<strong>foo</strong>', '<strong>bar</strong>']
226
+ * // use HTML in the `source` list
227
+ * allowHtml: true,
228
+ * },
229
+ * ],
230
+ * ```
231
+ */
232
+ allowHtml: false,
233
+ /**
234
+ * If set to `true`, the `allowInsertColumn` option adds the following menu items to the [context menu](@/guides/accessories-and-menus/context-menu.md):
235
+ * - **Insert column left**
236
+ * - **Insert column right**
237
+ *
238
+ * @memberof Options#
239
+ * @type {boolean}
240
+ * @default true
241
+ * @category Core
242
+ *
243
+ * @example
244
+ * ```js
245
+ * // hide the 'Insert column left' and 'Insert column right' menu items from the context menu
246
+ * allowInsertColumn: false,
247
+ * ```
248
+ */
249
+ allowInsertColumn: true,
250
+ /**
251
+ * If set to `true`, the `allowInsertRow` option adds the following menu items to the [context menu](@/guides/accessories-and-menus/context-menu.md):
252
+ * - **Insert row above**
253
+ * - **Insert row below**
254
+ *
255
+ * @memberof Options#
256
+ * @type {boolean}
257
+ * @default true
258
+ * @category Core
259
+ *
260
+ * @example
261
+ * ```js
262
+ * // hide the 'Insert row above' and 'Insert row below' menu items from the context menu
263
+ * allowInsertRow: false,
264
+ * ```
265
+ */
266
+ allowInsertRow: true,
267
+ /**
268
+ * The `allowInvalid` option determines whether Handsontable accepts values
269
+ * that were marked as `invalid` by the [cell validator](@/guides/cell-functions/cell-validator.md).
270
+ *
271
+ * You can set the `allowInvalid` option to one of the following:
272
+ *
273
+ * | Setting | Description |
274
+ * | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
275
+ * | `true` (default) | - Accept `invalid` values<br>- Allow the user to close the [cell editor](@/guides/cell-functions/cell-editor.md) with `invalid` values<br>- Save `invalid` values into the data source |
276
+ * | `false` | - Don't accept `invalid` values<br>- Don't allow the user to close the [cell editor](@/guides/cell-functions/cell-editor.md) with `invalid` values<br>- Don't save `invalid` values into the data source |
277
+ *
278
+ * Setting the `allowInvalid` option to `false` can be useful when used with the [Autocomplete strict mode](@/guides/cell-types/autocomplete-cell-type.md#autocomplete-strict-mode).
279
+ *
280
+ * Read more:
281
+ * - [Cell validator](@/guides/cell-functions/cell-validator.md)
282
+ * - [Cell editor](@/guides/cell-functions/cell-editor.md)
283
+ * - [Autocomplete strict mode](@/guides/cell-types/autocomplete-cell-type.md#autocomplete-strict-mode)
284
+ *
285
+ * @memberof Options#
286
+ * @type {boolean}
287
+ * @default true
288
+ * @category Core
289
+ *
290
+ * @example
291
+ * ```js
292
+ * // don't accept `invalid` values
293
+ * // don't allow the user to close the cell editor
294
+ * // don't save `invalid` values into the data source
295
+ * allowInvalid: false,
296
+ * ```
297
+ */
298
+ allowInvalid: true,
299
+ /**
300
+ * If set to `true`, the `allowRemoveColumn` option adds the following menu items to the [context menu](@/guides/accessories-and-menus/context-menu.md):
301
+ * - **Remove column**
302
+ *
303
+ * Read more:
304
+ * - [Context menu](@/guides/accessories-and-menus/context-menu.md)
305
+ *
306
+ * @memberof Options#
307
+ * @type {boolean}
308
+ * @default true
309
+ * @category Core
310
+ *
311
+ * @example
312
+ * ```js
313
+ * // hide the 'Remove column' menu item from the context menu
314
+ * allowRemoveColumn: false,
315
+ * ```
316
+ */
317
+ allowRemoveColumn: true,
318
+ /**
319
+ * If set to `true`, the `allowRemoveRow` option adds the following menu items to the [context menu](@/guides/accessories-and-menus/context-menu.md):
320
+ * - **Remove row**
321
+ *
322
+ * Read more:
323
+ * - [Context menu](@/guides/accessories-and-menus/context-menu.md)
324
+ *
325
+ * @memberof Options#
326
+ * @type {boolean}
327
+ * @default true
328
+ * @category Core
329
+ *
330
+ * @example
331
+ * ```js
332
+ * // hide the 'Remove row' menu item from the context menu
333
+ * allowRemoveRow: false,
334
+ * ```
335
+ */
336
+ allowRemoveRow: true,
337
+ /**
338
+ * The `autoColumnSize` option configures the [`AutoColumnSize`](@/api/autoColumnSize.md) plugin.
339
+ *
340
+ * You can set the `autoColumnSize` option to one of the following:
341
+ *
342
+ * | Setting | Description |
343
+ * | --------- | -------------------------------------------------------------------------------------------- |
344
+ * | `false` | Disable the [`AutoColumnSize`](@/api/autoColumnSize.md) plugin |
345
+ * | `true` | Enable the [`AutoColumnSize`](@/api/autoColumnSize.md) plugin with the default configuration |
346
+ * | An object | Enable the [`AutoColumnSize`](@/api/autoColumnSize.md) plugin and modify the plugin options |
347
+ *
348
+ * If you set the `autoColumnSize` option to an object, you can set the following [`AutoColumnSize`](@/api/autoColumnSize.md) plugin options:
349
+ *
350
+ * | Property | Possible values | Description |
351
+ * | ----------------------- | ------------------------------- | -------------------------------------------------------------------------------------------------------------- |
352
+ * | `syncLimit` | A number \| A percentage string | The number/percentage of columns to keep in sync<br>(default: `50`) |
353
+ * | `useHeaders` | `true` \| `false` | When calculating column widths:<br>`true`: use column headers<br>`false`: don't use column headers |
354
+ * | `samplingRatio` | A number | The number of samples of the same length to be used in column width calculations |
355
+ * | `allowSampleDuplicates` | `true` \| `false` | When calculating column widths:<br>`true`: Allow duplicate samples<br>`false`: Don't allow duplicate samples |
356
+ *
357
+ * By default, the `autoColumnSize` option is set to `undefined`,
358
+ * but the [`AutoColumnSize`](@/api/autoColumnSize.md) plugin acts as enabled.
359
+ * To disable the [`AutoColumnSize`](@/api/autoColumnSize.md) plugin completely,
360
+ * set the `autoColumnSize` option to `false`.
361
+ *
362
+ * Using the [`colWidths`](#colWidths) option forcibly disables the [`AutoColumnSize`](@/api/autoColumnSize.md) plugin.
363
+ *
364
+ * Read more:
365
+ * - [Plugins: `AutoColumnSize`](@/api/autoColumnSize.md)
366
+ *
367
+ * @memberof Options#
368
+ * @type {object|boolean}
369
+ * @default undefined
370
+ * @category AutoColumnSize
371
+ *
372
+ * @example
373
+ * ```js
374
+ * autoColumnSize: {
375
+ * // keep 40% of columns in sync (the rest of columns: async)
376
+ * syncLimit: '40%',
377
+ * // when calculating column widths, use column headers
378
+ * useHeaders: true,
379
+ * // when calculating column widths, use 10 samples of the same length
380
+ * samplingRatio: 10,
381
+ * // when calculating column widths, allow duplicate samples
382
+ * allowSampleDuplicates: true
383
+ * },
384
+ * ```
385
+ */
386
+ autoColumnSize: void 0,
387
+ /**
388
+ * The `autoRowSize` option configures the [`AutoRowSize`](@/api/autoRowSize.md) plugin.
389
+ *
390
+ * You can set the `autoRowSize` option to one of the following:
391
+ *
392
+ * | Setting | Description |
393
+ * | --------- | -------------------------------------------------------------------------------------- |
394
+ * | `false` | Disable the [`AutoRowSize`](@/api/autoRowSize.md) plugin |
395
+ * | `true` | Enable the [`AutoRowSize`](@/api/autoRowSize.md) plugin with the default configuration |
396
+ * | An object | Enable the [`AutoRowSize`](@/api/autoRowSize.md) plugin and modify the plugin options |
397
+ *
398
+ * To give Handsontable's [scrollbar](https://handsontable.com/docs/8.0.0/demo-scrolling.html)
399
+ * a proper size, set the `autoRowSize` option to `true`.
400
+ *
401
+ * If you set the `autoRowSize` option to an object, you can set the following [`AutoRowSize`](@/api/autoRowSize.md) plugin options:
402
+ *
403
+ * | Property | Possible values | Description |
404
+ * | ----------- | ------------------------------- | ----------------------------------------------------------------- |
405
+ * | `syncLimit` | A number \| A percentage string | The number/percentage of rows to keep in sync<br>(default: `500`) |
406
+ *
407
+ * Using the [`rowHeights`](#rowHeights) option forcibly disables the [`AutoRowSize`](@/api/autoRowSize.md) plugin.
408
+ *
409
+ * Read more:
410
+ * - [Plugins: `AutoRowSize`](@/api/autoRowSize.md)
411
+ *
412
+ * @memberof Options#
413
+ * @type {object|boolean}
414
+ * @default undefined
415
+ * @category AutoRowSize
416
+ *
417
+ * @example
418
+ * ```js
419
+ * autoRowSize: {
420
+ * // keep 40% of rows in sync (the rest of rows: async)
421
+ * syncLimit: '40%'
422
+ * },
423
+ * ```
424
+ */
425
+ autoRowSize: void 0,
426
+ /**
427
+ * The `autoWrapCol` option determines what happens to current cell selection when you navigate to the grid's top or bottom edge.
428
+ *
429
+ * You can set the `autoWrapCol` option to one of the following:
430
+ *
431
+ * | Setting | Description |
432
+ * | ----------------- | ----------------------------------------------------------------------------------------------------------------------- |
433
+ * | `true` | On reaching the grid's top or bottom edge<br>- Jump to the opposite edge<br>- Select a cell in the previous/next column |
434
+ * | `false` (default) | On reaching the grid's top or bottom edge, stop |
435
+ *
436
+ * @memberof Options#
437
+ * @type {boolean}
438
+ * @default false
439
+ * @category Core
440
+ *
441
+ * @example
442
+ * ```js
443
+ * // on reaching the grid's top or bottom edge, jump to the opposite edge
444
+ * autoWrapCol: true,
445
+ * ```
446
+ */
447
+ autoWrapCol: false,
448
+ /**
449
+ * The `autoWrapRow` option determines what happens to current cell selection when you navigate to the grid's left or right edge.
450
+ *
451
+ * You can set the `autoWrapRow` option to one of the following:
452
+ *
453
+ * | Setting | Description |
454
+ * | ----------------- | ---------------------------------------------------------------------------------------------------------------------------- |
455
+ * | `true` | On reaching the grid's left or right edge:<br>- Jump to the grid's opposite edge<br>- Select a cell in the previous/next row |
456
+ * | `false` (default) | On reaching the grid's left or right edge, stop |
457
+ *
458
+ * @memberof Options#
459
+ * @type {boolean}
460
+ * @default false
461
+ * @category Core
462
+ *
463
+ * @example
464
+ * ```js
465
+ * // on reaching the grid's left or right edge, jump to the opposite edge
466
+ * autoWrapRow: true,
467
+ * ```
468
+ */
469
+ autoWrapRow: false,
470
+ /**
471
+ * @description
472
+ * The `bindRowsWithHeaders` option configures the [`BindRowsWithHeaders`](@/api/bindRowsWithHeaders.md) plugin.
473
+ *
474
+ * You can set the `bindRowsWithHeaders` option to one of the following:
475
+ *
476
+ * | Setting | Description |
477
+ * | ------- | ---------------------------------------------------------------------------- |
478
+ * | `false` | Disable the the [`BindRowsWithHeaders`](@/api/bindRowsWithHeaders.md) plugin |
479
+ * | `true` | Enable the the [`BindRowsWithHeaders`](@/api/bindRowsWithHeaders.md) plugin |
480
+ *
481
+ * Read more:
482
+ * - [Plugins: `BindRowsWithHeaders`](@/api/bindRowsWithHeaders.md)
483
+ *
484
+ * @memberof Options#
485
+ * @type {boolean|string}
486
+ * @default undefined
487
+ * @category BindRowsWithHeaders
488
+ *
489
+ * @example
490
+ * ```js
491
+ * // enable the `BindRowsWithHeaders` plugin
492
+ * bindRowsWithHeaders: true
493
+ * ```
494
+ */
495
+ bindRowsWithHeaders: void 0,
496
+ /**
497
+ * The `cell` option lets you apply [configuration options](@/guides/getting-started/configuration-options.md) to individual cells.
498
+ *
499
+ * The `cell` option overwrites the [top-level grid options](@/guides/getting-started/configuration-options.md#setting-grid-options),
500
+ * and the [`columns`](#columns) options.
501
+ *
502
+ * Read more:
503
+ * - [Configuration options: Setting cell options](@/guides/getting-started/configuration-options.md#setting-cell-options)
504
+ * - [`columns`](#columns)
505
+ *
506
+ * @memberof Options#
507
+ * @type {Array[]}
508
+ * @default []
509
+ * @category Core
510
+ *
511
+ * @example
512
+ * ```js
513
+ * // set the `cell` option to an array of objects
514
+ * cell: [
515
+ * // make the cell with coordinates (0, 0) read-only
516
+ * {
517
+ * row: 0,
518
+ * col: 0,
519
+ * readOnly: true
520
+ * }
521
+ * ],
522
+ * ```
523
+ */
524
+ cell: [],
525
+ /**
526
+ * @description
527
+ * The `cells` option lets you apply any other [configuration options](@/guides/getting-started/configuration-options.md) to
528
+ * individual grid elements (columns, rows, cells), based on any logic you implement.
529
+ *
530
+ * The `cells` option overwrites all other options (including options set by [`columns`](#columns) and [`cell`](#cell)).
531
+ * It takes the following parameters:
532
+ *
533
+ * | Parameter | Required | Type | Description |
534
+ * | --------- | -------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
535
+ * | `row` | Yes | Number | A physical row index |
536
+ * | `column` | Yes | Number | A physical column index |
537
+ * | `prop` | No | String \| Number | If [`data`](#data) is set to an [array of arrays](@/guides/getting-started/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.md#array-of-objects), `prop` is a property name for the column's data object. |
538
+ *
539
+ * Read more:
540
+ * - [Configuration options: Implementing custom logic](@/guides/getting-started/configuration-options.md#implementing-custom-logic)
541
+ * - [Configuration options: Setting row options](@/guides/getting-started/configuration-options.md#setting-row-options)
542
+ * - [`columns`](#columns)
543
+ * - [`cell`](#cell)
544
+ *
545
+ * @memberof Options#
546
+ * @type {Function}
547
+ * @default undefined
548
+ * @category Core
549
+ *
550
+ * @example
551
+ * ```js
552
+ * // set the `cells` option to your custom function
553
+ * cells(row, column, prop) {
554
+ * const cellProperties = { readOnly: false };
555
+ * const visualRowIndex = this.instance.toVisualRow(row);
556
+ * const visualColIndex = this.instance.toVisualColumn(column);
557
+ *
558
+ * if (visualRowIndex === 0 && visualColIndex === 0) {
559
+ * cellProperties.readOnly = true;
560
+ * }
561
+ *
562
+ * return cellProperties;
563
+ * },
564
+ * ```
565
+ */
566
+ cells: void 0,
567
+ /**
568
+ * The `checkedTemplate` option lets you configure what value
569
+ * a checked [`checkbox`](@/guides/cell-types/checkbox-cell-type.md) cell has.
570
+ *
571
+ * You can set the `checkedTemplate` option to one of the following:
572
+ *
573
+ * | Setting | Description |
574
+ * | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
575
+ * | `true` (default) | If a [`checkbox`](@/guides/cell-types/checkbox-cell-type.md) cell is checked,<br>the [`getDataAtCell`](@/api/core.md#getDataAtCell) method for this cell returns `true` |
576
+ * | A string | If a [`checkbox`](@/guides/cell-types/checkbox-cell-type.md) cell is checked,<br>the [`getDataAtCell`](@/api/core.md#getDataAtCell) method for this cell returns a string of your choice |
577
+ *
578
+ * Read more:
579
+ * - [Checkbox cell type: Checkbox template](@/guides/cell-types/checkbox-cell-type.md#checkbox-template)
580
+ * - [`getDataAtCell()`](@/api/core.md#getDataAtCell)
581
+ * - [`uncheckedTemplate`](#uncheckedTemplate)
582
+ *
583
+ * @memberof Options#
584
+ * @type {boolean|string|number}
585
+ * @default true
586
+ * @category Core
587
+ *
588
+ * @example
589
+ * ```js
590
+ * columns: [
591
+ * {
592
+ * // set the `type` of each cell in this column to `checkbox`
593
+ * // when checked, the cell's value is `true`
594
+ * // when unchecked, the cell's value is `false`
595
+ * type: 'checkbox',
596
+ * },
597
+ * {
598
+ * // set the `type` of each cell in this column to `checkbox`
599
+ * type: 'checkbox',
600
+ * // when checked, the cell's value is `'Yes'`
601
+ * checkedTemplate: 'Yes',
602
+ * // when unchecked, the cell's value is `'No'`
603
+ * uncheckedTemplate: 'No'
604
+ * }
605
+ * ],
606
+ * ```
607
+ */
608
+ checkedTemplate: void 0,
609
+ /**
610
+ * The `className` option lets you add CSS class names to every currently-selected element.
611
+ *
612
+ * You can set the `className` option to one of the following:
613
+ *
614
+ * | Setting | Description |
615
+ * | ------------------- | ---------------------------------------------------------------- |
616
+ * | A string | Add a single CSS class name to every currently-selected element |
617
+ * | An array of strings | Add multiple CSS class names to every currently-selected element |
618
+ *
619
+ * ::: tip
620
+ * Don't change the `className` metadata of the [column summary](@/guides/columns/column-summary.md) row.
621
+ * To style the summary row, use the class name assigned automatically by the [`ColumnSummary`](@/api/columnSummary.md) plugin: `columnSummaryResult`.
622
+ * :::
623
+ *
624
+ * To apply different CSS class names on different levels, use Handsontable's [cascading configuration](@/guides/getting-started/configuration-options.md#cascading-configuration).
625
+ *
626
+ * Read more:
627
+ * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options.md#cascading-configuration)
628
+ * - [`currentRowClassName`](#currentRowClassName)
629
+ * - [`currentColClassName`](#currentColClassName)
630
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
631
+ * - [`activeHeaderClassName`](#activeHeaderClassName)
632
+ * - [`invalidCellClassName`](#invalidCellClassName)
633
+ * - [`placeholderCellClassName`](#placeholderCellClassName)
634
+ * - [`commentedCellClassName`](#commentedCellClassName)
635
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
636
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
637
+ * - [`TableClassName`](#TableClassName)
638
+ *
639
+ * @memberof Options#
640
+ * @type {string|string[]}
641
+ * @default undefined
642
+ * @category Core
643
+ *
644
+ * @example
645
+ * ```js
646
+ * // add a `your-class-name` CSS class name
647
+ * // to every currently-selected element
648
+ * className: 'your-class-name',
649
+ *
650
+ * // add `first-class-name` and `second-class-name` CSS class names
651
+ * // to every currently-selected element
652
+ * className: ['first-class-name', 'second-class-name'],
653
+ * ```
654
+ */
655
+ className: void 0,
656
+ /**
657
+ * The `colHeaders` option configures your grid's column headers.
658
+ *
659
+ * You can set the `colHeaders` option to one of the following:
660
+ *
661
+ * | Setting | Description |
662
+ * | -------- | -------------------------------------------------------------------- |
663
+ * | `true` | Enable the default column headers ('A', 'B', 'C', ...) |
664
+ * | `false` | Disable column headers |
665
+ * | An array | Define your own column headers (e.g. `['One', 'Two', 'Three', ...]`) |
666
+ * | A function | Define your own column headers, using a function |
667
+ *
668
+ * Read more:
669
+ * - [Column header](@/guides/columns/column-header.md)
670
+ *
671
+ * @memberof Options#
672
+ * @type {boolean|string[]|Function}
673
+ * @default null
674
+ * @category Core
675
+ *
676
+ * @example
677
+ * ```js
678
+ * // enable the default column headers
679
+ * colHeaders: true,
680
+ *
681
+ * // set your own column headers
682
+ * colHeaders: ['One', 'Two', 'Three'],
683
+ *
684
+ * // set your own column headers, using a function
685
+ * colHeaders: function(visualColumnIndex) {
686
+ * return `${visualColumnIndex} + : AB`;
687
+ * },
688
+ * ```
689
+ */
690
+ colHeaders: null,
691
+ /**
692
+ * @description
693
+ * The `collapsibleColumns` option configures the [`CollapsibleColumns`](@/api/collapsibleColumns.md) plugin.
694
+ *
695
+ * You can set the `collapsibleColumns` option to one of the following:
696
+ *
697
+ * | Setting | Description |
698
+ * | -------------------- | ------------------------------------------------------------------------------------------------- |
699
+ * | `false` | Disable the [`CollapsibleColumns`](@/api/collapsibleColumns.md) plugin |
700
+ * | `true` | Enable the [`CollapsibleColumns`](@/api/collapsibleColumns.md) plugin |
701
+ * | An array of objects | Enable the [`CollapsibleColumns`](@/api/collapsibleColumns.md) plugin for selected column headers |
702
+ *
703
+ * Read more:
704
+ * - [Plugins: `CollapsibleColumns`](@/api/collapsibleColumns.md)
705
+ *
706
+ * @memberof Options#
707
+ * @type {boolean|object[]}
708
+ * @default undefined
709
+ * @category CollapsibleColumns
710
+ *
711
+ * @example
712
+ * ```js
713
+ * // enable column collapsing for all headers
714
+ * collapsibleColumns: true,
715
+ *
716
+ * // enable column collapsing for selected headers
717
+ * collapsibleColumns: [
718
+ * {row: -4, col: 1, collapsible: true},
719
+ * {row: -3, col: 5, collapsible: true}
720
+ * ],
721
+ * ```
722
+ */
723
+ collapsibleColumns: void 0,
724
+ /**
725
+ * @description
726
+ * The `columnHeaderHeight` option configures the height of column headers.
727
+ *
728
+ * You can set the `columnHeaderHeight` option to one of the following:
729
+ *
730
+ * | Setting | Description |
731
+ * | -------- | --------------------------------------------------- |
732
+ * | A number | Set the same height for every column header |
733
+ * | An array | Set different heights for individual column headers |
734
+ *
735
+ * @memberof Options#
736
+ * @type {number|number[]}
737
+ * @default undefined
738
+ * @category Core
739
+ *
740
+ * @example
741
+ * ```js
742
+ * // set the same height for every column header
743
+ * columnHeaderHeight: 25,
744
+ *
745
+ * // set different heights for individual column headers
746
+ * columnHeaderHeight: [25, 30, 55],
747
+ * ```
748
+ */
749
+ columnHeaderHeight: void 0,
750
+ /**
751
+ * @description
752
+ * The `columns` option lets you apply any other [configuration options](@/guides/getting-started/configuration-options.md) to individual columns (or ranges of columns).
753
+ *
754
+ * You can set the `columns` option to one of the following:
755
+ * - An array of objects (each object represents one column)
756
+ * - A function that returns an array of objects
757
+ *
758
+ * The `columns` option overwrites the [top-level grid options](@/guides/getting-started/configuration-options.md#setting-grid-options).
759
+ *
760
+ * When you use `columns`, the [`startCols`](#startCols), [`minCols`](#minCols), and [`maxCols`](#maxCols) options are ignored.
761
+ *
762
+ * Read more:
763
+ * - [Configuration options: Setting column options](@/guides/getting-started/configuration-options.md#setting-column-options)
764
+ * - [`startCols`](#startCols)
765
+ * - [`minCols`](#minCols)
766
+ * - [`maxCols`](#maxCols)
767
+ * - [`data`](#data)
768
+ *
769
+ * @memberof Options#
770
+ * @type {object[]|Function}
771
+ * @default undefined
772
+ * @category Core
773
+ *
774
+ * @example
775
+ * ```js
776
+ * // set the `columns` option to an array of objects
777
+ * // each object represents one column
778
+ * columns: [
779
+ * {
780
+ * // column options for the first (by physical index) column
781
+ * type: 'numeric',
782
+ * numericFormat: {
783
+ * pattern: '0,0.00 $'
784
+ * }
785
+ * },
786
+ * {
787
+ * // column options for the second (by physical index) column
788
+ * type: 'text',
789
+ * readOnly: true
790
+ * }
791
+ * ],
792
+ *
793
+ * // or set the `columns` option to a function, based on physical indexes
794
+ * columns(index) {
795
+ * return {
796
+ * type: index > 0 ? 'numeric' : 'text',
797
+ * readOnly: index < 1
798
+ * }
799
+ * }
800
+ * ```
801
+ */
802
+ columns: void 0,
803
+ /**
804
+ * @description
805
+ * The `columnSorting` option configures the [`ColumnSorting`](@/api/columnSorting.md) plugin.
806
+ *
807
+ * You can set the `columnSorting` option to one of the following:
808
+ *
809
+ * | Setting | Description |
810
+ * | ---------- | -------------------------------------------------------------------------------------------------------------------------------------- |
811
+ * | `true` | Enable the [`ColumnSorting`](@/api/columnSorting.md) plugin with the default configuration |
812
+ * | `false` | Disable the [`ColumnSorting`](@/api/columnSorting.md) plugin |
813
+ * | An object | - Enable the [`ColumnSorting`](@/api/columnSorting.md) plugin<br>- Modify the [`ColumnSorting`](@/api/columnSorting.md) plugin options |
814
+ *
815
+ * If you set the `columnSorting` option to an object,
816
+ * you can set the following [`ColumnSorting`](@/api/columnSorting.md) plugin options:
817
+ *
818
+ * | Option | Possible settings |
819
+ * | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
820
+ * | `indicator` | `true`: Display an arrow icon in the column header, to indicate a sortable column<br>`false`: Don't display the arrow icon in the column header |
821
+ * | `headerAction` | `true`: Enable clicking on the column header to sort the column<br>`false`: Disable clicking on the column header to sort the column |
822
+ * | `sortEmptyCells` | `true`: Sort empty cells as well<br>`false`: Place empty cells at the end |
823
+ * | `compareFunctionFactory` | A [custom compare function](@/guides/rows/row-sorting.md#custom-compare-functions) |
824
+ *
825
+ * If you set the `columnSorting` option to an object,
826
+ * you can also sort individual columns at Handsontable's initialization.
827
+ * In the `columnSorting` object, add an object named `initialConfig`,
828
+ * with the following properties:
829
+ *
830
+ * | Option | Possible settings | Description |
831
+ * | ----------- | ------------------- | ---------------------------------------------------------------- |
832
+ * | `column` | A number | The index of the column that you want to sort at initialization |
833
+ * | `sortOrder` | `'asc'` \| `'desc'` | The sorting order:<br>`'asc'`: ascending<br>`'desc'`: descending |
834
+ *
835
+ * Read more:
836
+ * - [Row sorting](@/guides/rows/row-sorting.md)
837
+ * - [Row sorting: Custom compare functions](@/guides/rows/row-sorting.md#custom-compare-functions)
838
+ * - [`multiColumnSorting`](#multiColumnSorting)
839
+ *
840
+ * @memberof Options#
841
+ * @type {boolean|object}
842
+ * @default undefined
843
+ * @category ColumnSorting
844
+ *
845
+ * @example
846
+ * ```js
847
+ * // enable the `ColumnSorting` plugin
848
+ * columnSorting: true
849
+ *
850
+ * // enable the `ColumnSorting` plugin with custom configuration
851
+ * columnSorting: {
852
+ * // sort empty cells as well
853
+ * sortEmptyCells: true,
854
+ * // display an arrow icon in the column header
855
+ * indicator: true,
856
+ * // disable clicking on the column header to sort the column
857
+ * headerAction: false,
858
+ * // add a custom compare function
859
+ * compareFunctionFactory(sortOrder, columnMeta) {
860
+ * return function(value, nextValue) {
861
+ * // some value comparisons which will return -1, 0 or 1...
862
+ * }
863
+ * }
864
+ * }
865
+ *
866
+ * // enable the `ColumnSorting` plugin
867
+ * columnSorting: {
868
+ * // at initialization, sort column 1 in ascending order
869
+ * initialConfig: {
870
+ * column: 1,
871
+ * sortOrder: 'asc'
872
+ * },
873
+ * // at initialization, sort column 2 in descending order
874
+ * initialConfig: {
875
+ * column: 2,
876
+ * sortOrder: 'desc'
877
+ * }
878
+ * }
879
+ * ```
880
+ */
881
+ columnSorting: void 0,
882
+ /**
883
+ * @description
884
+ * The `columnSummary` option configures the [`ColumnSummary`](@/api/columnSummary.md) plugin.
885
+ *
886
+ * You can set the `columnSummary` option to an array of objects.
887
+ * Each object configures a single column summary, using the following properties:
888
+ *
889
+ * | Property | Possible values | Description |
890
+ * | ------------------------ | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
891
+ * | `sourceColumn` | A number | [Column to summarize](@/guides/columns/column-summary.md#step-2-select-cells-that-you-want-to-summarize) |
892
+ * | `ranges` | An array | [Ranges of rows to summarize](@/guides/columns/column-summary.md#step-2-select-cells-that-you-want-to-summarize) |
893
+ * | `type` | `'sum'` \| `'min'` \| `'max'` \| `'count'` \| `'average'` \| `'custom'` | [Summary function](@/guides/columns/column-summary.md#step-3-calculate-your-summary) |
894
+ * | `destinationRow` | A number | [Destination cell's row coordinate](@/guides/columns/column-summary.md#step-4-provide-the-destination-cell-s-coordinates) |
895
+ * | `destinationColumn` | A number | [Destination cell's column coordinate](@/guides/columns/column-summary.md#step-4-provide-the-destination-cell-s-coordinates) |
896
+ * | `forceNumeric` | `true` \| `false` | [Treat non-numerics as numerics](@/guides/columns/column-summary.md#forcing-numeric-values) |
897
+ * | `reversedRowCoords` | `true` \| `false` | [Reverse row coordinates](@/guides/columns/column-summary.md#step-5-make-room-for-the-destination-cell) |
898
+ * | `suppressDataTypeErrors` | `true` \| `false` | [Suppress data type errors](@/guides/columns/column-summary.md#throwing-data-type-errors) |
899
+ * | `readOnly` | `true` \| `false` | Make summary cell read-only |
900
+ * | `roundFloat` | `true` \| `false` | [Round summary result](@/guides/columns/column-summary.md#rounding-a-column-summary-result) |
901
+ * | `customFunction` | A function | [Custom summary function](@/guides/columns/column-summary.md#implementing-a-custom-summary-function) |
902
+ *
903
+ * Read more:
904
+ * - [Column summary](@/guides/columns/column-summary.md)
905
+ * - [Plugins: `ColumnSummary`](@/api/columnSummary.md)
906
+ *
907
+ * @memberof Options#
908
+ * @type {object[]|Function}
909
+ * @default undefined
910
+ * @category ColumnSummary
911
+ *
912
+ * @example
913
+ * ```js
914
+ * columnSummary: [
915
+ * {
916
+ * sourceColumn: 0,
917
+ * ranges: [
918
+ * [0, 2], [4], [6, 8]
919
+ * ],
920
+ * type: 'custom',
921
+ * destinationRow: 4,
922
+ * destinationColumn: 1,
923
+ * forceNumeric: true,
924
+ * reversedRowCoords: true,
925
+ * suppressDataTypeErrors: false,
926
+ * readOnly: true,
927
+ * roundFloat: false,
928
+ * customFunction(endpoint) {
929
+ * return 100;
930
+ * }
931
+ * }
932
+ * ],
933
+ * ```
934
+ */
935
+ columnSummary: void 0,
936
+ /**
937
+ * The `colWidths` option sets columns' widths, in pixels.
938
+ *
939
+ * In the rendering process, the default column width is 50px. To change it,
940
+ * set the `colWidths` option to one of the following:
941
+ *
942
+ * | Setting | Description | Example |
943
+ * | ----------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
944
+ * | A number | Set the same width for every column | `colWidths: 100` |
945
+ * | A string | Set the same width for every column | `colWidths: '100px'` |
946
+ * | An array | Set widths separately for each column | `colWidths: [100, 120, undefined]` |
947
+ * | A function | Set column widths dynamically,<br>on each render | `colWidths(visualColumnIndex) { return visualColumnIndex * 10; }` |
948
+ * | `undefined` | Used by the [modifyColWidth](@/api/hooks.md#modifyColWidth) hook,<br>to detect column width changes. | `colWidths: undefined` |
949
+ *
950
+ * Setting the `colWidths` option disables the {@link AutoColumnSize} plugin.
951
+ *
952
+ * Read more:
953
+ * - [Column width](@/guides/columns/column-width.md)
954
+ * - [Hooks: `modifyColWidth`](@/api/hooks.md#modifyColWidth)
955
+ * - [`autoColumnSize`](#autoColumnSize)
956
+ *
957
+ * @memberof Options#
958
+ * @type {number|number[]|string|string[]|Array<undefined>|Function}
959
+ * @default undefined
960
+ * @category Core
961
+ *
962
+ * @example
963
+ * ```js
964
+ * // set every column's width to 100px
965
+ * colWidths: 100,
966
+ *
967
+ * // set every column's width to 100px
968
+ * colWidths: '100px',
969
+ *
970
+ * // set the first (by visual index) column's width to 100
971
+ * // set the second (by visual index) column's width to 120
972
+ * // set the third (by visual index) column's width to `undefined`
973
+ * // set any other column's width to the default 50px
974
+ * colWidths: [100, 120, undefined],
975
+ *
976
+ * // set each column's width individually, using a function
977
+ * colWidths(visualColumnIndex) {
978
+ * return visualColumnIndex * 10;
979
+ * },
980
+ * ```
981
+ */
982
+ colWidths: void 0,
983
+ /**
984
+ * The `commentedCellClassName` option lets you add a CSS class name to cells
985
+ * that have comments.
986
+ *
987
+ * Read more:
988
+ * - [Comments](@/guides/cell-features/comments.md)
989
+ * - [`comments`](#comments)
990
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
991
+ * - [`currentRowClassName`](#currentRowClassName)
992
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
993
+ * - [`activeHeaderClassName`](#activeHeaderClassName)
994
+ * - [`invalidCellClassName`](#invalidCellClassName)
995
+ * - [`placeholderCellClassName`](#placeholderCellClassName)
996
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
997
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
998
+ * - [`TableClassName`](#TableClassName)
999
+ * - [`className`](#className)
1000
+ *
1001
+ * @memberof Options#
1002
+ * @type {string}
1003
+ * @default 'htCommentCell'
1004
+ * @category Core
1005
+ *
1006
+ * @example
1007
+ * ```js
1008
+ * // add a `has-comment` CSS class name
1009
+ * // to each cell that has a comment
1010
+ * commentedCellClassName: 'has-comment',
1011
+ * ```
1012
+ */
1013
+ commentedCellClassName: 'htCommentCell',
1014
+ /**
1015
+ * @description
1016
+ * The `comments` option configures the [`Comments`](@/api/comments.md) plugin.
1017
+ *
1018
+ * You can set the `comments` option to one of the following:
1019
+ *
1020
+ * | Setting | Description |
1021
+ * | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1022
+ * | `true` | - Enable the [`Comments`](@/api/comments.md) plugin<br>- Add comment menu items to the [context menu](@/guides/accessories-and-menus/context-menu.md) |
1023
+ * | `false` | Disable the [`Comments`](@/api/comments.md) plugin |
1024
+ * | An object | - Enable the [`Comments`](@/api/comments.md) plugin<br>- Add comment menu items to the [context menu](@/guides/accessories-and-menus/context-menu.md)<br>- Configure comment settings |
1025
+ *
1026
+ * If you set the `comments` option to an object, you can configure the following comment options:
1027
+ *
1028
+ * | Option | Possible settings | Description |
1029
+ * | -------------- | --------------------------- | --------------------------------------------------- |
1030
+ * | `displayDelay` | A number (default: `250`) | Display comments after a delay (in milliseconds) |
1031
+ * | `readOnly` | `true` \| `false` (default) | `true`: Make comments read-only |
1032
+ * | `style` | An object | Set comment boxes' `width` and `height` (in pixels) |
1033
+ *
1034
+ * Read more:
1035
+ * - [Comments](@/guides/cell-features/comments.md)
1036
+ * - [Context menu](@/guides/accessories-and-menus/context-menu.md)
1037
+ * - [`width`](#width)
1038
+ * - [`height`](#height)
1039
+ * - [`readOnly`](#readOnly)
1040
+ * - [`commentedCellClassName`](#commentedCellClassName)
1041
+ *
1042
+ * @memberof Options#
1043
+ * @type {boolean|object[]}
1044
+ * @default false
1045
+ * @category Comments
1046
+ *
1047
+ * @example
1048
+ * ```js
1049
+ * // enable the `Comments` plugin
1050
+ * comments: true,
1051
+ *
1052
+ * // enable the `Comments` plugin
1053
+ * // and configure its settings
1054
+ * comments: {
1055
+ * // display all comments with a 1-second delay
1056
+ * displayDelay: 1000,
1057
+ * // make all comments read-only
1058
+ * readOnly: true,
1059
+ * // set the default size of all comment boxes
1060
+ * style: {
1061
+ * width: 300,
1062
+ * height: 100
1063
+ * }
1064
+ * }
1065
+ * ```
1066
+ */
1067
+ comments: false,
1068
+ /**
1069
+ * @description
1070
+ * The `contextMenu` option configures the [`ContextMenu`](@/api/contextMenu.md) plugin.
1071
+ *
1072
+ * You can set the `contextMenu` option to one of the following:
1073
+ *
1074
+ * | Setting | Description |
1075
+ * | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1076
+ * | `false` | Disable the [`ContextMenu`](@/api/contextMenu.md) plugin |
1077
+ * | `true` | - Enable the [`ContextMenu`](@/api/contextMenu.md) plugin<br>- Use the [default context menu options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-default-options) |
1078
+ * | An array | - Enable the [`ContextMenu`](@/api/contextMenu.md) plugin<br>- Modify [individual context menu options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-specific-options) |
1079
+ * | An object | - Enable the [`ContextMenu`](@/api/contextMenu.md) plugin<br>- Apply a [custom context menu configuration](@/guides/accessories-and-menus/context-menu.md#context-menu-with-fully-custom-configuration) |
1080
+ *
1081
+ * Read more:
1082
+ * - [Context menu](@/guides/accessories-and-menus/context-menu.md)
1083
+ * - [Context menu: Context menu with default options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-default-options)
1084
+ * - [Context menu: Context menu with specific options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-specific-options)
1085
+ * - [Context menu: Context menu with fully custom configuration options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-fully-custom-configuration)
1086
+ * - [Plugins: `ContextMenu`](@/api/contextMenu.md)
1087
+ *
1088
+ * @memberof Options#
1089
+ * @type {boolean|string[]|object}
1090
+ * @default undefined
1091
+ * @category ContextMenu
1092
+ *
1093
+ * @example
1094
+ * ```js
1095
+ * // enable the `ContextMenu` plugin
1096
+ * // use the default context menu options
1097
+ * contextMenu: true,
1098
+ *
1099
+ * // enable the `ContextMenu` plugin
1100
+ * // and modify individual context menu options
1101
+ * contextMenu: ['row_above', 'row_below', '---------', 'undo', 'redo'],
1102
+ *
1103
+ * // enable the `ContextMenu` plugin
1104
+ * // and apply a custom context menu configuration
1105
+ * contextMenu: {
1106
+ * items: {
1107
+ * 'option1': {
1108
+ * name: 'option1'
1109
+ * },
1110
+ * 'option2': {
1111
+ * name: 'option2',
1112
+ * submenu: {
1113
+ * items: [
1114
+ * {
1115
+ * key: 'option2:suboption1',
1116
+ * name: 'option2:suboption1',
1117
+ * callback: function(key, options) {
1118
+ * ...
1119
+ * }
1120
+ * },
1121
+ * ...
1122
+ * ]
1123
+ * }
1124
+ * }
1125
+ * }
1126
+ * },
1127
+ * ```
1128
+ */
1129
+ contextMenu: void 0,
1130
+ /**
1131
+ * @description
1132
+ * The `copyable` option determines whether a cell's value can be copied to the clipboard or not.
1133
+ *
1134
+ * You can set the `copyable` option to one of the following:
1135
+ *
1136
+ * | Setting | Description |
1137
+ * | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
1138
+ * | `true` (default) | - On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>, add the cell's value to the clipboard |
1139
+ * | `false`<br>(default for the [`password`](@/guides/cell-types/password-cell-type.md) [cell type](#type)) | - On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>, add an empty string (`""`) to the clipboard |
1140
+ *
1141
+ * Read more:
1142
+ * - [Clipboard](@/guides/cell-features/clipboard.md)
1143
+ * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options.md#cascading-configuration)
1144
+ * - [Password cell type](@/guides/cell-types/password-cell-type.md)
1145
+ *
1146
+ * @memberof Options#
1147
+ * @type {boolean}
1148
+ * @default true
1149
+ * @category Core
1150
+ *
1151
+ * @example
1152
+ * ```js
1153
+ * // enable copying for each cell of the entire grid
1154
+ * copyable: true,
1155
+ *
1156
+ * // enable copying for individual columns
1157
+ * columns: [
1158
+ * {
1159
+ * // enable copying for each cell of this column
1160
+ * copyable: true
1161
+ * },
1162
+ * {
1163
+ * // disable copying for each cell of this column
1164
+ * copyable: false
1165
+ * }
1166
+ * ]
1167
+ *
1168
+ * // enable copying for specific cells
1169
+ * cells: [
1170
+ * {
1171
+ * cell: 0,
1172
+ * row: 0,
1173
+ * // disable copying for cell (0, 0)
1174
+ * copyable: false,
1175
+ * }
1176
+ * ],
1177
+ * ```
1178
+ */
1179
+ copyable: true,
1180
+ /**
1181
+ * The `copyPaste` option configures the [`CopyPaste`](@/api/copyPaste.md) plugin.
1182
+ *
1183
+ * You can set the `copyPaste` option to one of the following:
1184
+ *
1185
+ * | Setting | Description |
1186
+ * | ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
1187
+ * | `true` (default) | Enable the [`CopyPaste`](@/api/copyPaste.md) plugin with the default configuration |
1188
+ * | `false` | Disable the [`CopyPaste`](@/api/copyPaste.md) plugin |
1189
+ * | An object | - Enable the [`CopyPaste`](@/api/copyPaste.md) plugin<br>- Modify the [`CopyPaste`](@/api/copyPaste.md) plugin options |
1190
+ *
1191
+ * If you set the `copyPaste` option to an object, you can set the following `CopyPaste` plugin options:
1192
+ *
1193
+ * | Option | Possible settings | Description |
1194
+ * | -------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1195
+ * | `columnsLimit` | A number (default: `Infinity`) | A maximum number of columns that can be copied |
1196
+ * | `rowsLimit` | A number (default: `Infinity`) | A maximum number of columns that can be copied |
1197
+ * | `pasteMode` | `'overwrite'` \| `'shift_down'` \| `'shift_right'` | When pasting:<br>`'overwrite'`: overwrite currently-selected cells<br>`'shift_down'`: move currently-selected cells down<br>`'shift_right'`: move currently-selected cells to the right |
1198
+ * | `uiContainer` | An HTML element | A UI container for the secondary focusable element |
1199
+ *
1200
+ * Read more:
1201
+ * - [Plugins: `CopyPaste`](@/api/copyPaste.md)
1202
+ *
1203
+ * @memberof Options#
1204
+ * @type {object|boolean}
1205
+ * @default true
1206
+ * @category CopyPaste
1207
+ *
1208
+ * @example
1209
+ * ```js
1210
+ * // disable the `CopyPaste` plugin
1211
+ * copyPaste: false,
1212
+ *
1213
+ * // enable the `CopyPaste` plugin
1214
+ * // and modify the `CopyPaste` plugin options
1215
+ * copyPaste: {
1216
+ * // set the maximum number of columns that can be copied
1217
+ * columnsLimit: 25,
1218
+ * // set the maximum number of rows that can be copied
1219
+ * rowsLimit: 50,
1220
+ * // set the paste behavior
1221
+ * pasteMode: 'shift_down',
1222
+ * // set the UI container
1223
+ * uiContainer: document.body,
1224
+ * },
1225
+ * ```
1226
+ */
1227
+ copyPaste: true,
1228
+ /**
1229
+ * The `correctFormat` option configures whether incorrectly-formatted times and dates are amended or not.
1230
+ *
1231
+ * When the user enters dates and times, Handsontable can automatically adjust their format
1232
+ * to match the [`dateFormat`](#dateFormat) and [`timeFormat`](@/guides/cell-types/time-cell-type.md) settings.
1233
+ *
1234
+ * You can set the `correctFormat` option to one of the following:
1235
+ *
1236
+ * | Setting | Description |
1237
+ * | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
1238
+ * | `false` (default) | Don't correct the format of the entered date or time (treat the entered date or time as invalid) |
1239
+ * | `true` | Correct the format of the entered date or time to match the [`dateFormat`](#dateFormat) or [`timeFormat`](@/guides/cell-types/time-cell-type.md) settings |
1240
+ *
1241
+ * Read more:
1242
+ * - [Date cell type](@/guides/cell-types/date-cell-type.md)
1243
+ * - [Time cell type](@/guides/cell-types/time-cell-type.md)
1244
+ * - [`dateFormat`](#dateFormat)
1245
+ *
1246
+ * @memberof Options#
1247
+ * @type {boolean}
1248
+ * @default false
1249
+ * @category Core
1250
+ *
1251
+ * @example
1252
+ * ```js
1253
+ * columns: [
1254
+ * {
1255
+ * // set the `type` of each cell in this column to `date`
1256
+ * type: 'date',
1257
+ * // for every `date` cell of this column, set the date format to `YYYY-MM-DD`
1258
+ * dateFormat: 'YYYY-MM-DD',
1259
+ * // enforce the `YYYY-MM-DD` date format
1260
+ * correctFormat: true
1261
+ * },
1262
+ *
1263
+ * {
1264
+ * // set the `type` of each cell in this column to `time`
1265
+ * type: 'time',
1266
+ * // for every `time` cell of this column, set the time format to `h:mm:ss a`
1267
+ * timeFormat: 'h:mm:ss a',
1268
+ * // enforce the `h:mm:ss a` time format
1269
+ * correctFormat: true
1270
+ * },
1271
+ * ],
1272
+ * ```
1273
+ */
1274
+ correctFormat: false,
1275
+ /**
1276
+ * The `currentColClassName` option lets you add a CSS class name
1277
+ * to each cell of the currently-visible, currently-selected columns.
1278
+ *
1279
+ * Read more:
1280
+ * - [`currentRowClassName`](#currentRowClassName)
1281
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
1282
+ * - [`activeHeaderClassName`](#activeHeaderClassName)
1283
+ * - [`invalidCellClassName`](#invalidCellClassName)
1284
+ * - [`placeholderCellClassName`](#placeholderCellClassName)
1285
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
1286
+ * - [`commentedCellClassName`](#commentedCellClassName)
1287
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
1288
+ * - [`TableClassName`](#TableClassName)
1289
+ * - [`className`](#className)
1290
+ *
1291
+ * @memberof Options#
1292
+ * @type {string}
1293
+ * @default undefined
1294
+ * @category Core
1295
+ *
1296
+ * @example
1297
+ * ```js
1298
+ * // add a `your-class-name` CSS class name
1299
+ * // to each cell of the currently-visible, currently-selected columns
1300
+ * currentColClassName: 'your-class-name',
1301
+ * ```
1302
+ */
1303
+ currentColClassName: void 0,
1304
+ /**
1305
+ * The `currentHeaderClassName` option lets you add a CSS class name
1306
+ * to every currently-visible, currently-selected header.
1307
+ *
1308
+ * Read more:
1309
+ * - [`currentRowClassName`](#currentRowClassName)
1310
+ * - [`currentColClassName`](#currentColClassName)
1311
+ * - [`activeHeaderClassName`](#activeHeaderClassName)
1312
+ * - [`invalidCellClassName`](#invalidCellClassName)
1313
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
1314
+ * - [`commentedCellClassName`](#commentedCellClassName)
1315
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
1316
+ * - [`TableClassName`](#TableClassName)
1317
+ * - [`className`](#className)
1318
+ *
1319
+ * @memberof Options#
1320
+ * @type {string}
1321
+ * @default 'ht__highlight'
1322
+ * @category Core
1323
+ *
1324
+ * @example
1325
+ * ```js
1326
+ * // add an `ht__highlight` CSS class name
1327
+ * // to every currently-visible, currently-selected header
1328
+ * currentHeaderClassName: 'ht__highlight',
1329
+ * ```
1330
+ */
1331
+ currentHeaderClassName: 'ht__highlight',
1332
+ /**
1333
+ * The `currentRowClassName` option lets you add a CSS class name
1334
+ * to each cell of the currently-visible, currently-selected rows.
1335
+ *
1336
+ * Read more:
1337
+ * - [`currentColClassName`](#currentColClassName)
1338
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
1339
+ * - [`activeHeaderClassName`](#activeHeaderClassName)
1340
+ * - [`invalidCellClassName`](#invalidCellClassName)
1341
+ * - [`placeholderCellClassName`](#placeholderCellClassName)
1342
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
1343
+ * - [`commentedCellClassName`](#commentedCellClassName)
1344
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
1345
+ * - [`TableClassName`](#TableClassName)
1346
+ * - [`className`](#className)
1347
+ *
1348
+ * @memberof Options#
1349
+ * @type {string}
1350
+ * @default undefined
1351
+ * @category Core
1352
+ *
1353
+ * @example
1354
+ * ```js
1355
+ * // add a `your-class-name` CSS class name
1356
+ * // to each cell of the currently-visible, currently-selected rows
1357
+ * currentRowClassName: 'your-class-name',
1358
+ * ```
1359
+ */
1360
+ currentRowClassName: void 0,
1361
+ /**
1362
+ * @description
1363
+ * The `customBorders` option configures the [`CustomBorders`](@/api/customBorders.md) plugin.
1364
+ *
1365
+ * To enable the [`CustomBorders`](@/api/customBorders.md) plugin
1366
+ * (and add its menu items to the [context menu](@/guides/accessories-and-menus/context-menu.md)),
1367
+ * set the `customBorders` option to `true`.
1368
+ *
1369
+ * To enable the [`CustomBorders`](@/api/customBorders.md) plugin
1370
+ * and add a predefined border around a particular cell,
1371
+ * set the `customBorders` option to an array of objects.
1372
+ * Each object represents a border configuration for one cell, and has the following properties:
1373
+ *
1374
+ * | Property | Sub-properties | Types | Description |
1375
+ * | -------- | ------------------ | ---------------------------------- | ----------------------------------------------------------------- |
1376
+ * | `row` | - | `row`: Number | The cell's row coordinate. |
1377
+ * | `col` | - | `col`: Number | The cell's column coordinate. |
1378
+ * | `start` | `width`<br>`color` | `width`: Number<br>`color`: String | If the [layout direction](@/guides/internationalization/layout-direction.md) is LTR (default): `start` sets the width (`width`) and color (`color`) of the left-hand border.<br><br>If the [layout direction](@/guides/internationalization/layout-direction.md) is RTL: `start` sets the width (`width`) and color (`color`) of the right-hand border. |
1379
+ * | `end` | `width`<br>`color` | `width`: Number<br>`color`: String | If the [layout direction](@/guides/internationalization/layout-direction.md) is LTR (default): `end` sets the width (`width`) and color (`color`) of the right-hand border.<br><br>If the [layout direction](@/guides/internationalization/layout-direction.md) is RTL: `end` sets the width (`width`) and color (`color`) of the left-hand border. |
1380
+ * | `top` | `width`<br>`color` | `width`: Number<br>`color`: String | Sets the width (`width`) and color (`color`) of the top border. |
1381
+ * | `bottom` | `width`<br>`color` | `width`: Number<br>`color`: String | Sets the width (`width`) and color (`color`) of the bottom border. |
1382
+ *
1383
+ * To enable the [`CustomBorders`](@/api/customBorders.md) plugin
1384
+ * and add a predefined border around a range of cells,
1385
+ * set the `customBorders` option to an array of objects.
1386
+ * Each object represents a border configuration for a single range of cells, and has the following properties:
1387
+ *
1388
+ * | Property | Sub-properties | Types | Description |
1389
+ * | -------- | -------------------------------------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
1390
+ * | `range` | `from` {`row`, `col`}<br>`to` {`row`, `col`} | `from`: Object<br>`to`: Object<br>`row`: Number<br>`col`: Number | If the [layout direction](@/guides/internationalization/layout-direction.md) is LTR (default):<br>- `from` selects the range's top-left corner.<br>- `to` selects the range's bottom-right corner.<br><br>If the [layout direction](@/guides/internationalization/layout-direction.md) is RTL: <br>- `from` selects the range's top-right corner.<br>- `to` selects the range's bottom-left corner. |
1391
+ * | `start` | `width`<br>`color` | `width`: Number<br>`color`: String | If the [layout direction](@/guides/internationalization/layout-direction.md) is LTR (default): `start` sets the width (`width`) and color (`color`) of the left-hand border.<br><br>If the [layout direction](@/guides/internationalization/layout-direction.md) is RTL: `start` sets the width (`width`) and color (`color`) of the right-hand border. |
1392
+ * | `end` | `width`<br>`color` | `width`: Number<br>`color`: String | If the [layout direction](@/guides/internationalization/layout-direction.md) is LTR (default): `end` sets the width (`width`) and color (`color`) of the right-hand border.<br><br>If the [layout direction](@/guides/internationalization/layout-direction.md) is RTL: `end` sets the width (`width`) and color (`color`) of the left-hand border. |
1393
+ * | `top` | `width`<br>`color` | `width`: Number<br>`color`: String | Sets the width (`width`) and color (`color`) of the top border. |
1394
+ * | `bottom` | `width`<br>`color` | `width`: Number<br>`color`: String | Sets the width (`width`) and color (`color`) of the bottom border. |
1395
+ *
1396
+ * Read more:
1397
+ * - [Formatting cells: Custom cell borders](@/guides/cell-features/formatting-cells.md#custom-cell-borders)
1398
+ * - [Context menu](@/guides/accessories-and-menus/context-menu.md)
1399
+ * - [Plugins: `CustomBorders`](@/api/customBorders.md)
1400
+ * - [Layout direction](@/guides/internationalization/layout-direction.md)
1401
+ * - [`layoutDirection`](#layoutDirection)
1402
+ *
1403
+ * @memberof Options#
1404
+ * @type {boolean|object[]}
1405
+ * @default false
1406
+ * @category CustomBorders
1407
+ *
1408
+ * @example
1409
+ * ```js
1410
+ * // enable the `CustomBorders` plugin
1411
+ * customBorders: true,
1412
+ *
1413
+ * // enable the `CustomBorders` plugin
1414
+ * // and add a predefined border for a particular cell
1415
+ * customBorders: [
1416
+ * // add an object with a border configuration for one cell
1417
+ * {
1418
+ * // set the cell's row coordinate
1419
+ * row: 2,
1420
+ * // set the cell's column coordinate
1421
+ * col: 2,
1422
+ * // set the left/right border's width and color
1423
+ * start: {
1424
+ * width: 2,
1425
+ * color: 'red'
1426
+ * },
1427
+ * // set the right/left border's width and color
1428
+ * end: {
1429
+ * width: 1,
1430
+ * color: 'green'
1431
+ * },
1432
+ * // set the top border's width and color
1433
+ * top: '',
1434
+ * // set the bottom border's width and color
1435
+ * bottom: ''
1436
+ * }
1437
+ * ],
1438
+ *
1439
+ * // enable the `CustomBorders` plugin
1440
+ * // and add a predefined border for a range of cells
1441
+ * customBorders: [
1442
+ * // add an object with a border configuration for one range of cells
1443
+ * {
1444
+ * // select a range of cells
1445
+ * range: {
1446
+ * // set the range's top-left corner
1447
+ * from: {
1448
+ * row: 1,
1449
+ * col: 1
1450
+ * },
1451
+ * // set the range's bottom-right corner
1452
+ * to: {
1453
+ * row: 3,
1454
+ * col: 4
1455
+ * }
1456
+ * },
1457
+ * // set the left/right border's width and color
1458
+ * start: {
1459
+ * width: 2,
1460
+ * color: 'red'
1461
+ * },
1462
+ * // set the right/left border's width and color
1463
+ * end: {},
1464
+ * // set the top border's width and color
1465
+ * top: {},
1466
+ * // set the bottom border's width and color
1467
+ * bottom: {}
1468
+ * }
1469
+ * ],
1470
+ * ```
1471
+ */
1472
+ customBorders: false,
1473
+ /**
1474
+ * @description
1475
+ * The `data` option sets the initial [data](@/guides/getting-started/binding-to-data.md) of your Handsontable instance.
1476
+ *
1477
+ * 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).
1478
+ *
1479
+ * You can set the `data` option:
1480
+ * - Either to an [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays).
1481
+ * - Or to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects).
1482
+ *
1483
+ * If you don't set the `data` option (or set it to `null`), Handsontable renders as an empty 5x5 grid by default.
1484
+ *
1485
+ * Read more:
1486
+ * - [Binding to data](@/guides/getting-started/binding-to-data.md)
1487
+ * - [`dataSchema`](#dataSchema)
1488
+ * - [`startRows`](#startRows)
1489
+ * - [`startCols`](#startCols)
1490
+ *
1491
+ * @memberof Options#
1492
+ * @type {Array[]|object[]}
1493
+ * @default undefined
1494
+ * @category Core
1495
+ *
1496
+ * @example
1497
+ * ```js
1498
+ * // as an array of arrays
1499
+ * data: [
1500
+ * ['A', 'B', 'C'],
1501
+ * ['D', 'E', 'F'],
1502
+ * ['G', 'H', 'J']
1503
+ * ]
1504
+ *
1505
+ * // as an array of objects
1506
+ * data: [
1507
+ * {id: 1, name: 'Ted Right'},
1508
+ * {id: 2, name: 'Frank Honest'},
1509
+ * {id: 3, name: 'Joan Well'},
1510
+ * {id: 4, name: 'Gail Polite'},
1511
+ * {id: 5, name: 'Michael Fair'},
1512
+ * ]
1513
+ * ```
1514
+ */
1515
+ data: void 0,
1516
+ /**
1517
+ * @description
1518
+ * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects)
1519
+ * (or is empty), the `dataSchema` option defines the structure of new rows.
1520
+ *
1521
+ * Using the `dataSchema` option, you can start out with an empty grid.
1522
+ *
1523
+ * You can set the `dataSchema` option to one of the following:
1524
+ * - An object
1525
+ * - A function
1526
+ *
1527
+ * Read more:
1528
+ * - [Binding to data: Array of objects with custom data schema](@/guides/getting-started/binding-to-data.md#array-of-objects-with-custom-data-schema)
1529
+ * - [Binding to data: Function data source and schema](@/guides/getting-started/binding-to-data.md#function-data-source-and-schema)
1530
+ * - [`data`](#data)
1531
+ *
1532
+ * @memberof Options#
1533
+ * @type {object|Function}
1534
+ * @default undefined
1535
+ * @category Core
1536
+ *
1537
+ * @example
1538
+ * ```js
1539
+ * // with `dataSchema`, you can start with an empty grid
1540
+ * data: null,
1541
+ * dataSchema: {id: null, name: {first: null, last: null}, address: null},
1542
+ * colHeaders: ['ID', 'First Name', 'Last Name', 'Address'],
1543
+ * columns: [
1544
+ * {data: 'id'},
1545
+ * {data: 'name.first'},
1546
+ * {data: 'name.last'},
1547
+ * {data: 'address'}
1548
+ * ],
1549
+ * startRows: 5,
1550
+ * minSpareRows: 1
1551
+ * ```
1552
+ */
1553
+ dataSchema: void 0,
1554
+ /**
1555
+ * The `dateFormat` option configures the date format accepted by [`date`](@/guides/cell-types/date-cell-type.md) cells.
1556
+ *
1557
+ * You can set the `dateFormat` option to a string with a proper date format. The default value is: `'DD/MM/YYYY'`.
1558
+ *
1559
+ * To automatically correct dates whose format doesn't match the `dateFormat` setting, use the [`correctFormat`](#correctFormat) option.
1560
+ *
1561
+ * Read more:
1562
+ * - [Date cell type](@/guides/cell-types/date-cell-type.md)
1563
+ * - [`correctFormat`](#correctFormat)
1564
+ * - [`defaultDate`](#defaultDate)
1565
+ *
1566
+ * @memberof Options#
1567
+ * @type {string}
1568
+ * @default 'DD/MM/YYYY'
1569
+ * @category Core
1570
+ *
1571
+ * @example
1572
+ * ```js
1573
+ * columns: [
1574
+ * {
1575
+ * // set the `type` of each cell in this column to `date`
1576
+ * type: 'date',
1577
+ * // for every `date` cell of this column, set the date format to `YYYY-MM-DD`
1578
+ * dateFormat: 'YYYY-MM-DD',
1579
+ * },
1580
+ * ],
1581
+ * ```
1582
+ */
1583
+ dateFormat: 'DD/MM/YYYY',
1584
+ /**
1585
+ * The `datePickerConfig` option configures the `date` [cell editor](@/guides/cell-functions/cell-editor.md)'s date picker, which uses an external dependency: [Pikaday](https://github.com/Pikaday/Pikaday/tree/1.8.2).
1586
+ *
1587
+ * You can set the `datePickerConfig` option to an object with any of the available [Pikaday options](https://github.com/Pikaday/Pikaday/tree/1.8.2#configuration),
1588
+ * except for the following, which are always overwritten by the `date` [cell editor](@/guides/cell-functions/cell-editor.md):
1589
+ * - `bound`
1590
+ * - `container`
1591
+ * - `field`
1592
+ * - `trigger`
1593
+ *
1594
+ * If the `datePickerConfig` option is not defined, the `date` [cell editor](@/guides/cell-functions/cell-editor.md) overwrites the following [Pikaday options](https://github.com/Pikaday/Pikaday/tree/1.8.2#configuration) as well:
1595
+ *
1596
+ * | Pikaday option | Handsontable's setting |
1597
+ * | -------------------- | ---------------------- |
1598
+ * | `format` | `'DD/MM/YYYY'` |
1599
+ * | `reposition` | `false` |
1600
+ *
1601
+ * Read more:
1602
+ * - [`editor`](#editor)
1603
+ * - [`dateFormat`](#dateFormat)
1604
+ * - [Cell editor](@/guides/cell-functions/cell-editor.md)
1605
+ * - [All Pikaday options &#8594;](https://github.com/Pikaday/Pikaday/tree/1.8.2#configuration)
1606
+ *
1607
+ * @memberof Options#
1608
+ * @type {object}
1609
+ * @default undefined
1610
+ * @category Core
1611
+ */
1612
+ datePickerConfig: void 0,
1613
+ /**
1614
+ * The `defaultDate` option configures the date displayed
1615
+ * in empty [`date`](@/guides/cell-types/date-cell-type.md) cells.
1616
+ *
1617
+ * You can set the `defaultDate` option to a string.
1618
+ *
1619
+ * Read more:
1620
+ * - [Date cell type](@/guides/cell-types/date-cell-type.md)
1621
+ * - [`dateFormat`](#dateFormat)
1622
+ *
1623
+ * @memberof Options#
1624
+ * @type {string}
1625
+ * @default undefined
1626
+ * @category Core
1627
+ *
1628
+ * @example
1629
+ * ```js
1630
+ * columns: [
1631
+ * {
1632
+ * // set the `type` of each cell in this column to `date`
1633
+ * type: 'date',
1634
+ * // in every empty `date` cell of this column, display `2015-02-02`
1635
+ * defaultDate: '2015-02-02'
1636
+ * }
1637
+ * ],
1638
+ * ```
1639
+ */
1640
+ defaultDate: void 0,
1641
+ /**
1642
+ * @description
1643
+ * The `disableVisualSelection` option configures how
1644
+ * [selection](@/guides/cell-features/selection.md) is shown.
1645
+ *
1646
+ * You can set the `disableVisualSelection` option to one of the following:
1647
+ *
1648
+ * | Setting | Description |
1649
+ * | ----------------- | --------------------------------------------------------------------------------------------------- |
1650
+ * | `false` (default) | - Show single-cell selection<br>- Show range selection<br>- Show header selection |
1651
+ * | `true` | - Don't show single-cell selection<br>- Don't show range selection<br>- Don't show header selection |
1652
+ * | `'current'` | - Don't show single-cell selection<br>- Show range selection<br>- Show header selection |
1653
+ * | `'area'` | - Show single-cell selection<br>- Don't show range selection<br>- Show header selection |
1654
+ * | `'header'` | - Show single-cell selection<br>- Show range selection<br>- Don't show header selection |
1655
+ * | An array | A combination of `'current'`, `'area'`, and/or `'header'` |
1656
+ *
1657
+ * Read more:
1658
+ * - [Selection](@/guides/cell-features/selection.md)
1659
+ *
1660
+ * @memberof Options#
1661
+ * @type {boolean|string|string[]}
1662
+ * @default false
1663
+ * @category Core
1664
+ *
1665
+ * @example
1666
+ * ```js
1667
+ * // don't show single-cell selection
1668
+ * // don't show range selection
1669
+ * // don't show header selection
1670
+ * disableVisualSelection: true,
1671
+ *
1672
+ * // don't show single-cell selection
1673
+ * // show range selection
1674
+ * // show header selection
1675
+ * disableVisualSelection: 'current',
1676
+ *
1677
+ * // don't show single-cell selection
1678
+ * // don't show range selection
1679
+ * // show header selection
1680
+ * disableVisualSelection: ['current', 'area'],
1681
+ * ```
1682
+ */
1683
+ disableVisualSelection: false,
1684
+ /**
1685
+ * @description
1686
+ * The `dragToScroll` option configures the [`DragToScroll`](@/api/dragToScroll.md) plugin.
1687
+ *
1688
+ * You can set the `dragToScroll` option to one of the following:
1689
+ *
1690
+ * | Setting | Description |
1691
+ * | ---------------- | --------------------------------------------------------------------------- |
1692
+ * | `true` (default) | When selection reaches the edge of the grid's viewport, scroll the viewport |
1693
+ * | `false` | Don't scroll the viewport |
1694
+ *
1695
+ * Read more:
1696
+ * - [Plugins: `DragToScroll`](@/api/dragToScroll.md)
1697
+ *
1698
+ * @memberof Options#
1699
+ * @type {boolean}
1700
+ * @default true
1701
+ * @category DragToScroll
1702
+ *
1703
+ * @example
1704
+ * ```js
1705
+ * // when selection reaches the edge of the grid's viewport, scroll the viewport
1706
+ * dragToScroll: true,
1707
+ * ```
1708
+ */
1709
+ dragToScroll: true,
1710
+ /**
1711
+ * The `dropdownMenu` option configures the [`DropdownMenu`](@/api/dropdownMenu.md) plugin.
1712
+ *
1713
+ * You can set the `dropdownMenu` option to one of the following:
1714
+ *
1715
+ * | Setting | Description |
1716
+ * | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1717
+ * | `false` | Disable the [`DropdownMenu`](@/api/dropdownMenu.md) plugin |
1718
+ * | `true` | - Enable the [`DropdownMenu`](@/api/dropdownMenu.md) plugin<br>- Use the [default context menu options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-default-options) |
1719
+ * | An array | - Enable the [`DropdownMenu`](@/api/dropdownMenu.md) plugin<br>- Modify [individual context menu options](@/guides/accessories-and-menus/context-menu.md#context-menu-with-specific-options) |
1720
+ * | An object | - Enable the [`DropdownMenu`](@/api/dropdownMenu.md) plugin<br>- Apply a custom dropdown menu configuration |
1721
+ *
1722
+ * Read more:
1723
+ * - [Context menu](@/guides/accessories-and-menus/context-menu.md)
1724
+ * - [Plugins: `DropdownMenu`](@/api/dropdownMenu.md)
1725
+ *
1726
+ * @memberof Options#
1727
+ * @type {boolean|object|string[]}
1728
+ * @default undefined
1729
+ * @category DropdownMenu
1730
+ *
1731
+ * @example
1732
+ * ```js
1733
+ * // enable the `DropdownMenu` plugin
1734
+ * // use the default context menu options
1735
+ * dropdownMenu: true,
1736
+ *
1737
+ * // enable the `DropdownMenu` plugin
1738
+ * // and modify individual context menu options
1739
+ * dropdownMenu: ['row_above', 'row_below', '---------', 'undo', 'redo'],
1740
+ *
1741
+ * // enable the `DropdownMenu` plugin
1742
+ * // and apply a custom dropdown menu configuration
1743
+ * dropdownMenu: {
1744
+ * items: {
1745
+ * 'option1': {
1746
+ * name: 'option1'
1747
+ * },
1748
+ * 'option2': {
1749
+ * name: 'option2',
1750
+ * submenu: {
1751
+ * items: [
1752
+ * {
1753
+ * key: 'option2:suboption1',
1754
+ * name: 'option2:suboption1',
1755
+ * callback(key, options) {
1756
+ * ...
1757
+ * }
1758
+ * },
1759
+ * ...
1760
+ * ]
1761
+ * }
1762
+ * }
1763
+ * }
1764
+ * },
1765
+ * ```
1766
+ */
1767
+ dropdownMenu: void 0,
1768
+ /**
1769
+ * The `editor` option sets a [cell editor](@/guides/cell-functions/cell-editor.md) for a cell.
1770
+ *
1771
+ * You can set the `editor` option to one of the following [cell editor aliases](@/guides/cell-functions/cell-editor.md):
1772
+ *
1773
+ * | Alias | Cell editor function |
1774
+ * | ------------------- | -------------------------------------------------------------------------- |
1775
+ * | A custom alias | Your [custom cell editor](@/guides/cell-functions/cell-editor.md) function |
1776
+ * | `'autocomplete'` | `AutocompleteEditor` |
1777
+ * | `'base'` | `BaseEditor` |
1778
+ * | `'checkbox'` | `CheckboxEditor` |
1779
+ * | `'date'` | `DateEditor` |
1780
+ * | `'dropdown'` | `DropdownEditor` |
1781
+ * | `'handsontable'` | `HandsontableEditor` |
1782
+ * | `'numeric'` | `NumericEditor` |
1783
+ * | `'password'` | `PasswordEditor` |
1784
+ * | `'select'` | `SelectEditor` |
1785
+ * | `'text'` | `TextEditor` |
1786
+ * | `'time'` | `TimeEditor` |
1787
+ *
1788
+ * To disable editing cells through cell editors,
1789
+ * set the `editor` option to `false`.
1790
+ * You'll still be able to change cells' content through Handsontable's API
1791
+ * or through plugins (e.g. [`CopyPaste`](@/api/copyPaste.md)), though.
1792
+ *
1793
+ * To set the [`editor`](#editor), [`renderer`](#renderer), and [`validator`](#validator)
1794
+ * options all at once, use the [`type`](#type) option.
1795
+ *
1796
+ * Read more:
1797
+ * - [Cell editor](@/guides/cell-functions/cell-editor.md)
1798
+ * - [Cell type](@/guides/cell-types/cell-type.md)
1799
+ * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options.md#cascading-configuration)
1800
+ * - [`type`](#type)
1801
+ *
1802
+ * @memberof Options#
1803
+ * @type {string|Function|boolean}
1804
+ * @default undefined
1805
+ * @category Core
1806
+ *
1807
+ * @example
1808
+ * ```js
1809
+ * // use the `numeric` editor for each cell of the entire grid
1810
+ * editor: 'numeric',
1811
+ *
1812
+ * // apply the `editor` option to individual columns
1813
+ * columns: [
1814
+ * {
1815
+ * // use the `autocomplete` editor for each cell of this column
1816
+ * editor: 'autocomplete'
1817
+ * },
1818
+ * {
1819
+ * // disable editing cells through cell editors for each cell of this column
1820
+ * editor: false
1821
+ * }
1822
+ * ]
1823
+ * ```
1824
+ */
1825
+ editor: void 0,
1826
+ /**
1827
+ * The `enterBeginsEditing` option configures the action of the <kbd>**Enter**</kbd> key.
1828
+ *
1829
+ * You can set the `enterBeginsEditing` option to one of the following:
1830
+ *
1831
+ * | Setting | Description |
1832
+ * | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1833
+ * | `true` (default) | - On pressing <kbd>**Enter**</kbd> once, enter the editing mode of the active cell<br>- On pressing <kbd>**Enter**</kbd> twice, move to another cell,<br>as configured by the [`enterMoves`](#enterMoves) setting |
1834
+ * | `false` | - On pressing <kbd>**Enter**</kbd> once, move to another cell,<br>as configured by the [`enterMoves`](#enterMoves) setting |
1835
+ *
1836
+ * Read more:
1837
+ * - [`enterMoves`](#enterMoves)
1838
+ *
1839
+ * @memberof Options#
1840
+ * @type {boolean}
1841
+ * @default true
1842
+ * @category Core
1843
+ *
1844
+ * @example
1845
+ * ```js
1846
+ * // press Enter once to start editing
1847
+ * // press Enter twice to move to another cell
1848
+ * enterBeginsEditing: true,
1849
+ *
1850
+ * // press Enter once to move to another cell
1851
+ * enterBeginsEditing: false,
1852
+ * ```
1853
+ */
1854
+ enterBeginsEditing: true,
1855
+ /**
1856
+ * The `enterMoves` option configures the action of the <kbd>**Enter**</kbd> key.
1857
+ *
1858
+ * If the [`enterBeginsEditing`](#enterBeginsEditing) option is set to `true`,
1859
+ * the `enterMoves` setting applies to the **second** pressing of the <kbd>**Enter**</kbd> key.
1860
+ *
1861
+ * If the [`enterBeginsEditing`](#enterBeginsEditing) option is set to `false`,
1862
+ * the `enterMoves` setting applies to the **first** pressing of the <kbd>**Enter**</kbd> key.
1863
+ *
1864
+ * You can set the `enterMoves` option to an object with the following properties
1865
+ * (or to a function that returns such an object):
1866
+ *
1867
+ * | Property | Type | Description |
1868
+ * | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
1869
+ * | `col` | Number | - On pressing <kbd>**Enter**</kbd>, move selection `col` columns right<br>- On pressing <kbd>**Shift**</kbd> + <kbd>**Enter**</kbd>, move selection `col` columns left |
1870
+ * | `row` | Number | - On pressing <kbd>**Enter**</kbd>, move selection `row` rows down<br>- On pressing <kbd>**Shift**</kbd> + <kbd>**Enter**</kbd>, move selection `row` rows up |
1871
+ *
1872
+ * Read more:
1873
+ * - [`enterBeginsEditing`](#enterBeginsEditing)
1874
+ *
1875
+ * @memberof Options#
1876
+ * @type {object|Function}
1877
+ * @default {col: 0, row: 1}
1878
+ * @category Core
1879
+ *
1880
+ * @example
1881
+ * ```js
1882
+ * // on pressing Enter, move selection 1 column right and 1 row down
1883
+ * // on pressing Shift+Enter, move selection 1 column left and 1 row up
1884
+ * enterMoves: {col: 1, row: 1},
1885
+ *
1886
+ * // the same setting, as a function
1887
+ * // `event` is a DOM Event object received on pressing Enter
1888
+ * // you can use it to check whether the user pressed Enter or Shift+Enter
1889
+ * enterMoves(event) {
1890
+ * return {col: 1, row: 1};
1891
+ * },
1892
+ * ```
1893
+ */
1894
+ enterMoves: {
1895
+ col: 0,
1896
+ row: 1
1897
+ },
1898
+ /**
1899
+ * The `fillHandle` option configures the [Autofill](@/api/autofill.md) plugin.
1900
+ *
1901
+ * You can set the `fillHandle` option to one the following:
1902
+ *
1903
+ * | Setting | Description |
1904
+ * | -------------- | -------------------------------------------------------------------------- |
1905
+ * | `true` | - Enable autofill in all directions<br>- Add the fill handle |
1906
+ * | `false` | Disable autofill |
1907
+ * | `'vertical'` | - Enable vertical autofill<br>- Add the fill handle |
1908
+ * | `'horizontal'` | - Enable horizontal autofill<br>- Add the fill handle |
1909
+ * | An object | - Enable autofill<br>- Add the fill handle<br>- Configure autofill options |
1910
+ *
1911
+ * If you set the `fillHandle` option to an object, you can configure the following autofill options:
1912
+ *
1913
+ * | Option | Possible settings | Description |
1914
+ * | --------------- | ------------------------------ | --------------------------------------------------------------------------------------------------------- |
1915
+ * | `autoInsertRow` | `true` (default) \| `false` | `true`: When you reach the grid's bottom, add new rows<br>`false`: When you reach the grid's bottom, stop |
1916
+ * | `direction` | `'vertical'` \| `'horizontal'` | `'vertical'`: Enable vertical autofill<br>`'horizontal'`: Enable horizontal autofill |
1917
+ *
1918
+ * Read more:
1919
+ * - [AutoFill values](@/guides/cell-features/autofill-values.md)
1920
+ *
1921
+ * @memberof Options#
1922
+ * @type {boolean|string|object}
1923
+ * @default true
1924
+ * @category Core
1925
+ *
1926
+ * @example
1927
+ * ```js
1928
+ * // enable autofill in all directions
1929
+ * // with `autoInsertRow` enabled
1930
+ * fillHandle: true,
1931
+ *
1932
+ * // enable vertical autofill
1933
+ * // with `autoInsertRow` enabled
1934
+ * fillHandle: 'vertical',
1935
+ *
1936
+ * // enable horizontal autofill
1937
+ * // with `autoInsertRow` enabled
1938
+ * fillHandle: 'horizontal',
1939
+ *
1940
+ * // enable autofill in all directions
1941
+ * // with `autoInsertRow` disabled
1942
+ * fillHandle: {
1943
+ * autoInsertRow: false,
1944
+ * },
1945
+ *
1946
+ * // enable vertical autofill
1947
+ * // with `autoInsertRow` disabled
1948
+ * fillHandle: {
1949
+ * autoInsertRow: false,
1950
+ * direction: 'vertical'
1951
+ * },
1952
+ * ```
1953
+ */
1954
+ fillHandle: {
1955
+ autoInsertRow: false
1956
+ },
1957
+ /**
1958
+ * The `filter` option configures whether [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md) cells'
1959
+ * lists are updated by the end user's input.
1960
+ *
1961
+ * You can set the `filter` option to one of the following:
1962
+ *
1963
+ * | Setting | Description |
1964
+ * | ---------------- | --------------------------------------------------------------------------------------------------------------------- |
1965
+ * | `true` (default) | When the end user types into the input area, only options matching the input are displayed |
1966
+ * | `false` | When the end user types into the input area, all options are displayed<br>(options matching the input are put in bold |
1967
+ *
1968
+ * Read more:
1969
+ * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type.md)
1970
+ * - [`source`](#source)
1971
+ * - [`filteringCaseSensitive`](#filteringCaseSensitive)
1972
+ *
1973
+ * @memberof Options#
1974
+ * @type {boolean}
1975
+ * @default true
1976
+ * @category Core
1977
+ *
1978
+ * @example
1979
+ * ```js
1980
+ * columns: [{
1981
+ * // set the `type` of each cell in this column to `autocomplete`
1982
+ * type: 'autocomplete',
1983
+ * // set options available in every `autocomplete` cell of this column
1984
+ * source: ['A', 'B', 'C'],
1985
+ * // when the end user types in `A`, display only the A option
1986
+ * // when the end user types in `B`, display only the B option
1987
+ * // when the end user types in `C`, display only the C option
1988
+ * filter: true
1989
+ * }],
1990
+ * ```
1991
+ */
1992
+ filter: true,
1993
+ /**
1994
+ * The `filteringCaseSensitive` option configures whether [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md) cells'
1995
+ * input is case-sensitive.
1996
+ *
1997
+ * You can set the `filteringCaseSensitive` option to one of the following:
1998
+ *
1999
+ * | Setting | Description |
2000
+ * | ----------------- | -------------------------------------------------------------------------------------------------- |
2001
+ * | `false` (default) | [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md) cells' input is not case-sensitive |
2002
+ * | `true` | [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md) cells' input is case-sensitive |
2003
+ *
2004
+ * Read more:
2005
+ * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type.md)
2006
+ * - [`source`](#source)
2007
+ * - [`filter`](#filter)
2008
+ *
2009
+ * @memberof Options#
2010
+ * @type {boolean}
2011
+ * @default false
2012
+ * @category Core
2013
+ *
2014
+ * @example
2015
+ * ```js
2016
+ * columns: [
2017
+ * {
2018
+ * type: 'autocomplete',
2019
+ * source: [ ... ],
2020
+ * // match case while searching autocomplete options
2021
+ * filteringCaseSensitive: true
2022
+ * }
2023
+ * ],
2024
+ * ```
2025
+ */
2026
+ filteringCaseSensitive: false,
2027
+ /**
2028
+ * The `filters` option configures the [`Filters`](@/api/filters.md) plugin.
2029
+ *
2030
+ * You can set the `filters` option to one of the following:
2031
+ *
2032
+ * | Setting | Description |
2033
+ * | ------- | ------------------------------------------------ |
2034
+ * | `false` | Disable the [`Filters`](@/api/filters.md) plugin |
2035
+ * | `true` | Enable the [`Filters`](@/api/filters.md) plugin |
2036
+ *
2037
+ * Read more:
2038
+ * - [Column filter](@/guides/columns/column-filter.md)
2039
+ * - [Plugins: `Filters`](@/api/filters.md)
2040
+ * - [`dropdownMenu`](#dropdownMenu)
2041
+ *
2042
+ * @memberof Options#
2043
+ * @type {boolean}
2044
+ * @default undefined
2045
+ * @category Filters
2046
+ *
2047
+ * @example
2048
+ * ```js
2049
+ * // enable the `Filters` plugin
2050
+ * filters: true,
2051
+ * ```
2052
+ */
2053
+ filters: void 0,
2054
+ /**
2055
+ * `fixedColumnsLeft` is a legacy option.
2056
+ *
2057
+ * If your grid's [layout direction](@/guides/internationalization/layout-direction.md) is LTR (default), `fixedColumnsLeft` acts like the [`fixedColumnsStart`](#fixedColumnsStart) option.
2058
+ *
2059
+ * If your grid's [layout direction](@/guides/internationalization/layout-direction.md) is RTL, using `fixedColumnsLeft` throws an error.
2060
+ *
2061
+ * Use [`fixedColumnsStart`](#fixedColumnsStart), which works in any layout direction.
2062
+ *
2063
+ * Read more:
2064
+ * - [`fixedColumnsStart`](#fixedcolumnsstart)
2065
+ *
2066
+ * @memberof Options#
2067
+ * @type {number}
2068
+ * @default 0
2069
+ * @category Core
2070
+ *
2071
+ * @example
2072
+ * ```js
2073
+ * // freeze the first 3 columns from the left
2074
+ * fixedColumnsLeft: 3,
2075
+ * ```
2076
+ */
2077
+ fixedColumnsLeft: 0,
2078
+ /**
2079
+ * If your grid's [layout direction](@/guides/internationalization/layout-direction.md) is LTR (default), the `fixedColumnsStart` option sets the number of [frozen columns](@/guides/columns/column-freezing.md) at the left-hand edge of the grid.
2080
+ *
2081
+ * If your grid's [layout direction](@/guides/internationalization/layout-direction.md) is RTL, the `fixedColumnsStart` option sets the number of [frozen columns](@/guides/columns/column-freezing.md) at the right-hand edge of the grid.
2082
+ *
2083
+ * Read more:
2084
+ * - [Column freezing](@/guides/columns/column-freezing.md)
2085
+ * - [Layout direction](@/guides/internationalization/layout-direction.md)
2086
+ * - [`fixedColumnsLeft`](#fixedcolumnsleft)
2087
+ * - [`layoutDirection`](#layoutDirection)
2088
+ *
2089
+ * @memberof Options#
2090
+ * @type {number}
2091
+ * @default 0
2092
+ * @category Core
2093
+ *
2094
+ * @example
2095
+ * ```js
2096
+ * // when `layoutDirection` is set to `inherit` (default)
2097
+ * // freeze the first 3 columns from the left or from the right
2098
+ * // depending on your HTML document's `dir` attribute
2099
+ * layoutDirection: 'inherit',
2100
+ * fixedColumnsStart: 3,
2101
+ *
2102
+ * // when `layoutDirection` is set to `rtl`
2103
+ * // freeze the first 3 columns from the right
2104
+ * // regardless of your HTML document's `dir` attribute
2105
+ * layoutDirection: 'rtl',
2106
+ * fixedColumnsStart: 3,
2107
+ *
2108
+ * // when `layoutDirection` is set to `ltr`
2109
+ * // freeze the first 3 columns from the left
2110
+ * // regardless of your HTML document's `dir` attribute
2111
+ * layoutDirection: 'ltr',
2112
+ * fixedColumnsStart: 3,
2113
+ * ```
2114
+ */
2115
+ fixedColumnsStart: 0,
2116
+ /**
2117
+ * The `fixedRowsBottom` option sets the number of [frozen rows](@/guides/rows/row-freezing.md)
2118
+ * at the bottom of the grid.
2119
+ *
2120
+ * Read more:
2121
+ * - [Row freezing](@/guides/rows/row-freezing.md)
2122
+ *
2123
+ * @memberof Options#
2124
+ * @type {number}
2125
+ * @default 0
2126
+ * @category Core
2127
+ *
2128
+ * @example
2129
+ * ```js
2130
+ * // freeze the bottom 3 rows
2131
+ * fixedRowsBottom: 3,
2132
+ * ```
2133
+ */
2134
+ fixedRowsBottom: 0,
2135
+ /**
2136
+ * The `fixedRowsTop` option sets the number of [frozen rows](@/guides/rows/row-freezing.md) at the top of the grid.
2137
+ *
2138
+ * Read more:
2139
+ * - [Row freezing](@/guides/rows/row-freezing.md)
2140
+ *
2141
+ * @memberof Options#
2142
+ * @type {number}
2143
+ * @default 0
2144
+ * @category Core
2145
+ *
2146
+ * @example
2147
+ * ```js
2148
+ * // freeze the top 3 rows
2149
+ * fixedRowsTop: 3,
2150
+ * ```
2151
+ */
2152
+ fixedRowsTop: 0,
2153
+ /**
2154
+ * The `formulas` option configures the [`Formulas`](@/api/formulas.md) plugin.
2155
+ *
2156
+ * The [`Formulas`](@/api/formulas.md) plugin uses the [HyperFormula](https://handsontable.github.io/hyperformula/) calculation engine.
2157
+ * To install [HyperFormula](https://handsontable.github.io/hyperformula/), read the following:
2158
+ * - [Formula calculation: Initialization methods](@/guides/formulas/formula-calculation.md#initialization-methods)
2159
+ *
2160
+ * You can set the `formulas` option to an object with the following properties:
2161
+ *
2162
+ * | Property | Possible values |
2163
+ * | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2164
+ * | `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 |
2165
+ * | `sheetId` | A number |
2166
+ * | `sheetName` | A string |
2167
+ *
2168
+ * Read more:
2169
+ * - [Plugins: `Formulas`](@/api/formulas.md)
2170
+ * - [Formula calculation](@/guides/formulas/formula-calculation.md)
2171
+ * - [HyperFormula documentation: Client-side installation](https://handsontable.github.io/hyperformula/guide/client-side-installation)
2172
+ * - [HyperFormula documentation: Configuration options](https://handsontable.github.io/hyperformula/api/interfaces/configparams.html)
2173
+ *
2174
+ * @memberof Options#
2175
+ * @type {object}
2176
+ * @default undefined
2177
+ * @category Formulas
2178
+ *
2179
+ * @example
2180
+ * ```js
2181
+ * // either add the `HyperFormula` class
2182
+ * formulas: {
2183
+ * // set `engine` to `HyperFormula`
2184
+ * engine: HyperFormula,
2185
+ * sheetId: 1,
2186
+ * sheetName: 'Sheet 1'
2187
+ * }
2188
+ *
2189
+ * // or, add a HyperFormula instance
2190
+ * // initialized with the `'internal-use-in-handsontable'` license key
2191
+ * const hyperformulaInstance = HyperFormula.buildEmpty({
2192
+ * licenseKey: 'internal-use-in-handsontable',
2193
+ * });
2194
+ *
2195
+ * formulas: {
2196
+ * // set `engine` to a HyperFormula instance
2197
+ * engine: hyperFormulaInstance,
2198
+ * sheetId: 1,
2199
+ * sheetName: 'Sheet 1'
2200
+ * }
2201
+ *
2202
+ * // or, add a HyperFormula configuration object
2203
+ * formulas: {
2204
+ * // set `engine` to a HyperFormula configuration object
2205
+ * engine: {
2206
+ * hyperformula: HyperFormula // or `engine: hyperFormulaInstance`
2207
+ * leapYear1900: false, // this option comes from HyperFormula
2208
+ * // add more HyperFormula configuration options
2209
+ * },
2210
+ * sheetId: 1,
2211
+ * sheetName: 'Sheet 1'
2212
+ * }
2213
+ *
2214
+ * // use the same HyperFormula instance in multiple Handsontable instances
2215
+ *
2216
+ * // a Handsontable instance `hot1`
2217
+ * formulas: {
2218
+ * engine: HyperFormula,
2219
+ * sheetId: 1,
2220
+ * sheetName: 'Sheet 1'
2221
+ * }
2222
+ *
2223
+ * // a Handsontable instance `hot2`
2224
+ * formulas: {
2225
+ * engine: hot1.getPlugin('formulas').engine,
2226
+ * sheetId: 1,
2227
+ * sheetName: 'Sheet 1'
2228
+ * }
2229
+ * ```
2230
+ */
2231
+ formulas: void 0,
2232
+ /**
2233
+ * The `fragmentSelection` option configures text selection settings.
2234
+ *
2235
+ * You can set the `fragmentSelection` option to one of the following:
2236
+ *
2237
+ * | Setting | Decription |
2238
+ * | ----------------- | ------------------------------------------------- |
2239
+ * | `false` (default) | Disable text selection |
2240
+ * | `true` | Enable text selection in multiple cells at a time |
2241
+ * | `'cell'` | Enable text selection in one cell at a time |
2242
+ *
2243
+ * @memberof Options#
2244
+ * @type {boolean|string}
2245
+ * @default false
2246
+ * @category Core
2247
+ *
2248
+ * @example
2249
+ * ```js
2250
+ * // enable text selection in multiple cells at a time
2251
+ * fragmentSelection: true,
2252
+ *
2253
+ * // enable text selection in one cell a time
2254
+ * fragmentSelection: 'cell',
2255
+ * ```
2256
+ */
2257
+ fragmentSelection: false,
2258
+ /**
2259
+ * The `height` option configures the height of your grid.
2260
+ *
2261
+ * You can set `height` option to one of the following:
2262
+ *
2263
+ * | Setting | Example |
2264
+ * | -------------------------------------------------------------------------- | -------------------------- |
2265
+ * | A number of pixels | `height: 500` |
2266
+ * | A string with a [CSS unit](https://www.w3schools.com/cssref/css_units.asp) | `height: '75vw'` |
2267
+ * | A function that returns a valid number or string | `height() { return 500; }` |
2268
+ *
2269
+ * Read more:
2270
+ * - [Grid size](@/guides/getting-started/grid-size.md)
2271
+ *
2272
+ * @memberof Options#
2273
+ * @type {number|string|Function}
2274
+ * @default undefined
2275
+ * @category Core
2276
+ *
2277
+ * @example
2278
+ * ```js
2279
+ * // set the grid's height to 500px
2280
+ * height: 500,
2281
+ *
2282
+ * // set the grid's height to 75vh
2283
+ * height: '75vh',
2284
+ *
2285
+ * // set the grid's height to 500px, using a function
2286
+ * height() {
2287
+ * return 500;
2288
+ * },
2289
+ * ```
2290
+ */
2291
+ height: void 0,
2292
+ /**
2293
+ * The `hiddenColumns` option configures the [`HiddenColumns`](@/api/hiddenColumns.md) plugin.
2294
+ *
2295
+ * You can set the `hiddenColumns` option to one of the following:
2296
+ *
2297
+ * | Setting | Description |
2298
+ * | --------- | -------------------------------------------------------------------------------------------- |
2299
+ * | `false` | Disable the [`HiddenColumns`](@/api/hiddenColumns.md) plugin |
2300
+ * | `true` | Enable the [`HiddenColumns`](@/api/hiddenColumns.md) plugin with the default plugin options |
2301
+ * | An object | - Enable the [`HiddenColumns`](@/api/hiddenColumns.md) plugin<br>- Modify the plugin options |
2302
+ *
2303
+ * If you set the `hiddenColumns` to an object, you can set the following [`HiddenColumns`](@/api/hiddenColumns.md) plugin options:
2304
+ *
2305
+ * | Property | Possible values | Description |
2306
+ * | ------------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
2307
+ * | `columns` | An array of indexes | An array of indexes of columns that are hidden at initialization |
2308
+ * | `copyPasteEnabled` | `true` \| `false` | `true`: when copying or pasting data, take hidden columns into account<br>`false`: when copying or pasting data, don't take hidden columns into account |
2309
+ * | `indicators` | `true` \| `false` | `true`: display UI markers to indicate the presence of hidden columns<br>`false`: display UI markers |
2310
+ *
2311
+ * Read more:
2312
+ * - [Plugins: `HiddenColumns`](@/api/hiddenColumns.md)
2313
+ * - [Column hiding](@/guides/columns/column-hiding.md)
2314
+ *
2315
+ * @memberof Options#
2316
+ * @type {boolean|object}
2317
+ * @default undefined
2318
+ * @category HiddenColumns
2319
+ *
2320
+ * @example
2321
+ * ```js
2322
+ * // enable the `HiddenColumns` plugin
2323
+ * hiddenColumns: true,
2324
+ *
2325
+ * // enable `HiddenColumns` plugin, and modify the plugin options
2326
+ * hiddenColumns: {
2327
+ * // set columns that are hidden by default
2328
+ * columns: [5, 10, 15],
2329
+ * // when copying or pasting data, take hidden columns into account
2330
+ * copyPasteEnabled: true,
2331
+ * // show where hidden columns are
2332
+ * indicators: true
2333
+ * }
2334
+ * ```
2335
+ */
2336
+ hiddenColumns: void 0,
2337
+ /**
2338
+ * The `hiddenRows` option configures the [`HiddenRows`](@/api/hiddenRows.md) plugin.
2339
+ *
2340
+ * You can set the `hiddenRows` option to one of the following:
2341
+ *
2342
+ * | Setting | Description |
2343
+ * | --------- | -------------------------------------------------------------------------------------- |
2344
+ * | `false` | Disable the [`HiddenRows`](@/api/hiddenRows.md) plugin |
2345
+ * | `true` | Enable the [`HiddenRows`](@/api/hiddenRows.md) plugin with the default plugin options |
2346
+ * | An object | - Enable the [`HiddenRows`](@/api/hiddenRows.md) plugin<br>- Modify the plugin options |
2347
+ *
2348
+ * If you set the `hiddenRows` to an object, you can set the following [`HiddenRows`](@/api/hiddenRows.md) plugin options:
2349
+ *
2350
+ * | Property | Possible values | Description |
2351
+ * | ------------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
2352
+ * | `rows ` | An array of indexes | An array of indexes of rows that are hidden at initialization |
2353
+ * | `copyPasteEnabled` | `true` \| `false` | `true`: when copying or pasting data, take hidden rows into account<br>`false`: when copying or pasting data, don't take hidden rows into account |
2354
+ * | `indicators` | `true` \| `false` | `true`: display UI markers to indicate the presence of hidden rows<br>`false`: display UI markers |
2355
+ *
2356
+ * Read more:
2357
+ * - [Plugins: `HiddenRows`](@/api/hiddenRows.md)
2358
+ * - [Row hiding](@/guides/rows/row-hiding.md)
2359
+ *
2360
+ * @memberof Options#
2361
+ * @type {boolean|object}
2362
+ * @default undefined
2363
+ * @category HiddenRows
2364
+ *
2365
+ * @example
2366
+ * ```js
2367
+ * // enable the `HiddenRows` plugin
2368
+ * hiddenRows: true,
2369
+ *
2370
+ * // enable `HiddenRows` plugin, and modify the plugin options
2371
+ * hiddenRows: {
2372
+ * // set rows that are hidden by default
2373
+ * rows: [5, 10, 15],
2374
+ * // when copying or pasting data, take hidden rows into account
2375
+ * copyPasteEnabled: true,
2376
+ * // show where hidden rows are
2377
+ * indicators: true
2378
+ * }
2379
+ * ```
2380
+ */
2381
+ hiddenRows: void 0,
2382
+ /**
2383
+ * The `invalidCellClassName` option lets you add a CSS class name to cells
2384
+ * that were marked as `invalid` by the [cell validator](@/guides/cell-functions/cell-validator.md).
2385
+ *
2386
+ * Read more:
2387
+ * - [Cell validator](@/guides/cell-functions/cell-validator.md)
2388
+ * - [`currentRowClassName`](#currentRowClassName)
2389
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
2390
+ * - [`activeHeaderClassName`](#activeHeaderClassName)
2391
+ * - [`currentColClassName`](#currentColClassName)
2392
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
2393
+ * - [`commentedCellClassName`](#commentedCellClassName)
2394
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
2395
+ * - [`TableClassName`](#TableClassName)
2396
+ * - [`className`](#className)
2397
+ *
2398
+ * @memberof Options#
2399
+ * @type {string}
2400
+ * @default 'htInvalid'
2401
+ * @category Core
2402
+ *
2403
+ * @example
2404
+ * ```js
2405
+ * // add a `highlight-error` CSS class name
2406
+ * // to every `invalid` cell`
2407
+ * invalidCellClassName: 'highlight-error',
2408
+ * ```
2409
+ */
2410
+ invalidCellClassName: 'htInvalid',
2411
+ /**
2412
+ * The `isEmptyCol` option lets you define your own custom method
2413
+ * for checking if a column at a given visual index is empty.
2414
+ *
2415
+ * The `isEmptyCol` setting overwrites the built-in [`isEmptyCol`](@/api/core.md#isEmptyCol) method.
2416
+ *
2417
+ * @memberof Options#
2418
+ * @type {Function}
2419
+ * @param {number} col Visual column index.
2420
+ * @returns {boolean}
2421
+ * @category Core
2422
+ *
2423
+ * @example
2424
+ * ```js
2425
+ * // overwrite the built-in `isEmptyCol` method
2426
+ * isEmptyCol(visualColumnIndex) {
2427
+ * // your custom method
2428
+ * ...
2429
+ * },
2430
+ * ```
2431
+ */
2432
+ isEmptyCol: function isEmptyCol(col) {
2433
+ var row;
2434
+ var rowLen;
2435
+ var value;
2436
+ for (row = 0, rowLen = this.countRows(); row < rowLen; row++) {
2437
+ value = this.getDataAtCell(row, col);
2438
+ if ((0, _mixed.isEmpty)(value) === false) {
2439
+ return false;
2440
+ }
2441
+ }
2442
+ return true;
2443
+ },
2444
+ /**
2445
+ * The `isEmptyRow` option lets you define your own custom method
2446
+ * for checking if a row at a given visual index is empty.
2447
+ *
2448
+ * The `isEmptyRow` setting overwrites the built-in [`isEmptyRow`](@/api/core.md#isEmptyRow) method.
2449
+ *
2450
+ * @memberof Options#
2451
+ * @type {Function}
2452
+ * @param {number} row Visual row index.
2453
+ * @returns {boolean}
2454
+ * @category Core
2455
+ *
2456
+ * @example
2457
+ * ```js
2458
+ * // overwrite the built-in `isEmptyRow` method
2459
+ * isEmptyRow(visualRowIndex) {
2460
+ * // your custom method
2461
+ * ...
2462
+ * },
2463
+ * ```
2464
+ */
2465
+ isEmptyRow: function isEmptyRow(row) {
2466
+ var col;
2467
+ var colLen;
2468
+ var value;
2469
+ var meta;
2470
+ for (col = 0, colLen = this.countCols(); col < colLen; col++) {
2471
+ value = this.getDataAtCell(row, col);
2472
+ if ((0, _mixed.isEmpty)(value) === false) {
2473
+ if (_typeof(value) === 'object') {
2474
+ meta = this.getCellMeta(row, col);
2475
+ return (0, _object.isObjectEqual)(this.getSchema()[meta.prop], value);
2476
+ }
2477
+ return false;
2478
+ }
2479
+ }
2480
+ return true;
2481
+ },
2482
+ /**
2483
+ * @description
2484
+ * The `label` option configures [`checkbox`](@/guides/cell-types/checkbox-cell-type.md) cells` labels.
2485
+ *
2486
+ * You can set the `label` option to an object with the following properties:
2487
+ *
2488
+ * | Property | Possible values | Description |
2489
+ * | ----------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2490
+ * | `position` | `'after'` (default) \| `'before'` | `'after'`: place the label to the right of the checkbox<br>`'before'`: place the label to the left of the checkbox |
2491
+ * | `value` | A string \| A function | The label's text |
2492
+ * | `separated` | `false` (default) \| `true` | `false`: don't separate the label from the checkbox<br>`true`: separate the label from the checkbox |
2493
+ * | `property` | A string | - A [`data`](#data) object property name that's used as the label's text <br>- Works only when the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects) |
2494
+ *
2495
+ * Read more:
2496
+ * - [Checkbox cell type: Checkbox labels](@/guides/cell-types/checkbox-cell-type.md#checkbox-labels)
2497
+ *
2498
+ * @memberof Options#
2499
+ * @type {object}
2500
+ * @default undefined
2501
+ * @category Core
2502
+ *
2503
+ * @example
2504
+ * ```js
2505
+ * columns: [{
2506
+ * type: 'checkbox',
2507
+ * // add 'My label:' after the checkbox
2508
+ * label: { position: 'after', value: 'My label: ', separated: true }
2509
+ * }],
2510
+ * ```
2511
+ */
2512
+ label: void 0,
2513
+ /**
2514
+ * The `language` option configures Handsontable's [language](@/guides/internationalization/language.md) settings.
2515
+ *
2516
+ * You can set the `language` option to one of the following:
2517
+ *
2518
+ * | Setting | Description |
2519
+ * | ------------------- | --------------------------- |
2520
+ * | `'en-US'` (default) | English - United States |
2521
+ * | `'ar-AR'` | Arabic - Global.<br><br>To properly render this language, set the [layout direction](@/guides/internationalization/layout-direction.md) to RTL. |
2522
+ * | `'cs-CZ'` | Czech - Czech Republic |
2523
+ * | `'de-CH'` | German - Switzerland |
2524
+ * | `'de-DE'` | German - Germany |
2525
+ * | `'es-MX'` | Spanish - Mexico |
2526
+ * | `'fr-FR'` | French - France |
2527
+ * | `'it-IT'` | Italian - Italy |
2528
+ * | `'ja-JP'` | Japanese - Japan |
2529
+ * | `'ko-KR'` | Korean - Korea |
2530
+ * | `'lv-LV'` | Latvian - Latvia |
2531
+ * | `'nb-NO'` | Norwegian (Bokmål) - Norway |
2532
+ * | `'nl-NL'` | Dutch - Netherlands |
2533
+ * | `'pl-PL'` | Polish - Poland |
2534
+ * | `'pt-BR'` | Portuguese - Brazil |
2535
+ * | `'ru-RU'` | Russian - Russia |
2536
+ * | `'sr-SP'` | Serbian (Latin) - Serbia |
2537
+ * | `'zh-CN'` | Chinese - China |
2538
+ * | `'zh-TW'` | Chinese - Taiwan |
2539
+ *
2540
+ * Read more:
2541
+ * - [Language](@/guides/internationalization/language.md)
2542
+ * - [`locale`](#locale)
2543
+ * - [`layoutDirection`](#layoutdirection)
2544
+ *
2545
+ * @memberof Options#
2546
+ * @type {string}
2547
+ * @default 'en-US'
2548
+ * @category Core
2549
+ *
2550
+ * @example
2551
+ * ```js
2552
+ * // set Handsontable's language to Polish
2553
+ * language: 'pl-PL',
2554
+ * ```
2555
+ */
2556
+ language: 'en-US',
2557
+ /**
2558
+ * The `layoutDirection` option configures whether Handsontable renders from the left to the right, or from the right to the left.
2559
+ *
2560
+ * You can set the layout direction only at Handsontable's [initialization](@/guides/getting-started/installation.md#initialize-handsontable). Any change of the `layoutDirection` option after the initialization (e.g. using the [`updateSettings()`](@/api/core.md#updatesettings) method) is ignored.
2561
+ *
2562
+ * You can set the `layoutDirection` option only [for the entire grid](@/guides/getting-started/configuration-options.md#setting-grid-options).
2563
+ * You can't set it for individual columns, rows, or cells.
2564
+ *
2565
+ * You can set the `layoutDirection` option to one of the following strings:
2566
+ *
2567
+ * | Setting | Description |
2568
+ * | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2569
+ * | `inherit` (default) | Set Handsontable's layout direction automatically,<br>based on the value of your HTML document's [`dir`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir) attribute |
2570
+ * | `rtl` | Render Handsontable from the right to the left,<br>even when your HTML document's [`dir`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir) attribute is set to `ltr` |
2571
+ * | `ltr` | Render Handsontable from the left to the right,<br>even when your HTML document's [`dir`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir) attribute is set to `rtl` |
2572
+ *
2573
+ * Read more:
2574
+ * - [Layout direction](@/guides/internationalization/layout-direction.md)
2575
+ * - [Language](@/guides/internationalization/language.md)
2576
+ * - [`language`](#language)
2577
+ * - [`locale`](#locale)
2578
+ * - [`fixedColumnsStart`](#fixedcolumnsstart)
2579
+ * - [`customBorders`](#customBorders)
2580
+ *
2581
+ * @memberof Options#
2582
+ * @type {string}
2583
+ * @default 'inherit'
2584
+ * @category Core
2585
+ *
2586
+ * @example
2587
+ * ```js
2588
+ * // inherit Handsontable's layout direction
2589
+ * // from the value of your HTML document's `dir` attribute
2590
+ * layoutDirection: 'inherit',
2591
+ *
2592
+ * // render Handsontable from the right to the left
2593
+ * // regardless of your HTML document's `dir`
2594
+ * layoutDirection: 'rtl',
2595
+ *
2596
+ * // render Handsontable from the left to the right
2597
+ * // regardless of your HTML document's `dir`
2598
+ * layoutDirection: 'ltr',
2599
+ * ```
2600
+ */
2601
+ layoutDirection: 'inherit',
2602
+ /**
2603
+ * The `licenseKey` option sets your Handsontable license key.
2604
+ *
2605
+ * You can set the `licenseKey` option to one of the following:
2606
+ *
2607
+ * | Setting | Description |
2608
+ * | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
2609
+ * | A string with your [commercial license key](@/guides/getting-started/license-key.md#commercial-license) | For [commercial use](@/guides/technical-specification/software-license.md#commercial-use) |
2610
+ * | `'non-commercial-and-evaluation'` | For [non-commercial use](@/guides/technical-specification/software-license.md#non-commercial-use) |
2611
+ *
2612
+ * Read more:
2613
+ * - [License key](@/guides/getting-started/license-key.md)
2614
+ *
2615
+ * @memberof Options#
2616
+ * @type {string}
2617
+ * @default undefined
2618
+ * @category Core
2619
+ *
2620
+ * @example
2621
+ * ```js
2622
+ * // for commercial use
2623
+ * licenseKey: 'xxxxx-xxxxx-xxxxx-xxxxx-xxxxx', // your commercial license key
2624
+ *
2625
+ * // for non-commercial use
2626
+ * licenseKey: 'non-commercial-and-evaluation',
2627
+ * ```
2628
+ */
2629
+ licenseKey: void 0,
2630
+ /**
2631
+ * The `locale` option configures Handsontable's [locale](@/guides/internationalization/locale.md) settings.
2632
+ *
2633
+ * You can set the `locale` option to any valid and canonicalized Unicode BCP 47 locale tag,
2634
+ * both for the [entire grid](@/guides/internationalization/locale.md#setting-the-grid-s-locale),
2635
+ * and for [individual columns](@/guides/internationalization/locale.md#setting-a-column-s-locale).
2636
+ *
2637
+ * Read more:
2638
+ * - [Locale](@/guides/internationalization/locale.md)
2639
+ * - [`language`](#language)
2640
+ * - [`layoutDirection`](#layoutdirection)
2641
+ *
2642
+ * @memberof Options#
2643
+ * @type {string}
2644
+ * @default 'en-US'
2645
+ * @category Core
2646
+ *
2647
+ * @example
2648
+ * ```js
2649
+ * // set the entire grid's locale to Polish
2650
+ * locale: 'pl-PL',
2651
+ *
2652
+ * // set individual columns' locales
2653
+ * columns: [
2654
+ * {
2655
+ * // set the first column's locale to Polish
2656
+ * locale: 'pl-PL',
2657
+ * },
2658
+ * {
2659
+ * // set the second column's locale to German
2660
+ * locale: 'de-DE',
2661
+ * },
2662
+ * ],
2663
+ * ```
2664
+ */
2665
+ locale: 'en-US',
2666
+ /**
2667
+ * The `manualColumnFreeze` option configures the [`ManualColumnFreeze`](@/api/manualColumnFreeze.md) plugin.
2668
+ *
2669
+ * You can set the `manualColumnFreeze` option to one of the following:
2670
+ *
2671
+ * | Setting | Description |
2672
+ * | -------- | ---------------------------------------------------------------------- |
2673
+ * | `true` | Enable the [`ManualColumnFreeze`](@/api/manualColumnFreeze.md) plugin |
2674
+ * | `false` | Disable the [`ManualColumnFreeze`](@/api/manualColumnFreeze.md) plugin |
2675
+ *
2676
+ * Read more:
2677
+ * - [Column freezing](@/guides/columns/column-freezing.md#user-triggered-freeze)
2678
+ *
2679
+ * @memberof Options#
2680
+ * @type {boolean}
2681
+ * @default undefined
2682
+ * @category ManualColumnFreeze
2683
+ *
2684
+ * @example
2685
+ * ```js
2686
+ * // enable the `ManualColumnFreeze` plugin
2687
+ * manualColumnFreeze: true,
2688
+ * ```
2689
+ */
2690
+ manualColumnFreeze: void 0,
2691
+ /**
2692
+ * The `manualColumnMove` option configures the [`ManualColumnMove`](@/api/manualColumnMove.md) plugin.
2693
+ *
2694
+ * You can set the `manualColumnMove` option to one of the following:
2695
+ *
2696
+ * | Setting | Description |
2697
+ * | -------- | ------------------------------------------------------------------------------------------------------------------ |
2698
+ * | `true` | Enable the [`ManualColumnMove`](@/api/manualColumnMove.md) plugin |
2699
+ * | `false` | Disable the [`ManualColumnMove`](@/api/manualColumnMove.md) plugin |
2700
+ * | An array | - Enable the [`ManualColumnMove`](@/api/manualColumnMove.md) plugin<br>- Move individual columns at initialization |
2701
+ *
2702
+ * Read more:
2703
+ * - [Column moving](@/guides/columns/column-moving.md)
2704
+ *
2705
+ * @memberof Options#
2706
+ * @type {boolean|number[]}
2707
+ * @default undefined
2708
+ * @category ManualColumnMove
2709
+ *
2710
+ * @example
2711
+ * ```js
2712
+ * // enable the `ManualColumnMove` plugin
2713
+ * manualColumnMove: true,
2714
+ *
2715
+ * // enable the `ManualColumnMove` plugin
2716
+ * // at initialization, move column 0 to 1
2717
+ * // at initialization, move column 1 to 4
2718
+ * // at initialization, move column 2 to 6
2719
+ * manualColumnMove: [1, 4, 6],
2720
+ * ```
2721
+ */
2722
+ manualColumnMove: void 0,
2723
+ /**
2724
+ * @description
2725
+ * The `manualColumnResize` option configures the [`ManualColumnResize`](@/api/manualColumnResize.md) plugin.
2726
+ *
2727
+ * You can set the `manualColumnResize` option to one of the following:
2728
+ *
2729
+ * | Setting | Description |
2730
+ * | -------- | --------------------------------------------------------------------------------------------------------------------- |
2731
+ * | `true` | Enable the [`ManualColumnResize`](@/api/manualColumnResize.md) plugin |
2732
+ * | `false` | Disable the [`ManualColumnResize`](@/api/manualColumnResize.md) plugin |
2733
+ * | An array | - Enable the [`ManualColumnResize`](@/api/manualColumnResize.md) plugin<br>- Set initial widths of individual columns |
2734
+ *
2735
+ * Read more:
2736
+ * - [Column width: Column stretching](@/guides/columns/column-width.md#column-stretching)
2737
+ *
2738
+ * @memberof Options#
2739
+ * @type {boolean|number[]}
2740
+ * @default undefined
2741
+ * @category ManualColumnResize
2742
+ *
2743
+ * @example
2744
+ * ```js
2745
+ * // enable the `manualColumnResize` plugin
2746
+ * manualColumnResize: true,
2747
+ *
2748
+ * // enable the `manualColumnResize` plugin
2749
+ * // set the initial width of column 0 to 40 pixels
2750
+ * // set the initial width of column 1 to 50 pixels
2751
+ * // set the initial width of column 2 to 60 pixels
2752
+ * manualColumnResize: [40, 50, 60],
2753
+ * ```
2754
+ */
2755
+ manualColumnResize: void 0,
2756
+ /**
2757
+ * @description
2758
+ * The `manualRowMove` option configures the [`ManualRowMove`](@/api/manualRowMove.md) plugin.
2759
+ *
2760
+ * You can set the `manualRowMove` option to one of the following:
2761
+ *
2762
+ * | Setting | Description |
2763
+ * | -------- | --------------------------------------------------------------------------------------------------------- |
2764
+ * | `true` | Enable the [`ManualRowMove`](@/api/manualRowMove.md) plugin |
2765
+ * | `false` | Disable the [`ManualRowMove`](@/api/manualRowMove.md) plugin |
2766
+ * | An array | - Enable the [`ManualRowMove`](@/api/manualRowMove.md) plugin<br>- Move individual rows at initialization |
2767
+ *
2768
+ * Read more:
2769
+ * - [Row moving](@/guides/rows/row-moving.md)
2770
+ *
2771
+ * @memberof Options#
2772
+ * @type {boolean|number[]}
2773
+ * @default undefined
2774
+ * @category ManualRowMove
2775
+ *
2776
+ * @example
2777
+ * ```js
2778
+ * // enable the `ManualRowMove` plugin
2779
+ * manualRowMove: true,
2780
+ *
2781
+ * // enable the `ManualRowMove` plugin
2782
+ * // at initialization, move row 0 to 1
2783
+ * // at initialization, move row 1 to 4
2784
+ * // at initialization, move row 2 to 6
2785
+ * manualColumnMove: [1, 4, 6],
2786
+ * ```
2787
+ */
2788
+ manualRowMove: void 0,
2789
+ /**
2790
+ * @description
2791
+ * The `manualRowResize` option configures the [`ManualRowResize`](@/api/manualRowResize.md) plugin.
2792
+ *
2793
+ * You can set the `manualRowResize` option to one of the following:
2794
+ *
2795
+ * | Setting | Description |
2796
+ * | -------- | ------------------------------------------------------------------------------------------------------------- |
2797
+ * | `true` | Enable the [`ManualRowResize`](@/api/manualRowResize.md) plugin |
2798
+ * | `false` | Disable the [`ManualRowResize`](@/api/manualRowResize.md) plugin |
2799
+ * | An array | - Enable the [`ManualRowResize`](@/api/manualRowResize.md) plugin<br>- Set initial heights of individual rows |
2800
+ *
2801
+ * Read more:
2802
+ * - [Row height: Adjust the row height manually](@/guides/rows/row-height.md#adjust-the-row-height-manually)
2803
+ *
2804
+ * @memberof Options#
2805
+ * @type {boolean|number[]}
2806
+ * @default undefined
2807
+ * @category ManualRowResize
2808
+ *
2809
+ * @example
2810
+ * ```js
2811
+ * // enable the `ManualRowResize` plugin
2812
+ * manualColumnResize: true,
2813
+ *
2814
+ * // enable the `ManualRowResize` plugin
2815
+ * // set the initial height of row 0 to 40 pixels
2816
+ * // set the initial height of row 1 to 50 pixels
2817
+ * // set the initial height of row 2 to 60 pixels
2818
+ * manualColumnResize: [40, 50, 60],
2819
+ * ```
2820
+ */
2821
+ manualRowResize: void 0,
2822
+ /**
2823
+ * The `maxCols` option sets a maximum number of columns.
2824
+ *
2825
+ * The `maxCols` option is used:
2826
+ * - At initialization: if the `maxCols` value is lower than the initial number of columns,
2827
+ * Handsontable trims columns from the right.
2828
+ * - At runtime: for example, when inserting columns.
2829
+ *
2830
+ * @memberof Options#
2831
+ * @type {number}
2832
+ * @default Infinity
2833
+ * @category Core
2834
+ *
2835
+ * @example
2836
+ * ```js
2837
+ * // set the maximum number of columns to 300
2838
+ * maxCols: 300,
2839
+ * ```
2840
+ */
2841
+ maxCols: Infinity,
2842
+ /**
2843
+ * The `maxRows` option sets a maximum number of rows.
2844
+ *
2845
+ * The `maxRows` option is used:
2846
+ * - At initialization: if the `maxRows` value is lower than the initial number of columns,
2847
+ * Handsontable trims rows from the bottom.
2848
+ * - At runtime: for example, when inserting rows.
2849
+ *
2850
+ * @memberof Options#
2851
+ * @type {number}
2852
+ * @default Infinity
2853
+ * @category Core
2854
+ *
2855
+ * @example
2856
+ * ```js
2857
+ * // set the maximum number of rows to 300
2858
+ * maxRows: 300,
2859
+ * ```
2860
+ */
2861
+ maxRows: Infinity,
2862
+ /**
2863
+ * @description
2864
+ * The `mergeCells` option configures the [`MergeCells`](@/api/mergeCells.md) plugin.
2865
+ *
2866
+ * You can set the `mergeCells` option to one of the following:
2867
+ *
2868
+ * | Setting | Description |
2869
+ * | ------------------- | --------------------------------------------------------------------------------------------------- |
2870
+ * | `true` | Enable the [`MergeCells`](@/api/mergeCells.md) plugin |
2871
+ * | `false` | Disable the [`MergeCells`](@/api/mergeCells.md) plugin |
2872
+ * | An array of objects | - Enable the [`MergeCells`](@/api/mergeCells.md) plugin<br>- Merge specific cells at initialization |
2873
+ *
2874
+ * To merge specific cells at Handsontable's initialization,
2875
+ * set the `mergeCells` option to an array of objects, with the following properties:
2876
+ *
2877
+ * | Property | Description |
2878
+ * | --------- | ---------------------------------------------------------- |
2879
+ * | `row` | The row index of the merged section's beginning |
2880
+ * | `col` | The column index of the merged section's beginning |
2881
+ * | `rowspan` | The width (as a number of rows) of the merged section |
2882
+ * | `colspan` | The height (as a number of columns ) of the merged section |
2883
+ *
2884
+ * Read more:
2885
+ * - [Merge cells](@/guides/cell-features/merge-cells.md)
2886
+ *
2887
+ * @memberof Options#
2888
+ * @type {boolean|object[]}
2889
+ * @default false
2890
+ * @category MergeCells
2891
+ *
2892
+ * @example
2893
+ * ```js
2894
+ * // enable the `MergeCells` plugin
2895
+ * mergeCells: true,
2896
+ *
2897
+ * // enable the `MergeCells` plugin
2898
+ * // and merge specific cells at initialization
2899
+ * mergeCells: [
2900
+ * // merge cells from cell (1,1) to cell (3,3)
2901
+ * {row: 1, col: 1, rowspan: 3, colspan: 3},
2902
+ * // merge cells from cell (3,4) to cell (2,2)
2903
+ * {row: 3, col: 4, rowspan: 2, colspan: 2},
2904
+ * // merge cells from cell (5,6) to cell (3,3)
2905
+ * {row: 5, col: 6, rowspan: 3, colspan: 3}
2906
+ * ],
2907
+ * ```
2908
+ */
2909
+ mergeCells: false,
2910
+ /**
2911
+ * The `minCols` option sets a minimum number of columns.
2912
+ *
2913
+ * The `minCols` option is used:
2914
+ * - At initialization: if the `minCols` value is higher than the initial number of columns,
2915
+ * Handsontable adds empty columns to the right.
2916
+ * - At runtime: for example, when removing columns.
2917
+ *
2918
+ * The `minCols` option works only when your [`data`](#data) is an [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays).
2919
+ * When your [`data`](#data) is an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects),
2920
+ * you can only have as many columns as defined in:
2921
+ * - The first data row
2922
+ * - The [`dataSchema`](#dataSchema) option
2923
+ * - The [`columns`](#columns) option
2924
+ *
2925
+ * @memberof Options#
2926
+ * @type {number}
2927
+ * @default 0
2928
+ * @category Core
2929
+ *
2930
+ * @example
2931
+ * ```js
2932
+ * // set the minimum number of columns to 10
2933
+ * minCols: 10,
2934
+ * ```
2935
+ */
2936
+ minCols: 0,
2937
+ /**
2938
+ * The `minRows` option sets a minimum number of rows.
2939
+ *
2940
+ * The `minRows` option is used:
2941
+ * - At initialization: if the `minRows` value is higher than the initial number of rows,
2942
+ * Handsontable adds empty rows at the bottom.
2943
+ * - At runtime: for example, when removing rows.
2944
+ *
2945
+ * @memberof Options#
2946
+ * @type {number}
2947
+ * @default 0
2948
+ * @category Core
2949
+ *
2950
+ * @example
2951
+ * ```js
2952
+ * // set the minimum number of rows to 10
2953
+ * minRows: 10,
2954
+ * ```
2955
+ */
2956
+ minRows: 0,
2957
+ /**
2958
+ * The `minSpareCols` option sets a minimum number of empty columns
2959
+ * at the grid's right-hand end.
2960
+ *
2961
+ * If there already are other empty columns at the grid's right-hand end,
2962
+ * they are counted into the `minSpareCols` value.
2963
+ *
2964
+ * The total number of columns can't exceed the [`maxCols`](#maxCols) value.
2965
+ *
2966
+ * The `minSpareCols` option works only when your [`data`](#data) is an [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays).
2967
+ * When your [`data`](#data) is an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects),
2968
+ * you can only have as many columns as defined in:
2969
+ * - The first data row
2970
+ * - The [`dataSchema`](#dataSchema) option
2971
+ * - The [`columns`](#columns) option
2972
+ *
2973
+ * @memberof Options#
2974
+ * @type {number}
2975
+ * @default 0
2976
+ * @category Core
2977
+ *
2978
+ * @example
2979
+ * ```js
2980
+ * // at Handsontable's initialization, add at least 3 empty columns on the right
2981
+ * minSpareCols: 3,
2982
+ * ```
2983
+ */
2984
+ minSpareCols: 0,
2985
+ /**
2986
+ * The `minSpareRows` option sets a minimum number of empty rows
2987
+ * at the bottom of the grid.
2988
+ *
2989
+ * If there already are other empty rows at the bottom,
2990
+ * they are counted into the `minSpareRows` value.
2991
+ *
2992
+ * The total number of rows can't exceed the [`maxRows`](#maxRows) value.
2993
+ *
2994
+ * @memberof Options#
2995
+ * @type {number}
2996
+ * @default 0
2997
+ * @category Core
2998
+ *
2999
+ * @example
3000
+ * ```js
3001
+ * // at Handsontable's initialization, add at least 3 empty rows at the bottom
3002
+ * minSpareRows: 3,
3003
+ * ```
3004
+ */
3005
+ minSpareRows: 0,
3006
+ /**
3007
+ * @description
3008
+ * The `multiColumnSorting` option configures the [`MultiColumnSorting`](@/api/columnSorting.md) plugin.
3009
+ *
3010
+ * You can set the `multiColumnSorting` option to one of the following:
3011
+ *
3012
+ * | Setting | Description |
3013
+ * | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
3014
+ * | `true` | Enable the [`MultiColumnSorting`](@/api/multiColumnSorting.md) plugin with the default configuration |
3015
+ * | `false` | Disable the [`MultiColumnSorting`](@/api/multiColumnSorting.md) plugin |
3016
+ * | An object | - Enable the [`MultiColumnSorting`](@/api/multiColumnSorting.md) plugin<br>- Modify the [`MultiColumnSorting`](@/api/multiColumnSorting.md) plugin options |
3017
+ *
3018
+ * If you set the `multiColumnSorting` option to an object,
3019
+ * you can set the following [`MultiColumnSorting`](@/api/multiColumnSorting.md) plugin options:
3020
+ *
3021
+ * | Option | Possible settings |
3022
+ * | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |
3023
+ * | `indicator` | `true`: Display an arrow icon in the column header, to indicate a sortable column<br>`false`: Don't display the arrow icon in the column header |
3024
+ * | `headerAction` | `true`: Enable clicking on the column header to sort the column<br>`false`: Disable clicking on the column header to sort the column |
3025
+ * | `sortEmptyCells` | `true`: Sort empty cells as well<br>`false`: Place empty cells at the end |
3026
+ * | `compareFunctionFactory` | A [custom compare function](@/guides/rows/row-sorting.md#custom-compare-functions) |
3027
+ *
3028
+ * If you set the `multiColumnSorting` option to an object,
3029
+ * you can also sort individual columns at Handsontable's initialization.
3030
+ * In the `multiColumnSorting` object, add an object named `initialConfig`,
3031
+ * with the following properties:
3032
+ *
3033
+ * | Option | Possible settings | Description |
3034
+ * | ----------- | ------------------- | ---------------------------------------------------------------- |
3035
+ * | `column` | A number | The index of the column that you want to sort at initialization |
3036
+ * | `sortOrder` | `'asc'` \| `'desc'` | The sorting order:<br>`'asc'`: ascending<br>`'desc'`: descending |
3037
+ *
3038
+ * Read more:
3039
+ * - [Row sorting](@/guides/rows/row-sorting.md)
3040
+ * - [`columnSorting`](#columnSorting)
3041
+ *
3042
+ * @memberof Options#
3043
+ * @type {boolean|object}
3044
+ * @default undefined
3045
+ * @category MultiColumnSorting
3046
+ *
3047
+ * @example
3048
+ * ```js
3049
+ * // enable the `MultiColumnSorting` plugin
3050
+ * multiColumnSorting: true
3051
+ *
3052
+ * // enable the `MultiColumnSorting` plugin with custom configuration
3053
+ * multiColumnSorting: {
3054
+ * // sort empty cells as well
3055
+ * sortEmptyCells: true,
3056
+ * // display an arrow icon in the column header
3057
+ * indicator: true,
3058
+ * // disable clicking on the column header to sort the column
3059
+ * headerAction: false,
3060
+ * // add a custom compare function
3061
+ * compareFunctionFactory(sortOrder, columnMeta) {
3062
+ * return function(value, nextValue) {
3063
+ * // some value comparisons which will return -1, 0 or 1...
3064
+ * }
3065
+ * }
3066
+ * }
3067
+ *
3068
+ * // enable the `MultiColumnSorting` plugin
3069
+ * multiColumnSorting: {
3070
+ * // at initialization, sort column 1 in ascending order
3071
+ * initialConfig: {
3072
+ * column: 1,
3073
+ * sortOrder: 'asc'
3074
+ * },
3075
+ * // at initialization, sort column 2 in descending order
3076
+ * initialConfig: {
3077
+ * column: 2,
3078
+ * sortOrder: 'desc'
3079
+ * }
3080
+ * }
3081
+ * ```
3082
+ */
3083
+ multiColumnSorting: void 0,
3084
+ /**
3085
+ * @description
3086
+ * The `nestedHeaders` option configures the [`NestedHeaders`](@/api/nestedHeaders.md) plugin.
3087
+ *
3088
+ * You can set the `nestedHeaders` option to one of the following:
3089
+ *
3090
+ * | Setting | Description |
3091
+ * | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
3092
+ * | `false` (default) | Disable the [`NestedHeaders`](@/api/nestedHeaders.md) plugin |
3093
+ * | `true` | - Enable the [`NestedHeaders`](@/api/nestedHeaders.md) plugin<br>- Don't configure any nested headers |
3094
+ * | Array of arrays | - Enable the [`NestedHeaders`](@/api/nestedHeaders.md) plugin<br>- Configure headers that are nested on Handsontable's initialization |
3095
+ *
3096
+ * If you set the `nestedHeaders` option to an array of arrays, each array configures one set of nested headers.
3097
+ *
3098
+ * Each array element configures one header, and can be one of the following:
3099
+ *
3100
+ * | Array element | Description |
3101
+ * | ------------- | -------------------------------------------------------------------------------------------- |
3102
+ * | A string | The header's label |
3103
+ * | An object | Properties:<br>`label` (string): the header's label<br>`colspan` (integer): the column width |
3104
+ *
3105
+ * Read more:
3106
+ * - [Plugins: `NestedHeaders`](@/api/nestedHeaders.md)
3107
+ * - [Column groups: Nested headers](@/guides/columns/column-groups.md#nested-headers)
3108
+ *
3109
+ * @memberof Options#
3110
+ * @type {boolean|Array[]}
3111
+ * @default undefined
3112
+ * @category NestedHeaders
3113
+ *
3114
+ * @example
3115
+ * ```js
3116
+ * nestedHeaders: [
3117
+ * ['A', {label: 'B', colspan: 8}, 'C'],
3118
+ * ['D', {label: 'E', colspan: 4}, {label: 'F', colspan: 4}, 'G'],
3119
+ * ['H', 'I', 'J', 'K', 'L', 'M', 'N', 'R', 'S', 'T']
3120
+ * ],
3121
+ * ```
3122
+ */
3123
+ nestedHeaders: void 0,
3124
+ /**
3125
+ * @description
3126
+ * The `nestedRows` option configures the [`NestedRows`](@/api/nestedRows.md) plugin.
3127
+ *
3128
+ * You can set the `nestedRows` option to one of the following:
3129
+ *
3130
+ * | Setting | Description |
3131
+ * | ----------------- | ------------------------------------------------------ |
3132
+ * | `false` (default) | Disable the [`NestedRows`](@/api/nestedRows.md) plugin |
3133
+ * | `true` | Enable the [`NestedRows`](@/api/nestedRows.md) plugin |
3134
+ *
3135
+ * Read more:
3136
+ * - [Plugins: `NestedRows`](@/api/nestedRows.md)
3137
+ *
3138
+ * @example
3139
+ * ```js
3140
+ * // enable the `NestedRows` plugin
3141
+ * nestedRows: true,
3142
+ * ```
3143
+ *
3144
+ * @memberof Options#
3145
+ * @type {boolean}
3146
+ * @default false
3147
+ * @category NestedRows
3148
+ */
3149
+ nestedRows: void 0,
3150
+ /**
3151
+ * The `noWordWrapClassName` option lets you add a CSS class name
3152
+ * to each cell that has the [`wordWrap`](#wordWrap) option set to `false`.
3153
+ *
3154
+ * Read more:
3155
+ * - [`wordWrap`](#wordWrap)
3156
+ * - [`currentRowClassName`](#currentRowClassName)
3157
+ * - [`currentColClassName`](#currentColClassName)
3158
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
3159
+ * - [`invalidCellClassName`](#invalidCellClassName)
3160
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
3161
+ * - [`commentedCellClassName`](#commentedCellClassName)
3162
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
3163
+ * - [`TableClassName`](#TableClassName)
3164
+ * - [`className`](#className)
3165
+ *
3166
+ * @memberof Options#
3167
+ * @type {string}
3168
+ * @default 'htNoWrap'
3169
+ * @category Core
3170
+ *
3171
+ * @example
3172
+ * ```js
3173
+ * // add an `is-noWrapCell` CSS class name
3174
+ * // to each cell that doesn't wrap content
3175
+ * noWordWrapClassName: 'is-noWrapCell',
3176
+ * ```
3177
+ */
3178
+ noWordWrapClassName: 'htNoWrap',
3179
+ /**
3180
+ * The `numericFormat` option configures the number format and the currency format
3181
+ * of [`numeric`](@/guides/cell-types/numeric-cell-type.md) cells` displayed output
3182
+ * in the numeric cell renderer.
3183
+ *
3184
+ * You can set the `numericFormat` option to an object with the following properties:
3185
+ *
3186
+ * | Property | Possible values | Description |
3187
+ * | ----------- | ----------------------------------------------------------------------------- | --------------- |
3188
+ * | `pattern` | All [`numbro.js` number formats](https://numbrojs.com/format.html#numbers) | Number format |
3189
+ * | `culture` | All [`numbro.js` currency formats](https://numbrojs.com/format.html#currency) | Currency format |
3190
+ *
3191
+ * The `numericFormat` option as no effect on the numeric cell editor.
3192
+ *
3193
+ * In the source data, numeric data is stored as JavaScript numbers.
3194
+ *
3195
+ * Read more:
3196
+ * - [Numeric cell type](@/guides/cell-types/numeric-cell-type.md)
3197
+ * - [Third-party licenses](@/guides/technical-specification/third-party-licenses.md)
3198
+ *
3199
+ * @memberof Options#
3200
+ * @since 0.35.0
3201
+ * @type {object}
3202
+ * @default undefined
3203
+ * @category Core
3204
+ *
3205
+ * @example
3206
+ * ```js
3207
+ * columns: [
3208
+ * {
3209
+ * // set the `type` of each cell in this column to `numeric`
3210
+ * type: 'numeric',
3211
+ * // set the `numericFormat` option for every `numeric` cell of this column
3212
+ * numericFormat: {
3213
+ * // set the number format
3214
+ * pattern: '0,00',
3215
+ * // set the currency format
3216
+ * culture: 'en-US'
3217
+ * }
3218
+ * }
3219
+ * ],
3220
+ * ```
3221
+ */
3222
+ numericFormat: void 0,
3223
+ /**
3224
+ * If the `observeDOMVisibility` option is set to `true`,
3225
+ * Handsontable rerenders every time it detects that the grid was made visible in the DOM.
3226
+ *
3227
+ * @memberof Options#
3228
+ * @type {boolean}
3229
+ * @default true
3230
+ * @category Core
3231
+ *
3232
+ * @example
3233
+ * ```js
3234
+ * // don't rerender the grid on visibility changes
3235
+ * observeDOMVisibility: false,
3236
+ * ```
3237
+ */
3238
+ observeDOMVisibility: true,
3239
+ /**
3240
+ * The `outsideClickDeselects` option determines what happens to the current [selection](@/guides/cell-features/selection.md)
3241
+ * when you click outside of the grid.
3242
+ *
3243
+ * You can set the `outsideClickDeselects` option to one of the following:
3244
+ *
3245
+ * | Setting | Description |
3246
+ * | ---------------- | -------------------------------------------------------------------------------------------------------- |
3247
+ * | `true` (default) | On a mouse click outside of the grid, clear the current [selection](@/guides/cell-features/selection.md) |
3248
+ * | `false` | On a mouse click outside of the grid, keep the current [selection](@/guides/cell-features/selection.md) |
3249
+ * | A function | A function that takes the click event target and returns a boolean |
3250
+ *
3251
+ * @memberof Options#
3252
+ * @type {boolean|Function}
3253
+ * @default true
3254
+ * @category Core
3255
+ *
3256
+ * @example
3257
+ * ```js
3258
+ * // on a mouse click outside of the grid, clear the current selection
3259
+ * outsideClickDeselects: true,
3260
+ *
3261
+ * // on a mouse click outside of the grid, keep the current selection
3262
+ * outsideClickDeselects: false,
3263
+ *
3264
+ * // take the click event target and return `false`
3265
+ * outsideClickDeselects(event) {
3266
+ * return false;
3267
+ * }
3268
+ *
3269
+ * // take the click event target and return `true`
3270
+ * outsideClickDeselects(event) {
3271
+ * return false;
3272
+ * }
3273
+ * ```
3274
+ */
3275
+ outsideClickDeselects: true,
3276
+ /**
3277
+ * @description
3278
+ * The `persistentState` option configures the [`PersistentState`](@/api/persistentState.md) plugin.
3279
+ *
3280
+ * You can set the `persistentState` to one of the following:
3281
+ *
3282
+ * | Setting | Description |
3283
+ * | ----------------- | ---------------------------------------------------------------- |
3284
+ * | `false` (default) | Disable the [`PersistentState`](@/api/persistentState.md) plugin |
3285
+ * | `true` | Enable the [`PersistentState`](@/api/persistentState.md) plugin |
3286
+ *
3287
+ * Read more:
3288
+ * - [Saving data: Saving data locally](@/guides/getting-started/saving-data.md#saving-data-locally)
3289
+ * - [Plugins: `PersistentState`](@/api/persistentState.md)
3290
+ *
3291
+ * @memberof Options#
3292
+ * @type {boolean}
3293
+ * @default false
3294
+ * @category PersistentState
3295
+ *
3296
+ * @example
3297
+ * ```js
3298
+ * // enable the `PersistentState` plugin
3299
+ * persistentState: true,
3300
+ * ```
3301
+ */
3302
+ persistentState: void 0,
3303
+ /**
3304
+ * The `placeholder` option lets you display placeholder text in every empty cell.
3305
+ *
3306
+ * You can set the `placeholder` option to one of the following:
3307
+ *
3308
+ * | Setting | Example | Description |
3309
+ * | ------------------ | -------------- | --------------------------------------------------------------------- |
3310
+ * | A non-empty string | `'Empty cell'` | Display `Empty cell` text in empty cells |
3311
+ * | A non-string value | `000` | Display `000` text in empty cells (non-string values get stringified) |
3312
+ *
3313
+ * Read more:
3314
+ * - [`placeholderCellClassName`](#placeholderCellClassName)
3315
+ *
3316
+ * @memberof Options#
3317
+ * @type {string}
3318
+ * @default undefined
3319
+ * @category Core
3320
+ *
3321
+ * @example
3322
+ * ```js
3323
+ * // display 'Empty cell' text
3324
+ * // in every empty cell of the entire grid
3325
+ * placeholder: 'Empty cell',
3326
+ *
3327
+ * // or
3328
+ * columns: [
3329
+ * {
3330
+ * data: 'date',
3331
+ * dateFormat: 'DD/MM/YYYY',
3332
+ * // display 'Empty date cell' text
3333
+ * // in every empty cell of the `date` column
3334
+ * placeholder: 'Empty date cell'
3335
+ * }
3336
+ * ],
3337
+ * ```
3338
+ */
3339
+ placeholder: void 0,
3340
+ /**
3341
+ * The `placeholderCellClassName` option lets you add a CSS class name to cells
3342
+ * that contain [`placeholder`](#placeholder) text.
3343
+ *
3344
+ * Read more:
3345
+ * - [Cell validator](@/guides/cell-functions/cell-validator.md)
3346
+ * - [`placeholder`](#placeholder)
3347
+ * - [`currentRowClassName`](#currentRowClassName)
3348
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
3349
+ * - [`activeHeaderClassName`](#activeHeaderClassName)
3350
+ * - [`currentColClassName`](#currentColClassName)
3351
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
3352
+ * - [`commentedCellClassName`](#commentedCellClassName)
3353
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
3354
+ * - [`TableClassName`](#TableClassName)
3355
+ * - [`className`](#className)
3356
+ *
3357
+ * @memberof Options#
3358
+ * @type {string}
3359
+ * @default 'htPlaceholder'
3360
+ * @category Core
3361
+ *
3362
+ * @example
3363
+ * ```js
3364
+ * // add a `has-placeholder` CSS class name
3365
+ * // to each cell that contains `placeholder` text
3366
+ * placeholderCellClassName: 'has-placeholder',
3367
+ * ```
3368
+ */
3369
+ placeholderCellClassName: 'htPlaceholder',
3370
+ /**
3371
+ * The `preventOverflow` option configures preventing Handsontable
3372
+ * from overflowing outside of its parent element.
3373
+ *
3374
+ * You can set the `preventOverflow` option to one of the following:
3375
+ *
3376
+ * | Setting | Description |
3377
+ * | ----------------- | -------------------------------- |
3378
+ * | `false` (default) | Don't prevent overflowing |
3379
+ * | `'horizontal'` | Prevent horizontal overflowing |
3380
+ * | `'vertical'` | Prevent vertical overflowing |
3381
+ *
3382
+ * @memberof Options#
3383
+ * @type {string|boolean}
3384
+ * @default false
3385
+ * @category Core
3386
+ *
3387
+ * @example
3388
+ * ```js
3389
+ * // prevent horizontal overflowing
3390
+ * preventOverflow: 'horizontal',
3391
+ * ```
3392
+ */
3393
+ preventOverflow: false,
3394
+ /**
3395
+ * The `preventWheel` option configures preventing the `wheel` event's default action
3396
+ * on overlays.
3397
+ *
3398
+ * You can set the `preventWheel` option to one of the following:
3399
+ *
3400
+ * | Setting | Description |
3401
+ * | ----------------- | ------------------------------------------------ |
3402
+ * | `false` (default) | Don't prevent the `wheel` event's default action |
3403
+ * | `true` | Prevent the `wheel` event's default action |
3404
+ *
3405
+ * @memberof Options#
3406
+ * @private
3407
+ * @type {boolean}
3408
+ * @default false
3409
+ * @category Core
3410
+ *
3411
+ * @example
3412
+ * ```js
3413
+ * // don't prevent the `wheel` event's default action
3414
+ * preventWheel: false,
3415
+ * ```
3416
+ */
3417
+ preventWheel: false,
3418
+ /**
3419
+ * @description
3420
+ * The `readOnly` option determines whether a cell, column or comment is editable or not.
3421
+ *
3422
+ * You can set the `readOnly` option to one of the following:
3423
+ *
3424
+ * | Setting | Decription |
3425
+ * | ----------------- | ------------------------------------------------------------------------------------------------------------------------- |
3426
+ * | `false` (default) | Set as editable |
3427
+ * | `true` | - Set as read-only<br>- Add the [`readOnlyCellClassName`](#readOnlyCellClassName) CSS class name (by default: `htDimmed`) |
3428
+ *
3429
+ * `readOnly` cells can't be changed by the [`populateFromArray()`](@/api/core.md#populatefromarray) method.
3430
+ *
3431
+ * Read more:
3432
+ * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options.md#cascading-configuration)
3433
+ *
3434
+ * @memberof Options#
3435
+ * @type {boolean}
3436
+ * @default false
3437
+ * @category Core
3438
+ *
3439
+ * @example
3440
+ * ```js
3441
+ * // set as read-only
3442
+ * readOnly: true,
3443
+ * ```
3444
+ */
3445
+ readOnly: false,
3446
+ /**
3447
+ * The `readOnlyCellClassName` option lets you add a CSS class name to [read-only](#readOnly) cells.
3448
+ *
3449
+ * Read more:
3450
+ * - [`currentRowClassName`](#currentRowClassName)
3451
+ * - [`currentColClassName`](#currentColClassName)
3452
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
3453
+ * - [`activeHeaderClassName`](#activeHeaderClassName)
3454
+ * - [`invalidCellClassName`](#invalidCellClassName)
3455
+ * - [`placeholderCellClassName`](#placeholderCellClassName)
3456
+ * - [`commentedCellClassName`](#commentedCellClassName)
3457
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
3458
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
3459
+ * - [`TableClassName`](#TableClassName)
3460
+ *
3461
+ * @memberof Options#
3462
+ * @type {string}
3463
+ * @default 'htDimmed'
3464
+ * @category Core
3465
+ *
3466
+ * @example
3467
+ * ```js
3468
+ * // add a `is-readOnly` CSS class name
3469
+ * // to every read-only cell
3470
+ * readOnlyCellClassName: 'is-readOnly',
3471
+ * ```
3472
+ */
3473
+ readOnlyCellClassName: 'htDimmed',
3474
+ /**
3475
+ * The `renderAllRows` option configures Handsontable's [row virtualization](@/guides/rows/row-virtualization.md).
3476
+ *
3477
+ * You can set the `renderAllRows` option to one of the following:
3478
+ *
3479
+ * | Setting | Description |
3480
+ * | ----------------- | -------------------------------------------------------------------------------------------------- |
3481
+ * | `false` (default) | Enable [row virtualization](@/guides/rows/row-virtualization.md) |
3482
+ * | `true` | Disable [row virtualization](@/guides/rows/row-virtualization.md)<br>(render all rows of the grid) |
3483
+ *
3484
+ * Read more:
3485
+ * - [Row virtualization](@/guides/rows/row-virtualization.md)
3486
+ *
3487
+ * @memberof Options#
3488
+ * @type {boolean}
3489
+ * @default undefined
3490
+ * @category Core
3491
+ *
3492
+ * @example
3493
+ * ```js
3494
+ * // disable row virtualization
3495
+ * renderAllRows: true,
3496
+ * ```
3497
+ */
3498
+ renderAllRows: void 0,
3499
+ /**
3500
+ * @description
3501
+ * The `renderer` option sets a [cell renderer](@/guides/cell-functions/cell-renderer.md) for a cell.
3502
+ *
3503
+ * You can set the `renderer` option to one of the following:
3504
+ * - A custom renderer function
3505
+ * - One of the following [cell renderer aliases](@/guides/cell-functions/cell-renderer.md):
3506
+ *
3507
+ * | Alias | Cell renderer function |
3508
+ * | ------------------- | ------------------------------------------------------------------------------ |
3509
+ * | A custom alias | Your [custom cell renderer](@/guides/cell-functions/cell-renderer.md) function |
3510
+ * | `'autocomplete'` | `AutocompleteRenderer` |
3511
+ * | `'base'` | `BaseRenderer` |
3512
+ * | `'checkbox'` | `CheckboxRenderer` |
3513
+ * | `'date'` | `DateRenderer` |
3514
+ * | `'dropdown'` | `DropdownRenderer` |
3515
+ * | `'html'` | `HtmlRenderer` |
3516
+ * | `'numeric'` | `NumericRenderer` |
3517
+ * | `'password'` | `PasswordRenderer` |
3518
+ * | `'text'` | `TextRenderer` |
3519
+ * | `'time'` | `TimeRenderer` |
3520
+ *
3521
+ * To set the [`renderer`](#renderer), [`editor`](#editor), and [`validator`](#validator)
3522
+ * options all at once, use the [`type`](#type) option.
3523
+ *
3524
+ * Read more:
3525
+ * - [Cell renderer](@/guides/cell-functions/cell-renderer.md)
3526
+ * - [Cell type](@/guides/cell-types/cell-type.md)
3527
+ * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options.md#cascading-configuration)
3528
+ * - [`type`](#type)
3529
+ *
3530
+ * @memberof Options#
3531
+ * @type {string|Function}
3532
+ * @default undefined
3533
+ * @category Core
3534
+ *
3535
+ * @example
3536
+ * ```js
3537
+ * // use the `numeric` renderer for each cell of the entire grid
3538
+ * renderer: `'numeric'`,
3539
+ *
3540
+ * // add a custom renderer function
3541
+ * renderer(hotInstance, td, row, column, prop, value, cellProperties) {
3542
+ * // your custom renderer's logic
3543
+ * ...
3544
+ * }
3545
+ *
3546
+ * // apply the `renderer` option to individual columns
3547
+ * columns: [
3548
+ * {
3549
+ * // use the `autocomplete` renderer for each cell of this column
3550
+ * renderer: 'autocomplete'
3551
+ * },
3552
+ * {
3553
+ * // use the `myCustomRenderer` renderer for each cell of this column
3554
+ * renderer: 'myCustomRenderer'
3555
+ * }
3556
+ * ]
3557
+ * ```
3558
+ */
3559
+ renderer: void 0,
3560
+ /**
3561
+ * The `rowHeaders` option configures your grid's row headers.
3562
+ *
3563
+ * You can set the `rowHeaders` option to one of the following:
3564
+ *
3565
+ * | Setting | Description |
3566
+ * | ---------- | ----------------------------------------------------------------- |
3567
+ * | `true` | Enable the default row headers ('1', '2', '3', ...) |
3568
+ * | `false` | Disable row headers |
3569
+ * | An array | Define your own row headers (e.g. `['One', 'Two', 'Three', ...]`) |
3570
+ * | A function | Define your own row headers, using a function |
3571
+ *
3572
+ * Read more:
3573
+ * - [Row header](@/guides/rows/row-header.md)
3574
+ *
3575
+ * @memberof Options#
3576
+ * @type {boolean|string[]|Function}
3577
+ * @default undefined
3578
+ * @category Core
3579
+ *
3580
+ * @example
3581
+ * ```js
3582
+ * // enable the default row headers
3583
+ * rowHeaders: true,
3584
+ *
3585
+ * // set your own row headers
3586
+ * rowHeaders: ['One', 'Two', 'Three'],
3587
+ *
3588
+ * // set your own row headers, using a function
3589
+ * rowHeaders: function(visualRowIndex) {
3590
+ * return `${visualRowIndex}: AB`;
3591
+ * },
3592
+ * ```
3593
+ */
3594
+ rowHeaders: void 0,
3595
+ /**
3596
+ * @description
3597
+ * The `rowHeaderWidth` option configures the width of row headers.
3598
+ *
3599
+ * You can set the `rowHeaderWidth` option to one of the following:
3600
+ *
3601
+ * | Setting | Description |
3602
+ * | -------- | ----------------------------------------------- |
3603
+ * | A number | Set the same width for every row header |
3604
+ * | An array | Set different widths for individual row headers |
3605
+ *
3606
+ * @memberof Options#
3607
+ * @type {number|number[]}
3608
+ * @default undefined
3609
+ * @category Core
3610
+ *
3611
+ * @example
3612
+ * ```js
3613
+ * // set the same width for every row header
3614
+ * rowHeaderWidth: 25,
3615
+ *
3616
+ * // set different widths for individual row headers
3617
+ * rowHeaderWidth: [25, 30, 55],
3618
+ * ```
3619
+ */
3620
+ rowHeaderWidth: void 0,
3621
+ /**
3622
+ * The `rowHeights` option sets rows' heights, in pixels.
3623
+ *
3624
+ * In the rendering process, the default row height is 23 px (22 px + 1 px of the row's bottom border).
3625
+ * You can change it to equal or greater than 23px, by setting the `rowHeights` option to one of the following:
3626
+ *
3627
+ * | Setting | Description | Example |
3628
+ * | ----------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
3629
+ * | A number | Set the same height for every row | `rowHeights: 100` |
3630
+ * | A string | Set the same height for every row | `rowHeights: '100px'` |
3631
+ * | An array | Set heights separately for each row | `rowHeights: [100, 120, undefined]` |
3632
+ * | A function | Set row heights dynamically,<br>on each render | `rowHeights(visualRowIndex) { return visualRowIndex * 10; }` |
3633
+ * | `undefined` | Used by the [modifyRowHeight](@/api/hooks.md#modifyRowHeight) hook,<br>to detect row height changes | `rowHeights: undefined` |
3634
+ *
3635
+ * The `rowHeights` option also sets the minimum row height that can be set
3636
+ * via the {@link ManualRowResize} and {@link AutoRowSize} plugins (if they are enabled).
3637
+ *
3638
+ * Read more:
3639
+ * - [Row height](@/guides/rows/row-height.md)
3640
+ *
3641
+ * @memberof Options#
3642
+ * @type {number|number[]|string|string[]|Array<undefined>|Function}
3643
+ * @default undefined
3644
+ * @category Core
3645
+ *
3646
+ * @example
3647
+ * ```js
3648
+ * // set every row's height to 100px
3649
+ * rowHeights: 100,
3650
+ *
3651
+ * // set every row's height to 100px
3652
+ * rowHeights: '100px',
3653
+ *
3654
+ * // set the first (by visual index) row's height to 100
3655
+ * // set the second (by visual index) row's height to 120
3656
+ * // set the third (by visual index) row's height to `undefined`
3657
+ * // set any other row's height to the default 23px
3658
+ * rowHeights: [100, 120, undefined],
3659
+ *
3660
+ * // set each row's height individually, using a function
3661
+ * rowHeights(visualRowIndex) {
3662
+ * return visualRowIndex * 10;
3663
+ * },
3664
+ * ```
3665
+ */
3666
+ rowHeights: void 0,
3667
+ /**
3668
+ * @description
3669
+ * The `search` option configures the [`Search`](@/api/search.md) plugin.
3670
+ *
3671
+ * You can set the `search` option to one of the following:
3672
+ *
3673
+ * | Setting | Description |
3674
+ * | ----------------- | ------------------------------------------------------------------------------------ |
3675
+ * | `false` (default) | Disable the [`Search`](@/api/search.md) plugin |
3676
+ * | `true` | Enable the [`Search`](@/api/search.md) plugin with the default configuration |
3677
+ * | An object | - Enable the [`Search`](@/api/search.md) plugin<br>- Apply your custom configuration |
3678
+ *
3679
+ * If you set the `search` option to an object, you can configure the following search options:
3680
+ *
3681
+ * | Option | Possible settings | Description |
3682
+ * | ------------------- | ----------------- | ---------------------------------------------------------------------------------------------------- |
3683
+ * | `searchResultClass` | A string | Add a custom CSS class name to search results |
3684
+ * | `queryMethod` | A function | Add a [custom query method](@/guides/accessories-and-menus/searching-values.md#custom-query-method) |
3685
+ * | `callback` | A function | Add a [custom callback function](@/guides/accessories-and-menus/searching-values.md#custom-callback) |
3686
+ *
3687
+ * Read more:
3688
+ * - [Searching values](@/guides/accessories-and-menus/searching-values.md)
3689
+ * - [Searching values: Custom query method](@/guides/accessories-and-menus/searching-values.md#custom-query-method)
3690
+ * - [Searching values: Custom callback](@/guides/accessories-and-menus/searching-values.md#custom-callback)
3691
+ *
3692
+ * @memberof Options#
3693
+ * @type {boolean|object}
3694
+ * @default false
3695
+ * @category Search
3696
+ *
3697
+ * @example
3698
+ * ```js
3699
+ * // enable the `Search` plugin with the default configuration
3700
+ * search: true,
3701
+ *
3702
+ * // enable the `Search` plugin with a custom configuration
3703
+ * search: {
3704
+ * // add a `customClass` CSS class name to search results
3705
+ * searchResultClass: 'customClass',
3706
+ * // add a custom query method
3707
+ * queryMethod(queryStr, value) {
3708
+ * ...
3709
+ * },
3710
+ * // add a custom callback function
3711
+ * callback(instance, row, column, value, result) {
3712
+ * ...
3713
+ * }
3714
+ * }
3715
+ * ```
3716
+ */
3717
+ search: false,
3718
+ /**
3719
+ * @description
3720
+ * The `selectionMode` option configures how [selection](@/guides/cell-features/selection.md) works.
3721
+ *
3722
+ * You can set the `selectionMode` option to one of the following:
3723
+ *
3724
+ * | Setting | Description |
3725
+ * | ------------ | ------------------------------------------------------------ |
3726
+ * | `'single'` | Allow the user to select only one cell at a time. |
3727
+ * | `'range'` | Allow the user to select one range of cells at a time. |
3728
+ * | `'multiple'` | Allow the user to select multiple ranges of cells at a time. |
3729
+ *
3730
+ * Read more:
3731
+ * - [Selection: Selecting ranges](@/guides/cell-features/selection.md#selecting-ranges)
3732
+ *
3733
+ * @memberof Options#
3734
+ * @type {string}
3735
+ * @default 'multiple'
3736
+ * @category Core
3737
+ *
3738
+ * @example
3739
+ * ```js
3740
+ * // you can only select one cell at at a time
3741
+ * selectionMode: 'single',
3742
+ *
3743
+ * // you can select one range of cells at a time
3744
+ * selectionMode: 'range',
3745
+ *
3746
+ * // you can select multiple ranges of cells at a time
3747
+ * selectionMode: 'multiple',
3748
+ * ```
3749
+ */
3750
+ selectionMode: 'multiple',
3751
+ /**
3752
+ * The `selectOptions` option configures options that the end user can choose from in [`select`](@/guides/cell-types/select-cell-type.md) cells.
3753
+ *
3754
+ * You can set the `selectOptions` option to one of the following:
3755
+ *
3756
+ * | Setting | Description |
3757
+ * | ------------------------------- | ----------------------------------------------------------------------------- |
3758
+ * | An array of strings | Each string is one option's value and label |
3759
+ * | An object with key-string pairs | - Each key is one option's value<br>- The key's string is that option's label |
3760
+ * | A function | A function that returns an object with key-string pairs |
3761
+ *
3762
+ * Read more:
3763
+ * - [Select cell type](@/guides/cell-types/select-cell-type.md)
3764
+ *
3765
+ * @memberof Options#
3766
+ * @type {string[]|object|Function}
3767
+ * @default undefined
3768
+ * @category Core
3769
+ *
3770
+ * @example
3771
+ * ```js
3772
+ * columns: [
3773
+ * {
3774
+ * // set the `type` of each cell in this column to `select`
3775
+ * type: 'select',
3776
+ * // set the first option's value and label to `A`
3777
+ * // set the second option's value and label to `B`
3778
+ * // set the third option's value and label to `C`
3779
+ * selectOptions: ['A', 'B', 'C'],
3780
+ * },
3781
+ * {
3782
+ * // set the `type` of each cell in this column to `select`
3783
+ * type: 'select',
3784
+ * selectOptions: {
3785
+ * // set the first option's value to `value1` and label to `Label 1`
3786
+ * value1: 'Label 1',
3787
+ * // set the second option's value to `value2` and label to `Label 2`
3788
+ * value2: 'Label 2',
3789
+ * // set the third option's value to `value3` and label to `Label 3`
3790
+ * value3: 'Label 3',
3791
+ * },
3792
+ * },
3793
+ * {
3794
+ * // set the `type` of each cell in this column to `select`
3795
+ * type: 'select',
3796
+ * // set `selectOption` to a function that returns available options as an object
3797
+ * selectOptions(visualRow, visualColumn, prop) {
3798
+ * return {
3799
+ * value1: 'Label 1',
3800
+ * value2: 'Label 2',
3801
+ * value3: 'Label 3',
3802
+ * };
3803
+ * },
3804
+ * ],
3805
+ * ```
3806
+ */
3807
+ selectOptions: void 0,
3808
+ /**
3809
+ * @description
3810
+ * The `skipColumnOnPaste` option determines whether you can paste data into a given column.
3811
+ *
3812
+ * You can only apply the `skipColumnOnPaste` option to an entire column, using the [`columns`](#columns) option.
3813
+ *
3814
+ * You can set the `skipColumnOnPaste` option to one of the following:
3815
+ *
3816
+ * | Setting | Description |
3817
+ * | ----------------- | ----------------------------------------------------------------------------------------------------- |
3818
+ * | `false` (default) | Enable pasting data into this column |
3819
+ * | `true` | - Disable pasting data into this column<br>- On pasting, paste data into the next column to the right |
3820
+ *
3821
+ * Read more:
3822
+ * - [Configuration options: Setting column options](@/guides/getting-started/configuration-options.md#setting-column-options)
3823
+ *
3824
+ * @memberof Options#
3825
+ * @type {boolean}
3826
+ * @default false
3827
+ * @category Core
3828
+ *
3829
+ * @example
3830
+ * ```js
3831
+ * columns: [
3832
+ * {
3833
+ * // disable pasting data into this column
3834
+ * skipColumnOnPaste: true
3835
+ * }
3836
+ * ],
3837
+ * ```
3838
+ */
3839
+ skipColumnOnPaste: false,
3840
+ /**
3841
+ * @description
3842
+ *
3843
+ * The `skipRowOnPaste` option determines whether you can paste data into a given row.
3844
+ *
3845
+ * You can only apply the `skipRowOnPaste` option to an entire row, using the [`cells`](#cells) option.
3846
+ *
3847
+ * You can set the `skipRowOnPaste` option to one of the following:
3848
+ *
3849
+ * | Setting | Description |
3850
+ * | ----------------- | ----------------------------------------------------------------------------------- |
3851
+ * | `false` (default) | Enable pasting data into this row |
3852
+ * | `true` | - Disable pasting data into this row<br>- On pasting, paste data into the row below |
3853
+ *
3854
+ * Read more:
3855
+ * - [Configuration options: Setting row options](@/guides/getting-started/configuration-options.md#setting-row-options)
3856
+ *
3857
+ * @memberof Options#
3858
+ * @type {boolean}
3859
+ * @default false
3860
+ * @category Core
3861
+ *
3862
+ * @example
3863
+ * ```js
3864
+ * cells(row, column) {
3865
+ * const cellProperties = {};
3866
+ *
3867
+ * // disable pasting data into row 1
3868
+ * if (row === 1) {
3869
+ * cellProperties.skipRowOnPaste = true;
3870
+ * }
3871
+ *
3872
+ * return cellProperties;
3873
+ * }
3874
+ * ```
3875
+ */
3876
+ skipRowOnPaste: false,
3877
+ /**
3878
+ * The `sortByRelevance` option configures whether [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md) cells'
3879
+ * lists are sorted in the same order as provided in the [`source`](#source) option.
3880
+ *
3881
+ * You can set the `sortByRelevance` option to one of the following:
3882
+ *
3883
+ * | Setting | Description |
3884
+ * | ---------------- | ---------------------------------------------------------------------------- |
3885
+ * | `true` (default) | Sort options in the same order as provided in the [`source`](#source) option |
3886
+ * | `false` | Sort options alphabetically |
3887
+ *
3888
+ * Read more:
3889
+ * - [`source`](#source)
3890
+ * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type.md)
3891
+ *
3892
+ * @memberof Options#
3893
+ * @type {boolean}
3894
+ * @default true
3895
+ * @category Core
3896
+ *
3897
+ * @example
3898
+ * ```js
3899
+ * columns: [{
3900
+ * // set the `type` of each cell in this column to `autocomplete`
3901
+ * type: 'autocomplete',
3902
+ * // set options available in every `autocomplete` cell of this column
3903
+ * source: ['D', 'C', 'B', 'A'],
3904
+ * // sort the `autocomplete` option in this order: D, C, B, A
3905
+ * sortByRelevance: true
3906
+ * }],
3907
+ * ```
3908
+ */
3909
+ sortByRelevance: true,
3910
+ /**
3911
+ * The `source` option sets options available in [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md)
3912
+ * and [`dropdown`](@/guides/cell-types/dropdown-cell-type.md) cells.
3913
+ *
3914
+ * You can set the `source` option to one of the following:
3915
+ *
3916
+ * - An array
3917
+ * - A function
3918
+ *
3919
+ * Read more:
3920
+ * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type.md)
3921
+ * - [Dropdown cell type](@/guides/cell-types/dropdown-cell-type.md)
3922
+ * - [`strict`](#strict)
3923
+ * - [`allowHtml`](#allowHtml)
3924
+ * - [`filter`](#filter)
3925
+ * - [`sortByRelevance`](#sortByRelevance)
3926
+ *
3927
+ * @memberof Options#
3928
+ * @type {Array|Function}
3929
+ * @default undefined
3930
+ * @category Core
3931
+ *
3932
+ * @example
3933
+ * ```js
3934
+ * // set `source` to an array
3935
+ * columns: [{
3936
+ * // set the `type` of each cell in this column to `autocomplete`
3937
+ * type: 'autocomplete',
3938
+ * // set options available in every `autocomplete` cell of this column
3939
+ * source: ['A', 'B', 'C', 'D']
3940
+ * }],
3941
+ *
3942
+ * // set `source` to a function
3943
+ * columns: [{
3944
+ * // set the `type` of each cell in this column to `autocomplete`
3945
+ * type: 'autocomplete',
3946
+ * // for every `autocomplete` cell in this column, fetch data from an external source
3947
+ * source(query, callback) {
3948
+ * fetch('https://example.com/query?q=' + query, function(response) {
3949
+ * callback(response.items);
3950
+ * })
3951
+ * }
3952
+ * }],
3953
+ * ```
3954
+ */
3955
+ source: void 0,
3956
+ /**
3957
+ * @description
3958
+ * If the [`data`](#data) option is not set, the `startCols` option sets the initial number of empty columns.
3959
+ *
3960
+ * The `startCols` option works only in Handsontable's constructor.
3961
+ *
3962
+ * @memberof Options#
3963
+ * @type {number}
3964
+ * @default 5
3965
+ * @category Core
3966
+ *
3967
+ * @example
3968
+ * ```js
3969
+ * // start with 15 empty columns
3970
+ * startCols: 15,
3971
+ * ```
3972
+ */
3973
+ startCols: 5,
3974
+ /**
3975
+ * @description
3976
+ * If the [`data`](#data) option is not set, the `startRows` option sets the initial number of empty rows.
3977
+ *
3978
+ * The `startRows` option works only in Handsontable's constructor.
3979
+ *
3980
+ * @memberof Options#
3981
+ * @type {number}
3982
+ * @default 5
3983
+ * @category Core
3984
+ *
3985
+ * @example
3986
+ * ```js
3987
+ * // start with 15 empty rows
3988
+ * startRows: 15,
3989
+ * ```
3990
+ */
3991
+ startRows: 5,
3992
+ /**
3993
+ * @description
3994
+ * The `stretchH` option determines what happens when the declared grid width
3995
+ * is different from the calculated sum of all column widths.
3996
+ *
3997
+ * You can set the `stretchH` option to one of the following:
3998
+ *
3999
+ * | Setting | Description |
4000
+ * | ------------------ | ----------------------------------------------------------------- |
4001
+ * | `'none'` (default) | Don't fit the grid to the container (disable column stretching) |
4002
+ * | `'last'` | Fit the grid to the container, by stretching only the last column |
4003
+ * | `'all'` | Fit the grid to the container, by stretching all columns evenly |
4004
+ *
4005
+ * Read more:
4006
+ * - [Column width: Column stretching](@/guides/columns/column-width.md#column-stretching)
4007
+ *
4008
+ * @memberof Options#
4009
+ * @type {string}
4010
+ * @default 'none'
4011
+ * @category Core
4012
+ *
4013
+ * @example
4014
+ * ```js
4015
+ * // fit the grid to the container
4016
+ * // by stretching all columns evenly
4017
+ * stretchH: 'all',
4018
+ * ```
4019
+ */
4020
+ stretchH: 'none',
4021
+ /**
4022
+ * The `strict` option configures the behavior of [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md) cells.
4023
+ *
4024
+ * You can set the `strict` option to one of the following:
4025
+ *
4026
+ * | Setting | Mode | Description |
4027
+ * | ------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
4028
+ * | `true` | [Strict mode](@/guides/cell-types/autocomplete-cell-type.md#autocomplete-strict-mode) | The end user:<br>- Can only choose one of suggested values<br>- Can't enter a custom value |
4029
+ * | `false` | [Flexible mode](@/guides/cell-types/autocomplete-cell-type.md#autocomplete-flexible-mode) | The end user:<br>- Can choose one of suggested values<br>- Can enter a custom value |
4030
+ *
4031
+ * Read more:
4032
+ * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type.md)
4033
+ * - [`source`](#source)
4034
+ *
4035
+ * @memberof Options#
4036
+ * @type {boolean}
4037
+ * @default undefined
4038
+ * @category Core
4039
+ *
4040
+ * @example
4041
+ * ```js
4042
+ * columns: [
4043
+ * {
4044
+ * // set the `type` of each cell in this column to `autocomplete`
4045
+ * type: 'autocomplete',
4046
+ * // set options available in every `autocomplete` cell of this column
4047
+ * source: ['A', 'B', 'C'],
4048
+ * // values entered must match `A`, `B`, or `C`
4049
+ * strict: true
4050
+ * },
4051
+ * ],
4052
+ * ```
4053
+ */
4054
+ strict: void 0,
4055
+ /**
4056
+ * The `tableClassName` option lets you add CSS class names
4057
+ * to every Handsontable instance inside the `container` element.
4058
+ *
4059
+ * You can set the `tableClassName` option to one of the following:
4060
+ *
4061
+ * | Setting | Description |
4062
+ * | ------------------- | ------------------------------------------------------------------------------------------ |
4063
+ * | A string | Add a single CSS class name to every Handsontable instance inside the `container` element |
4064
+ * | An array of strings | Add multiple CSS class names to every Handsontable instance inside the `container` element |
4065
+ *
4066
+ * Read more:
4067
+ * - [`currentRowClassName`](#currentRowClassName)
4068
+ * - [`currentColClassName`](#currentColClassName)
4069
+ * - [`currentHeaderClassName`](#currentHeaderClassName)
4070
+ * - [`activeHeaderClassName`](#activeHeaderClassName)
4071
+ * - [`invalidCellClassName`](#invalidCellClassName)
4072
+ * - [`placeholderCellClassName`](#placeholderCellClassName)
4073
+ * - [`readOnlyCellClassName`](#readOnlyCellClassName)
4074
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
4075
+ * - [`commentedCellClassName`](#commentedCellClassName)
4076
+ * - [`className`](#className)
4077
+ *
4078
+ * @memberof Options#
4079
+ * @type {string|string[]}
4080
+ * @default undefined
4081
+ * @category Core
4082
+ *
4083
+ * @example
4084
+ * ```js
4085
+ * // add a `your-class-name` CSS class name
4086
+ * // to every Handsontable instance inside the `container` element
4087
+ * tableClassName: 'your-class-name',
4088
+ *
4089
+ * // add `first-class-name` and `second-class-name` CSS class names
4090
+ * // to every Handsontable instance inside the `container` element
4091
+ * tableClassName: ['first-class-name', 'second-class-name'],
4092
+ * ```
4093
+ */
4094
+ tableClassName: void 0,
4095
+ /**
4096
+ * The `tabMoves` option configures the action of the <kbd>**Tab**</kbd> key.
4097
+ *
4098
+ * You can set the `tabMoves` option to an object with the following properties
4099
+ * (or to a function that returns such an object):
4100
+ *
4101
+ * | Property | Type | Description |
4102
+ * | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
4103
+ * | `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 |
4104
+ * | `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 |
4105
+ *
4106
+ * @memberof Options#
4107
+ * @type {object|Function}
4108
+ * @default {row: 0, col: 1}
4109
+ * @category Core
4110
+ *
4111
+ * @example
4112
+ * ```js
4113
+ * // on pressing Tab, move selection 2 rows down and 2 columns right
4114
+ * // on pressing Shift+Tab, move selection 2 rows up and 2 columns left
4115
+ * tabMoves: {row: 2, col: 2},
4116
+ *
4117
+ * // the same setting, as a function
4118
+ * // `event` is a DOM Event object received on pressing Tab
4119
+ * // you can use it to check whether the user pressed Tab or Shift+Tab
4120
+ * tabMoves(event) {
4121
+ * return {row: 2, col: 2};
4122
+ * },
4123
+ * ```
4124
+ */
4125
+ tabMoves: {
4126
+ row: 0,
4127
+ col: 1
4128
+ },
4129
+ /**
4130
+ * @description
4131
+ * The `title` option configures [column header](@/guides/columns/column-header.md) names.
4132
+ *
4133
+ * You can set the `title` option to a string.
4134
+ *
4135
+ * Read more:
4136
+ * - [Column header](@/guides/columns/column-header.md)
4137
+ * - [`columns`](#columns)
4138
+ *
4139
+ * @memberof Options#
4140
+ * @type {string}
4141
+ * @default undefined
4142
+ * @category Core
4143
+ *
4144
+ * @example
4145
+ * ```js
4146
+ * columns: [
4147
+ * {
4148
+ * // set the first column header name to `First name`
4149
+ * title: 'First name',
4150
+ * type: 'text',
4151
+ * },
4152
+ * {
4153
+ * // set the second column header name to `Last name`
4154
+ * title: 'Last name',
4155
+ * type: 'text',
4156
+ * }
4157
+ * ],
4158
+ * ```
4159
+ */
4160
+ title: void 0,
4161
+ /**
4162
+ * The `trimDropdown` option configures the width of the [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md)
4163
+ * and [`dropdown`](@/guides/cell-types/dropdown-cell-type.md) lists.
4164
+ *
4165
+ * You can set the `trimDropdown` option to one of the following:
4166
+ *
4167
+ * | Setting | Description |
4168
+ * | ---------------- | ------------------------------------------------------------------------------- |
4169
+ * | `true` (default) | Make the dropdown/autocomplete list's width the same as the edited cell's width |
4170
+ * | `false` | Scale the dropdown/autocomplete list's width to the list's content |
4171
+ *
4172
+ * Read more:
4173
+ * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type.md)
4174
+ * - [Dropdown cell type](@/guides/cell-types/dropdown-cell-type.md)
4175
+ *
4176
+ * @memberof Options#
4177
+ * @type {boolean}
4178
+ * @default true
4179
+ * @category Core
4180
+ *
4181
+ * @example
4182
+ * ```js
4183
+ * columns: [
4184
+ * {
4185
+ * type: 'autocomplete',
4186
+ * // for each cell of this column
4187
+ * // make the `autocomplete` list's width the same as the edited cell's width
4188
+ * trimDropdown: true,
4189
+ * },
4190
+ * {
4191
+ * type: 'dropdown',
4192
+ * // for each cell of this column
4193
+ * // scale the `dropdown` list's width to the list's content
4194
+ * trimDropdown: false,
4195
+ * }
4196
+ * ],
4197
+ * ```
4198
+ */
4199
+ trimDropdown: true,
4200
+ /**
4201
+ * @description
4202
+ * The `trimRows` option configures the [`TrimRows`](@/api/trimRows.md) plugin.
4203
+ *
4204
+ * You can set the `trimRows` option to one of the following:
4205
+ *
4206
+ * | Setting | Description |
4207
+ * | -------------------------------- | --------------------------------------------------------------------------------------------- |
4208
+ * | `false` | Disable the [`TrimRows`](@/api/trimRows.md) plugin |
4209
+ * | `true` | Enable the [`TrimRows`](@/api/trimRows.md) plugin |
4210
+ * | An array of physical row indexes | - Enable the [`TrimRows`](@/api/trimRows.md) plugin<br>- Trim selected rows at initialization |
4211
+ *
4212
+ * Read more:
4213
+ * - [Plugins: `TrimRows`](@/api/trimRows.md)
4214
+ * - [Row trimming](@/guides/rows/row-trimming.md)
4215
+ *
4216
+ * @memberof Options#
4217
+ * @type {boolean|number[]}
4218
+ * @default undefined
4219
+ * @category TrimRows
4220
+ *
4221
+ * @example
4222
+ * ```js
4223
+ * // enable the `TrimRows` plugin
4224
+ * trimRows: true,
4225
+ *
4226
+ * // enable the `TrimRows` plugin
4227
+ * // at Handsontable's initialization, trim rows 5, 10, and 15
4228
+ * trimRows: [5, 10, 15],
4229
+ * ```
4230
+ */
4231
+ trimRows: void 0,
4232
+ /**
4233
+ * The `trimWhitespace` option configures automatic whitespace removal. This option
4234
+ * affects the cell renderer and the cell editor.
4235
+ *
4236
+ * You can set the `trimWhitespace` option to one of the following:
4237
+ *
4238
+ * | Setting | Description |
4239
+ * | ---------------- | --------------------------------------------------------------- |
4240
+ * | `true` (default) | Remove whitespace at the beginning and at the end of each cell |
4241
+ * | `false` | Don't remove whitespace |
4242
+ *
4243
+ * @memberof Options#
4244
+ * @type {boolean}
4245
+ * @default true
4246
+ * @category Core
4247
+ *
4248
+ * @example
4249
+ * ```js
4250
+ * columns: [
4251
+ * {
4252
+ * // don't remove whitespace
4253
+ * // from any cell of this column
4254
+ * trimWhitespace: false
4255
+ * }
4256
+ * ]
4257
+ * ```
4258
+ */
4259
+ trimWhitespace: true,
4260
+ /**
4261
+ * @description
4262
+ * The `type` option lets you set the [`renderer`](#renderer), [`editor`](#editor), and [`validator`](#validator)
4263
+ * options all at once, by selecting a [cell type](@/guides/cell-types/cell-type.md).
4264
+ *
4265
+ * You can set the `type` option to one of the following:
4266
+ *
4267
+ * | Cell type | Renderer, editor & validator |
4268
+ * | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
4269
+ * | A [custom cell type](@/guides/cell-types/cell-type.md) | Renderer: your [custom cell renderer](@/guides/cell-functions/cell-renderer.md)<br>Editor: your [custom cell editor](@/guides/cell-functions/cell-editor.md)<br>Validator: your [custom cell validator](@/guides/cell-functions/cell-validator.md) |
4270
+ * | [`'autocomplete'`](@/guides/cell-types/autocomplete-cell-type.md) | Renderer: `AutocompleteRenderer`<br>Editor: `AutocompleteEditor`<br>Validator: `AutocompleteValidator` |
4271
+ * | [`'checkbox'`](@/guides/cell-types/checkbox-cell-type.md) | Renderer: `CheckboxRenderer`<br>Editor: `CheckboxEditor`<br>Validator: - |
4272
+ * | [`'date'`](@/guides/cell-types/date-cell-type.md) | Renderer: `DateRenderer`<br>Editor: `DateEditor`<br>Validator: `DateValidator` |
4273
+ * | [`'dropdown'`](@/guides/cell-types/dropdown-cell-type.md) | Renderer: `DropdownRenderer`<br>Editor: `DropdownEditor`<br>Validator: `DropdownValidator` |
4274
+ * | [`'handsontable'`](@/guides/cell-types/handsontable-cell-type.md) | Renderer: `AutocompleteRenderer`<br>Editor: `HandsontableEditor`<br>Validator: - |
4275
+ * | [`'numeric'`](@/guides/cell-types/numeric-cell-type.md) | Renderer: `NumericRenderer`<br>Editor: `NumericEditor`<br>Validator: `NumericValidator` |
4276
+ * | [`'password'`](@/guides/cell-types/password-cell-type.md) | Renderer: `PasswordRenderer`<br>Editor: `PasswordEditor`<br>Validator: - |
4277
+ * | `'text'` | Renderer: `TextRenderer`<br>Editor: `TextEditor`<br>Validator: - |
4278
+ * | [`'time`'](@/guides/cell-types/time-cell-type.md) | Renderer: `TimeRenderer`<br>Editor: `TimeEditor`<br>Validator: `TimeValidator` |
4279
+ *
4280
+ * Read more:
4281
+ * - [Cell type](@/guides/cell-types/cell-type.md)
4282
+ * - [Cell renderer](@/guides/cell-functions/cell-renderer.md)
4283
+ * - [Cell editor](@/guides/cell-functions/cell-editor.md)
4284
+ * - [Cell validator](@/guides/cell-functions/cell-validator.md)
4285
+ * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options.md#cascading-configuration)
4286
+ * - [`renderer`](#renderer)
4287
+ * - [`editor`](#editor)
4288
+ * - [`validator`](#validator)
4289
+ *
4290
+ * @memberof Options#
4291
+ * @type {string}
4292
+ * @default 'text'
4293
+ * @category Core
4294
+ *
4295
+ * @example
4296
+ * ```js
4297
+ * // set the `numeric` cell type for each cell of the entire grid
4298
+ * type: `'numeric'`,
4299
+ *
4300
+ * // apply the `type` option to individual columns
4301
+ * columns: [
4302
+ * {
4303
+ * // set the `autocomplete` cell type for each cell of this column
4304
+ * type: 'autocomplete'
4305
+ * },
4306
+ * {
4307
+ * // set the `myCustomCellType` cell type for each cell of this column
4308
+ * type: 'myCustomCellType'
4309
+ * }
4310
+ * ]
4311
+ * ```
4312
+ */
4313
+ type: 'text',
4314
+ /**
4315
+ * The `uncheckedTemplate` option lets you configure what value
4316
+ * an unchecked [`checkbox`](@/guides/cell-types/checkbox-cell-type.md) cell has.
4317
+ *
4318
+ * You can set the `uncheckedTemplate` option to one of the following:
4319
+ *
4320
+ * | Setting | Description |
4321
+ * | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
4322
+ * | `false` (default) | If a [`checkbox`](@/guides/cell-types/checkbox-cell-type.md) cell is unchecked,<br>the [`getDataAtCell`](@/api/core.md#getDataAtCell) method for this cell returns `false` |
4323
+ * | A string | If a [`checkbox`](@/guides/cell-types/checkbox-cell-type.md) cell is unchecked,<br>the [`getDataAtCell`](@/api/core.md#getDataAtCell) method for this cell returns a string of your choice |
4324
+ *
4325
+ * Read more:
4326
+ * - [Checkbox cell type: Checkbox template](@/guides/cell-types/checkbox-cell-type.md#checkbox-template)
4327
+ * - [`getDataAtCell()`](@/api/core.md#getDataAtCell)
4328
+ * - [`checkedTemplate`](#checkedTemplate)
4329
+ *
4330
+ * @memberof Options#
4331
+ * @type {boolean|string|number}
4332
+ * @default false
4333
+ * @category Core
4334
+ *
4335
+ * @example
4336
+ * ```js
4337
+ * columns: [
4338
+ * {
4339
+ * // set the `type` of each cell in this column to `checkbox`
4340
+ * // when unchecked, the cell's value is `false`
4341
+ * // when checked, the cell's value is `true`
4342
+ * type: 'checkbox',
4343
+ * },
4344
+ * {
4345
+ * // set the `type` of each cell in this column to `checkbox`
4346
+ * // when unchecked, the cell's value is `'No'`
4347
+ * // when checked, the cell's value is `'Yes'`
4348
+ * type: 'checkbox',
4349
+ * uncheckedTemplate: 'No'
4350
+ * checkedTemplate: 'Yes',
4351
+ * }
4352
+ * ],
4353
+ * ```
4354
+ */
4355
+ uncheckedTemplate: void 0,
4356
+ /**
4357
+ * The `undo` option configures the [`UndoRedo`](@/api/undoRedo.md) plugin.
4358
+ *
4359
+ * You can set the `undo` option to one of the following:
4360
+ *
4361
+ * | Setting | Description |
4362
+ * | ------- | -------------------------------------------------- |
4363
+ * | `true` | Enable the [`UndoRedo`](@/api/undoRedo.md) plugin |
4364
+ * | `false` | Disable the [`UndoRedo`](@/api/undoRedo.md) plugin |
4365
+ *
4366
+ * By default, the `undo` option is set to `undefined`,
4367
+ * but the [`UndoRedo`](@/api/undoRedo.md) plugin acts as enabled.
4368
+ * To disable the [`UndoRedo`](@/api/undoRedo.md) plugin completely,
4369
+ * set the `undo` option to `false`.
4370
+ *
4371
+ * Read more:
4372
+ * - [Undo and redo](@/guides/accessories-and-menus/undo-redo.md)
4373
+ *
4374
+ * @memberof Options#
4375
+ * @type {boolean}
4376
+ * @default undefined
4377
+ * @category UndoRedo
4378
+ *
4379
+ * @example
4380
+ * ```js
4381
+ * // enable the `UndoRedo` plugin
4382
+ * undo: true,
4383
+ * ```
4384
+ */
4385
+ undo: void 0,
4386
+ /**
4387
+ * @description
4388
+ * The `validator` option sets a [cell validator](@/guides/cell-functions/cell-validator.md) for a cell.
4389
+ *
4390
+ * You can set the `validator` option to one of the following:
4391
+ *
4392
+ * | Setting | Description |
4393
+ * | -------------------- | -------------------------------------------------------------------------------- |
4394
+ * | A string | A [cell validator alias](@/guides/cell-functions/cell-validator.md) |
4395
+ * | A function | Your [custom cell validator function](@/guides/cell-functions/cell-validator.md) |
4396
+ * | A regular expression | A regular expression used for cell validation |
4397
+ *
4398
+ * By setting the `validator` option to a string,
4399
+ * you can use one of the following [cell validator aliases](@/guides/cell-functions/cell-validator.md):
4400
+ *
4401
+ * | Alias | Cell validator function |
4402
+ * | ------------------- | ----------------------------------------------------------------------- |
4403
+ * | A custom alias | Your [custom cell validator](@/guides/cell-functions/cell-validator.md) |
4404
+ * | `'autocomplete'` | `AutocompleteValidator` |
4405
+ * | `'date'` | `DateValidator` |
4406
+ * | `'dropdown'` | `DropdownValidator` |
4407
+ * | `'numeric'` | `NumericValidator` |
4408
+ * | `'time'` | `TimeValidator` |
4409
+ *
4410
+ * To set the [`editor`](#editor), [`renderer`](#renderer), and [`validator`](#validator)
4411
+ * options all at once, use the [`type`](#type) option.
4412
+ *
4413
+ * Read more:
4414
+ * - [Cell validator](@/guides/cell-functions/cell-validator.md)
4415
+ * - [Cell type](@/guides/cell-types/cell-type.md)
4416
+ * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options.md#cascading-configuration)
4417
+ * - [`type`](#type)
4418
+ *
4419
+ * @memberof Options#
4420
+ * @type {Function|RegExp|string}
4421
+ * @default undefined
4422
+ * @category Core
4423
+ *
4424
+ * @example
4425
+ * ```js
4426
+ * columns: [
4427
+ * {
4428
+ * // use a built-in `numeric` cell validator
4429
+ * validator: 'numeric'
4430
+ * },
4431
+ * {
4432
+ * // validate against a regular expression
4433
+ * validator: /^[0-9]$/
4434
+ * },
4435
+ * {
4436
+ * // add a custom cell validator function
4437
+ * validator(value, callback) {
4438
+ * ...
4439
+ * }
4440
+ * },
4441
+ * ],
4442
+ * ```
4443
+ */
4444
+ validator: void 0,
4445
+ /**
4446
+ * @description
4447
+ * The `viewportColumnRenderingOffset` option configures the number of columns
4448
+ * to be rendered outside of the grid's viewport.
4449
+ *
4450
+ * You can set the `viewportColumnRenderingOffset` option to one of the following:
4451
+ *
4452
+ * | Setting | Description |
4453
+ * | ------------------ | ------------------------------------------------------- |
4454
+ * | `auto` (default) | Use the offset calculated automatically by Handsontable |
4455
+ * | A number | Set the offset manually |
4456
+ *
4457
+ * Read more:
4458
+ * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
4459
+ *
4460
+ * @memberof Options#
4461
+ * @type {number|string}
4462
+ * @default 'auto'
4463
+ * @category Core
4464
+ *
4465
+ * @example
4466
+ * ```js
4467
+ * // render 70 columns outside of the grid's viewport
4468
+ * viewportColumnRenderingOffset: 70,
4469
+ * ```
4470
+ */
4471
+ viewportColumnRenderingOffset: 'auto',
4472
+ /**
4473
+ * @description
4474
+ * The `viewportRowRenderingOffset` option configures the number of rows
4475
+ * to be rendered outside of the grid's viewport.
4476
+ *
4477
+ * You can set the `viewportRowRenderingOffset` option to one of the following:
4478
+ *
4479
+ * | Setting | Description |
4480
+ * | ------------------ | ------------------------------------------------------- |
4481
+ * | `auto` (default) | Use the offset calculated automatically by Handsontable |
4482
+ * | A number | Set the offset manually |
4483
+ *
4484
+ * Read more:
4485
+ * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
4486
+ * - [Column virtualization](@/guides/columns/column-virtualization.md)
4487
+ *
4488
+ * @memberof Options#
4489
+ * @type {number|string}
4490
+ * @default 'auto'
4491
+ * @category Core
4492
+ *
4493
+ * @example
4494
+ * ```js
4495
+ * // render 70 rows outside of the grid's viewport
4496
+ * viewportRowRenderingOffset: 70,
4497
+ * ```
4498
+ */
4499
+ viewportRowRenderingOffset: 'auto',
4500
+ /**
4501
+ * The `visibleRows` option sets the height of the [`autocomplete`](@/guides/cell-types/autocomplete-cell-type.md)
4502
+ * and [`dropdown`](@/guides/cell-types/dropdown-cell-type.md) lists.
4503
+ *
4504
+ * When the number of list options exceeds the `visibleRows` number, a scrollbar appears.
4505
+ *
4506
+ * Read more:
4507
+ * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type.md)
4508
+ * - [Dropdown cell type](@/guides/cell-types/dropdown-cell-type.md)
4509
+ *
4510
+ * @memberof Options#
4511
+ * @type {number}
4512
+ * @default 10
4513
+ * @category Core
4514
+ *
4515
+ * @example
4516
+ * ```js
4517
+ * columns: [
4518
+ * {
4519
+ * type: 'autocomplete',
4520
+ * // set the `autocomplete` list's height to 15 options
4521
+ * // for each cell of this column
4522
+ * visibleRows: 15,
4523
+ * },
4524
+ * {
4525
+ * type: 'dropdown',
4526
+ * // set the `dropdown` list's height to 5 options
4527
+ * // for each cell of this column
4528
+ * visibleRows: 5,
4529
+ * }
4530
+ * ],
4531
+ * ```
4532
+ */
4533
+ visibleRows: 10,
4534
+ /**
4535
+ * The `width` option configures the width of your grid.
4536
+ *
4537
+ * You can set the `width` option to one of the following:
4538
+ *
4539
+ * | Setting | Example |
4540
+ * | -------------------------------------------------------------------------- | ------------------------- |
4541
+ * | A number of pixels | `width: 500` |
4542
+ * | A string with a [CSS unit](https://www.w3schools.com/cssref/css_units.asp) | `width: '75vw'` |
4543
+ * | A function that returns a valid number or string | `width() { return 500; }` |
4544
+ *
4545
+ * Read more:
4546
+ * - [Grid size](@/guides/getting-started/grid-size.md)
4547
+ *
4548
+ * @memberof Options#
4549
+ * @type {number|string|Function}
4550
+ * @default undefined
4551
+ * @category Core
4552
+ *
4553
+ * @example
4554
+ * ```js
4555
+ * // set the grid's width to 500px
4556
+ * width: 500,
4557
+ *
4558
+ * // set the grid's width to 75vw
4559
+ * width: '75vw',
4560
+ *
4561
+ * // set the grid's width to 500px, using a function
4562
+ * width() {
4563
+ * return 500;
4564
+ * },
4565
+ * ```
4566
+ */
4567
+ width: void 0,
4568
+ /**
4569
+ * The `wordWrap` option configures whether content that exceeds a column's width is wrapped or not.
4570
+ *
4571
+ * You can set the `wordWrap` option to one of the following:
4572
+ *
4573
+ * | Setting | Description |
4574
+ * | ---------------- | ------------------------------------------------------- |
4575
+ * | `true` (default) | If content exceeds the column's width, wrap the content |
4576
+ * | `false` | Don't wrap content |
4577
+ *
4578
+ * To style cells that don't wrap content, use the [`noWordWrapClassName`](#noWordWrapClassName) option.
4579
+ *
4580
+ * Read more:
4581
+ * - [`noWordWrapClassName`](#noWordWrapClassName)
4582
+ *
4583
+ * @memberof Options#
4584
+ * @type {boolean}
4585
+ * @default true
4586
+ * @category Core
4587
+ *
4588
+ * @example
4589
+ * ```js
4590
+ * // set column width for every column of the entire grid
4591
+ * colWidths: 100,
4592
+ *
4593
+ * columns: [
4594
+ * {
4595
+ * // don't wrap content in this column
4596
+ * wordWrap: false,
4597
+ * },
4598
+ * {
4599
+ * // if content exceeds this column's width, wrap the content
4600
+ * wordWrap: true,
4601
+ * }
4602
+ * ],
4603
+ * ```
4604
+ */
4605
+ wordWrap: true
4606
+
4607
+ /* eslint-enable jsdoc/require-description-complete-sentence */
4608
+ };
4609
+ };
4610
+ exports.default = _default;