handsontable 14.6.1 → 15.0.0-next-fdd4480-20241205

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 (392) hide show
  1. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +23 -0
  2. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +23 -0
  3. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +23 -0
  4. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +23 -0
  5. package/3rdparty/walkontable/src/calculator/index.js +1 -2
  6. package/3rdparty/walkontable/src/calculator/index.mjs +2 -2
  7. package/3rdparty/walkontable/src/calculator/viewportBase.js +2 -0
  8. package/3rdparty/walkontable/src/calculator/viewportBase.mjs +2 -0
  9. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  10. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  11. package/3rdparty/walkontable/src/core/_base.js +29 -23
  12. package/3rdparty/walkontable/src/core/_base.mjs +29 -23
  13. package/3rdparty/walkontable/src/core/clone.js +1 -0
  14. package/3rdparty/walkontable/src/core/clone.mjs +1 -0
  15. package/3rdparty/walkontable/src/core/core.js +2 -0
  16. package/3rdparty/walkontable/src/core/core.mjs +2 -0
  17. package/3rdparty/walkontable/src/facade/core.js +12 -6
  18. package/3rdparty/walkontable/src/facade/core.mjs +12 -6
  19. package/3rdparty/walkontable/src/index.js +0 -1
  20. package/3rdparty/walkontable/src/index.mjs +2 -2
  21. package/3rdparty/walkontable/src/overlay/_base.js +8 -1
  22. package/3rdparty/walkontable/src/overlay/_base.mjs +8 -1
  23. package/3rdparty/walkontable/src/overlay/bottom.js +5 -6
  24. package/3rdparty/walkontable/src/overlay/bottom.mjs +5 -6
  25. package/3rdparty/walkontable/src/overlay/index.js +2 -0
  26. package/3rdparty/walkontable/src/overlay/inlineStart.js +8 -7
  27. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +9 -8
  28. package/3rdparty/walkontable/src/overlay/top.js +9 -8
  29. package/3rdparty/walkontable/src/overlay/top.mjs +10 -9
  30. package/3rdparty/walkontable/src/overlays.js +10 -26
  31. package/3rdparty/walkontable/src/overlays.mjs +10 -26
  32. package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
  33. package/3rdparty/walkontable/src/renderer/colGroup.mjs +1 -1
  34. package/3rdparty/walkontable/src/renderer/index.js +4 -2
  35. package/3rdparty/walkontable/src/renderer/index.mjs +4 -2
  36. package/3rdparty/walkontable/src/renderer/table.js +13 -4
  37. package/3rdparty/walkontable/src/renderer/table.mjs +13 -4
  38. package/3rdparty/walkontable/src/scroll.js +46 -37
  39. package/3rdparty/walkontable/src/scroll.mjs +46 -37
  40. package/3rdparty/walkontable/src/selection/border/border.js +52 -58
  41. package/3rdparty/walkontable/src/selection/border/border.mjs +53 -59
  42. package/3rdparty/walkontable/src/selection/border/utils.js +26 -0
  43. package/3rdparty/walkontable/src/selection/border/utils.mjs +22 -0
  44. package/3rdparty/walkontable/src/selection/index.js +6 -4
  45. package/3rdparty/walkontable/src/selection/index.mjs +1 -1
  46. package/3rdparty/walkontable/src/selection/manager.js +3 -0
  47. package/3rdparty/walkontable/src/selection/manager.mjs +3 -0
  48. package/3rdparty/walkontable/src/selection/scanner.js +46 -11
  49. package/3rdparty/walkontable/src/selection/scanner.mjs +46 -11
  50. package/3rdparty/walkontable/src/settings.js +8 -9
  51. package/3rdparty/walkontable/src/settings.mjs +8 -9
  52. package/3rdparty/walkontable/src/table/master.js +1 -1
  53. package/3rdparty/walkontable/src/table/master.mjs +2 -2
  54. package/3rdparty/walkontable/src/table.js +25 -36
  55. package/3rdparty/walkontable/src/table.mjs +25 -36
  56. package/3rdparty/walkontable/src/types.js +1 -0
  57. package/3rdparty/walkontable/src/types.mjs +1 -0
  58. package/3rdparty/walkontable/src/utils/column.js +1 -43
  59. package/3rdparty/walkontable/src/utils/column.mjs +1 -43
  60. package/3rdparty/walkontable/src/utils/stylesHandler.js +295 -0
  61. package/3rdparty/walkontable/src/utils/stylesHandler.mjs +291 -0
  62. package/3rdparty/walkontable/src/viewport.js +94 -91
  63. package/3rdparty/walkontable/src/viewport.mjs +95 -92
  64. package/CHANGELOG.md +36 -0
  65. package/README.md +1 -1
  66. package/base.js +4 -4
  67. package/base.mjs +3 -3
  68. package/core/focusCatcher/focusDetector.js +1 -0
  69. package/core/focusCatcher/focusDetector.mjs +1 -0
  70. package/core/hooks/bucket.js +184 -0
  71. package/core/hooks/bucket.mjs +180 -0
  72. package/{pluginHooks.mjs → core/hooks/constants.js} +38 -486
  73. package/{pluginHooks.js → core/hooks/constants.mjs} +34 -489
  74. package/{pluginHooks.d.ts → core/hooks/index.d.ts} +22 -25
  75. package/core/hooks/index.js +385 -0
  76. package/core/hooks/index.mjs +381 -0
  77. package/core/index.js +2 -0
  78. package/core.d.ts +5 -3
  79. package/core.js +77 -35
  80. package/core.mjs +69 -27
  81. package/dataMap/dataMap.js +3 -0
  82. package/dataMap/dataMap.mjs +3 -0
  83. package/dataMap/dataSource.js +2 -0
  84. package/dataMap/dataSource.mjs +2 -0
  85. package/dataMap/metaManager/index.js +2 -0
  86. package/dataMap/metaManager/index.mjs +2 -0
  87. package/dataMap/metaManager/metaSchema.js +91 -5
  88. package/dataMap/metaManager/metaSchema.mjs +91 -5
  89. package/dataMap/metaManager/mods/dynamicCellMeta.js +2 -3
  90. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  91. package/dataMap/metaManager/mods/extendMetaProperties.js +2 -0
  92. package/dataMap/metaManager/mods/extendMetaProperties.mjs +2 -0
  93. package/dist/handsontable.css +84 -72
  94. package/dist/handsontable.full.css +317 -304
  95. package/dist/handsontable.full.js +14826 -7294
  96. package/dist/handsontable.full.min.css +15 -10
  97. package/dist/handsontable.full.min.js +262 -69
  98. package/dist/handsontable.js +7826 -5552
  99. package/dist/handsontable.min.css +10 -6
  100. package/dist/handsontable.min.js +33 -33
  101. package/dist/languages/all.js +1 -1
  102. package/dist/languages/ar-AR.js +1 -1
  103. package/dist/languages/cs-CZ.js +1 -1
  104. package/dist/languages/de-CH.js +1 -1
  105. package/dist/languages/de-DE.js +1 -1
  106. package/dist/languages/en-US.js +1 -1
  107. package/dist/languages/es-MX.js +1 -1
  108. package/dist/languages/fr-FR.js +1 -1
  109. package/dist/languages/hr-HR.js +1 -1
  110. package/dist/languages/it-IT.js +1 -1
  111. package/dist/languages/ja-JP.js +1 -1
  112. package/dist/languages/ko-KR.js +1 -1
  113. package/dist/languages/lv-LV.js +1 -1
  114. package/dist/languages/nb-NO.js +1 -1
  115. package/dist/languages/nl-NL.js +1 -1
  116. package/dist/languages/pl-PL.js +1 -1
  117. package/dist/languages/pt-BR.js +1 -1
  118. package/dist/languages/ru-RU.js +1 -1
  119. package/dist/languages/sr-SP.js +1 -1
  120. package/dist/languages/zh-CN.js +1 -1
  121. package/dist/languages/zh-TW.js +1 -1
  122. package/editorManager.js +2 -2
  123. package/editorManager.mjs +2 -2
  124. package/editors/autocompleteEditor/autocompleteEditor.js +34 -16
  125. package/editors/autocompleteEditor/autocompleteEditor.mjs +34 -16
  126. package/editors/baseEditor/baseEditor.js +25 -18
  127. package/editors/baseEditor/baseEditor.mjs +26 -19
  128. package/editors/dateEditor/dateEditor.js +9 -0
  129. package/editors/dateEditor/dateEditor.mjs +10 -1
  130. package/editors/dropdownEditor/dropdownEditor.js +4 -3
  131. package/editors/dropdownEditor/dropdownEditor.mjs +3 -1
  132. package/editors/handsontableEditor/handsontableEditor.js +36 -2
  133. package/editors/handsontableEditor/handsontableEditor.mjs +36 -2
  134. package/editors/passwordEditor/passwordEditor.js +18 -0
  135. package/editors/passwordEditor/passwordEditor.mjs +18 -0
  136. package/editors/registry.js +2 -2
  137. package/editors/registry.mjs +1 -1
  138. package/editors/selectEditor/selectEditor.js +20 -9
  139. package/editors/selectEditor/selectEditor.mjs +20 -9
  140. package/editors/textEditor/textEditor.js +5 -12
  141. package/editors/textEditor/textEditor.mjs +6 -13
  142. package/focusManager.js +5 -7
  143. package/focusManager.mjs +5 -7
  144. package/helpers/array.js +2 -0
  145. package/helpers/array.mjs +2 -0
  146. package/helpers/data.js +3 -0
  147. package/helpers/data.mjs +3 -0
  148. package/helpers/dom/element.js +39 -18
  149. package/helpers/dom/element.mjs +38 -17
  150. package/helpers/mixed.js +3 -3
  151. package/helpers/mixed.mjs +3 -3
  152. package/helpers/moves.js +3 -0
  153. package/helpers/moves.mjs +3 -0
  154. package/helpers/number.js +1 -0
  155. package/helpers/number.mjs +1 -0
  156. package/helpers/object.js +2 -0
  157. package/helpers/object.mjs +2 -0
  158. package/helpers/themes.js +17 -0
  159. package/helpers/themes.mjs +13 -0
  160. package/i18n/index.js +2 -0
  161. package/i18n/languages/index.d.ts +8 -0
  162. package/i18n/languages/ja-JP.d.ts +1 -1
  163. package/i18n/phraseFormatters/substituteVariables.js +1 -0
  164. package/i18n/phraseFormatters/substituteVariables.mjs +1 -0
  165. package/index.d.ts +9 -1
  166. package/languages/all.js +1 -1
  167. package/languages/ar-AR.js +1 -1
  168. package/languages/cs-CZ.js +1 -1
  169. package/languages/de-CH.js +1 -1
  170. package/languages/de-DE.js +1 -1
  171. package/languages/en-US.js +1 -1
  172. package/languages/es-MX.js +1 -1
  173. package/languages/fr-FR.js +1 -1
  174. package/languages/hr-HR.js +1 -1
  175. package/languages/index.js +1 -1
  176. package/languages/it-IT.js +1 -1
  177. package/languages/ja-JP.js +1 -1
  178. package/languages/ko-KR.js +1 -1
  179. package/languages/lv-LV.js +1 -1
  180. package/languages/nb-NO.js +1 -1
  181. package/languages/nl-NL.js +1 -1
  182. package/languages/pl-PL.js +1 -1
  183. package/languages/pt-BR.js +1 -1
  184. package/languages/ru-RU.js +1 -1
  185. package/languages/sr-SP.js +1 -1
  186. package/languages/zh-CN.js +1 -1
  187. package/languages/zh-TW.js +1 -1
  188. package/package.json +22 -7
  189. package/plugins/autoColumnSize/autoColumnSize.js +22 -27
  190. package/plugins/autoColumnSize/autoColumnSize.mjs +22 -27
  191. package/plugins/autoRowSize/autoRowSize.js +20 -22
  192. package/plugins/autoRowSize/autoRowSize.mjs +21 -23
  193. package/plugins/autofill/autofill.js +4 -5
  194. package/plugins/autofill/autofill.mjs +1 -1
  195. package/plugins/base/base.d.ts +1 -1
  196. package/plugins/base/base.js +41 -0
  197. package/plugins/base/base.mjs +42 -1
  198. package/plugins/base/index.js +2 -1
  199. package/plugins/base/index.mjs +1 -1
  200. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -5
  201. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +2 -5
  202. package/plugins/columnSorting/columnSorting.js +5 -4
  203. package/plugins/columnSorting/columnSorting.mjs +3 -1
  204. package/plugins/columnSorting/columnStatesManager.js +1 -0
  205. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  206. package/plugins/columnSorting/utils.js +3 -0
  207. package/plugins/columnSorting/utils.mjs +3 -0
  208. package/plugins/columnSummary/endpoints.js +3 -0
  209. package/plugins/columnSummary/endpoints.mjs +3 -0
  210. package/plugins/comments/commentEditor.js +9 -0
  211. package/plugins/comments/commentEditor.mjs +9 -0
  212. package/plugins/comments/comments.js +24 -18
  213. package/plugins/comments/comments.mjs +26 -20
  214. package/plugins/comments/editorResizeObserver.js +2 -0
  215. package/plugins/comments/editorResizeObserver.mjs +2 -0
  216. package/plugins/contextMenu/contextMenu.d.ts +2 -1
  217. package/plugins/contextMenu/contextMenu.js +6 -7
  218. package/plugins/contextMenu/contextMenu.mjs +1 -1
  219. package/plugins/contextMenu/menu/index.js +2 -0
  220. package/plugins/contextMenu/menu/menu.js +10 -5
  221. package/plugins/contextMenu/menu/menu.mjs +11 -6
  222. package/plugins/contextMenu/menu/positioner.js +4 -2
  223. package/plugins/contextMenu/menu/positioner.mjs +4 -2
  224. package/plugins/contextMenu/menu/shortcuts.js +3 -1
  225. package/plugins/contextMenu/menu/shortcuts.mjs +3 -1
  226. package/plugins/contextMenu/predefinedItems/alignment.js +7 -84
  227. package/plugins/contextMenu/predefinedItems/alignment.mjs +8 -85
  228. package/plugins/contextMenu/utils.js +0 -10
  229. package/plugins/contextMenu/utils.mjs +0 -9
  230. package/plugins/copyPaste/copyPaste.d.ts +1 -0
  231. package/plugins/copyPaste/copyPaste.js +32 -23
  232. package/plugins/copyPaste/copyPaste.mjs +24 -15
  233. package/plugins/customBorders/utils.js +2 -0
  234. package/plugins/customBorders/utils.mjs +2 -0
  235. package/plugins/dropdownMenu/dropdownMenu.d.ts +2 -1
  236. package/plugins/dropdownMenu/dropdownMenu.js +6 -7
  237. package/plugins/dropdownMenu/dropdownMenu.mjs +1 -1
  238. package/plugins/exportFile/types/csv.js +1 -0
  239. package/plugins/exportFile/types/csv.mjs +1 -0
  240. package/plugins/filters/component/condition.js +2 -0
  241. package/plugins/filters/component/condition.mjs +2 -0
  242. package/plugins/filters/component/operators.js +2 -0
  243. package/plugins/filters/component/operators.mjs +2 -0
  244. package/plugins/filters/component/value.js +3 -0
  245. package/plugins/filters/component/value.mjs +3 -0
  246. package/plugins/filters/conditionCollection.js +3 -0
  247. package/plugins/filters/conditionCollection.mjs +3 -0
  248. package/plugins/filters/conditionUpdateObserver.js +2 -0
  249. package/plugins/filters/conditionUpdateObserver.mjs +2 -0
  250. package/plugins/filters/filters.js +43 -13
  251. package/plugins/filters/filters.mjs +43 -13
  252. package/plugins/filters/logicalOperations/conjunction.js +2 -0
  253. package/plugins/filters/logicalOperations/conjunction.mjs +2 -0
  254. package/plugins/filters/logicalOperations/disjunction.js +2 -0
  255. package/plugins/filters/logicalOperations/disjunction.mjs +2 -0
  256. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +2 -0
  257. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.mjs +2 -0
  258. package/plugins/filters/menu/focusController.js +38 -14
  259. package/plugins/filters/menu/focusController.mjs +38 -14
  260. package/plugins/filters/ui/multipleSelect.js +10 -0
  261. package/plugins/filters/ui/multipleSelect.mjs +10 -0
  262. package/plugins/formulas/engine/register.js +3 -0
  263. package/plugins/formulas/engine/register.mjs +3 -0
  264. package/plugins/formulas/engine/settings.js +3 -0
  265. package/plugins/formulas/engine/settings.mjs +3 -0
  266. package/plugins/formulas/formulas.js +12 -7
  267. package/plugins/formulas/formulas.mjs +6 -1
  268. package/plugins/formulas/indexSyncer/axisSyncer.js +3 -0
  269. package/plugins/formulas/indexSyncer/axisSyncer.mjs +3 -0
  270. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -0
  271. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -0
  272. package/plugins/hiddenColumns/hiddenColumns.js +22 -30
  273. package/plugins/hiddenColumns/hiddenColumns.mjs +18 -26
  274. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -0
  275. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -0
  276. package/plugins/hiddenRows/hiddenRows.js +21 -29
  277. package/plugins/hiddenRows/hiddenRows.mjs +17 -25
  278. package/plugins/index.d.ts +3 -0
  279. package/plugins/index.js +3 -0
  280. package/plugins/index.mjs +3 -1
  281. package/plugins/manualColumnFreeze/manualColumnFreeze.js +7 -5
  282. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +3 -1
  283. package/plugins/manualColumnMove/manualColumnMove.js +6 -6
  284. package/plugins/manualColumnMove/manualColumnMove.mjs +4 -4
  285. package/plugins/manualColumnResize/manualColumnResize.js +26 -12
  286. package/plugins/manualColumnResize/manualColumnResize.mjs +26 -12
  287. package/plugins/manualRowMove/manualRowMove.js +8 -6
  288. package/plugins/manualRowMove/manualRowMove.mjs +6 -4
  289. package/plugins/manualRowResize/manualRowResize.js +3 -2
  290. package/plugins/manualRowResize/manualRowResize.mjs +4 -3
  291. package/plugins/mergeCells/cellsCollection.js +19 -3
  292. package/plugins/mergeCells/cellsCollection.mjs +20 -4
  293. package/plugins/mergeCells/mergeCells.d.ts +6 -2
  294. package/plugins/mergeCells/mergeCells.js +84 -56
  295. package/plugins/mergeCells/mergeCells.mjs +82 -54
  296. package/plugins/mergeCells/renderer.js +13 -3
  297. package/plugins/mergeCells/renderer.mjs +13 -3
  298. package/plugins/multiColumnSorting/domHelpers.js +2 -0
  299. package/plugins/multiColumnSorting/domHelpers.mjs +2 -0
  300. package/plugins/nestedHeaders/nestedHeaders.js +63 -16
  301. package/plugins/nestedHeaders/nestedHeaders.mjs +63 -16
  302. package/plugins/nestedHeaders/stateManager/index.js +1 -0
  303. package/plugins/nestedHeaders/stateManager/index.mjs +1 -0
  304. package/plugins/nestedRows/nestedRows.js +3 -0
  305. package/plugins/nestedRows/nestedRows.mjs +3 -0
  306. package/plugins/nestedRows/ui/headers.js +7 -1
  307. package/plugins/nestedRows/ui/headers.mjs +7 -1
  308. package/plugins/nestedRows/utils/rowMoveController.js +4 -0
  309. package/plugins/nestedRows/utils/rowMoveController.mjs +4 -0
  310. package/plugins/persistentState/persistentState.js +4 -4
  311. package/plugins/persistentState/persistentState.mjs +1 -1
  312. package/plugins/stretchColumns/calculator.js +162 -0
  313. package/plugins/stretchColumns/calculator.mjs +158 -0
  314. package/plugins/stretchColumns/index.d.ts +1 -0
  315. package/plugins/stretchColumns/index.js +7 -0
  316. package/plugins/stretchColumns/index.mjs +1 -0
  317. package/plugins/stretchColumns/strategies/_base.js +85 -0
  318. package/plugins/stretchColumns/strategies/_base.mjs +81 -0
  319. package/plugins/stretchColumns/strategies/all.js +71 -0
  320. package/plugins/stretchColumns/strategies/all.mjs +67 -0
  321. package/plugins/stretchColumns/strategies/last.js +79 -0
  322. package/plugins/stretchColumns/strategies/last.mjs +75 -0
  323. package/plugins/stretchColumns/stretchColumns.d.ts +11 -0
  324. package/plugins/stretchColumns/stretchColumns.js +222 -0
  325. package/plugins/stretchColumns/stretchColumns.mjs +218 -0
  326. package/plugins/trimRows/trimRows.js +2 -0
  327. package/plugins/trimRows/trimRows.mjs +2 -0
  328. package/plugins/undoRedo/undoRedo.js +9 -5
  329. package/plugins/undoRedo/undoRedo.mjs +8 -3
  330. package/renderers/checkboxRenderer/checkboxRenderer.js +19 -8
  331. package/renderers/checkboxRenderer/checkboxRenderer.mjs +18 -7
  332. package/selection/index.js +2 -0
  333. package/selection/range.js +2 -0
  334. package/selection/range.mjs +2 -0
  335. package/selection/selection.js +7 -2
  336. package/selection/selection.mjs +7 -2
  337. package/selection/utils.js +2 -0
  338. package/selection/utils.mjs +2 -0
  339. package/settings.d.ts +4 -1
  340. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +1 -1
  341. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +1 -1
  342. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +1 -1
  343. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +1 -1
  344. package/shortcutContexts/commands/index.js +2 -0
  345. package/shortcutContexts/commands/index.mjs +2 -0
  346. package/shortcutContexts/commands/scrollToFocusedCell.js +4 -4
  347. package/shortcutContexts/commands/scrollToFocusedCell.mjs +4 -4
  348. package/shortcutContexts/index.js +2 -0
  349. package/shortcutContexts/index.mjs +2 -0
  350. package/shortcuts/context.js +3 -0
  351. package/shortcuts/context.mjs +3 -0
  352. package/shortcuts/recorder.js +3 -3
  353. package/shortcuts/recorder.mjs +3 -3
  354. package/shortcuts/utils.js +1 -0
  355. package/shortcuts/utils.mjs +1 -0
  356. package/styles/handsontable.css +2307 -0
  357. package/styles/handsontable.min.css +30 -0
  358. package/styles/ht-theme-horizon.css +607 -0
  359. package/styles/ht-theme-horizon.min.css +30 -0
  360. package/styles/ht-theme-main.css +613 -0
  361. package/styles/ht-theme-main.min.css +30 -0
  362. package/tableView.js +205 -33
  363. package/tableView.mjs +206 -34
  364. package/translations/changesObservable/observable.js +2 -0
  365. package/translations/changesObservable/observable.mjs +2 -0
  366. package/translations/index.js +2 -0
  367. package/translations/indexMapper.js +4 -0
  368. package/translations/indexMapper.mjs +4 -0
  369. package/translations/mapCollections/index.js +2 -0
  370. package/translations/mapCollections/mapCollection.js +2 -0
  371. package/translations/mapCollections/mapCollection.mjs +2 -0
  372. package/translations/maps/index.js +2 -0
  373. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  374. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  375. package/translations/maps/utils/actionsOnIndexes.js +2 -0
  376. package/translations/maps/utils/actionsOnIndexes.mjs +2 -0
  377. package/translations/maps/utils/physicallyIndexed.js +1 -0
  378. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  379. package/utils/autoResize.js +11 -3
  380. package/utils/autoResize.mjs +11 -3
  381. package/utils/dataStructures/priorityMap.js +1 -0
  382. package/utils/dataStructures/priorityMap.mjs +1 -0
  383. package/utils/dataStructures/uniqueMap.js +2 -0
  384. package/utils/dataStructures/uniqueMap.mjs +2 -0
  385. package/utils/ghostTable.js +7 -3
  386. package/utils/ghostTable.mjs +7 -3
  387. package/utils/parseTable.js +4 -0
  388. package/utils/parseTable.mjs +4 -0
  389. package/3rdparty/walkontable/src/selection/border/constants.js +0 -15
  390. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
  391. package/3rdparty/walkontable/src/utils/columnStretching.js +0 -197
  392. package/3rdparty/walkontable/src/utils/columnStretching.mjs +0 -193
