handsontable 16.2.0 → 17.0.0-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (984) hide show
  1. package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleColumns.js +0 -3
  2. package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleColumns.mjs +0 -3
  3. package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleRows.js +0 -3
  4. package/3rdparty/walkontable/src/calculator/calculationType/fullyVisibleRows.mjs +0 -3
  5. package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleColumns.js +0 -3
  6. package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleColumns.mjs +0 -3
  7. package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleRows.js +0 -3
  8. package/3rdparty/walkontable/src/calculator/calculationType/partiallyVisibleRows.mjs +0 -3
  9. package/3rdparty/walkontable/src/calculator/calculationType/renderedAllColumns.js +0 -1
  10. package/3rdparty/walkontable/src/calculator/calculationType/renderedAllColumns.mjs +0 -1
  11. package/3rdparty/walkontable/src/calculator/calculationType/renderedAllRows.js +0 -1
  12. package/3rdparty/walkontable/src/calculator/calculationType/renderedAllRows.mjs +0 -1
  13. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +0 -1
  14. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +0 -1
  15. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +0 -1
  16. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +0 -1
  17. package/3rdparty/walkontable/src/calculator/viewportBase.js +0 -3
  18. package/3rdparty/walkontable/src/calculator/viewportBase.mjs +0 -3
  19. package/3rdparty/walkontable/src/calculator/viewportColumns.js +0 -2
  20. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +0 -2
  21. package/3rdparty/walkontable/src/calculator/viewportRows.js +0 -2
  22. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +0 -2
  23. package/3rdparty/walkontable/src/cell/coords.js +0 -1
  24. package/3rdparty/walkontable/src/cell/coords.mjs +0 -1
  25. package/3rdparty/walkontable/src/cell/range.js +0 -2
  26. package/3rdparty/walkontable/src/cell/range.mjs +0 -2
  27. package/3rdparty/walkontable/src/core/_base.js +0 -2
  28. package/3rdparty/walkontable/src/core/_base.mjs +0 -2
  29. package/3rdparty/walkontable/src/core/clone.js +0 -1
  30. package/3rdparty/walkontable/src/core/clone.mjs +0 -1
  31. package/3rdparty/walkontable/src/core/core.js +0 -1
  32. package/3rdparty/walkontable/src/core/core.mjs +0 -1
  33. package/3rdparty/walkontable/src/event.js +0 -1
  34. package/3rdparty/walkontable/src/event.mjs +0 -1
  35. package/3rdparty/walkontable/src/filter/column.js +0 -1
  36. package/3rdparty/walkontable/src/filter/column.mjs +0 -1
  37. package/3rdparty/walkontable/src/filter/row.js +0 -1
  38. package/3rdparty/walkontable/src/filter/row.mjs +0 -1
  39. package/3rdparty/walkontable/src/overlay/_base.js +6 -4
  40. package/3rdparty/walkontable/src/overlay/_base.mjs +6 -4
  41. package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
  42. package/3rdparty/walkontable/src/overlay/bottom.mjs +2 -2
  43. package/3rdparty/walkontable/src/overlay/index.js +0 -2
  44. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -2
  45. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -2
  46. package/3rdparty/walkontable/src/overlay/top.js +2 -2
  47. package/3rdparty/walkontable/src/overlay/top.mjs +2 -2
  48. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +0 -1
  49. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +0 -1
  50. package/3rdparty/walkontable/src/overlays.js +5 -8
  51. package/3rdparty/walkontable/src/overlays.mjs +5 -8
  52. package/3rdparty/walkontable/src/renderer/_base.js +0 -1
  53. package/3rdparty/walkontable/src/renderer/_base.mjs +0 -1
  54. package/3rdparty/walkontable/src/renderer/cells.js +0 -1
  55. package/3rdparty/walkontable/src/renderer/cells.mjs +0 -1
  56. package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -2
  57. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -2
  58. package/3rdparty/walkontable/src/renderer/rows.js +1 -12
  59. package/3rdparty/walkontable/src/renderer/rows.mjs +1 -12
  60. package/3rdparty/walkontable/src/renderer/table.js +0 -1
  61. package/3rdparty/walkontable/src/renderer/table.mjs +0 -1
  62. package/3rdparty/walkontable/src/scroll.js +0 -1
  63. package/3rdparty/walkontable/src/scroll.mjs +0 -1
  64. package/3rdparty/walkontable/src/selection/border/border.js +13 -26
  65. package/3rdparty/walkontable/src/selection/border/border.mjs +13 -26
  66. package/3rdparty/walkontable/src/selection/border/utils.js +0 -9
  67. package/3rdparty/walkontable/src/selection/border/utils.mjs +0 -9
  68. package/3rdparty/walkontable/src/selection/index.js +0 -2
  69. package/3rdparty/walkontable/src/selection/manager.js +0 -13
  70. package/3rdparty/walkontable/src/selection/manager.mjs +0 -13
  71. package/3rdparty/walkontable/src/selection/scanner.js +0 -8
  72. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -8
  73. package/3rdparty/walkontable/src/settings.js +2 -2
  74. package/3rdparty/walkontable/src/settings.mjs +2 -2
  75. package/3rdparty/walkontable/src/table/master.js +1 -1
  76. package/3rdparty/walkontable/src/table/master.mjs +1 -1
  77. package/3rdparty/walkontable/src/table.js +3 -6
  78. package/3rdparty/walkontable/src/table.mjs +3 -6
  79. package/3rdparty/walkontable/src/utils/column.js +0 -1
  80. package/3rdparty/walkontable/src/utils/column.mjs +0 -1
  81. package/3rdparty/walkontable/src/utils/nodesPool.js +7 -1
  82. package/3rdparty/walkontable/src/utils/nodesPool.mjs +7 -1
  83. package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/differBasedRendererAdapter.js +100 -0
  84. package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/differBasedRendererAdapter.mjs +96 -0
  85. package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/directDomRendererAdapter.js +117 -0
  86. package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/directDomRendererAdapter.mjs +113 -0
  87. package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/index.js +19 -0
  88. package/3rdparty/walkontable/src/utils/orderView/rendererAdapter/index.mjs +15 -0
  89. package/3rdparty/walkontable/src/utils/orderView/view.js +16 -58
  90. package/3rdparty/walkontable/src/utils/orderView/view.mjs +16 -58
  91. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.js +0 -2
  92. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/index.mjs +0 -2
  93. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.js +0 -2
  94. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.mjs +0 -2
  95. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +0 -1
  96. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +0 -1
  97. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +0 -1
  98. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +0 -1
  99. package/3rdparty/walkontable/src/utils/row.js +0 -1
  100. package/3rdparty/walkontable/src/utils/row.mjs +0 -1
  101. package/3rdparty/walkontable/src/viewport.js +0 -2
  102. package/3rdparty/walkontable/src/viewport.mjs +0 -2
  103. package/CHANGELOG.md +1 -1
  104. package/README.md +4 -23
  105. package/base.js +13 -2
  106. package/base.mjs +14 -3
  107. package/cellTypes/autocompleteType/accessors/valueSetter.js +2 -4
  108. package/cellTypes/autocompleteType/accessors/valueSetter.mjs +1 -3
  109. package/cellTypes/autocompleteType/autocompleteType.js +2 -1
  110. package/cellTypes/autocompleteType/autocompleteType.mjs +2 -1
  111. package/cellTypes/dropdownType/dropdownType.js +2 -1
  112. package/cellTypes/dropdownType/dropdownType.mjs +2 -1
  113. package/cellTypes/index.d.ts +6 -0
  114. package/cellTypes/index.js +12 -0
  115. package/cellTypes/index.mjs +7 -1
  116. package/cellTypes/intlDateType/index.d.ts +1 -0
  117. package/cellTypes/intlDateType/index.js +6 -0
  118. package/cellTypes/intlDateType/index.mjs +1 -0
  119. package/cellTypes/intlDateType/intlDateType.d.ts +23 -0
  120. package/cellTypes/intlDateType/intlDateType.js +16 -0
  121. package/cellTypes/intlDateType/intlDateType.mjs +13 -0
  122. package/cellTypes/intlTimeType/index.d.ts +1 -0
  123. package/cellTypes/intlTimeType/index.js +6 -0
  124. package/cellTypes/intlTimeType/index.mjs +1 -0
  125. package/cellTypes/intlTimeType/intlTimeType.d.ts +23 -0
  126. package/cellTypes/intlTimeType/intlTimeType.js +16 -0
  127. package/cellTypes/intlTimeType/intlTimeType.mjs +13 -0
  128. package/cellTypes/multiSelectType/accessors/index.js +7 -0
  129. package/cellTypes/multiSelectType/accessors/index.mjs +2 -0
  130. package/cellTypes/multiSelectType/accessors/valueGetter.js +20 -0
  131. package/cellTypes/multiSelectType/accessors/valueGetter.mjs +16 -0
  132. package/cellTypes/multiSelectType/accessors/valueSetter.js +27 -0
  133. package/cellTypes/multiSelectType/accessors/valueSetter.mjs +23 -0
  134. package/cellTypes/multiSelectType/index.js +6 -0
  135. package/cellTypes/multiSelectType/index.mjs +1 -0
  136. package/cellTypes/multiSelectType/multiSelectType.js +19 -0
  137. package/cellTypes/multiSelectType/multiSelectType.mjs +16 -0
  138. package/cellTypes/numericType/numericType.d.ts +3 -1
  139. package/cellTypes/numericType/numericType.js +2 -1
  140. package/cellTypes/numericType/numericType.mjs +3 -2
  141. package/cellTypes/registry.js +2 -2
  142. package/cellTypes/registry.mjs +2 -2
  143. package/common.d.ts +3 -1
  144. package/core/coordsMapper/index.js +0 -2
  145. package/core/coordsMapper/rangeToRenderableMapper.js +0 -1
  146. package/core/coordsMapper/rangeToRenderableMapper.mjs +0 -1
  147. package/core/hooks/bucket.js +0 -14
  148. package/core/hooks/bucket.mjs +0 -14
  149. package/core/hooks/constants.js +0 -28
  150. package/core/hooks/constants.mjs +0 -28
  151. package/core/hooks/index.d.ts +0 -3
  152. package/core/hooks/index.js +0 -2
  153. package/core/hooks/index.mjs +0 -2
  154. package/core/index.js +0 -2
  155. package/core.d.ts +0 -5
  156. package/core.js +193 -104
  157. package/core.mjs +194 -105
  158. package/dataMap/dataMap.js +6 -8
  159. package/dataMap/dataMap.mjs +6 -8
  160. package/dataMap/dataSource.js +0 -4
  161. package/dataMap/dataSource.mjs +0 -4
  162. package/dataMap/index.js +5 -0
  163. package/dataMap/index.mjs +3 -1
  164. package/dataMap/metaManager/index.js +2 -4
  165. package/dataMap/metaManager/index.mjs +2 -4
  166. package/dataMap/metaManager/lazyFactoryMap.js +0 -11
  167. package/dataMap/metaManager/lazyFactoryMap.mjs +0 -11
  168. package/dataMap/metaManager/metaLayers/cellMeta.js +0 -2
  169. package/dataMap/metaManager/metaLayers/cellMeta.mjs +0 -2
  170. package/dataMap/metaManager/metaLayers/columnMeta.js +0 -1
  171. package/dataMap/metaManager/metaLayers/columnMeta.mjs +0 -1
  172. package/dataMap/metaManager/metaLayers/globalMeta.js +0 -1
  173. package/dataMap/metaManager/metaLayers/globalMeta.mjs +0 -1
  174. package/dataMap/metaManager/metaLayers/tableMeta.js +0 -1
  175. package/dataMap/metaManager/metaLayers/tableMeta.mjs +0 -1
  176. package/dataMap/metaManager/metaSchema.js +862 -79
  177. package/dataMap/metaManager/metaSchema.mjs +862 -79
  178. package/dataMap/metaManager/mods/dynamicCellMeta.js +0 -8
  179. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +0 -8
  180. package/dataMap/metaManager/mods/extendMetaProperties.js +23 -15
  181. package/dataMap/metaManager/mods/extendMetaProperties.mjs +23 -15
  182. package/dataMap/metaManager/utils.js +2 -9
  183. package/dataMap/metaManager/utils.mjs +2 -9
  184. package/dataMap/replaceData.js +6 -3
  185. package/dataMap/replaceData.mjs +6 -3
  186. package/dataMap/sourceDataValidator.js +122 -0
  187. package/dataMap/sourceDataValidator.mjs +117 -0
  188. package/dist/handsontable.full.js +57523 -54761
  189. package/dist/handsontable.full.min.js +228 -213
  190. package/dist/handsontable.js +39604 -37938
  191. package/dist/handsontable.min.js +51 -51
  192. package/dist/languages/all.js +1 -1
  193. package/dist/languages/all.min.js +1 -1
  194. package/dist/languages/ar-AR.js +1 -1
  195. package/dist/languages/ar-AR.min.js +1 -1
  196. package/dist/languages/cs-CZ.js +1 -1
  197. package/dist/languages/cs-CZ.min.js +1 -1
  198. package/dist/languages/de-CH.js +1 -1
  199. package/dist/languages/de-CH.min.js +1 -1
  200. package/dist/languages/de-DE.js +1 -1
  201. package/dist/languages/de-DE.min.js +1 -1
  202. package/dist/languages/en-US.js +1 -1
  203. package/dist/languages/en-US.min.js +1 -1
  204. package/dist/languages/es-MX.js +1 -1
  205. package/dist/languages/es-MX.min.js +1 -1
  206. package/dist/languages/fa-IR.js +1 -1
  207. package/dist/languages/fa-IR.min.js +1 -1
  208. package/dist/languages/fr-FR.js +1 -1
  209. package/dist/languages/fr-FR.min.js +1 -1
  210. package/dist/languages/hr-HR.js +1 -1
  211. package/dist/languages/hr-HR.min.js +1 -1
  212. package/dist/languages/it-IT.js +1 -1
  213. package/dist/languages/it-IT.min.js +1 -1
  214. package/dist/languages/ja-JP.js +1 -1
  215. package/dist/languages/ja-JP.min.js +1 -1
  216. package/dist/languages/ko-KR.js +1 -1
  217. package/dist/languages/ko-KR.min.js +1 -1
  218. package/dist/languages/lv-LV.js +1 -1
  219. package/dist/languages/lv-LV.min.js +1 -1
  220. package/dist/languages/nb-NO.js +1 -1
  221. package/dist/languages/nb-NO.min.js +1 -1
  222. package/dist/languages/nl-NL.js +1 -1
  223. package/dist/languages/nl-NL.min.js +1 -1
  224. package/dist/languages/pl-PL.js +1 -1
  225. package/dist/languages/pl-PL.min.js +1 -1
  226. package/dist/languages/pt-BR.js +1 -1
  227. package/dist/languages/pt-BR.min.js +1 -1
  228. package/dist/languages/ru-RU.js +1 -1
  229. package/dist/languages/ru-RU.min.js +1 -1
  230. package/dist/languages/sr-SP.js +1 -1
  231. package/dist/languages/sr-SP.min.js +1 -1
  232. package/dist/languages/zh-CN.js +1 -1
  233. package/dist/languages/zh-CN.min.js +1 -1
  234. package/dist/languages/zh-TW.js +1 -1
  235. package/dist/languages/zh-TW.min.js +1 -1
  236. package/dist/themes/classic.js +467 -0
  237. package/dist/themes/classic.min.js +31 -0
  238. package/dist/themes/horizon.js +467 -0
  239. package/dist/themes/horizon.min.js +31 -0
  240. package/dist/themes/main.js +467 -0
  241. package/dist/themes/main.min.js +31 -0
  242. package/dist/themes/static/variables/colors/ant.js +137 -0
  243. package/dist/themes/static/variables/colors/ant.min.js +31 -0
  244. package/dist/themes/static/variables/colors/classic.js +137 -0
  245. package/dist/themes/static/variables/colors/classic.min.js +31 -0
  246. package/dist/themes/static/variables/colors/horizon.js +137 -0
  247. package/dist/themes/static/variables/colors/horizon.min.js +31 -0
  248. package/dist/themes/static/variables/colors/main.js +137 -0
  249. package/dist/themes/static/variables/colors/main.min.js +31 -0
  250. package/dist/themes/static/variables/colors/material.js +137 -0
  251. package/dist/themes/static/variables/colors/material.min.js +31 -0
  252. package/dist/themes/static/variables/colors/shadcn.js +137 -0
  253. package/dist/themes/static/variables/colors/shadcn.min.js +31 -0
  254. package/dist/themes/static/variables/density.js +163 -0
  255. package/dist/themes/static/variables/density.min.js +31 -0
  256. package/dist/themes/static/variables/helpers/iconsMap.js +240 -0
  257. package/dist/themes/static/variables/helpers/iconsMap.min.js +31 -0
  258. package/dist/themes/static/variables/icons/horizon.js +135 -0
  259. package/dist/themes/static/variables/icons/horizon.min.js +31 -0
  260. package/dist/themes/static/variables/icons/main.js +135 -0
  261. package/dist/themes/static/variables/icons/main.min.js +31 -0
  262. package/dist/themes/static/variables/sizing.js +126 -0
  263. package/dist/themes/static/variables/sizing.min.js +31 -0
  264. package/dist/themes/static/variables/tokens/classic.js +375 -0
  265. package/dist/themes/static/variables/tokens/classic.min.js +31 -0
  266. package/dist/themes/static/variables/tokens/horizon.js +375 -0
  267. package/dist/themes/static/variables/tokens/horizon.min.js +31 -0
  268. package/dist/themes/static/variables/tokens/main.js +375 -0
  269. package/dist/themes/static/variables/tokens/main.min.js +31 -0
  270. package/editorManager.js +0 -1
  271. package/editorManager.mjs +0 -1
  272. package/editors/autocompleteEditor/autocompleteEditor.js +5 -23
  273. package/editors/autocompleteEditor/autocompleteEditor.mjs +6 -24
  274. package/editors/baseEditor/baseEditor.js +18 -13
  275. package/editors/baseEditor/baseEditor.mjs +18 -13
  276. package/editors/dateEditor/dateEditor.js +9 -3
  277. package/editors/dateEditor/dateEditor.mjs +9 -3
  278. package/editors/dropdownEditor/dropdownEditor.js +0 -2
  279. package/editors/dropdownEditor/dropdownEditor.mjs +0 -2
  280. package/editors/factory.d.ts +48 -0
  281. package/editors/factory.js +372 -0
  282. package/editors/factory.mjs +368 -0
  283. package/editors/handsontableEditor/handsontableEditor.js +0 -1
  284. package/editors/handsontableEditor/handsontableEditor.mjs +0 -1
  285. package/editors/index.d.ts +7 -0
  286. package/editors/index.js +14 -0
  287. package/editors/index.mjs +9 -2
  288. package/editors/intlDateEditor/index.d.ts +1 -0
  289. package/editors/intlDateEditor/index.js +6 -0
  290. package/editors/intlDateEditor/index.mjs +1 -0
  291. package/editors/intlDateEditor/intlDateEditor.d.ts +7 -0
  292. package/editors/intlDateEditor/intlDateEditor.js +76 -0
  293. package/editors/intlDateEditor/intlDateEditor.mjs +72 -0
  294. package/editors/intlTimeEditor/index.d.ts +1 -0
  295. package/editors/intlTimeEditor/index.js +6 -0
  296. package/editors/intlTimeEditor/index.mjs +1 -0
  297. package/editors/intlTimeEditor/intlTimeEditor.d.ts +7 -0
  298. package/editors/intlTimeEditor/intlTimeEditor.js +72 -0
  299. package/editors/intlTimeEditor/intlTimeEditor.mjs +68 -0
  300. package/editors/multiSelectEditor/controllers/dropdownController.js +566 -0
  301. package/editors/multiSelectEditor/controllers/dropdownController.mjs +561 -0
  302. package/editors/multiSelectEditor/controllers/inputController.js +101 -0
  303. package/editors/multiSelectEditor/controllers/inputController.mjs +96 -0
  304. package/editors/multiSelectEditor/controllers/selectedItemsController.js +124 -0
  305. package/editors/multiSelectEditor/controllers/selectedItemsController.mjs +120 -0
  306. package/editors/multiSelectEditor/controllers/utils.js +275 -0
  307. package/editors/multiSelectEditor/controllers/utils.mjs +258 -0
  308. package/editors/multiSelectEditor/index.js +6 -0
  309. package/editors/multiSelectEditor/index.mjs +1 -0
  310. package/editors/multiSelectEditor/multiSelectEditor.js +509 -0
  311. package/editors/multiSelectEditor/multiSelectEditor.mjs +504 -0
  312. package/editors/multiSelectEditor/utils/utils.js +57 -0
  313. package/editors/multiSelectEditor/utils/utils.mjs +50 -0
  314. package/editors/passwordEditor/passwordEditor.js +0 -1
  315. package/editors/passwordEditor/passwordEditor.mjs +0 -1
  316. package/editors/registry.js +4 -4
  317. package/editors/registry.mjs +4 -4
  318. package/editors/selectEditor/selectEditor.js +1 -1
  319. package/editors/selectEditor/selectEditor.mjs +1 -1
  320. package/editors/textEditor/textEditor.js +4 -2
  321. package/editors/textEditor/textEditor.mjs +4 -2
  322. package/eventManager.js +0 -2
  323. package/eventManager.mjs +0 -2
  324. package/focusManager/grid.js +0 -1
  325. package/focusManager/grid.mjs +0 -1
  326. package/focusManager/index.js +0 -2
  327. package/focusManager/scopeManager.js +5 -8
  328. package/focusManager/scopeManager.mjs +5 -8
  329. package/focusManager/utils/focusDetector.js +5 -11
  330. package/focusManager/utils/focusDetector.mjs +5 -11
  331. package/helpers/a11y.js +2 -0
  332. package/helpers/a11y.mjs +1 -0
  333. package/helpers/array.js +26 -15
  334. package/helpers/array.mjs +25 -15
  335. package/helpers/console.js +33 -0
  336. package/helpers/console.mjs +32 -0
  337. package/helpers/constants.js +4 -0
  338. package/helpers/constants.mjs +1 -0
  339. package/helpers/data.js +0 -4
  340. package/helpers/data.mjs +0 -4
  341. package/helpers/dateTime.d.ts +5 -0
  342. package/helpers/dateTime.js +110 -0
  343. package/helpers/dateTime.mjs +102 -0
  344. package/helpers/dom/element.d.ts +1 -1
  345. package/helpers/dom/element.js +23 -20
  346. package/helpers/dom/element.mjs +23 -20
  347. package/helpers/errors.d.ts +1 -0
  348. package/helpers/errors.js +21 -0
  349. package/helpers/errors.mjs +17 -0
  350. package/helpers/index.d.ts +2 -1
  351. package/helpers/mixed.js +10 -7
  352. package/helpers/mixed.mjs +10 -6
  353. package/helpers/moves.js +0 -4
  354. package/helpers/moves.mjs +0 -4
  355. package/helpers/number.js +0 -9
  356. package/helpers/number.mjs +0 -9
  357. package/helpers/object.js +47 -6
  358. package/helpers/object.mjs +45 -6
  359. package/helpers/string.js +15 -2
  360. package/helpers/string.mjs +14 -2
  361. package/helpers/templateLiteralTag.js +0 -3
  362. package/helpers/templateLiteralTag.mjs +0 -3
  363. package/helpers/unicode.js +0 -1
  364. package/helpers/unicode.mjs +0 -1
  365. package/helpers/wrappers/jquery.js +2 -2
  366. package/helpers/wrappers/jquery.mjs +2 -2
  367. package/i18n/index.js +0 -2
  368. package/i18n/phraseFormatters/substituteVariables.js +0 -2
  369. package/i18n/phraseFormatters/substituteVariables.mjs +0 -2
  370. package/i18n/registry.js +0 -2
  371. package/i18n/registry.mjs +0 -2
  372. package/index.d.ts +85 -9
  373. package/index.js +18 -3
  374. package/index.mjs +18 -3
  375. package/languages/all.js +1 -1
  376. package/languages/ar-AR.js +1 -1
  377. package/languages/cs-CZ.js +1 -1
  378. package/languages/de-CH.js +1 -1
  379. package/languages/de-DE.js +1 -1
  380. package/languages/en-US.js +1 -1
  381. package/languages/es-MX.js +1 -1
  382. package/languages/fa-IR.js +1 -1
  383. package/languages/fr-FR.js +1 -1
  384. package/languages/hr-HR.js +1 -1
  385. package/languages/index.js +1 -1
  386. package/languages/it-IT.js +1 -1
  387. package/languages/ja-JP.js +1 -1
  388. package/languages/ko-KR.js +1 -1
  389. package/languages/lv-LV.js +1 -1
  390. package/languages/nb-NO.js +1 -1
  391. package/languages/nl-NL.js +1 -1
  392. package/languages/pl-PL.js +1 -1
  393. package/languages/pt-BR.js +1 -1
  394. package/languages/ru-RU.js +1 -1
  395. package/languages/sr-SP.js +1 -1
  396. package/languages/zh-CN.js +1 -1
  397. package/languages/zh-TW.js +1 -1
  398. package/mixins/hooksRefRegisterer.js +0 -1
  399. package/mixins/hooksRefRegisterer.mjs +0 -1
  400. package/mixins/localHooks.js +0 -1
  401. package/mixins/localHooks.mjs +0 -1
  402. package/package.json +184 -78
  403. package/plugins/autoColumnSize/autoColumnSize.js +4 -7
  404. package/plugins/autoColumnSize/autoColumnSize.mjs +4 -7
  405. package/plugins/autoRowSize/autoRowSize.js +8 -9
  406. package/plugins/autoRowSize/autoRowSize.mjs +8 -9
  407. package/plugins/autofill/autofill.js +7 -8
  408. package/plugins/autofill/autofill.mjs +7 -8
  409. package/plugins/base/base.js +3 -7
  410. package/plugins/base/base.mjs +3 -7
  411. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +0 -1
  412. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +0 -1
  413. package/plugins/collapsibleColumns/collapsibleColumns.js +2 -3
  414. package/plugins/collapsibleColumns/collapsibleColumns.mjs +2 -3
  415. package/plugins/columnSorting/columnSorting.js +2 -64
  416. package/plugins/columnSorting/columnSorting.mjs +2 -64
  417. package/plugins/columnSorting/columnStatesManager.js +0 -3
  418. package/plugins/columnSorting/columnStatesManager.mjs +0 -3
  419. package/plugins/columnSorting/domHelpers.js +0 -1
  420. package/plugins/columnSorting/domHelpers.mjs +0 -1
  421. package/plugins/columnSorting/sortFunction/intlDate.js +17 -0
  422. package/plugins/columnSorting/sortFunction/intlDate.mjs +13 -0
  423. package/plugins/columnSorting/sortFunction/intlTime.js +17 -0
  424. package/plugins/columnSorting/sortFunction/intlTime.mjs +13 -0
  425. package/plugins/columnSorting/sortService/registry.js +5 -1
  426. package/plugins/columnSorting/sortService/registry.mjs +4 -0
  427. package/plugins/columnSorting/utils.js +107 -10
  428. package/plugins/columnSorting/utils.mjs +105 -10
  429. package/plugins/columnSummary/columnSummary.js +2 -2
  430. package/plugins/columnSummary/columnSummary.mjs +2 -2
  431. package/plugins/columnSummary/endpoints.js +0 -5
  432. package/plugins/columnSummary/endpoints.mjs +0 -5
  433. package/plugins/comments/commentEditor.js +0 -1
  434. package/plugins/comments/commentEditor.mjs +0 -1
  435. package/plugins/comments/comments.js +5 -6
  436. package/plugins/comments/comments.mjs +5 -6
  437. package/plugins/comments/displaySwitch.js +0 -1
  438. package/plugins/comments/displaySwitch.mjs +0 -1
  439. package/plugins/comments/editorResizeObserver.js +0 -3
  440. package/plugins/comments/editorResizeObserver.mjs +0 -3
  441. package/plugins/contextMenu/commandExecutor.js +2 -4
  442. package/plugins/contextMenu/commandExecutor.mjs +2 -4
  443. package/plugins/contextMenu/contextMenu.js +0 -1
  444. package/plugins/contextMenu/contextMenu.mjs +0 -1
  445. package/plugins/contextMenu/itemsFactory.js +0 -2
  446. package/plugins/contextMenu/itemsFactory.mjs +0 -2
  447. package/plugins/contextMenu/menu/cursor.js +0 -1
  448. package/plugins/contextMenu/menu/cursor.mjs +0 -1
  449. package/plugins/contextMenu/menu/index.js +0 -2
  450. package/plugins/contextMenu/menu/menu.js +3 -15
  451. package/plugins/contextMenu/menu/menu.mjs +3 -15
  452. package/plugins/contextMenu/menu/menuItemRenderer.js +4 -2
  453. package/plugins/contextMenu/menu/menuItemRenderer.mjs +4 -2
  454. package/plugins/contextMenu/menu/positioner.js +0 -1
  455. package/plugins/contextMenu/menu/positioner.mjs +0 -1
  456. package/plugins/contextMenu/menu/shortcuts.js +0 -3
  457. package/plugins/contextMenu/menu/shortcuts.mjs +0 -3
  458. package/plugins/contextMenu/menu/utils.js +0 -1
  459. package/plugins/contextMenu/menu/utils.mjs +0 -1
  460. package/plugins/copyPaste/copyPaste.js +53 -31
  461. package/plugins/copyPaste/copyPaste.mjs +54 -32
  462. package/plugins/copyPaste/copyableRanges.js +0 -2
  463. package/plugins/copyPaste/copyableRanges.mjs +0 -2
  464. package/plugins/customBorders/customBorders.js +3 -6
  465. package/plugins/customBorders/customBorders.mjs +3 -6
  466. package/plugins/customBorders/utils.js +0 -2
  467. package/plugins/customBorders/utils.mjs +0 -2
  468. package/plugins/dialog/dialog.js +3 -6
  469. package/plugins/dialog/dialog.mjs +3 -6
  470. package/plugins/dialog/templates/base.js +2 -2
  471. package/plugins/dialog/templates/base.mjs +2 -2
  472. package/plugins/dialog/templates/confirm.js +2 -5
  473. package/plugins/dialog/templates/confirm.mjs +2 -5
  474. package/plugins/dialog/ui.js +13 -8
  475. package/plugins/dialog/ui.mjs +13 -8
  476. package/plugins/dragToScroll/dragToScroll.js +0 -1
  477. package/plugins/dragToScroll/dragToScroll.mjs +0 -1
  478. package/plugins/dropdownMenu/dropdownMenu.js +0 -1
  479. package/plugins/dropdownMenu/dropdownMenu.mjs +0 -1
  480. package/plugins/emptyDataState/emptyDataState.js +0 -6
  481. package/plugins/emptyDataState/emptyDataState.mjs +0 -6
  482. package/plugins/emptyDataState/ui.js +0 -4
  483. package/plugins/emptyDataState/ui.mjs +0 -4
  484. package/plugins/exportFile/dataProvider.js +0 -2
  485. package/plugins/exportFile/dataProvider.mjs +0 -2
  486. package/plugins/exportFile/exportFile.js +3 -3
  487. package/plugins/exportFile/exportFile.mjs +3 -3
  488. package/plugins/exportFile/types/_base.js +0 -1
  489. package/plugins/exportFile/types/_base.mjs +0 -1
  490. package/plugins/exportFile/types/csv.js +0 -3
  491. package/plugins/exportFile/types/csv.mjs +0 -3
  492. package/plugins/filters/component/_base.js +3 -3
  493. package/plugins/filters/component/_base.mjs +3 -3
  494. package/plugins/filters/component/actionBar.js +0 -2
  495. package/plugins/filters/component/actionBar.mjs +0 -2
  496. package/plugins/filters/component/condition.js +2 -4
  497. package/plugins/filters/component/condition.mjs +2 -4
  498. package/plugins/filters/component/operators.js +2 -5
  499. package/plugins/filters/component/operators.mjs +2 -5
  500. package/plugins/filters/component/value.js +4 -12
  501. package/plugins/filters/component/value.mjs +4 -12
  502. package/plugins/filters/condition/intlDate/after.js +31 -0
  503. package/plugins/filters/condition/intlDate/after.mjs +26 -0
  504. package/plugins/filters/condition/intlDate/before.js +31 -0
  505. package/plugins/filters/condition/intlDate/before.mjs +26 -0
  506. package/plugins/filters/condition/intlDate/between.js +30 -0
  507. package/plugins/filters/condition/intlDate/between.mjs +25 -0
  508. package/plugins/filters/condition/intlDate/today.js +27 -0
  509. package/plugins/filters/condition/intlDate/today.mjs +22 -0
  510. package/plugins/filters/condition/intlDate/tomorrow.js +28 -0
  511. package/plugins/filters/condition/intlDate/tomorrow.mjs +23 -0
  512. package/plugins/filters/condition/intlDate/yesterday.js +28 -0
  513. package/plugins/filters/condition/intlDate/yesterday.mjs +23 -0
  514. package/plugins/filters/condition/intlTime/after.js +31 -0
  515. package/plugins/filters/condition/intlTime/after.mjs +26 -0
  516. package/plugins/filters/condition/intlTime/before.js +31 -0
  517. package/plugins/filters/condition/intlTime/before.mjs +26 -0
  518. package/plugins/filters/condition/intlTime/between.js +30 -0
  519. package/plugins/filters/condition/intlTime/between.mjs +25 -0
  520. package/plugins/filters/conditionCollection.js +3 -9
  521. package/plugins/filters/conditionCollection.mjs +3 -9
  522. package/plugins/filters/conditionRegisterer.js +3 -3
  523. package/plugins/filters/conditionRegisterer.mjs +3 -3
  524. package/plugins/filters/conditionUpdateObserver.js +3 -7
  525. package/plugins/filters/conditionUpdateObserver.mjs +3 -7
  526. package/plugins/filters/constants.js +14 -2
  527. package/plugins/filters/constants.mjs +14 -2
  528. package/plugins/filters/dataFilter.js +1 -3
  529. package/plugins/filters/dataFilter.mjs +1 -3
  530. package/plugins/filters/filters.js +36 -44
  531. package/plugins/filters/filters.mjs +36 -44
  532. package/plugins/filters/logicalOperationRegisterer.js +2 -2
  533. package/plugins/filters/logicalOperationRegisterer.mjs +2 -2
  534. package/plugins/filters/logicalOperations/conjunction.js +0 -2
  535. package/plugins/filters/logicalOperations/conjunction.mjs +0 -2
  536. package/plugins/filters/logicalOperations/disjunction.js +0 -2
  537. package/plugins/filters/logicalOperations/disjunction.mjs +0 -2
  538. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -4
  539. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -4
  540. package/plugins/filters/menu/focusController.js +0 -2
  541. package/plugins/filters/menu/focusController.mjs +0 -2
  542. package/plugins/filters/ui/_base.js +0 -1
  543. package/plugins/filters/ui/_base.mjs +0 -1
  544. package/plugins/filters/ui/input.js +1 -1
  545. package/plugins/filters/ui/input.mjs +1 -1
  546. package/plugins/filters/ui/link.js +0 -1
  547. package/plugins/filters/ui/link.mjs +0 -1
  548. package/plugins/filters/ui/multipleSelect.js +0 -6
  549. package/plugins/filters/ui/multipleSelect.mjs +0 -6
  550. package/plugins/filters/ui/radioInput.js +0 -1
  551. package/plugins/filters/ui/radioInput.mjs +0 -1
  552. package/plugins/filters/ui/select.js +0 -1
  553. package/plugins/filters/ui/select.mjs +0 -1
  554. package/plugins/filters/utils.js +0 -11
  555. package/plugins/filters/utils.mjs +0 -11
  556. package/plugins/formulas/engine/register.js +0 -4
  557. package/plugins/formulas/engine/register.mjs +0 -4
  558. package/plugins/formulas/engine/settings.js +0 -3
  559. package/plugins/formulas/engine/settings.mjs +0 -3
  560. package/plugins/formulas/formulas.js +0 -14
  561. package/plugins/formulas/formulas.mjs +0 -14
  562. package/plugins/formulas/indexSyncer/axisSyncer.js +0 -5
  563. package/plugins/formulas/indexSyncer/axisSyncer.mjs +0 -5
  564. package/plugins/formulas/indexSyncer/index.js +0 -1
  565. package/plugins/formulas/indexSyncer/index.mjs +0 -1
  566. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +0 -1
  567. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +0 -1
  568. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +0 -3
  569. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +0 -3
  570. package/plugins/hiddenColumns/hiddenColumns.js +1 -13
  571. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -13
  572. package/plugins/hiddenRows/contextMenuItem/hideRow.js +0 -1
  573. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +0 -1
  574. package/plugins/hiddenRows/contextMenuItem/showRow.js +0 -3
  575. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +0 -3
  576. package/plugins/hiddenRows/hiddenRows.js +1 -13
  577. package/plugins/hiddenRows/hiddenRows.mjs +1 -13
  578. package/plugins/index.d.ts +0 -3
  579. package/plugins/index.js +0 -3
  580. package/plugins/index.mjs +1 -3
  581. package/plugins/loading/loading.js +0 -1
  582. package/plugins/loading/loading.mjs +0 -1
  583. package/plugins/manualColumnFreeze/manualColumnFreeze.js +0 -4
  584. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +0 -4
  585. package/plugins/manualColumnMove/manualColumnMove.js +2 -36
  586. package/plugins/manualColumnMove/manualColumnMove.mjs +2 -36
  587. package/plugins/manualColumnMove/ui/_base.js +0 -1
  588. package/plugins/manualColumnMove/ui/_base.mjs +0 -1
  589. package/plugins/manualColumnResize/manualColumnResize.js +4 -39
  590. package/plugins/manualColumnResize/manualColumnResize.mjs +4 -39
  591. package/plugins/manualRowMove/manualRowMove.js +2 -37
  592. package/plugins/manualRowMove/manualRowMove.mjs +2 -37
  593. package/plugins/manualRowMove/ui/_base.js +0 -1
  594. package/plugins/manualRowMove/ui/_base.mjs +0 -1
  595. package/plugins/manualRowResize/manualRowResize.js +3 -38
  596. package/plugins/manualRowResize/manualRowResize.mjs +3 -38
  597. package/plugins/mergeCells/calculations/autofill.js +0 -3
  598. package/plugins/mergeCells/calculations/autofill.mjs +0 -3
  599. package/plugins/mergeCells/calculations/selection.js +0 -2
  600. package/plugins/mergeCells/calculations/selection.mjs +0 -2
  601. package/plugins/mergeCells/cellCoords.js +0 -1
  602. package/plugins/mergeCells/cellCoords.mjs +0 -1
  603. package/plugins/mergeCells/cellsCollection.js +0 -14
  604. package/plugins/mergeCells/cellsCollection.mjs +0 -14
  605. package/plugins/mergeCells/focusOrder.js +0 -4
  606. package/plugins/mergeCells/focusOrder.mjs +0 -4
  607. package/plugins/mergeCells/mergeCells.js +0 -14
  608. package/plugins/mergeCells/mergeCells.mjs +0 -14
  609. package/plugins/multiColumnSorting/domHelpers.js +0 -3
  610. package/plugins/multiColumnSorting/domHelpers.mjs +0 -3
  611. package/plugins/multiColumnSorting/multiColumnSorting.js +0 -1
  612. package/plugins/multiColumnSorting/multiColumnSorting.mjs +0 -1
  613. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +0 -2
  614. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +0 -2
  615. package/plugins/nestedHeaders/nestedHeaders.js +0 -4
  616. package/plugins/nestedHeaders/nestedHeaders.mjs +0 -4
  617. package/plugins/nestedHeaders/stateManager/headersTree.js +0 -1
  618. package/plugins/nestedHeaders/stateManager/headersTree.mjs +0 -1
  619. package/plugins/nestedHeaders/stateManager/index.js +0 -4
  620. package/plugins/nestedHeaders/stateManager/index.mjs +0 -4
  621. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +0 -1
  622. package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +0 -1
  623. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +0 -7
  624. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +0 -7
  625. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.js +0 -7
  626. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.mjs +0 -7
  627. package/plugins/nestedHeaders/stateManager/nodeModifiers/hideColumn.js +3 -4
  628. package/plugins/nestedHeaders/stateManager/nodeModifiers/hideColumn.mjs +3 -4
  629. package/plugins/nestedHeaders/stateManager/nodeModifiers/index.js +2 -2
  630. package/plugins/nestedHeaders/stateManager/nodeModifiers/index.mjs +2 -2
  631. package/plugins/nestedHeaders/stateManager/nodeModifiers/showColumn.js +3 -3
  632. package/plugins/nestedHeaders/stateManager/nodeModifiers/showColumn.mjs +3 -3
  633. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +0 -1
  634. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +0 -1
  635. package/plugins/nestedHeaders/stateManager/sourceSettings.js +3 -4
  636. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +3 -4
  637. package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
  638. package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -2
  639. package/plugins/nestedRows/data/dataManager.js +0 -2
  640. package/plugins/nestedRows/data/dataManager.mjs +0 -2
  641. package/plugins/nestedRows/nestedRows.js +0 -12
  642. package/plugins/nestedRows/nestedRows.mjs +0 -12
  643. package/plugins/nestedRows/ui/_base.js +0 -1
  644. package/plugins/nestedRows/ui/_base.mjs +0 -1
  645. package/plugins/nestedRows/ui/collapsing.js +0 -1
  646. package/plugins/nestedRows/ui/collapsing.mjs +0 -1
  647. package/plugins/nestedRows/ui/contextMenu.js +0 -1
  648. package/plugins/nestedRows/ui/contextMenu.mjs +0 -1
  649. package/plugins/nestedRows/ui/headers.js +2 -4
  650. package/plugins/nestedRows/ui/headers.mjs +2 -4
  651. package/plugins/nestedRows/utils/rowMoveController.js +0 -6
  652. package/plugins/nestedRows/utils/rowMoveController.mjs +0 -6
  653. package/plugins/pagination/pagination.js +1 -7
  654. package/plugins/pagination/pagination.mjs +1 -7
  655. package/plugins/pagination/strategies/autoPageSize.js +0 -2
  656. package/plugins/pagination/strategies/autoPageSize.mjs +0 -2
  657. package/plugins/pagination/strategies/fixedPageSize.js +0 -1
  658. package/plugins/pagination/strategies/fixedPageSize.mjs +0 -1
  659. package/plugins/pagination/strategies/index.js +2 -2
  660. package/plugins/pagination/strategies/index.mjs +2 -2
  661. package/plugins/pagination/ui.js +0 -3
  662. package/plugins/pagination/ui.mjs +0 -3
  663. package/plugins/registry.js +2 -2
  664. package/plugins/registry.mjs +2 -2
  665. package/plugins/search/search.js +0 -2
  666. package/plugins/search/search.mjs +0 -2
  667. package/plugins/stretchColumns/calculator.js +1 -6
  668. package/plugins/stretchColumns/calculator.mjs +1 -6
  669. package/plugins/stretchColumns/strategies/_base.js +0 -1
  670. package/plugins/stretchColumns/strategies/_base.mjs +0 -1
  671. package/plugins/stretchColumns/strategies/all.js +0 -4
  672. package/plugins/stretchColumns/strategies/all.mjs +0 -4
  673. package/plugins/stretchColumns/strategies/last.js +0 -3
  674. package/plugins/stretchColumns/strategies/last.mjs +0 -3
  675. package/plugins/stretchColumns/stretchColumns.js +0 -3
  676. package/plugins/stretchColumns/stretchColumns.mjs +0 -3
  677. package/plugins/touchScroll/touchScroll.js +0 -2
  678. package/plugins/touchScroll/touchScroll.mjs +0 -2
  679. package/plugins/trimRows/trimRows.js +1 -12
  680. package/plugins/trimRows/trimRows.mjs +1 -12
  681. package/plugins/undoRedo/actions/_base.js +3 -3
  682. package/plugins/undoRedo/actions/_base.mjs +3 -3
  683. package/plugins/undoRedo/actions/cellAlignment.js +0 -1
  684. package/plugins/undoRedo/actions/cellAlignment.mjs +0 -1
  685. package/plugins/undoRedo/actions/columnMove.js +0 -3
  686. package/plugins/undoRedo/actions/columnMove.mjs +0 -3
  687. package/plugins/undoRedo/actions/columnSort.js +0 -1
  688. package/plugins/undoRedo/actions/columnSort.mjs +0 -1
  689. package/plugins/undoRedo/actions/createColumn.js +0 -1
  690. package/plugins/undoRedo/actions/createColumn.mjs +0 -1
  691. package/plugins/undoRedo/actions/createRow.js +0 -1
  692. package/plugins/undoRedo/actions/createRow.mjs +0 -1
  693. package/plugins/undoRedo/actions/dataChange.js +0 -6
  694. package/plugins/undoRedo/actions/dataChange.mjs +0 -6
  695. package/plugins/undoRedo/actions/filters.js +0 -3
  696. package/plugins/undoRedo/actions/filters.mjs +0 -3
  697. package/plugins/undoRedo/actions/mergeCells.js +0 -1
  698. package/plugins/undoRedo/actions/mergeCells.mjs +0 -1
  699. package/plugins/undoRedo/actions/removeColumn.js +0 -4
  700. package/plugins/undoRedo/actions/removeColumn.mjs +0 -4
  701. package/plugins/undoRedo/actions/removeRow.js +0 -4
  702. package/plugins/undoRedo/actions/removeRow.mjs +0 -4
  703. package/plugins/undoRedo/actions/rowMove.js +0 -3
  704. package/plugins/undoRedo/actions/rowMove.mjs +0 -3
  705. package/plugins/undoRedo/actions/unmergeCells.js +0 -1
  706. package/plugins/undoRedo/actions/unmergeCells.mjs +0 -1
  707. package/plugins/undoRedo/undoRedo.js +0 -87
  708. package/plugins/undoRedo/undoRedo.mjs +0 -87
  709. package/plugins/undoRedo/utils.js +1 -13
  710. package/plugins/undoRedo/utils.mjs +1 -13
  711. package/renderers/baseRenderer/baseRenderer.js +3 -1
  712. package/renderers/baseRenderer/baseRenderer.mjs +3 -1
  713. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -7
  714. package/renderers/checkboxRenderer/checkboxRenderer.mjs +2 -7
  715. package/renderers/dateRenderer/dateRenderer.js +6 -0
  716. package/renderers/dateRenderer/dateRenderer.mjs +6 -0
  717. package/renderers/factory.d.ts +20 -0
  718. package/renderers/factory.js +51 -0
  719. package/renderers/factory.mjs +47 -0
  720. package/renderers/htmlRenderer/htmlRenderer.js +1 -4
  721. package/renderers/htmlRenderer/htmlRenderer.mjs +1 -4
  722. package/renderers/index.d.ts +7 -0
  723. package/renderers/index.js +10 -0
  724. package/renderers/index.mjs +7 -2
  725. package/renderers/intlDateRenderer/index.d.ts +1 -0
  726. package/renderers/intlDateRenderer/index.js +7 -0
  727. package/renderers/intlDateRenderer/index.mjs +1 -0
  728. package/renderers/intlDateRenderer/intlDateRenderer.d.ts +6 -0
  729. package/renderers/intlDateRenderer/intlDateRenderer.js +58 -0
  730. package/renderers/intlDateRenderer/intlDateRenderer.mjs +53 -0
  731. package/renderers/intlTimeRenderer/index.d.ts +1 -0
  732. package/renderers/intlTimeRenderer/index.js +7 -0
  733. package/renderers/intlTimeRenderer/index.mjs +1 -0
  734. package/renderers/intlTimeRenderer/intlTimeRenderer.d.ts +6 -0
  735. package/renderers/intlTimeRenderer/intlTimeRenderer.js +57 -0
  736. package/renderers/intlTimeRenderer/intlTimeRenderer.mjs +52 -0
  737. package/renderers/multiSelectRenderer/index.js +7 -0
  738. package/renderers/multiSelectRenderer/index.mjs +1 -0
  739. package/renderers/multiSelectRenderer/multiSelectRenderer.js +60 -0
  740. package/renderers/multiSelectRenderer/multiSelectRenderer.mjs +56 -0
  741. package/renderers/multiSelectRenderer/utils/utils.js +270 -0
  742. package/renderers/multiSelectRenderer/utils/utils.mjs +258 -0
  743. package/renderers/numericRenderer/index.d.ts +1 -1
  744. package/renderers/numericRenderer/index.js +1 -1
  745. package/renderers/numericRenderer/index.mjs +1 -1
  746. package/renderers/numericRenderer/numericRenderer.d.ts +1 -0
  747. package/renderers/numericRenderer/numericRenderer.js +19 -22
  748. package/renderers/numericRenderer/numericRenderer.mjs +18 -20
  749. package/renderers/numericRenderer/utils.js +64 -0
  750. package/renderers/numericRenderer/utils.mjs +57 -0
  751. package/renderers/passwordRenderer/passwordRenderer.js +22 -12
  752. package/renderers/passwordRenderer/passwordRenderer.mjs +21 -12
  753. package/renderers/registry.d.ts +1 -1
  754. package/renderers/registry.js +51 -3
  755. package/renderers/registry.mjs +51 -3
  756. package/renderers/textRenderer/textRenderer.js +0 -2
  757. package/renderers/textRenderer/textRenderer.mjs +0 -2
  758. package/renderers/timeRenderer/timeRenderer.js +6 -0
  759. package/renderers/timeRenderer/timeRenderer.mjs +6 -0
  760. package/selection/highlight/highlight.js +0 -2
  761. package/selection/highlight/highlight.mjs +0 -2
  762. package/selection/highlight/visualSelection.js +0 -1
  763. package/selection/highlight/visualSelection.mjs +0 -1
  764. package/selection/index.js +0 -2
  765. package/selection/mouseEventHandler.js +0 -2
  766. package/selection/mouseEventHandler.mjs +0 -2
  767. package/selection/range.js +0 -7
  768. package/selection/range.mjs +0 -7
  769. package/selection/selection.js +6 -15
  770. package/selection/selection.mjs +6 -15
  771. package/selection/transformation/_base.js +6 -6
  772. package/selection/transformation/_base.mjs +6 -6
  773. package/selection/transformation/focus.js +2 -2
  774. package/selection/transformation/focus.mjs +2 -2
  775. package/selection/utils.js +3 -13
  776. package/selection/utils.mjs +3 -13
  777. package/settings.d.ts +9 -3
  778. package/shortcutContexts/commands/editor/open.js +0 -2
  779. package/shortcutContexts/commands/editor/open.mjs +0 -2
  780. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -2
  781. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -2
  782. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -2
  783. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -2
  784. package/shortcutContexts/grid.js +11 -12
  785. package/shortcutContexts/grid.mjs +11 -12
  786. package/shortcutContexts/index.js +0 -2
  787. package/shortcuts/context.js +4 -8
  788. package/shortcuts/context.mjs +4 -8
  789. package/shortcuts/keyObserver.js +0 -7
  790. package/shortcuts/keyObserver.mjs +0 -7
  791. package/shortcuts/manager.js +2 -2
  792. package/shortcuts/manager.mjs +2 -2
  793. package/shortcuts/recorder.js +0 -1
  794. package/shortcuts/recorder.mjs +0 -1
  795. package/shortcuts/utils.js +0 -2
  796. package/shortcuts/utils.mjs +0 -2
  797. package/styles/handsontable.css +302 -83
  798. package/styles/handsontable.min.css +3 -3
  799. package/styles/handsontableStyles.js +6 -0
  800. package/styles/handsontableStyles.mjs +4 -0
  801. package/styles/ht-icons-horizon.css +55 -61
  802. package/styles/ht-icons-horizon.min.css +3 -3
  803. package/styles/ht-icons-main.css +55 -61
  804. package/styles/ht-icons-main.min.css +3 -3
  805. package/styles/ht-theme-classic-no-icons.css +302 -374
  806. package/styles/ht-theme-classic-no-icons.min.css +3 -3
  807. package/styles/ht-theme-classic.css +383 -408
  808. package/styles/ht-theme-classic.min.css +3 -3
  809. package/styles/ht-theme-horizon-no-icons.css +300 -378
  810. package/styles/ht-theme-horizon-no-icons.min.css +3 -3
  811. package/styles/ht-theme-horizon.css +381 -412
  812. package/styles/ht-theme-horizon.min.css +3 -3
  813. package/styles/ht-theme-main-no-icons.css +302 -371
  814. package/styles/ht-theme-main-no-icons.min.css +3 -3
  815. package/styles/ht-theme-main.css +383 -405
  816. package/styles/ht-theme-main.min.css +3 -3
  817. package/tableView.js +16 -4
  818. package/tableView.mjs +16 -4
  819. package/themes/engine/builder.js +251 -0
  820. package/themes/engine/builder.mjs +246 -0
  821. package/themes/engine/index.js +7 -0
  822. package/themes/engine/index.mjs +2 -0
  823. package/themes/engine/manager.js +188 -0
  824. package/themes/engine/manager.mjs +183 -0
  825. package/themes/engine/utils/cssVariables.js +132 -0
  826. package/themes/engine/utils/cssVariables.mjs +128 -0
  827. package/themes/engine/utils/validation.js +348 -0
  828. package/themes/engine/utils/validation.mjs +342 -0
  829. package/themes/index.js +15 -0
  830. package/themes/index.mjs +2 -0
  831. package/themes/registry.js +131 -0
  832. package/themes/registry.mjs +122 -0
  833. package/themes/static/variables/colors/ant.d.ts +4 -0
  834. package/themes/static/variables/colors/ant.js +32 -0
  835. package/themes/static/variables/colors/ant.mjs +30 -0
  836. package/themes/static/variables/colors/classic.d.ts +4 -0
  837. package/themes/static/variables/colors/classic.js +32 -0
  838. package/themes/static/variables/colors/classic.mjs +30 -0
  839. package/themes/static/variables/colors/horizon.d.ts +4 -0
  840. package/themes/static/variables/colors/horizon.js +32 -0
  841. package/themes/static/variables/colors/horizon.mjs +30 -0
  842. package/themes/static/variables/colors/main.d.ts +4 -0
  843. package/themes/static/variables/colors/main.js +32 -0
  844. package/themes/static/variables/colors/main.mjs +30 -0
  845. package/themes/static/variables/colors/material.d.ts +4 -0
  846. package/themes/static/variables/colors/material.js +32 -0
  847. package/themes/static/variables/colors/material.mjs +30 -0
  848. package/themes/static/variables/colors/shadcn.d.ts +4 -0
  849. package/themes/static/variables/colors/shadcn.js +32 -0
  850. package/themes/static/variables/colors/shadcn.mjs +30 -0
  851. package/themes/static/variables/density.d.ts +4 -0
  852. package/themes/static/variables/density.js +59 -0
  853. package/themes/static/variables/density.mjs +57 -0
  854. package/themes/static/variables/helpers/iconsMap.d.ts +3 -0
  855. package/themes/static/variables/helpers/iconsMap.js +139 -0
  856. package/themes/static/variables/helpers/iconsMap.mjs +135 -0
  857. package/themes/static/variables/icons/horizon.d.ts +4 -0
  858. package/themes/static/variables/icons/horizon.js +29 -0
  859. package/themes/static/variables/icons/horizon.mjs +28 -0
  860. package/themes/static/variables/icons/main.d.ts +4 -0
  861. package/themes/static/variables/icons/main.js +29 -0
  862. package/themes/static/variables/icons/main.mjs +28 -0
  863. package/themes/static/variables/sizing.d.ts +4 -0
  864. package/themes/static/variables/sizing.js +22 -0
  865. package/themes/static/variables/sizing.mjs +20 -0
  866. package/themes/static/variables/tokens/classic.d.ts +4 -0
  867. package/themes/static/variables/tokens/classic.js +270 -0
  868. package/themes/static/variables/tokens/classic.mjs +268 -0
  869. package/themes/static/variables/tokens/horizon.d.ts +4 -0
  870. package/themes/static/variables/tokens/horizon.js +270 -0
  871. package/themes/static/variables/tokens/horizon.mjs +268 -0
  872. package/themes/static/variables/tokens/main.d.ts +4 -0
  873. package/themes/static/variables/tokens/main.js +270 -0
  874. package/themes/static/variables/tokens/main.mjs +268 -0
  875. package/themes/theme/classic.d.ts +3 -0
  876. package/themes/theme/classic.js +14 -0
  877. package/themes/theme/classic.mjs +11 -0
  878. package/themes/theme/horizon.d.ts +3 -0
  879. package/themes/theme/horizon.js +14 -0
  880. package/themes/theme/horizon.mjs +11 -0
  881. package/themes/theme/index.d.ts +5 -0
  882. package/themes/theme/index.js +9 -0
  883. package/themes/theme/index.mjs +3 -0
  884. package/themes/theme/main.d.ts +3 -0
  885. package/themes/theme/main.js +14 -0
  886. package/themes/theme/main.mjs +11 -0
  887. package/themes.d.ts +491 -0
  888. package/translations/changesObservable/observable.js +0 -10
  889. package/translations/changesObservable/observable.mjs +0 -10
  890. package/translations/changesObservable/observer.js +0 -1
  891. package/translations/changesObservable/observer.mjs +0 -1
  892. package/translations/changesObservable/utils.js +0 -1
  893. package/translations/changesObservable/utils.mjs +0 -1
  894. package/translations/index.js +0 -2
  895. package/translations/indexMapper.js +3 -14
  896. package/translations/indexMapper.mjs +3 -14
  897. package/translations/mapCollections/aggregatedCollection.js +0 -2
  898. package/translations/mapCollections/aggregatedCollection.mjs +0 -2
  899. package/translations/mapCollections/index.js +0 -2
  900. package/translations/mapCollections/mapCollection.js +0 -3
  901. package/translations/mapCollections/mapCollection.mjs +0 -3
  902. package/translations/maps/hidingMap.js +0 -1
  903. package/translations/maps/hidingMap.mjs +0 -1
  904. package/translations/maps/index.js +2 -4
  905. package/translations/maps/index.mjs +2 -2
  906. package/translations/maps/indexMap.js +0 -2
  907. package/translations/maps/indexMap.mjs +0 -2
  908. package/translations/maps/linkedPhysicalIndexToValueMap.js +0 -3
  909. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +0 -3
  910. package/translations/maps/trimmingMap.js +0 -1
  911. package/translations/maps/trimmingMap.mjs +0 -1
  912. package/translations/maps/utils/actionsOnIndexes.js +0 -2
  913. package/translations/maps/utils/actionsOnIndexes.mjs +0 -2
  914. package/translations/maps/utils/index.js +2 -2
  915. package/translations/maps/utils/index.mjs +2 -2
  916. package/translations/maps/utils/physicallyIndexed.js +0 -2
  917. package/translations/maps/utils/physicallyIndexed.mjs +0 -2
  918. package/utils/dataStructures/linkedList.js +0 -1
  919. package/utils/dataStructures/linkedList.mjs +0 -1
  920. package/utils/dataStructures/priorityMap.js +3 -5
  921. package/utils/dataStructures/priorityMap.mjs +3 -5
  922. package/utils/dataStructures/queue.js +0 -1
  923. package/utils/dataStructures/queue.mjs +0 -1
  924. package/utils/dataStructures/stack.js +0 -1
  925. package/utils/dataStructures/stack.mjs +0 -1
  926. package/utils/dataStructures/tree.js +2 -3
  927. package/utils/dataStructures/tree.mjs +2 -3
  928. package/utils/dataStructures/uniqueMap.js +2 -4
  929. package/utils/dataStructures/uniqueMap.mjs +2 -4
  930. package/utils/dataStructures/uniqueSet.js +2 -9
  931. package/utils/dataStructures/uniqueSet.mjs +2 -9
  932. package/utils/ghostTable.js +3 -6
  933. package/utils/ghostTable.mjs +3 -6
  934. package/utils/interval.js +0 -1
  935. package/utils/interval.mjs +0 -1
  936. package/utils/paginator.js +0 -7
  937. package/utils/paginator.mjs +0 -7
  938. package/utils/parseTable.js +0 -6
  939. package/utils/parseTable.mjs +0 -6
  940. package/utils/samplesGenerator.js +2 -3
  941. package/utils/samplesGenerator.mjs +2 -3
  942. package/utils/stylesHandler.js +49 -60
  943. package/utils/stylesHandler.mjs +48 -60
  944. package/validators/autocompleteValidator/autocompleteValidator.js +9 -1
  945. package/validators/autocompleteValidator/autocompleteValidator.mjs +10 -2
  946. package/validators/dateValidator/dateValidator.js +2 -2
  947. package/validators/dateValidator/dateValidator.mjs +1 -1
  948. package/validators/index.d.ts +6 -0
  949. package/validators/index.js +12 -0
  950. package/validators/index.mjs +7 -1
  951. package/validators/intlDateValidator/index.d.ts +1 -0
  952. package/validators/intlDateValidator/index.js +8 -0
  953. package/validators/intlDateValidator/index.mjs +1 -0
  954. package/validators/intlDateValidator/intlDateValidator.d.ts +6 -0
  955. package/validators/intlDateValidator/intlDateValidator.js +39 -0
  956. package/validators/intlDateValidator/intlDateValidator.mjs +34 -0
  957. package/validators/intlTimeValidator/index.d.ts +1 -0
  958. package/validators/intlTimeValidator/index.js +8 -0
  959. package/validators/intlTimeValidator/index.mjs +1 -0
  960. package/validators/intlTimeValidator/intlTimeValidator.d.ts +6 -0
  961. package/validators/intlTimeValidator/intlTimeValidator.js +39 -0
  962. package/validators/intlTimeValidator/intlTimeValidator.mjs +34 -0
  963. package/validators/multiSelectValidator/index.js +6 -0
  964. package/validators/multiSelectValidator/index.mjs +1 -0
  965. package/validators/multiSelectValidator/multiSelectValidator.js +84 -0
  966. package/validators/multiSelectValidator/multiSelectValidator.mjs +80 -0
  967. package/validators/registry.js +2 -2
  968. package/validators/registry.mjs +2 -2
  969. package/dist/README.md +0 -54
  970. package/dist/handsontable.css +0 -2551
  971. package/dist/handsontable.full.css +0 -2781
  972. package/dist/handsontable.full.min.css +0 -51
  973. package/dist/handsontable.min.css +0 -46
  974. package/helpers/date.d.ts +0 -1
  975. package/helpers/date.js +0 -22
  976. package/helpers/date.mjs +0 -18
  977. package/plugins/persistentState/index.d.ts +0 -1
  978. package/plugins/persistentState/index.js +0 -7
  979. package/plugins/persistentState/index.mjs +0 -1
  980. package/plugins/persistentState/persistentState.d.ts +0 -16
  981. package/plugins/persistentState/persistentState.js +0 -159
  982. package/plugins/persistentState/persistentState.mjs +0 -154
  983. package/plugins/persistentState/storage.js +0 -120
  984. package/plugins/persistentState/storage.mjs +0 -117
