handsontable 14.6.1 → 15.0.0-next-fdd4480-20241205

Sign up to get free protection for your applications and to get access to all the features.
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; }