package/core.mjs CHANGED
@@ -7,6 +7,10 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
7
7
  import "core-js/modules/es.set.is-superset-of.v2.js";
8
8
  import "core-js/modules/es.set.symmetric-difference.v2.js";
9
9
  import "core-js/modules/es.set.union.v2.js";
10
+ import "core-js/modules/esnext.iterator.constructor.js";
11
+ import "core-js/modules/esnext.iterator.filter.js";
12
+ import "core-js/modules/esnext.iterator.for-each.js";
13
+ import "core-js/modules/esnext.iterator.map.js";
10
14
  import "core-js/modules/web.immediate.js";
11
15
  import { addClass, empty, observeVisibilityChangeOnce, removeClass } from "./helpers/dom/element.mjs";
12
16
  import { isFunction } from "./helpers/function.mjs";
@@ -30,7 +34,7 @@ import { spreadsheetColumnLabel } from "./helpers/data.mjs";
30
34
  import { IndexMapper } from "./translations/index.mjs";
31
35
  import { registerAsRootInstance, hasValidParameter, isRootInstance } from "./utils/rootInstance.mjs";
32
36
  import { DEFAULT_COLUMN_WIDTH } from "./3rdparty/walkontable/src/index.mjs";
33
- import Hooks from "./pluginHooks.mjs";
37
+ import { Hooks } from "./core/hooks/index.mjs";
34
38
  import { hasLanguageDictionary, getValidLanguageCode, getTranslatedPhrase } from "./i18n/registry.mjs";