@@ -923,7 +923,7 @@ var _default = () => {
923
923
  * | `forceNumeric` | `true` \| `false` | [Treat non-numerics as numerics](@/guides/columns/column-summary/column-summary.md#force-numeric-values) |
924
924
  * | `reversedRowCoords` | `true` \| `false` | [Reverse row coordinates](@/guides/columns/column-summary/column-summary.md#step-5-make-room-for-the-destination-cell) |
925
925
  * | `suppressDataTypeErrors` | `true` \| `false` | [Suppress data type errors](@/guides/columns/column-summary/column-summary.md#throw-data-type-errors) |
926
- * | `readOnly` | `true` \| `false` | Make summary cell read-only |
926
+ * | `readOnly` | `true` \| `false` | Make summary cell [read-only](@/api/options.md#readonly) |
927
927
  * | `roundFloat` | `true` \| `false` \| A number | [Round summary result](@/guides/columns/column-summary/column-summary.md#round-a-column-summary-result) |
928
928
  * | `customFunction` | A function | [Custom summary function](@/guides/columns/column-summary/column-summary.md#implement-a-custom-summary-function) |
929
929
  *
@@ -1292,6 +1292,7 @@ var _default = () => {
1292
1292
  * - [Time cell type](@/guides/cell-types/time-cell-type/time-cell-type.md)
1293
1293
  * - [`dateFormat`](#dateFormat)
1294
1294
  *
1295
+ * @deprecated This option is deprecated and will be removed in the next major release.
1295
1296
  * @memberof Options#
1296
1297
  * @type {boolean}
1297
1298
  * @default false
@@ -1641,61 +1642,239 @@ var _default = () => {
1641
1642
  */
1642
1643
  dataSchema: undefined,
1643
1644
  /**
1644
- * The `dateFormat` option configures the date format accepted by [`date`](@/guides/cell-types/date-cell-type/date-cell-type.md) cells.
1645
+ * Configures the date format for date cells. Accepts either a string (legacy, for [`date`](@/guides/cell-types/date-cell-type/date-cell-type.md)
1646
+ * cells) or an object of [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat)
1647
+ * options (for [`intl-date`](@/guides/cell-types/date-cell-type/date-cell-type.md) cells).
1645
1648
  *
1646
- * You can set the `dateFormat` option to a string with a proper date format. The default value is: `'DD/MM/YYYY'`.
1649
+ * ::: warning
1650
+ * The string form of `dateFormat` is deprecated and will be removed in the next major release.
1651
+ * It is used only by the `date` cell type (moment.js-based). Use the `intl-date` cell type
1652
+ * with an `Intl.DateTimeFormat` options object instead. In the next major release, `intl-date`
1653
+ * will become the default `date` cell type, and `intl-date` will be an alias for `date`.
1654
+ * :::
1655
+ *
1656
+ * **Object form (Intl.DateTimeFormat options):**
1647
1657
  *
1648
- * To automatically correct dates whose format doesn't match the `dateFormat` setting, use the [`correctFormat`](#correctFormat) option.
1658
+ * The object form is supported only when the cell type is `intl-date`. The locale is controlled separately via the [`locale`](@/api/options.md#locale) option.
1659
+ *
1660
+ * ::: tip Source data format
1661
+ * For `intl-date` cells, source data must be in an ISO 8601 date format (`YYYY-MM-DD`). Otherwise operations such
1662
+ * as sorting and filtering can be unstable or unpredictable. The `dateFormat` object affects only how dates are
1663
+ * displayed; the underlying value should remain ISO.
1664
+ * :::
1665
+ *
1666
+ * **Style shortcuts:**
1667
+ *
1668
+ * | Property | Possible values | Description |
1669
+ * | ------------ | -------------------------------------------------- | -------------------------------------------------------- |
1670
+ * | `dateStyle` | `'full'`, `'long'`, `'medium'`, `'short'` | Date formatting style (expands to weekday, day, month, year, era) |
1671
+ * | `timeStyle` | `'full'`, `'long'`, `'medium'`, `'short'` | Time formatting style (expands to hour, minute, second, timeZoneName) |
1672
+ *
1673
+ * **Date-time component options:**
1674
+ *
1675
+ * | Property | Possible values | Description |
1676
+ * | ------------------------ | ------------------------------------------------------------------------------- | ------------------------------------ |
1677
+ * | `weekday` | `'long'`, `'short'`, `'narrow'` | Representation of the weekday |
1678
+ * | `era` | `'long'`, `'short'`, `'narrow'` | Representation of the era |
1679
+ * | `year` | `'numeric'`, `'2-digit'` | Representation of the year |
1680
+ * | `month` | `'numeric'`, `'2-digit'`, `'long'`, `'short'`, `'narrow'` | Representation of the month |
1681
+ * | `day` | `'numeric'`, `'2-digit'` | Representation of the day |
1682
+ * | `dayPeriod` | `'narrow'`, `'short'`, `'long'` | Day period (e.g. "am", "noon") |
1683
+ * | `hour` | `'numeric'`, `'2-digit'` | Representation of the hour |
1684
+ * | `minute` | `'numeric'`, `'2-digit'` | Representation of the minute |
1685
+ * | `second` | `'numeric'`, `'2-digit'` | Representation of the second |
1686
+ * | `fractionalSecondDigits` | `1`, `2`, `3` | Fraction-of-second digits |
1687
+ * | `timeZoneName` | `'long'`, `'short'`, `'shortOffset'`, `'longOffset'`, `'shortGeneric'`, `'longGeneric'` | Time zone display |
1688
+ *
1689
+ * **Locale and other options:**
1690
+ *
1691
+ * | Property | Possible values | Description |
1692
+ * | ----------------- | -------------------------------------------------- | ------------------------------ |
1693
+ * | `localeMatcher` | `'best fit'` (default), `'lookup'` | Locale matching algorithm |
1694
+ * | `calendar` | `'chinese'`, `'gregory'`, `'persian'`, etc. | Calendar to use |
1695
+ * | `numberingSystem` | `'latn'`, `'arab'`, `'hans'`, etc. | Numbering system |
1696
+ * | `timeZone` | IANA time zone (e.g. `'UTC'`, `'America/New_York'`) | Time zone for formatting |
1697
+ * | `hour12` | `true`, `false` | Use 12-hour vs 24-hour time |
1698
+ * | `hourCycle` | `'h11'`, `'h12'`, `'h23'`, `'h24'` | Hour cycle |
1699
+ * | `formatMatcher` | `'basic'`, `'best fit'` (default) | Format matching algorithm |
1700
+ *
1701
+ * For complete reference, see [MDN: Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat).
1649
1702
  *
1650
1703
  * Read more:
1651
1704
  * - [Date cell type](@/guides/cell-types/date-cell-type/date-cell-type.md)
1652
- * - [`correctFormat`](#correctFormat)
1653
- * - [`defaultDate`](#defaultDate)
1705
+ * - [`locale`](@/api/options.md#locale)
1706
+ *
1707
+ * ---
1708
+ *
1709
+ * **Deprecated: string form**
1710
+ *
1711
+ * Passing a string (e.g. `'DD/MM/YYYY'`, `'YYYY-MM-DD'`) is deprecated and works only with the `date` cell type.
1712
+ * Migrate to the `intl-date` cell type and pass an `Intl.DateTimeFormat` options object.
1713
+ *
1714
+ * **Migration example:**
1715
+ *
1716
+ * ```js
1717
+ * // Before (deprecated)
1718
+ * columns: [{
1719
+ * type: 'date',
1720
+ * dateFormat: 'YYYY-MM-DD'
1721
+ * }]
1722
+ *
1723
+ * // After (recommended)
1724
+ * columns: [{
1725
+ * type: 'intl-date',
1726
+ * locale: 'en-US',
1727
+ * dateFormat: {
1728
+ * year: 'numeric',
1729
+ * month: '2-digit',
1730
+ * day: '2-digit'
1731
+ * }
1732
+ * }]
1733
+ * ```
1654
1734
  *
1655
1735
  * @memberof Options#
1656
- * @type {string}
1736
+ * @type {string|object}
1657
1737
  * @default 'DD/MM/YYYY'
1658
1738
  * @category Core
1659
1739
  *
1660
1740
  * @example
1661
1741
  * ```js
1742
+ * // intl-date cell type with Intl options
1662
1743
  * columns: [
1663
1744
  * {
1664
- * // set the `type` of each cell in this column to `date`
1665
- * type: 'date',
1666
- * // for every `date` cell of this column, set the date format to `YYYY-MM-DD`
1667
- * dateFormat: 'YYYY-MM-DD',
1668
- * },
1669
- * ],
1745
+ * type: 'intl-date',
1746
+ * locale: 'en-US',
1747
+ * dateFormat: {
1748
+ * dateStyle: 'short'
1749
+ * }
1750
+ * }
1751
+ * ]
1752
+ * ```
1753
+ *
1754
+ * @example
1755
+ * ```js
1756
+ * // Legacy: date cell type with string format (deprecated)
1757
+ * columns: [
1758
+ * {
1759
+ * type: 'date',
1760
+ * dateFormat: 'YYYY-MM-DD'
1761
+ * }
1762
+ * ]
1670
1763
  * ```
1671
1764
  */
1672
1765
  dateFormat: 'DD/MM/YYYY',
1673
1766
  /**
1674
- * The `timeFormat` option configures the time format accepted by [`time`](@/guides/cell-types/time-cell-type/time-cell-type.md) cells.
1767
+ * Configures the time format for time cells. Accepts either a string (legacy, for [`time`](@/guides/cell-types/time-cell-type/time-cell-type.md)
1768
+ * cells) or an object of [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat)
1769
+ * options (for [`intl-time`](@/guides/cell-types/time-cell-type/time-cell-type.md) cells).
1770
+ *
1771
+ * ::: warning
1772
+ * The string form of `timeFormat` is deprecated and will be removed in the next major release.
1773
+ * It is used only by the `time` cell type. Use the `intl-time` cell type with an `Intl.DateTimeFormat`
1774
+ * options object instead.
1775
+ * :::
1675
1776
  *
1676
- * You can set the `timeFormat` option to a string with a proper time format. The default value is: `'h:mm:ss a'`.
1777
+ * **Object form (Intl.DateTimeFormat options):**
1677
1778
  *
1678
- * To automatically correct times whose format doesn't match the `timeFormat` setting, use the [`correctFormat`](#correctFormat) option.
1779
+ * The object form is supported only when the cell type is `intl-time`. The locale is controlled separately
1780
+ * via the [`locale`](@/api/options.md#locale) option.
1781
+ *
1782
+ * ::: tip Source data format
1783
+ * For `intl-time` cells, source data must be in 24-hour time format (`HH:mm`, `HH:mm:ss`, or `HH:mm:ss.SSS`), matching
1784
+ * the HTML `input type="time"` value. Otherwise operations such as sorting and filtering can be unstable or unpredictable.
1785
+ * The `timeFormat` object affects only how times are displayed; the underlying value should remain in that format.
1786
+ * :::
1787
+ *
1788
+ * **Style shortcuts:**
1789
+ *
1790
+ * | Property | Possible values | Description |
1791
+ * | ------------ | -------------------------------------------------- | -------------------------------------------------------- |
1792
+ * | `timeStyle` | `'full'`, `'long'`, `'medium'`, `'short'` | Time formatting style (expands to hour, minute, second, timeZoneName) |
1793
+ *
1794
+ * **Time component options:**
1795
+ *
1796
+ * | Property | Possible values | Description |
1797
+ * | ------------------------ | ------------------------------------------------------------------------------- | ------------------------------------ |
1798
+ * | `hour` | `'numeric'`, `'2-digit'` | Representation of the hour |
1799
+ * | `minute` | `'numeric'`, `'2-digit'` | Representation of the minute |
1800
+ * | `second` | `'numeric'`, `'2-digit'` | Representation of the second |
1801
+ * | `fractionalSecondDigits` | `1`, `2`, `3` | Fraction-of-second digits |
1802
+ * | `dayPeriod` | `'narrow'`, `'short'`, `'long'` | Day period (e.g. "am", "noon") |
1803
+ * | `timeZoneName` | `'long'`, `'short'`, `'shortOffset'`, `'longOffset'`, `'shortGeneric'`, `'longGeneric'` | Time zone display |
1804
+ *
1805
+ * **Locale and other options:**
1806
+ *
1807
+ * | Property | Possible values | Description |
1808
+ * | ----------------- | -------------------------------------------------- | ------------------------------ |
1809
+ * | `localeMatcher` | `'best fit'` (default), `'lookup'` | Locale matching algorithm |
1810
+ * | `timeZone` | IANA time zone (e.g. `'UTC'`, `'America/New_York'`) | Time zone for formatting |
1811
+ * | `hour12` | `true`, `false` | Use 12-hour vs 24-hour time |
1812
+ * | `hourCycle` | `'h11'`, `'h12'`, `'h23'`, `'h24'` | Hour cycle |
1813
+ * | `formatMatcher` | `'basic'`, `'best fit'` (default) | Format matching algorithm |
1814
+ *
1815
+ * For complete reference, see [MDN: Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat).
1679
1816
  *
1680
1817
  * Read more:
1681
1818
  * - [Time cell type](@/guides/cell-types/time-cell-type/time-cell-type.md)
1682
- * - [`correctFormat`](#correctFormat)
1819
+ * - [`locale`](@/api/options.md#locale)
1820
+ *
1821
+ * ---
1822
+ *
1823
+ * **Deprecated: string form**
1824
+ *
1825
+ * Passing a string (e.g. `'h:mm:ss a'`) is deprecated and works only with the `time` cell type.
1826
+ * Migrate to the `intl-time` cell type and pass an `Intl.DateTimeFormat` options object.
1827
+ *
1828
+ * **Migration example:**
1829
+ *
1830
+ * ```js
1831
+ * // Before (deprecated)
1832
+ * columns: [{
1833
+ * type: 'time',
1834
+ * timeFormat: 'h:mm:ss a'
1835
+ * }]
1836
+ *
1837
+ * // After (recommended)
1838
+ * columns: [{
1839
+ * type: 'intl-time',
1840
+ * locale: 'en-US',
1841
+ * timeFormat: {
1842
+ * hour: 'numeric',
1843
+ * minute: '2-digit',
1844
+ * second: '2-digit',
1845
+ * hour12: true
1846
+ * }
1847
+ * }]
1848
+ * ```
1683
1849
  *
1684
1850
  * @memberof Options#
1685
- * @type {string}
1851
+ * @type {string|object}
1686
1852
  * @default 'h:mm:ss a'
1687
1853
  * @category Core
1688
1854
  *
1689
1855
  * @example
1690
1856
  * ```js
1857
+ * // intl-time cell type with Intl options
1691
1858
  * columns: [
1692
1859
  * {
1693
- * // set the `type` of each cell in this column to `time`
1694
- * type: 'time',
1695
- * // for every `time` cell of this column, set the time format to `h:mm:ss a`
1696
- * timeFormat: 'h:mm:ss a',
1697
- * },
1698
- * ],
1860
+ * type: 'intl-time',
1861
+ * locale: 'en-US',
1862
+ * timeFormat: {
1863
+ * timeStyle: 'medium'
1864
+ * }
1865
+ * }
1866
+ * ]
1867
+ * ```
1868
+ *
1869
+ * @example
1870
+ * ```js
1871
+ * // Legacy: time cell type with string format (deprecated)
1872
+ * columns: [
1873
+ * {
1874
+ * type: 'time',
1875
+ * timeFormat: 'h:mm:ss a'
1876
+ * }
1877
+ * ]
1699
1878
  * ```
1700
1879
  */
1701
1880
  timeFormat: 'h:mm:ss a',
@@ -1722,6 +1901,7 @@ var _default = () => {
1722
1901
  * - [Cell editor](@/guides/cell-functions/cell-editor/cell-editor.md)
1723
1902
  * - [All Pikaday options →](https://github.com/Pikaday/Pikaday/tree/1.8.2#configuration)
1724
1903
  *
1904
+ * @deprecated This option is deprecated and will be removed in the next major release.
1725
1905
  * @memberof Options#
1726
1906
  * @type {object}
1727
1907
  * @default undefined
@@ -1730,9 +1910,9 @@ var _default = () => {
1730
1910
  datePickerConfig: undefined,
1731
1911
  /**
1732
1912
  * The `defaultDate` option configures the date displayed
1733
- * in empty [`date`](@/guides/cell-types/date-cell-type/date-cell-type.md) cells.
1913
+ * in the editor for an empty [`date`](@/guides/cell-types/date-cell-type/date-cell-type.md) cell.
1734
1914
  *
1735
- * You can set the `defaultDate` option to a string.
1915
+ * The option accepts a string in ISO 8601 format (`YYYY-MM-DD`).
1736
1916
  *
1737
1917
  * Read more:
1738
1918
  * - [Date cell type](@/guides/cell-types/date-cell-type/date-cell-type.md)
@@ -1747,9 +1927,7 @@ var _default = () => {
1747
1927
  * ```js
1748
1928
  * columns: [
1749
1929
  * {
1750
- * // set the `type` of each cell in this column to `date`
1751
1930
  * type: 'date',
1752
- * // in every empty `date` cell of this column, display `2015-02-02`
1753
1931
  * defaultDate: '2015-02-02'
1754
1932
  * }
1755
1933
  * ],
@@ -2058,6 +2236,7 @@ var _default = () => {
2058
2236
  * | `'base'` | `BaseEditor` |
2059
2237
  * | `'checkbox'` | `CheckboxEditor` |
2060
2238
  * | `'date'` | `DateEditor` |
2239
+ * | `'intl-date'` | `IntlDateEditor` |
2061
2240
  * | `'dropdown'` | `DropdownEditor` |
2062
2241
  * | `'handsontable'` | `HandsontableEditor` |
2063
2242
  * | `'numeric'` | `NumericEditor` |
@@ -2065,6 +2244,7 @@ var _default = () => {
2065
2244
  * | `'select'` | `SelectEditor` |
2066
2245
  * | `'text'` | `TextEditor` |
2067
2246
  * | `'time'` | `TimeEditor` |
2247
+ * | `'intl-time'` | `IntlTimeEditor` |
2068
2248
  *
2069
2249
  * To disable editing cells through cell editors,
2070
2250
  * set the `editor` option to `false`.
@@ -2216,6 +2396,29 @@ var _default = () => {
2216
2396
  * ```
2217
2397
  */
2218
2398
  enterBeginsEditing: true,
2399
+ /**
2400
+ * The `enterCommits` option configures whether the <kbd>**Enter**</kbd> key closes the [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md) editor.
2401
+ *
2402
+ * @memberof Options#
2403
+ * @type {boolean}
2404
+ * @default true
2405
+ * @since 17.0.0
2406
+ * @category Core
2407
+ * @example
2408
+ * ```js
2409
+ * columns: [{
2410
+ * type: 'multiSelect',
2411
+ * // press Enter to close the `multiSelect` editor and Space to select an option
2412
+ * enterCommits: true,
2413
+ * }, {
2414
+ * type: 'multiSelect',
2415
+ * // press Enter to select an option
2416
+ * enterCommits: false,
2417
+ * }],
2418
+ * ],
2419
+ * ```
2420
+ */
2421
+ enterCommits: true,
2219
2422
  /**
2220
2423
  * The `enterMoves` option configures the action of the <kbd>**Enter**</kbd> key.
2221
2424
  *
@@ -2355,8 +2558,8 @@ var _default = () => {
2355
2558
  */
2356
2559
  filter: true,
2357
2560
  /**
2358
- * The `filteringCaseSensitive` option configures whether [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md) cells'
2359
- * input is case-sensitive.
2561
+ * The `filteringCaseSensitive` option configures whether [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md) and [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)-typed cells'
2562
+ * search inputs are case-sensitive.
2360
2563
  *
2361
2564
  * You can set the `filteringCaseSensitive` option to one of the following:
2362
2565
  *
@@ -2383,6 +2586,12 @@ var _default = () => {
2383
2586
  * source: [ ... ],
2384
2587
  * // match case while searching autocomplete options
2385
2588
  * filteringCaseSensitive: true
2589
+ * },
2590
+ * {
2591
+ * type: 'multiSelect',
2592
+ * source: [ ... ],
2593
+ * // match case while searching multiSelect options
2594
+ * filteringCaseSensitive: true
2386
2595
  * }
2387
2596
  * ],
2388
2597
  * ```
@@ -2424,6 +2633,23 @@ var _default = () => {
2424
2633
  * ```
2425
2634
  */
2426
2635
  filters: undefined,
2636
+ /**
2637
+ * The `filterSelectedItems` option configures whether the selected items are filtered out of the dropdown, when using the search input of the [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md) editor.
2638
+ *
2639
+ * @memberof Options#
2640
+ * @type {boolean}
2641
+ * @default true
2642
+ * @category Core
2643
+ *
2644
+ * @example
2645
+ * ```js
2646
+ * // filter out the selected items from the dropdown
2647
+ * filterSelectedItems: true,
2648
+ *
2649
+ * // keep the selected items in the dropdown
2650
+ * filterSelectedItems: false,
2651
+ */
2652
+ filterSelectedItems: true,
2427
2653
  /**
2428
2654
  * `fixedColumnsLeft` is a legacy option.
2429
2655
  *
@@ -3337,6 +3563,26 @@ var _default = () => {
3337
3563
  * ```
3338
3564
  */
3339
3565
  maxRows: Infinity,
3566
+ /**
3567
+ * The `maxSelections` option sets a maximum number of selections for the [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)-typed cells.
3568
+ *
3569
+ * @since 17.0.0
3570
+ * @memberof Options#
3571
+ * @type {number}
3572
+ * @default undefined
3573
+ * @category Core
3574
+ *
3575
+ * @example
3576
+ * ```js
3577
+ * columns: [{
3578
+ * // set the `type` of each cell in this column to `multiSelect`
3579
+ * type: 'multiSelect',
3580
+ * // set the maximum number of selections to 3
3581
+ * maxSelections: 3,
3582
+ * }],
3583
+ * ```
3584
+ */
3585
+ maxSelections: undefined,
3340
3586
  /**
3341
3587
  * @description
3342
3588
  * The `mergeCells` option configures the [`MergeCells`](@/api/mergeCells.md) plugin.
@@ -3743,25 +3989,113 @@ var _default = () => {
3743
3989
  */
3744
3990
  noWordWrapClassName: 'htNoWrap',
3745
3991
  /**
3746
- * The `numericFormat` option configures the number format and the currency format
3747
- * of [`numeric`](@/guides/cell-types/numeric-cell-type/numeric-cell-type.md) cells` displayed output
3748
- * in the numeric cell renderer.
3992
+ * Configures the number format for [`numeric`](@/guides/cell-types/numeric-cell-type/numeric-cell-type.md)
3993
+ * cells, including currency, units, precision, and other display options.
3994
+ *
3995
+ * ::: warning
3996
+ * The `numericFormat.pattern` and `numericFormat.culture` options are deprecated and will be
3997
+ * removed in the next major release. Pass `Intl.NumberFormat` options directly to `numericFormat`
3998
+ * and use the `locale` cell property instead of `culture`.
3999
+ * :::
4000
+ *
4001
+ * Since v17.0.0, this option accepts all properties of the
4002
+ * [`Intl.NumberFormatOptions`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat)
4003
+ * object. The locale is controlled separately via the [`locale`](@/api/options.md#locale) option.
4004
+ *
4005
+ * **Style options:**
4006
+ *
4007
+ * | Property | Possible values | Description |
4008
+ * | ----------------- | --------------------------------------------------------- | -------------------------------------------------------------- |
4009
+ * | `style` | `'decimal'` (default), `'currency'`, `'percent'`, `'unit'`| The formatting style to use |
4010
+ * | `currency` | ISO 4217 currency codes (e.g., `'USD'`, `'EUR'`, `'PLN'`) | Required when `style` is `'currency'` |
4011
+ * | `currencyDisplay` | `'symbol'` (default), `'narrowSymbol'`, `'code'`, `'name'`| How to display the currency |
4012
+ * | `currencySign` | `'standard'` (default), `'accounting'` | Use parentheses for negative values in accounting format |
4013
+ * | `unit` | Unit identifiers (e.g., `'kilometer'`, `'liter'`) | Required when `style` is `'unit'` |
4014
+ * | `unitDisplay` | `'short'` (default), `'narrow'`, `'long'` | How to display the unit |
4015
+ *
4016
+ * **Notation options:**
4017
+ *
4018
+ * | Property | Possible values | Description |
4019
+ * | ----------------- | ------------------------------------------------------------- | -------------------------------------------------------- |
4020
+ * | `notation` | `'standard'` (default), `'scientific'`, `'engineering'`, `'compact'` | The formatting notation |
4021
+ * | `compactDisplay` | `'short'` (default), `'long'` | Display style for compact notation (e.g., `1.5M` vs `1.5 million`) |
3749
4022
  *
3750
- * You can set the `numericFormat` option to an object with the following properties:
4023
+ * **Sign and grouping options:**
3751
4024
  *
3752
- * | Property | Possible values | Description |
3753
- * | ----------- | ----------------------------------------------------------------------------- | --------------- |
3754
- * | `pattern` | All [`numbro.js` number formats](https://numbrojs.com/format.html#numbers) | Number format |
3755
- * | `culture` | All [`numbro.js` currency formats](https://numbrojs.com/format.html#currency) | Currency format |
4025
+ * | Property | Possible values | Description |
4026
+ * | ----------------- | ------------------------------------------------------------------- | -------------------------------------------------- |
4027
+ * | `signDisplay` | `'auto'` (default), `'never'`, `'always'`, `'exceptZero'`, `'negative'` | When to display the sign |
4028
+ * | `useGrouping` | `true`, `false` (default), `'always'`, `'auto'`, `'min2'` | Whether to use grouping separators (e.g., `1,000`) |
3756
4029
  *
3757
- * The `numericFormat` option as no effect on the numeric cell editor.
4030
+ * **Digit options:**
3758
4031
  *
3759
- * In the source data, numeric data is stored as JavaScript numbers.
4032
+ * | Property | Possible values | Description |
4033
+ * | ------------------------- | --------------- | ------------------------------------------------------------- |
4034
+ * | `minimumIntegerDigits` | `1` to `21` | Minimum number of integer digits (pads with zeros) |
4035
+ * | `minimumFractionDigits` | `0` to `100` | Minimum number of fraction digits |
4036
+ * | `maximumFractionDigits` | `0` to `100` | Maximum number of fraction digits |
4037
+ * | `minimumSignificantDigits`| `1` to `21` | Minimum number of significant digits |
4038
+ * | `maximumSignificantDigits`| `1` to `21` | Maximum number of significant digits |
4039
+ *
4040
+ * **Rounding options:**
4041
+ *
4042
+ * | Property | Possible values | Description |
4043
+ * | --------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------ |
4044
+ * | `roundingMode` | `'halfExpand'` (default), `'ceil'`, `'floor'`, `'expand'`, `'trunc'`, `'halfCeil'`, `'halfFloor'`, `'halfTrunc'`, `'halfEven'` | Rounding algorithm |
4045
+ * | `roundingPriority` | `'auto'` (default), `'morePrecision'`, `'lessPrecision'` | Priority between fraction and significant digits |
4046
+ * | `roundingIncrement` | `1`, `2`, `5`, `10`, `20`, `25`, `50`, `100`, `200`, `250`, `500`, `1000`, `2000`, `2500`, `5000` | Increment for rounding (e.g., nickel rounding) |
4047
+ * | `trailingZeroDisplay` | `'auto'` (default), `'stripIfInteger'` | Whether to strip trailing zeros for integers |
4048
+ *
4049
+ * **Locale options:**
4050
+ *
4051
+ * | Property | Possible values | Description |
4052
+ * | ----------------- | --------------------------------------------------------- | -------------------------------------------------- |
4053
+ * | `localeMatcher` | `'best fit'` (default), `'lookup'` | Locale matching algorithm |
4054
+ * | `numberingSystem` | `'latn'`, `'arab'`, `'hans'`, `'deva'`, `'thai'`, etc. | Numbering system to use |
4055
+ *
4056
+ * For complete reference, see [MDN: Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options).
4057
+ *
4058
+ * This option affects only the displayed output in the cell renderer.
4059
+ * It has no effect on the numeric cell editor. In the source data, numeric values
4060
+ * are stored as JavaScript numbers.
3760
4061
  *
3761
4062
  * Read more:
4063
+ * - [`locale`](@/api/options.md#locale)
3762
4064
  * - [Numeric cell type](@/guides/cell-types/numeric-cell-type/numeric-cell-type.md)
4065
+ * - [Cell renderer](@/guides/cell-functions/cell-renderer/cell-renderer.md)
4066
+ * - [Numbro cell type](@/recipes/cell-types/numbro/numbro.md)
3763
4067
  * - [Third-party licenses](@/guides/technical-specification/third-party-licenses/third-party-licenses.md)
3764
4068
  *
4069
+ * ---
4070
+ *
4071
+ * **Deprecated options:**
4072
+ *
4073
+ * The `pattern` and `culture` properties (numbro.js-based formatting) are deprecated and will be
4074
+ * removed in the next major release. Migrate to the `Intl.NumberFormat` API shown above.
4075
+ *
4076
+ * | Deprecated property | Possible values | Replacement |
4077
+ * | ------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------- |
4078
+ * | `pattern` | All [`numbro.js` number formats](https://numbrojs.com/format.html#numbers) | Use `Intl.NumberFormat` options (see tables above) |
4079
+ * | `culture` | All [`numbro.js` currency formats](https://numbrojs.com/format.html#currency) | Use the [`locale`](@/api/options.md#locale) option |
4080
+ *
4081
+ * **Migration example:**
4082
+ *
4083
+ * ```js
4084
+ * // Before (deprecated)
4085
+ * numericFormat: {
4086
+ * pattern: '0,0.00 $',
4087
+ * culture: 'en-US'
4088
+ * }
4089
+ *
4090
+ * // After (recommended)
4091
+ * locale: 'en-US',
4092
+ * numericFormat: {
4093
+ * style: 'currency',
4094
+ * currency: 'USD',
4095
+ * minimumFractionDigits: 2
4096
+ * }
4097
+ * ```
4098
+ *
3765
4099
  * @memberof Options#
3766
4100
  * @since 0.35.0
3767
4101
  * @type {object}
@@ -3772,14 +4106,11 @@ var _default = () => {
3772
4106
  * ```js
3773
4107
  * columns: [
3774
4108
  * {
3775
- * // set the `type` of each cell in this column to `numeric`
3776
4109
  * type: 'numeric',
3777
- * // set the `numericFormat` option for every `numeric` cell of this column
4110
+ * locale: 'en-US',
3778
4111
  * numericFormat: {
3779
- * // set the number format
3780
- * pattern: '0,00',
3781
- * // set the currency format
3782
- * culture: 'en-US'
4112
+ * style: 'currency',
4113
+ * currency: 'USD',
3783
4114
  * }
3784
4115
  * }
3785
4116
  * ],
@@ -3881,33 +4212,6 @@ var _default = () => {
3881
4212
  * ```
3882
4213
  */
3883
4214
  pagination: undefined,
3884
- /**
3885
- * @description
3886
- * The `persistentState` option configures the [`PersistentState`](@/api/persistentState.md) plugin.
3887
- *
3888
- * You can set the `persistentState` to one of the following:
3889
- *
3890
- * | Setting | Description |
3891
- * | ----------------- | ---------------------------------------------------------------- |
3892
- * | `false` (default) | Disable the [`PersistentState`](@/api/persistentState.md) plugin |
3893
- * | `true` | Enable the [`PersistentState`](@/api/persistentState.md) plugin |
3894
- *
3895
- * Read more:
3896
- * - [Saving data: Saving data locally](@/guides/getting-started/saving-data/saving-data.md#save-data-locally)
3897
- * - [Plugins: `PersistentState`](@/api/persistentState.md)
3898
- *
3899
- * @memberof Options#
3900
- * @type {boolean}
3901
- * @default false
3902
- * @category PersistentState
3903
- *
3904
- * @example
3905
- * ```js
3906
- * // enable the `PersistentState` plugin
3907
- * persistentState: true,
3908
- * ```
3909
- */
3910
- persistentState: undefined,
3911
4215
  /**
3912
4216
  * The `placeholder` option lets you display placeholder text in every empty cell.
3913
4217
  *
@@ -4172,12 +4476,14 @@ var _default = () => {
4172
4476
  * | `'base'` | `BaseRenderer` |
4173
4477
  * | `'checkbox'` | `CheckboxRenderer` |
4174
4478
  * | `'date'` | `DateRenderer` |
4479
+ * | `'intl-date'` | `IntlDateRenderer` |
4175
4480
  * | `'dropdown'` | `DropdownRenderer` |
4176
4481
  * | `'html'` | `HtmlRenderer` |
4177
4482
  * | `'numeric'` | `NumericRenderer` |
4178
4483
  * | `'password'` | `PasswordRenderer` |
4179
4484
  * | `'text'` | `TextRenderer` |
4180
4485
  * | `'time'` | `TimeRenderer` |
4486
+ * | `'intl-time'` | `IntlTimeRenderer` |
4181
4487
  *
4182
4488
  * To set the [`renderer`](#renderer), [`editor`](#editor), and [`validator`](#validator)
4183
4489
  * options all at once, use the [`type`](#type) option.
@@ -4218,6 +4524,165 @@ var _default = () => {
4218
4524
  * ```
4219
4525
  */
4220
4526
  renderer: undefined,
4527
+ /**
4528
+ * @description
4529
+ * The `valueFormatter` option sets a custom function for formatting cell values before display.
4530
+ *
4531
+ * Unlike the [`renderer`](#renderer) option, which is responsible for the complete cell rendering process
4532
+ * (DOM structure, performance-optimized content insertion via `innerText`/`innerHTML`, a11y attributes, applying
4533
+ * styles from `className`, `readOnlyCellClassName`, `textEllipsis`, and other options), the `valueFormatter`
4534
+ * focuses solely on transforming the cell's value.
4535
+ *
4536
+ * The `valueFormatter` function is called by the rendering engine right before the actual renderer function is
4537
+ * called. Separating the value formatting from the renderer logic allows for more flexibility and reuse.
4538
+ * This simplifies common formatting use cases where you only need to transform
4539
+ * the displayed value (e.g., adding units, formatting dates, or applying custom text transformations).
4540
+ *
4541
+ * **When to use `valueFormatter` vs `renderer`:**
4542
+ *
4543
+ * | Use case | Recommended option |
4544
+ * | ------------------------------------------------- | -------------------- |
4545
+ * | Transform displayed value (add prefix, units) | `valueFormatter` |
4546
+ * | Custom date/number/text formatting | `valueFormatter` |
4547
+ * | Modify DOM structure (add icons, custom elements) | `renderer` |
4548
+ *
4549
+ * The function receives the raw value and cell properties, and should return the formatted value
4550
+ * to be displayed. The formatting can be applied to a single cell, column, or the entire grid.
4551
+ *
4552
+ * **Function signature:**
4553
+ * ```js
4554
+ * valueFormatter(value, cellProperties) => formattedValue
4555
+ * ```
4556
+ *
4557
+ * | Parameter | Type | Description |
4558
+ * | ---------------- | ---------- | ---------------------------------------------- |
4559
+ * | `value` | `*` | The raw cell value |
4560
+ * | `cellProperties` | `object` | The cell's meta object (see {@link Core#getCellMeta}) |
4561
+ * | Returns | `*` | The formatted value to display |
4562
+ *
4563
+ * Read more:
4564
+ * - [Cell renderer](@/guides/cell-functions/cell-renderer/cell-renderer.md)
4565
+ * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration)
4566
+ *
4567
+ * @memberof Options#
4568
+ * @since 17.0.0
4569
+ * @type {Function}
4570
+ * @default undefined
4571
+ * @category Core
4572
+ *
4573
+ * @example
4574
+ * ```js
4575
+ * // add a currency symbol to numeric values
4576
+ * valueFormatter(value, cellProperties) {
4577
+ * if (value === null || value === undefined) {
4578
+ * return '';
4579
+ * }
4580
+ *
4581
+ * return `$${value}`;
4582
+ * }
4583
+ *
4584
+ * // format dates in a custom format
4585
+ * valueFormatter(value, cellProperties) {
4586
+ * if (!value) {
4587
+ * return '';
4588
+ * }
4589
+ *
4590
+ * const date = new Date(value);
4591
+ *
4592
+ * return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });
4593
+ * }
4594
+ *
4595
+ * // apply valueFormatter to individual columns
4596
+ * columns: [
4597
+ * {
4598
+ * // add "kg" suffix to weight values
4599
+ * valueFormatter(value) {
4600
+ * return value ? `${value} kg` : '';
4601
+ * }
4602
+ * },
4603
+ * {
4604
+ * // format percentages
4605
+ * valueFormatter(value) {
4606
+ * return value !== null ? `${(value * 100).toFixed(1)}%` : '';
4607
+ * }
4608
+ * }
4609
+ * ]
4610
+ * ```
4611
+ */
4612
+ valueFormatter: undefined,
4613
+ /**
4614
+ * @description
4615
+ * The `valueParser` option sets a custom function for converting editor output into the source data format.
4616
+ *
4617
+ * Unlike [`valueFormatter`](#valueformatter), which formats values for display, `valueParser` runs only when a
4618
+ * value comes from the [cell editor](@/guides/cell-functions/cell-editor/cell-editor.md) - after the user finishes
4619
+ * editing. It maps whatever the editor returns (e.g. a localized date string, a formatted number) into the
4620
+ * canonical shape stored in the data source (e.g. ISO date string, raw number).
4621
+ *
4622
+ * **When to use `valueParser` vs `valueFormatter`:**
4623
+ *
4624
+ * | Use case | Option |
4625
+ * | -------------------------------------- | ---------------- |
4626
+ * | Display: raw value -> shown text | `valueFormatter` |
4627
+ * | Edit: editor value -> source data | `valueParser` |
4628
+ *
4629
+ * **Function signature:**
4630
+ * ```js
4631
+ * valueParser(value, cellProperties) => sourceValue
4632
+ * ```
4633
+ *
4634
+ * | Parameter | Type | Description |
4635
+ * | ---------------- | -------- | ---------------------------------------------- |
4636
+ * | `value` | `*` | The value produced by the editor |
4637
+ * | `cellProperties` | `object` | The cell's meta object (see {@link Core#getCellMeta}) |
4638
+ * | Returns | `*` | The value to store in the source data |
4639
+ *
4640
+ * Read more:
4641
+ * - [Cell editor](@/guides/cell-functions/cell-editor/cell-editor.md)
4642
+ * - [`editor`](#editor)
4643
+ * - [`renderer`](#renderer)
4644
+ * - [`valueFormatter`](#valueformatter)
4645
+ * - [`sourceDataValidator`](#sourcedatavalidator)
4646
+ * - [Configuration options: Cascading configuration](@/guides/getting-started/configuration-options/configuration-options.md#cascading-configuration)
4647
+ *
4648
+ * @memberof Options#
4649
+ * @since 17.0.0
4650
+ * @type {Function}
4651
+ * @default undefined
4652
+ * @category Core
4653
+ *
4654
+ * @example
4655
+ * ```js
4656
+ * // parse editor string to ISO date (e.g. intl-date: display format => source format)
4657
+ * valueParser(value, cellProperties) {
4658
+ * if (value == null || value === '') {
4659
+ * return null;
4660
+ * }
4661
+ *
4662
+ * const date = new Date(value);
4663
+ *
4664
+ * return Number.isNaN(date.getTime()) ? value : date.toISOString().slice(0, 10);
4665
+ * }
4666
+ *
4667
+ * // parse formatted number string to number
4668
+ * valueParser(value, cellProperties) {
4669
+ * if (value == null || value === '') {
4670
+ * return null;
4671
+ * }
4672
+ *
4673
+ * const num = Number(value.replace(/[^\d.-]/g, ''));
4674
+ *
4675
+ * return Number.isNaN(num) ? value : num;
4676
+ * }
4677
+ *
4678
+ * // apply valueParser per column
4679
+ * columns: [
4680
+ * { data: 'date', valueParser: (value) => value ? new Date(value).toISOString().slice(0, 10) : null },
4681
+ * { data: 'amount', valueParser: (value) => value != null ? Number(value) : null }
4682
+ * ]
4683
+ * ```
4684
+ */
4685
+ valueParser: undefined,
4221
4686
  /**
4222
4687
  * The `rowHeaders` option configures your grid's row headers.
4223
4688
  *
@@ -4282,7 +4747,7 @@ var _default = () => {
4282
4747
  /**
4283
4748
  * The `rowHeights` option sets rows' heights, in pixels.
4284
4749
  *
4285
- * In the rendering process, the default row height is `classic (legacy): 23px`, `main: 29px`, `horizon: 37px` (in the classic (legacy) theme: 22px + 1px of the row's bottom border) or whatever is defined in the used theme (based on the line height, vertical padding and cell borders).
4750
+ * In the rendering process, the default row height is `classic: 26px`, `main: 29px`, `horizon: 37px` or whatever is defined in the used theme (based on the line height, vertical padding and cell borders).
4286
4751
  * You can change it to equal or greater than the default value, by setting the `rowHeights` option to one of the following:
4287
4752
  *
4288
4753
  * | Setting | Description | Example |
@@ -4376,6 +4841,24 @@ var _default = () => {
4376
4841
  * ```
4377
4842
  */
4378
4843
  search: false,
4844
+ /**
4845
+ * The `searchInput` option configures whether the [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md) editor's search input is visible.
4846
+ *
4847
+ * @since 17.0.0
4848
+ * @memberof Options#
4849
+ * @type {boolean}
4850
+ * @default true
4851
+ * @category Core
4852
+ * @example
4853
+ * ```js
4854
+ * columns: [{
4855
+ * type: 'multiSelect',
4856
+ * // hide the `multiSelect` editor's search input
4857
+ * searchInput: false,
4858
+ * }],
4859
+ * ```
4860
+ */
4861
+ searchInput: true,
4379
4862
  /**
4380
4863
  * @description
4381
4864
  * The `selectionMode` option configures how [selection](@/guides/cell-features/selection/selection.md) works.
@@ -4568,6 +5051,30 @@ var _default = () => {
4568
5051
  * ```
4569
5052
  */
4570
5053
  sortByRelevance: true,
5054
+ /**
5055
+ * The `sourceSortFunction` option sets a function to sort the options available in [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)-typed cells.
5056
+ *
5057
+ * @since 17.0.0
5058
+ * @memberof Options#
5059
+ * @type {Function}
5060
+ * @default undefined
5061
+ * @category Core
5062
+ *
5063
+ * @example
5064
+ * ```js
5065
+ * columns: [{
5066
+ * // set the `type` of each cell in this column to `multiSelect`
5067
+ * type: 'multiSelect',
5068
+ * // set options available in every `multiSelect` cell of this column
5069
+ * source: ['A', 'B', 'C', 'D'],
5070
+ * // sort the `multiSelect` options in this order: D, C, B, A
5071
+ * sourceSortFunction: (entries) => {
5072
+ * return entries.sort((a, b) => b.localeCompare(a));
5073
+ * }
5074
+ * }],
5075
+ * ```
5076
+ */
5077
+ sourceSortFunction: undefined,
4571
5078
  /**
4572
5079
  * The `source` option sets options available in [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
4573
5080
  * and [`dropdown`](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md) cells.
@@ -4805,13 +5312,11 @@ var _default = () => {
4805
5312
  /**
4806
5313
  * The `themeName` option allows enabling a theme by that name.
4807
5314
  *
4808
- * If no `themeName` is provided, the table will use the classic (legacy) theme (if the correct CSS files are imported).
4809
- *
4810
5315
  * Read more:
4811
5316
  * - [Themes](@/guides/styling/themes/themes.md)
4812
5317
  *
4813
5318
  * @memberof Options#
4814
- * @type {string|boolean|undefined}
5319
+ * @type {string|undefined}
4815
5320
  * @default undefined
4816
5321
  * @category Core
4817
5322
  * @since 15.0.0
@@ -4822,6 +5327,102 @@ var _default = () => {
4822
5327
  * ```
4823
5328
  */
4824
5329
  themeName: undefined,
5330
+ /**
5331
+ * The `theme` option configures the visual theme for your Handsontable instance.
5332
+ *
5333
+ * You can set the `theme` option to one of the following:
5334
+ *
5335
+ * | Setting | Description |
5336
+ * | ------------------------------------- | ------------------------------------------------------------------------------------- |
5337
+ * | `undefined` (default) | Don't apply any theme and use the default main theme |
5338
+ * | A string (e.g., `'ht-theme-horizon'`) | Apply a registered theme by name (required to import CSS file) |
5339
+ * | A plain theme config object | Apply a theme with default settings (import and pass the config, e.g. `horizonTheme`) |
5340
+ * | A `ThemeBuilder` object | Apply a theme with runtime configuration (recommended) |
5341
+ *
5342
+ * When using a `ThemeBuilder` object, you can configure the theme at runtime using these methods:
5343
+ *
5344
+ * | Method | Description |
5345
+ * | -------------------------------- | ------------------------------------------------------------------------------------------ |
5346
+ * | `setColorScheme(mode)` | Sets the color scheme: `'light'`, `'dark'`, or `'auto'` (default: `'auto'`) |
5347
+ * | `setDensityType(type)` | Sets the row density: `'compact'`, `'default'`, or `'comfortable'` (default: `'default'`) |
5348
+ * | `params(paramsObject)` | Sets custom theme parameters e.g. `icons`, `colors`, `tokens` |
5349
+ *
5350
+ * Read more:
5351
+ * - [Themes](@/guides/styling/themes/themes.md)
5352
+ * - [`themeName`](#themeName)
5353
+ *
5354
+ * @memberof Options#
5355
+ * @type {ThemeBuilder|string|undefined}
5356
+ * @default undefined
5357
+ * @category Core
5358
+ * @since 17.0.0
5359
+ *
5360
+ * @example
5361
+ * ```js
5362
+ * // Enable a theme by class name (requires loading the theme CSS)
5363
+ * theme: 'ht-theme-horizon',
5364
+ * ```
5365
+ * @example
5366
+ * ```js
5367
+ * // Pass a plain theme config object
5368
+ * import { horizonTheme } from 'handsontable/themes';
5369
+ *
5370
+ * const hot = new Handsontable(container, {
5371
+ * theme: horizonTheme,
5372
+ * });
5373
+ * ```
5374
+ *
5375
+ * @example
5376
+ * ```js
5377
+ * // Pass a ThemeBuilder object (for customization before initialization)
5378
+ * import { horizonTheme, registerTheme } from 'handsontable/themes';
5379
+ *
5380
+ * const theme = registerTheme(horizonTheme)
5381
+ * .setColorScheme('dark')
5382
+ * .setDensityType('compact')
5383
+ * .params({
5384
+ * tokens: {
5385
+ * fontSize: '14px',
5386
+ * iconSize: 'size_5',
5387
+ * borderColor: ['colors.palette.100', 'colors.palette.800'],
5388
+ * },
5389
+ * });
5390
+ *
5391
+ * const hot = new Handsontable(container, {
5392
+ * theme,
5393
+ * });
5394
+ * ```
5395
+ */
5396
+ theme: undefined,
5397
+ /**
5398
+ * The `injectCoreCss` option controls whether Handsontable injects its core CSS into the document.
5399
+ *
5400
+ * You can set the `injectCoreCss` option to one of the following:
5401
+ *
5402
+ * | Setting | Description |
5403
+ * | ------------------ | ---------------------------------------------------------------------------------------------------------------- |
5404
+ * | `true` (default) | Inject core styles into the document head |
5405
+ * | `false` | Do not inject core styles (use when you load CSS yourself, e.g. `import 'handsontable/styles/handsontable.css'`) |
5406
+ *
5407
+ * Read more:
5408
+ * - [Themes](@/guides/styling/themes/themes.md)
5409
+ *
5410
+ * @memberof Options#
5411
+ * @type {boolean}
5412
+ * @default true
5413
+ * @category Core
5414
+ * @since 17.0.0
5415
+ *
5416
+ * @example
5417
+ * ```js
5418
+ * // inject core CSS (default)
5419
+ * injectCoreCss: true,
5420
+ *
5421
+ * // skip injection when you load Handsontable CSS yourself
5422
+ * injectCoreCss: false,
5423
+ * ```
5424
+ */
5425
+ injectCoreCss: true,
4825
5426
  /**
4826
5427
  * The `tabMoves` option configures the action of the <kbd>**Tab**</kbd> key.
4827
5428
  *
@@ -5000,12 +5601,14 @@ var _default = () => {
5000
5601
  * | [`'autocomplete'`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md) | Renderer: `AutocompleteRenderer`<br>Editor: `AutocompleteEditor`<br>Validator: `AutocompleteValidator` |
5001
5602
  * | [`'checkbox'`](@/guides/cell-types/checkbox-cell-type/checkbox-cell-type.md) | Renderer: `CheckboxRenderer`<br>Editor: `CheckboxEditor`<br>Validator: - |
5002
5603
  * | [`'date'`](@/guides/cell-types/date-cell-type/date-cell-type.md) | Renderer: `DateRenderer`<br>Editor: `DateEditor`<br>Validator: `DateValidator` |
5604
+ * | [`'intl-date'`](@/guides/cell-types/date-cell-type/date-cell-type.md) | Renderer: `IntlDateRenderer`<br>Editor: `IntlDateEditor`<br>Validator: `IntlDateValidator` |
5003
5605
  * | [`'dropdown'`](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md) | Renderer: `DropdownRenderer`<br>Editor: `DropdownEditor`<br>Validator: `DropdownValidator` |
5004
5606
  * | [`'handsontable'`](@/guides/cell-types/handsontable-cell-type/handsontable-cell-type.md) | Renderer: `AutocompleteRenderer`<br>Editor: `HandsontableEditor`<br>Validator: - |
5005
5607
  * | [`'numeric'`](@/guides/cell-types/numeric-cell-type/numeric-cell-type.md) | Renderer: `NumericRenderer`<br>Editor: `NumericEditor`<br>Validator: `NumericValidator` |
5006
5608
  * | [`'password'`](@/guides/cell-types/password-cell-type/password-cell-type.md) | Renderer: `PasswordRenderer`<br>Editor: `PasswordEditor`<br>Validator: - |
5007
5609
  * | `'text'` | Renderer: `TextRenderer`<br>Editor: `TextEditor`<br>Validator: - |
5008
5610
  * | [`'time`'](@/guides/cell-types/time-cell-type/time-cell-type.md) | Renderer: `TimeRenderer`<br>Editor: `TimeEditor`<br>Validator: `TimeValidator` |
5611
+ * | [`'intl-time'`](@/guides/cell-types/time-cell-type/time-cell-type.md) | Renderer: `IntlTimeRenderer`<br>Editor: `IntlTimeEditor`<br>Validator: `IntlTimeValidator` |
5009
5612
  *
5010
5613
  * Read more:
5011
5614
  * - [Cell type](@/guides/cell-types/cell-type/cell-type.md)
@@ -5016,6 +5619,8 @@ var _default = () => {
5016
5619
  * - [`renderer`](#renderer)
5017
5620
  * - [`editor`](#editor)
5018
5621
  * - [`validator`](#validator)
5622
+ * - [`valueParser`](#valueparser)
5623
+ * - [`valueFormatter`](#valueformatter)
5019
5624
  *
5020
5625
  * @memberof Options#
5021
5626
  * @type {string}
@@ -5132,9 +5737,11 @@ var _default = () => {
5132
5737
  * | A custom alias | Your [custom cell validator](@/guides/cell-functions/cell-validator/cell-validator.md) |
5133
5738
  * | `'autocomplete'` | `AutocompleteValidator` |
5134
5739
  * | `'date'` | `DateValidator` |
5740
+ * | `'intl-date'` | `IntlDateValidator` |
5135
5741
  * | `'dropdown'` | `DropdownValidator` |
5136
5742
  * | `'numeric'` | `NumericValidator` |
5137
5743
  * | `'time'` | `TimeValidator` |
5744
+ * | `'intl-time'` | `IntlTimeValidator` |
5138
5745
  *
5139
5746
  * To set the [`editor`](#editor), [`renderer`](#renderer), and [`validator`](#validator)
5140
5747
  * options all at once, use the [`type`](#type) option.
@@ -5171,6 +5778,64 @@ var _default = () => {
5171
5778
  * ```
5172
5779
  */
5173
5780
  validator: undefined,
5781
+ /**
5782
+ * @description
5783
+ * The [`sourceDataValidator`](@/api/options.md#sourcedatavalidator) option sets a function that validates values
5784
+ * when they are written to the source data layer. Validation runs on table initialization and when calling
5785
+ * [`loadData`](@/api/core.md#loaddata), [`updateData`](@/api/core.md#updatedata), or
5786
+ * [`setSourceDataAtCell`](@/api/core.md#setsourcedataatcell). It does not run for the `setData*` family of methods.
5787
+ *
5788
+ * Return `true` from the function to mark the value as valid, or `false` to mark it invalid. When a value is
5789
+ * invalid and [`allowInvalid`](@/api/options.md#allowinvalid) is `false`, it is replaced with `null` in the
5790
+ * source (on initialization and when calling `loadData` or `updateData`). When `allowInvalid` is `true`, invalid
5791
+ * values are kept; a warning is still logged when the validator returns `false`. An exception:
5792
+ * [`setSourceDataAtCell`](@/api/core.md#setsourcedataatcell) - when the validator returns `false`, the write is
5793
+ * skipped and the cell is not nullified; the previous value in the source remains unchanged. Use
5794
+ * [`allowEmpty`](@/api/options.md#allowempty) to treat `null`, `undefined`, or `''` as valid when appropriate.
5795
+ *
5796
+ * Optionally set [`sourceDataWarningMessage`](@/api/options.md#sourcedatawarningmessage) to customize the
5797
+ * message logged for invalid values.
5798
+ *
5799
+ * @example
5800
+ * ```js
5801
+ * sourceDataWarningMessage: 'The source data is invalid.',
5802
+ * sourceDataValidator: (value, cellMeta) => {
5803
+ * if (cellMeta.allowEmpty && value == null) {
5804
+ * return true;
5805
+ * }
5806
+ *
5807
+ * if (typeof value === 'string') {
5808
+ * return true;
5809
+ * }
5810
+ *
5811
+ * return false;
5812
+ * }
5813
+ * ```
5814
+ *
5815
+ * @memberof Options#
5816
+ * @since 17.0.0
5817
+ * @type {function(*, CellMeta): (boolean)}
5818
+ * @default undefined
5819
+ * @category Core
5820
+ */
5821
+ sourceDataValidator: undefined,
5822
+ /**
5823
+ * @description
5824
+ * The [`sourceDataWarningMessage`](@/api/options.md#sourcedatawarningmessage) option sets the message used when
5825
+ * a value fails [`sourceDataValidator`](@/api/options.md#sourcedatavalidator). When not set, no message is logged.
5826
+ *
5827
+ * @example
5828
+ * ```js
5829
+ * sourceDataWarningMessage: 'The source data is invalid.',
5830
+ * ```
5831
+ *
5832
+ * @memberof Options#
5833
+ * @since 17.0.0
5834
+ * @type {string}
5835
+ * @default undefined
5836
+ * @category Core
5837
+ */
5838
+ sourceDataWarningMessage: undefined,
5174
5839
  /**
5175
5840
  * @description
5176
5841
  * The `valueGetter` option configures a function that defines what value will be used when displaying the cell content.
@@ -5346,13 +6011,14 @@ var _default = () => {
5346
6011
  viewportRowRenderingThreshold: 0,
5347
6012
  /**
5348
6013
  * The `visibleRows` option sets the height of the [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
5349
- * and [`dropdown`](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md) lists.
6014
+ * , [`dropdown`](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md) and [`multiSelect`](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)-typed cells' lists.
5350
6015
  *
5351
6016
  * When the number of list options exceeds the `visibleRows` number, a scrollbar appears.
5352
6017
  *
5353
6018
  * Read more:
5354
6019
  * - [Autocomplete cell type](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
5355
6020
  * - [Dropdown cell type](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md)
6021
+ * - [MultiSelect cell type](@/guides/cell-types/multiselect-cell-type/multiselect-cell-type.md)
5356
6022
  *
5357
6023
  * @memberof Options#
5358
6024
  * @type {number}
@@ -5373,6 +6039,12 @@ var _default = () => {
5373
6039
  * // set the `dropdown` list's height to 5 options
5374
6040
  * // for each cell of this column
5375
6041
  * visibleRows: 5,
6042
+ * },
6043
+ * {
6044
+ * type: 'multiSelect',
6045
+ * // set the `multiSelect` list's height to 5 options
6046
+ * // for each cell of this column
6047
+ * visibleRows: 5,
5376
6048
  * }
5377
6049
  * ],
5378
6050
  * ```
@@ -5449,7 +6121,118 @@ var _default = () => {
5449
6121
  * ],
5450
6122
  * ```
5451
6123
  */
5452
- wordWrap: true
6124
+ wordWrap: true,
6125
+ /**
6126
+ * The `sanitizer` option configures the function used to sanitize HTML before it is written to the DOM.
6127
+ * Whenever Handsontable sets HTML (e.g. cell content, headers, context menu labels, dialog content,
6128
+ * paste from clipboard), it can pass the string through this function first. Sanitization is important
6129
+ * when content comes from users or external sources to prevent XSS (e.g. script injection, event handlers).
6130
+ * If no sanitizer is set, HTML is applied as-is. Set a sanitizer when you need to allow rich content
6131
+ * while stripping or neutralizing dangerous markup.
6132
+ *
6133
+ * The function receives the raw HTML string and an optional second argument (source) indicating where
6134
+ * the content is used (e.g. `'innerHTML'`, `'CopyPaste.paste'`), so you can apply different rules per source.
6135
+ * It must return a string that is safe to assign to `innerHTML`.
6136
+ *
6137
+ * This option is only respected when set in the table settings. It does not work when defined per column
6138
+ * or per cell (e.g. in `columns` or cell meta).
6139
+ *
6140
+ * @since 17.0.0
6141
+ * @memberof Options#
6142
+ * @type {function(string, string): string}
6143
+ * @default undefined
6144
+ * @category Core
6145
+ *
6146
+ * @example
6147
+ * ```js
6148
+ * // Allowlist-based sanitization based on the DOMPurify library
6149
+ * import DOMPurify from 'dompurify';
6150
+ *
6151
+ * sanitizer: (content, source) {
6152
+ * if (source === 'CopyPaste.paste') {
6153
+ * return DOMPurify.sanitize(content, {
6154
+ * ADD_TAGS: ['meta'],
6155
+ * ADD_ATTR: ['content'],
6156
+ * FORCE_BODY: true,
6157
+ * });
6158
+ * }
6159
+ *
6160
+ * return DOMPurify.sanitize(content);
6161
+ * },
6162
+ * ```
6163
+ *
6164
+ * @example
6165
+ * ```js
6166
+ * // Maximum safety: strip all tags and escape output (no rich HTML)
6167
+ * sanitizer: (content, source) => {
6168
+ * const tpl = document.createElement('template');
6169
+ *
6170
+ * tpl.innerHTML = content;
6171
+ *
6172
+ * const text = tpl.content.textContent ?? '';
6173
+ *
6174
+ * return text
6175
+ * .replace(/&/g, '&amp;')
6176
+ * .replace(/</g, '&lt;')
6177
+ * .replace(/>/g, '&gt;')
6178
+ * .replace(/"/g, '&quot;')
6179
+ * .replace(/'/g, '&#39;');
6180
+ * },
6181
+ * ```
6182
+ *
6183
+ * @example
6184
+ * ```js
6185
+ * // Trusted Types: wrap sanitization in a policy so the sink accepts the result.
6186
+ * // Add the policy name to the CSP trusted-types directive (e.g. trusted-types default handsontable).
6187
+ * const policy = window.trustedTypes?.createPolicy('handsontable', {
6188
+ * createHTML: (input) => DOMPurify.sanitize(input),
6189
+ * });
6190
+ *
6191
+ * sanitizer: (content, source) =>
6192
+ * policy ? policy.createHTML(content) : DOMPurify.sanitize(content),
6193
+ * ```
6194
+ */
6195
+ sanitizer: undefined,
6196
+ /**
6197
+ * The `parsePastedValue` option determines how pasted content is written to cells when the user pastes
6198
+ * from the clipboard into Handsontable (e.g. from another Handsontable instance or between cells in the same table).
6199
+ * It does not affect how other applications read or process the clipboard.
6200
+ *
6201
+ * When set to `false`, pasted content is written as plain strings. Non-scalar values (e.g. objects) are coerced
6202
+ * to string, so an object becomes `"[object Object]"`.
6203
+ *
6204
+ * When set to `true`, pasted text is parsed so that JSON-like (or other supported) values are converted to
6205
+ * JavaScript values and written to the data source. This allows copying and pasting more sophisticated JavaScript
6206
+ * structures (e.g. objects, arrays) between cells and between Handsontable instances. Cells then store the resulting
6207
+ * object (e.g. `{ id: 1, value: 'A1' }`). Schema validation is relaxed so object-based values can be pasted into
6208
+ * cells that would normally expect a scalar.
6209
+ *
6210
+ * You can set the `parsePastedValue` option to one of the following:
6211
+ *
6212
+ * | Setting | Description |
6213
+ * | ----------------- | ------------------------------------------------ |
6214
+ * | `false` (default) | Write pasted content as plain strings |
6215
+ * | `true` | Parse pasted text and write JavaScript values |
6216
+ *
6217
+ * @since 17.0.0
6218
+ * @memberof Options#
6219
+ * @type {boolean}
6220
+ * @default false
6221
+ * @category CopyPaste
6222
+ *
6223
+ * @example
6224
+ * ```js
6225
+ * // write pasted content as strings (objects become "[object Object]")
6226
+ * parsePastedValue: false,
6227
+ * ```
6228
+ *
6229
+ * @example
6230
+ * ```js
6231
+ * // parse pasted text so cells receive JavaScript objects when pasted content is object-like
6232
+ * parsePastedValue: true,
6233
+ * ```
6234
+ */
6235
+ parsePastedValue: false
5453
6236
 
5454
6237
  /* eslint-enable jsdoc/require-description-complete-sentence */
5455
6238
  };