35
39
  import { warnUserAboutLanguageRegistration, normalizeLanguageCode } from "./i18n/utils.mjs";
36
40
  import { Selection } from "./selection/index.mjs";
@@ -39,6 +43,7 @@ import { installFocusCatcher, createViewportScroller } from "./core/index.mjs";
39
43
  import { createUniqueMap } from "./utils/dataStructures/uniqueMap.mjs";
40
44
  import { createShortcutManager } from "./shortcuts/index.mjs";
41
45
  import { registerAllShortcutContexts } from "./shortcutContexts/index.mjs";
46
+ import { getThemeClassName } from "./helpers/themes.mjs";
42
47
  let activeGuid = null;
43
48
 
44
49
  /**
@@ -225,6 +230,7 @@ export default function Core(rootElement, userSettings) {
225
230
  rootElement.insertBefore(this.container, rootElement.firstChild);
226
231
  if (isRootInstance(this)) {
227
232
  _injectProductInfo(userSettings.licenseKey, rootElement);
233
+ addClass(rootElement, 'ht-wrapper');
228
234
  }
229
235
  this.guid = `ht_${randomString()}`; // this is the namespace for global events
230
236
 
@@ -937,7 +943,9 @@ export default function Core(rootElement, userSettings) {
937
943
  // when 'value' is array and 'orgValue' is null, set 'orgValue' to
938
944
  // an empty array so that the null value can be compared to 'value'
939
945
  // as an empty value for the array context
940
- if (Array.isArray(value) && orgValue === null) orgValue = [];
946
+ if (Array.isArray(value) && orgValue === null) {
947
+ orgValue = [];
948
+ }
941
949
  if (orgValue === null || typeof orgValue !== 'object') {
942
950
  pushData = false;
943
951
  } else {
@@ -1025,6 +1033,13 @@ export default function Core(rootElement, userSettings) {
1025
1033
  }
1026
1034
  this.updateSettings(tableMeta, true);
1027
1035
  this.view = new TableView(this);
1036
+ const themeName = tableMeta.themeName || getThemeClassName(instance.rootElement);
1037
+
1038
+ // Use the theme defined as a root element class or in the settings (in that order).
1039
+ instance.useTheme(themeName);
1040
+
1041
+ // Add the theme class name to the license info element.
1042
+ instance.view.addClassNameToLicenseElement(instance.getCurrentThemeName());
1028
1043
  editorManager = EditorManager.getInstance(instance, tableMeta, selection);
1029
1044
  viewportScroller = createViewportScroller(instance);
1030
1045
  focusManager = new FocusManager(instance);
@@ -1402,7 +1417,7 @@ export default function Core(rootElement, userSettings) {
1402
1417
  if (!changeSource && typeof row === 'object') {
1403
1418
  changeSource = column;
1404
1419
  }
1405
- const processedChanges = processChanges(changes, source);
1420
+ const processedChanges = processChanges(changes, changeSource);
1406
1421
  instance.runHooks('afterSetDataAtCell', processedChanges, changeSource);
1407
1422
  validateChanges(processedChanges, changeSource, () => {
1408
1423
  applyChanges(processedChanges, changeSource);
@@ -2289,9 +2304,10 @@ export default function Core(rootElement, userSettings) {
2289
2304
  setClassName('tableClassName', settings.tableClassName);
2290
2305
  instance.view._wt.wtOverlays.syncOverlayTableClassNames();
2291
2306
  } else if (Hooks.getSingleton().isRegistered(i) || Hooks.getSingleton().isDeprecated(i)) {
2292
- if (isFunction(settings[i]) || Array.isArray(settings[i])) {
2293
- settings[i].initialHook = true;
2294
- instance.addHook(i, settings[i]);
2307
+ if (isFunction(settings[i])) {
2308
+ Hooks.getSingleton().addAsFixed(i, settings[i], instance);
2309
+ } else if (Array.isArray(settings[i])) {
2310
+ Hooks.getSingleton().add(i, settings[i], instance);
2295
2311
  }
2296
2312
  } else if (!init && hasOwnProperty(settings, i)) {
2297
2313
  // Update settings
@@ -2377,6 +2393,19 @@ export default function Core(rootElement, userSettings) {
2377
2393
  if (instance.view) {
2378
2394
  instance.view._wt.wtViewport.resetHasOversizedColumnHeadersMarked();
2379
2395
  instance.view._wt.exportSettingsAsClassNames();
2396
+ const currentThemeName = instance.getCurrentThemeName();
2397
+ const themeNameOptionExists = hasOwnProperty(settings, 'themeName');
2398
+ if (currentThemeName && themeNameOptionExists) {
2399
+ instance.view.getStylesHandler().removeClassNames();
2400
+ instance.view.removeClassNameFromLicenseElement(currentThemeName);
2401
+ }
2402
+ const themeName = themeNameOptionExists && settings.themeName || getThemeClassName(instance.rootElement);
2403
+
2404
+ // Use the theme defined as a root element class or in the settings (in that order).
2405
+ instance.useTheme(themeName);
2406
+
2407
+ // Add the theme class name to the license info element.
2408
+ instance.view.addClassNameToLicenseElement(instance.getCurrentThemeName());
2380
2409
  }
2381
2410
  instance.runHooks('afterUpdateSettings', settings);
2382
2411
  }
@@ -3488,12 +3517,13 @@ export default function Core(rootElement, userSettings) {
3488
3517
  * @memberof Core#
3489
3518
  * @function getColWidth
3490
3519
  * @param {number} column Visual column index.
3520
+ * @param {string} [source] The source of the call.
3491
3521
  * @returns {number} Column width.
3492
3522
  * @fires Hooks#modifyColWidth
3493
3523
  */
3494
- this.getColWidth = function (column) {
3524
+ this.getColWidth = function (column, source) {
3495
3525
  let width = instance._getColWidthFromSettings(column);
3496
- width = instance.runHooks('modifyColWidth', width, column);
3526
+ width = instance.runHooks('modifyColWidth', width, column, source);
3497
3527
  if (width === undefined) {
3498
3528
  width = DEFAULT_COLUMN_WIDTH;
3499
3529
  }
@@ -3553,12 +3583,13 @@ export default function Core(rootElement, userSettings) {
3553
3583
  * @memberof Core#
3554
3584
  * @function getRowHeight
3555
3585
  * @param {number} row A visual row index.
3586
+ * @param {string} [source] The source of the call.
3556
3587
  * @returns {number|undefined} The height of the specified row, in pixels.
3557
3588
  * @fires Hooks#modifyRowHeight
3558
3589
  */
3559
- this.getRowHeight = function (row) {
3590
+ this.getRowHeight = function (row, source) {
3560
3591
  let height = instance._getRowHeightFromSettings(row);
3561
- height = instance.runHooks('modifyRowHeight', height, row);
3592
+ height = instance.runHooks('modifyRowHeight', height, row, source);
3562
3593
  return height;
3563
3594
  };
3564
3595
 
@@ -4071,22 +4102,8 @@ export default function Core(rootElement, userSettings) {
4071
4102
  const {
4072
4103
  row,
4073
4104
  col,
4074
- verticalSnap,
4075
- horizontalSnap,
4076
4105
  considerHiddenIndexes
4077
4106
  } = (_options = options) !== null && _options !== void 0 ? _options : {};
4078
- let snapToTop;
4079
- let snapToBottom;
4080
- let snapToInlineStart;
4081
- let snapToInlineEnd;
4082
- if (verticalSnap !== undefined) {
4083
- snapToTop = verticalSnap === 'top';
4084
- snapToBottom = !snapToTop;
4085
- }
4086
- if (horizontalSnap !== undefined) {
4087
- snapToInlineStart = horizontalSnap === 'start';
4088
- snapToInlineEnd = !snapToInlineStart;
4089
- }
4090
4107
  let renderableRow = row;
4091
4108
  let renderableColumn = col;
4092
4109
  if (considerHiddenIndexes === undefined || considerHiddenIndexes) {
@@ -4103,13 +4120,13 @@ export default function Core(rootElement, userSettings) {
4103
4120
  const isRowInteger = Number.isInteger(renderableRow);
4104
4121
  const isColumnInteger = Number.isInteger(renderableColumn);
4105
4122
  if (isRowInteger && renderableRow >= 0 && isColumnInteger && renderableColumn >= 0) {
4106
- return instance.view.scrollViewport(instance._createCellCoords(renderableRow, renderableColumn), snapToTop, snapToInlineEnd, snapToBottom, snapToInlineStart);
4123
+ return instance.view.scrollViewport(instance._createCellCoords(renderableRow, renderableColumn), options.horizontalSnap, options.verticalSnap);
4107
4124
  }
4108
4125
  if (isRowInteger && renderableRow >= 0 && (isColumnInteger && renderableColumn < 0 || !isColumnInteger)) {
4109
- return instance.view.scrollViewportVertically(renderableRow, snapToTop, snapToBottom);
4126
+ return instance.view.scrollViewportVertically(renderableRow, options.verticalSnap);
4110
4127
  }
4111
4128
  if (isColumnInteger && renderableColumn >= 0 && (isRowInteger && renderableRow < 0 || !isRowInteger)) {
4112
- return instance.view.scrollViewportHorizontally(renderableColumn, snapToInlineEnd, snapToInlineStart);
4129
+ return instance.view.scrollViewportHorizontally(renderableColumn, options.horizontalSnap);
4113
4130
  }
4114
4131
  return false;
4115
4132
  };
@@ -4578,6 +4595,31 @@ export default function Core(rootElement, userSettings) {
4578
4595
  };
4579
4596
  this.timeouts = [];
4580
4597
 
4598
+ /**
4599
+ * Use the theme specified by the provided name.
4600
+ *
4601
+ * @memberof Core#
4602
+ * @function useTheme
4603
+ * @since 15.0.0
4604
+ * @param {string|boolean|undefined} themeName The name of the theme to use.
4605
+ */
4606
+ this.useTheme = themeName => {
4607
+ this.view.getStylesHandler().useTheme(themeName);
4608
+ this.runHooks('afterSetTheme', themeName, !!firstRun);
4609
+ };
4610
+
4611
+ /**
4612
+ * Gets the name of the currently used theme.
4613
+ *
4614
+ * @memberof Core#
4615
+ * @function getCurrentThemeName
4616
+ * @since 15.0.0
4617
+ * @returns {string|undefined} The name of the currently used theme.
4618
+ */
4619
+ this.getCurrentThemeName = () => {
4620
+ return this.view.getStylesHandler().getThemeName();
4621
+ };
4622
+
4581
4623
  /**
4582
4624
  * Sets timeout. Purpose of this method is to clear all known timeouts when `destroy` method is called.
4583
4625
  *
@@ -3,6 +3,9 @@
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
5
  require("core-js/modules/es.array.push.js");
6
+ require("core-js/modules/esnext.iterator.constructor.js");
7
+ require("core-js/modules/esnext.iterator.filter.js");
8
+ require("core-js/modules/esnext.iterator.for-each.js");
6
9
  var _SheetClip = require("../3rdparty/SheetClip");
7
10
  var _data = require("../helpers/data");
8
11
  var _object = require("../helpers/object");
@@ -1,5 +1,8 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/esnext.iterator.constructor.js";
4
+ import "core-js/modules/esnext.iterator.filter.js";
5
+ import "core-js/modules/esnext.iterator.for-each.js";
3
6
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
7
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
8
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -3,6 +3,8 @@
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
5
  require("core-js/modules/es.array.push.js");
6
+ require("core-js/modules/esnext.iterator.constructor.js");
7
+ require("core-js/modules/esnext.iterator.for-each.js");
6
8
  var _object = require("../helpers/object");
7
9
  var _data = require("../helpers/data");
8
10
  var _array = require("../helpers/array");
@@ -1,5 +1,7 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/esnext.iterator.constructor.js";
4
+ import "core-js/modules/esnext.iterator.for-each.js";
3
5
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
7
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -2,6 +2,8 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/esnext.iterator.constructor.js");
6
+ require("core-js/modules/esnext.iterator.for-each.js");
5
7
  var _globalMeta = _interopRequireDefault(require("./metaLayers/globalMeta"));
6
8
  var _tableMeta = _interopRequireDefault(require("./metaLayers/tableMeta"));
7
9
  var _columnMeta = _interopRequireDefault(require("./metaLayers/columnMeta"));
@@ -1,4 +1,6 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.iterator.constructor.js";
3
+ import "core-js/modules/esnext.iterator.for-each.js";
2
4
  import GlobalMeta from "./metaLayers/globalMeta.mjs";
3
5
  import TableMeta from "./metaLayers/tableMeta.mjs";
4
6
  import ColumnMeta from "./metaLayers/columnMeta.mjs";
@@ -3842,8 +3842,8 @@ var _default = () => {
3842
3842
  /**
3843
3843
  * The `rowHeights` option sets rows' heights, in pixels.
3844
3844
  *
3845
- * In the rendering process, the default row height is 23 px (22 px + 1 px of the row's bottom border).
3846
- * You can change it to equal or greater than 23px, by setting the `rowHeights` option to one of the following:
3845
+ * In the rendering process, the default row height is 23 px (in the classic theme: 22 px + 1 px of the row's bottom border) or whatever is defined in the used theme (based on the line height, vertical padding and cell borders).
3846
+ * You can change it to equal or greater than the defautl value, by setting the `rowHeights` option to one of the following:
3847
3847
  *
3848
3848
  * | Setting | Description | Example |
3849
3849
  * | ----------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
@@ -3875,7 +3875,7 @@ var _default = () => {
3875
3875
  * // set the first (by visual index) row's height to 100
3876
3876
  * // set the second (by visual index) row's height to 120
3877
3877
  * // set the third (by visual index) row's height to `undefined`
3878
- * // set any other row's height to the default 23px
3878
+ * // set any other row's height to the default height value
3879
3879
  * rowHeights: [100, 120, undefined],
3880
3880
  *
3881
3881
  * // set each row's height individually, using a function
@@ -4313,6 +4313,26 @@ var _default = () => {
4313
4313
  * ```
4314
4314
  */
4315
4315
  tableClassName: undefined,
4316
+ /**
4317
+ * The `themeName` option allows enabling a theme by that name.
4318
+ *
4319
+ * If no `themeName` is provided, the table will use the classic theme (if the correct CSS files are imported).
4320
+ *
4321
+ * Read more:
4322
+ * - [Themes](@/guides/styling/themes/themes.md)
4323
+ *
4324
+ * @memberof Options#
4325
+ * @type {string|boolean|undefined}
4326
+ * @default undefined
4327
+ * @category Core
4328
+ * @since 15.0.0
4329
+ *
4330
+ * @example
4331
+ * ```js
4332
+ * themeName: 'ht-theme-name',
4333
+ * ```
4334
+ */
4335
+ themeName: undefined,
4316
4336
  /**
4317
4337
  * The `tabMoves` option configures the action of the <kbd>**Tab**</kbd> key.
4318
4338
  *
@@ -4681,7 +4701,7 @@ var _default = () => {
4681
4701
  * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
4682
4702
  *
4683
4703
  * @memberof Options#
4684
- * @type {number|string}
4704
+ * @type {number|'auto'}
4685
4705
  * @default 'auto'
4686
4706
  * @category Core
4687
4707
  *
@@ -4711,7 +4731,7 @@ var _default = () => {
4711
4731
  * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
4712
4732
  *
4713
4733
  * @memberof Options#
4714
- * @type {number|string}
4734
+ * @type {number|'auto'}
4715
4735
  * @default 'auto'
4716
4736
  * @category Core
4717
4737
  *
@@ -4722,6 +4742,72 @@ var _default = () => {
4722
4742
  * ```
4723
4743
  */
4724
4744
  viewportRowRenderingOffset: 'auto',
4745
+ /**
4746
+ * @description
4747
+ * The `viewportColumnRenderingThreshold` option configures what column number starting from the left or right
4748
+ * (depends on the scroll direction) should trigger the rendering of columns outside of the grid's viewport.
4749
+ *
4750
+ * You can set the `viewportColumnRenderingThreshold` option to one of the following:
4751
+ *
4752
+ * | Setting | Description |
4753
+ * | ------------------ | ------------------------------------------------------- |
4754
+ * | `auto` | Triggers rendering at half the offset defined by [`viewportColumnRenderingOffset`](#viewportColumnRenderingOffset) option |
4755
+ * | A number | Sets the offset manually (`0` is a default) |
4756
+ *
4757
+ * The `viewportColumnRenderingThreshold` setting is ignored when [`renderAllColumn`](#renderAllColumn) is set to `true`.
4758
+ *
4759
+ * Read more:
4760
+ * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
4761
+ * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
4762
+ *
4763
+ * @memberof Options#
4764
+ * @since 1.14.7
4765
+ * @type {number|'auto'}
4766
+ * @default 0
4767
+ * @category Core
4768
+ *
4769
+ * @example
4770
+ * ```js
4771
+ * // render 12 columns outside of the grid's viewport
4772
+ * viewportColumnRenderingOffset: 12,
4773
+ * // the columns outside of the viewport will be rendered when the user scrolls to the 8th column from/to
4774
+ * viewportColumnRenderingThreshold: 8,
4775
+ * ```
4776
+ */
4777
+ viewportColumnRenderingThreshold: 0,
4778
+ /**
4779
+ * @description
4780
+ * The `viewportRowRenderingThreshold` option configures what row number starting from the top or bottom
4781
+ * (depends on the scroll direction) should trigger the rendering of rows outside of the grid's viewport.
4782
+ *
4783
+ * You can set the `viewportRowRenderingThreshold` option to one of the following:
4784
+ *
4785
+ * | Setting | Description |
4786
+ * | ------------------ | ------------------------------------------------------- |
4787
+ * | `auto` | Triggers rendering at half the offset defined by [`viewportRowRenderingOffset`](#viewportRowRenderingOffset) option |
4788
+ * | A number | Sets the offset manually (`0` is a default) |
4789
+ *
4790
+ * The `viewportRowRenderingThreshold` setting is ignored when [`renderAllRows`](#renderAllRows) is set to `true`.
4791
+ *
4792
+ * Read more:
4793
+ * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
4794
+ * - [Row virtualization](@/guides/rows/row-virtualization/row-virtualization.md)
4795
+ *
4796
+ * @memberof Options#
4797
+ * @since 1.14.7
4798
+ * @type {number|'auto'}
4799
+ * @default 0
4800
+ * @category Core
4801
+ *
4802
+ * @example
4803
+ * ```js
4804
+ * // render 12 rows outside of the grid's viewport
4805
+ * viewportRowRenderingOffset: 12,
4806
+ * // the rows outside of the viewport will be rendered when the user scrolls to the 8th row from/to
4807
+ * viewportRowRenderingThreshold: 8,
4808
+ * ```
4809
+ */
4810
+ viewportRowRenderingThreshold: 0,
4725
4811
  /**
4726
4812
  * The `visibleRows` option sets the height of the [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
4727
4813
  * and [`dropdown`](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md) lists.
@@ -3839,8 +3839,8 @@ export default () => {
3839
3839
  /**
3840
3840
  * The `rowHeights` option sets rows' heights, in pixels.
3841
3841
  *
3842
- * In the rendering process, the default row height is 23 px (22 px + 1 px of the row's bottom border).
3843
- * You can change it to equal or greater than 23px, by setting the `rowHeights` option to one of the following:
3842
+ * In the rendering process, the default row height is 23 px (in the classic theme: 22 px + 1 px of the row's bottom border) or whatever is defined in the used theme (based on the line height, vertical padding and cell borders).
3843
+ * You can change it to equal or greater than the defautl value, by setting the `rowHeights` option to one of the following:
3844
3844
  *
3845
3845
  * | Setting | Description | Example |
3846
3846
  * | ----------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
@@ -3872,7 +3872,7 @@ export default () => {
3872
3872
  * // set the first (by visual index) row's height to 100
3873
3873
  * // set the second (by visual index) row's height to 120
3874
3874
  * // set the third (by visual index) row's height to `undefined`
3875
- * // set any other row's height to the default 23px
3875
+ * // set any other row's height to the default height value
3876
3876
  * rowHeights: [100, 120, undefined],
3877
3877
  *
3878
3878
  * // set each row's height individually, using a function
@@ -4310,6 +4310,26 @@ export default () => {
4310
4310
  * ```
4311
4311
  */
4312
4312
  tableClassName: undefined,
4313
+ /**
4314
+ * The `themeName` option allows enabling a theme by that name.
4315
+ *
4316
+ * If no `themeName` is provided, the table will use the classic theme (if the correct CSS files are imported).
4317
+ *
4318
+ * Read more:
4319
+ * - [Themes](@/guides/styling/themes/themes.md)
4320
+ *
4321
+ * @memberof Options#
4322
+ * @type {string|boolean|undefined}
4323
+ * @default undefined
4324
+ * @category Core
4325
+ * @since 15.0.0
4326
+ *
4327
+ * @example
4328
+ * ```js
4329
+ * themeName: 'ht-theme-name',
4330
+ * ```
4331
+ */
4332
+ themeName: undefined,
4313
4333
  /**
4314
4334
  * The `tabMoves` option configures the action of the <kbd>**Tab**</kbd> key.
4315
4335
  *
@@ -4678,7 +4698,7 @@ export default () => {
4678
4698
  * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
4679
4699
  *
4680
4700
  * @memberof Options#
4681
- * @type {number|string}
4701
+ * @type {number|'auto'}
4682
4702
  * @default 'auto'
4683
4703
  * @category Core
4684
4704
  *
@@ -4708,7 +4728,7 @@ export default () => {
4708
4728
  * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
4709
4729
  *
4710
4730
  * @memberof Options#
4711
- * @type {number|string}
4731
+ * @type {number|'auto'}
4712
4732
  * @default 'auto'
4713
4733
  * @category Core
4714
4734
  *
@@ -4719,6 +4739,72 @@ export default () => {
4719
4739
  * ```
4720
4740
  */
4721
4741
  viewportRowRenderingOffset: 'auto',
4742
+ /**
4743
+ * @description
4744
+ * The `viewportColumnRenderingThreshold` option configures what column number starting from the left or right
4745
+ * (depends on the scroll direction) should trigger the rendering of columns outside of the grid's viewport.
4746
+ *
4747
+ * You can set the `viewportColumnRenderingThreshold` option to one of the following:
4748
+ *
4749
+ * | Setting | Description |
4750
+ * | ------------------ | ------------------------------------------------------- |
4751
+ * | `auto` | Triggers rendering at half the offset defined by [`viewportColumnRenderingOffset`](#viewportColumnRenderingOffset) option |
4752
+ * | A number | Sets the offset manually (`0` is a default) |
4753
+ *
4754
+ * The `viewportColumnRenderingThreshold` setting is ignored when [`renderAllColumn`](#renderAllColumn) is set to `true`.
4755
+ *
4756
+ * Read more:
4757
+ * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
4758
+ * - [Column virtualization](@/guides/columns/column-virtualization/column-virtualization.md)
4759
+ *
4760
+ * @memberof Options#
4761
+ * @since 1.14.7
4762
+ * @type {number|'auto'}
4763
+ * @default 0
4764
+ * @category Core
4765
+ *
4766
+ * @example
4767
+ * ```js
4768
+ * // render 12 columns outside of the grid's viewport
4769
+ * viewportColumnRenderingOffset: 12,
4770
+ * // the columns outside of the viewport will be rendered when the user scrolls to the 8th column from/to
4771
+ * viewportColumnRenderingThreshold: 8,
4772
+ * ```
4773
+ */
4774
+ viewportColumnRenderingThreshold: 0,
4775
+ /**
4776
+ * @description
4777
+ * The `viewportRowRenderingThreshold` option configures what row number starting from the top or bottom
4778
+ * (depends on the scroll direction) should trigger the rendering of rows outside of the grid's viewport.
4779
+ *
4780
+ * You can set the `viewportRowRenderingThreshold` option to one of the following:
4781
+ *
4782
+ * | Setting | Description |
4783
+ * | ------------------ | ------------------------------------------------------- |
4784
+ * | `auto` | Triggers rendering at half the offset defined by [`viewportRowRenderingOffset`](#viewportRowRenderingOffset) option |
4785
+ * | A number | Sets the offset manually (`0` is a default) |
4786
+ *
4787
+ * The `viewportRowRenderingThreshold` setting is ignored when [`renderAllRows`](#renderAllRows) is set to `true`.
4788
+ *
4789
+ * Read more:
4790
+ * - [Performance: Define the number of pre-rendered rows and columns](@/guides/optimization/performance/performance.md#define-the-number-of-pre-rendered-rows-and-columns)
4791
+ * - [Row virtualization](@/guides/rows/row-virtualization/row-virtualization.md)
4792
+ *
4793
+ * @memberof Options#
4794
+ * @since 1.14.7
4795
+ * @type {number|'auto'}
4796
+ * @default 0
4797
+ * @category Core
4798
+ *
4799
+ * @example
4800
+ * ```js
4801
+ * // render 12 rows outside of the grid's viewport
4802
+ * viewportRowRenderingOffset: 12,
4803
+ * // the rows outside of the viewport will be rendered when the user scrolls to the 8th row from/to
4804
+ * viewportRowRenderingThreshold: 8,
4805
+ * ```
4806
+ */
4807
+ viewportRowRenderingThreshold: 0,
4722
4808
  /**
4723
4809
  * The `visibleRows` option sets the height of the [`autocomplete`](@/guides/cell-types/autocomplete-cell-type/autocomplete-cell-type.md)
4724
4810
  * and [`dropdown`](@/guides/cell-types/dropdown-cell-type/dropdown-cell-type.md) lists.
@@ -9,10 +9,9 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
9
9
  require("core-js/modules/es.set.is-superset-of.v2.js");
10
10
  require("core-js/modules/es.set.symmetric-difference.v2.js");
11
11
  require("core-js/modules/es.set.union.v2.js");
12
- var _pluginHooks = _interopRequireDefault(require("../../../pluginHooks"));
12
+ var _hooks = require("../../../core/hooks");
13
13
  var _object = require("../../../helpers/object");
14
14
  var _function = require("../../../helpers/function");
15
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
15
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
16
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
17
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -43,7 +42,7 @@ class DynamicCellMetaMod {
43
42
  _defineProperty(this, "metaSyncMemo", new Map());
44
43
  this.metaManager = metaManager;
45
44
  metaManager.addLocalHook('afterGetCellMeta', cellMeta => this.extendCellMeta(cellMeta));
46
- _pluginHooks.default.getSingleton().add('beforeRender', forceFullRender => {
45
+ _hooks.Hooks.getSingleton().add('beforeRender', forceFullRender => {
47
46
  if (forceFullRender) {
48
47
  this.metaSyncMemo.clear();
49
48
  }
@@ -9,7 +9,7 @@ import "core-js/modules/es.set.union.v2.js";
9
9
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
10
10
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
11
11
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
12
- import Hooks from "../../../pluginHooks.mjs";
12
+ import { Hooks } from "../../../core/hooks/index.mjs";
13
13
  import { hasOwnProperty } from "../../../helpers/object.mjs";
14
14
  import { isFunction } from "../../../helpers/function.mjs";
15
15
  /**
@@ -10,6 +10,8 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
10
10
  require("core-js/modules/es.set.is-superset-of.v2.js");
11
11
  require("core-js/modules/es.set.symmetric-difference.v2.js");
12
12
  require("core-js/modules/es.set.union.v2.js");
13
+ require("core-js/modules/esnext.iterator.constructor.js");
14
+ require("core-js/modules/esnext.iterator.for-each.js");
13
15
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
14
16
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
15
17
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -7,6 +7,8 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
7
7
  import "core-js/modules/es.set.is-superset-of.v2.js";
8
8
  import "core-js/modules/es.set.symmetric-difference.v2.js";
9
9
  import "core-js/modules/es.set.union.v2.js";
10
+ import "core-js/modules/esnext.iterator.constructor.js";
11
+ import "core-js/modules/esnext.iterator.for-each.js";
10
12
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
11
13
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
12
14
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }