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
@@ -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 _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
6
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
5
7
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -8,7 +10,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
8
10
  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); }
9
11
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
10
12
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
11
- import { defineGetter, objectEach } from "../../helpers/object.mjs";
13
+ import { defineGetter, objectEach, isObject } from "../../helpers/object.mjs";
12
14
  import { arrayEach } from "../../helpers/array.mjs";
13
15
  import { getPluginsNames, hasPlugin } from "../registry.mjs";
14
16
  import { hasCellType } from "../../cellTypes/registry.mjs";
@@ -17,6 +19,7 @@ import { hasRenderer } from "../../renderers/registry.mjs";
17
19
  import { hasValidator } from "../../validators/registry.mjs";
18
20
  import EventManager from "../../eventManager.mjs";
19
21
  const DEPS_TYPE_CHECKERS = new Map([['plugin', hasPlugin], ['cell-type', hasCellType], ['editor', hasEditor], ['renderer', hasRenderer], ['validator', hasValidator]]);
22
+ export const defaultMainSettingSymbol = Symbol('mainSetting');
20
23
  export const PLUGIN_KEY = 'base';
21
24
  const missingDepsMsgs = [];
22
25
  let initializedPlugins = null;
@@ -45,6 +48,15 @@ export class BasePlugin {
45
48
  return [this.PLUGIN_KEY];
46
49
  }
47
50
 
51
+ /**
52
+ * The `DEFAULT_SETTINGS` getter defines the plugin default settings.
53
+ *
54
+ * @returns {object}
55
+ */
56
+ static get DEFAULT_SETTINGS() {
57
+ return {};
58
+ }
59
+
48
60
  /**
49
61
  * The instance of the {@link EventManager} class.
50
62
  *
@@ -145,6 +157,7 @@ export class BasePlugin {
145
157
  if (isAllPluginsAreInitialized) {
146
158
  if (missingDepsMsgs.length > 0) {
147
159
  const errorMsg = [`${missingDepsMsgs.join('\n')}\n`, 'You have to import and register them manually.'].join('');
160
+ missingDepsMsgs.length = 0;
148
161
  throw new Error(errorMsg);
149
162
  }
150
163
  this.hot.runHooks('afterPluginsInitialized');
@@ -169,6 +182,34 @@ export class BasePlugin {
169
182
  this.enabled = false;
170
183
  }
171
184
 
185
+ /**
186
+ * Gets the plugin settings. If there is no setting under the provided key, it returns the default setting
187
+ * provided by the DEFAULT_SETTINGS static property of the class.
188
+ *
189
+ * @param {string} [settingName] The setting name. If the setting name is not provided, it returns
190
+ * the whole plugin's settings object.
191
+ * @returns {*}
192
+ */
193
+ getSetting(settingName) {
194
+ const pluginSettings = this.hot.getSettings()[this.constructor.PLUGIN_KEY];
195
+ if (settingName === undefined) {
196
+ return pluginSettings;
197
+ }
198
+ const defaultSettings = this.constructor.DEFAULT_SETTINGS;
199
+ if ((Array.isArray(pluginSettings) || isObject(pluginSettings)) && defaultSettings[defaultMainSettingSymbol] === settingName) {
200
+ var _pluginSettings$setti;
201
+ if (Array.isArray(pluginSettings)) {
202
+ return pluginSettings;
203
+ }
204
+ return (_pluginSettings$setti = pluginSettings[settingName]) !== null && _pluginSettings$setti !== void 0 ? _pluginSettings$setti : defaultSettings[settingName];
205
+ }
206
+ if (isObject(pluginSettings)) {
207
+ var _pluginSettings$setti2;
208
+ return (_pluginSettings$setti2 = pluginSettings[settingName]) !== null && _pluginSettings$setti2 !== void 0 ? _pluginSettings$setti2 : defaultSettings[settingName];
209
+ }
210
+ return defaultSettings[settingName];
211
+ }
212
+
172
213
  /**
173
214
  * Add listener to plugin hooks system.
174
215
  *
@@ -3,4 +3,5 @@
3
3
  exports.__esModule = true;
4
4
  var _base = require("./base");
5
5
  exports.PLUGIN_KEY = _base.PLUGIN_KEY;
6
- exports.BasePlugin = _base.BasePlugin;
6
+ exports.BasePlugin = _base.BasePlugin;
7
+ exports.defaultMainSettingSymbol = _base.defaultMainSettingSymbol;
@@ -1 +1 @@
1
- export { PLUGIN_KEY, BasePlugin } from "./base.mjs";
1
+ export { PLUGIN_KEY, BasePlugin, defaultMainSettingSymbol } from "./base.mjs";
@@ -88,14 +88,11 @@ class BindRowsWithHeaders extends _base.BasePlugin {
88
88
  * Enables the plugin functionality for this Handsontable instance.
89
89
  */
90
90
  enablePlugin() {
91
+ var _bindTypeToMapStrateg;
91
92
  if (this.enabled) {
92
93
  return;
93
94
  }
94
- let bindType = this.hot.getSettings()[PLUGIN_KEY];
95
- if (typeof bindType !== 'string') {
96
- bindType = DEFAULT_BIND;
97
- }
98
- const MapStrategy = bindTypeToMapStrategy.get(bindType);
95
+ const MapStrategy = (_bindTypeToMapStrateg = bindTypeToMapStrategy.get(this.getSetting())) !== null && _bindTypeToMapStrateg !== void 0 ? _bindTypeToMapStrateg : bindTypeToMapStrategy.get(DEFAULT_BIND);
99
96
  this.headerIndexes = this.hot.rowIndexMapper.registerMap('bindRowsWithHeaders', new MapStrategy());
100
97
  this.addHook('modifyRowHeader', row => _assertClassBrand(_BindRowsWithHeaders_brand, this, _onModifyRowHeader).call(this, row));
101
98
  super.enablePlugin();
@@ -84,14 +84,11 @@ export class BindRowsWithHeaders extends BasePlugin {
84
84
  * Enables the plugin functionality for this Handsontable instance.
85
85
  */
86
86
  enablePlugin() {
87
+ var _bindTypeToMapStrateg;
87
88
  if (this.enabled) {
88
89
  return;
89
90
  }
90
- let bindType = this.hot.getSettings()[PLUGIN_KEY];
91
- if (typeof bindType !== 'string') {
92
- bindType = DEFAULT_BIND;
93
- }
94
- const MapStrategy = bindTypeToMapStrategy.get(bindType);
91
+ const MapStrategy = (_bindTypeToMapStrateg = bindTypeToMapStrategy.get(this.getSetting())) !== null && _bindTypeToMapStrateg !== void 0 ? _bindTypeToMapStrateg : bindTypeToMapStrategy.get(DEFAULT_BIND);
95
92
  this.headerIndexes = this.hot.rowIndexMapper.registerMap('bindRowsWithHeaders', new MapStrategy());
96
93
  this.addHook('modifyRowHeader', row => _assertClassBrand(_BindRowsWithHeaders_brand, this, _onModifyRowHeader).call(this, row));
97
94
  super.enablePlugin();
@@ -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.every.js");
6
8
  var _element = require("../../helpers/dom/element");
7
9
  var _mixed = require("../../helpers/mixed");
8
10
  var _object = require("../../helpers/object");
@@ -10,7 +12,7 @@ var _function = require("../../helpers/function");
10
12
  var _array = require("../../helpers/array");
11
13
  var _base = require("../base");
12
14
  var _translations = require("../../translations");
13
- var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
15
+ var _hooks = require("../../core/hooks");
14
16
  var _columnStatesManager = require("./columnStatesManager");
15
17
  var _shortcutContexts = require("../../shortcutContexts");
16
18
  var _utils = require("./utils");
@@ -18,7 +20,6 @@ var _domHelpers = require("./domHelpers");
18
20
  var _rootComparator = require("./rootComparator");
19
21
  var _sortService = require("./sortService");
20
22
  var _a11y = require("../../helpers/a11y");
21
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
23
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
23
24
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
24
25
  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; }
@@ -31,8 +32,8 @@ const APPEND_COLUMN_CONFIG_STRATEGY = exports.APPEND_COLUMN_CONFIG_STRATEGY = 'a
31
32
  const REPLACE_COLUMN_CONFIG_STRATEGY = exports.REPLACE_COLUMN_CONFIG_STRATEGY = 'replace';
32
33
  const SHORTCUTS_GROUP = PLUGIN_KEY;
33
34
  (0, _sortService.registerRootComparator)(PLUGIN_KEY, _rootComparator.rootComparator);
34
- _pluginHooks.default.getSingleton().register('beforeColumnSort');
35
- _pluginHooks.default.getSingleton().register('afterColumnSort');
35
+ _hooks.Hooks.getSingleton().register('beforeColumnSort');
36
+ _hooks.Hooks.getSingleton().register('afterColumnSort');
36
37
 
37
38
  // DIFF - MultiColumnSorting & ColumnSorting: changed configuration documentation.
38
39
  /**
@@ -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.every.js";
3
5
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
4
6
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
5
7
  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; }
@@ -13,7 +15,7 @@ import { isFunction } from "../../helpers/function.mjs";
13
15
  import { arrayMap } from "../../helpers/array.mjs";
14
16
  import { BasePlugin } from "../base/index.mjs";
15
17
  import { IndexesSequence, PhysicalIndexToValueMap as IndexToValueMap } from "../../translations/index.mjs";
16
- import Hooks from "../../pluginHooks.mjs";
18
+ import { Hooks } from "../../core/hooks/index.mjs";
17
19
  import { ColumnStatesManager } from "./columnStatesManager.mjs";
18
20
  import { EDITOR_EDIT_GROUP as SHORTCUTS_GROUP_EDITOR } from "../../shortcutContexts/index.mjs";
19
21
  import { HEADER_SPAN_CLASS, getNextSortOrder, areValidSortStates, getHeaderSpanElement, isFirstLevelColumnHeader, wasHeaderClickedProperly } from "./utils.mjs";
@@ -2,6 +2,7 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/esnext.iterator.map.js");
5
6
  var _object = require("../../helpers/object");
6
7
  var _translations = require("../../translations");
7
8
  var _mixed = require("../../helpers/mixed");
@@ -1,4 +1,5 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.iterator.map.js";
2
3
  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; }
3
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
5
  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); }
@@ -14,6 +14,9 @@ require("core-js/modules/es.set.is-subset-of.v2.js");
14
14
  require("core-js/modules/es.set.is-superset-of.v2.js");
15
15
  require("core-js/modules/es.set.symmetric-difference.v2.js");
16
16
  require("core-js/modules/es.set.union.v2.js");
17
+ require("core-js/modules/esnext.iterator.constructor.js");
18
+ require("core-js/modules/esnext.iterator.map.js");
19
+ require("core-js/modules/esnext.iterator.some.js");
17
20
  var _moment = _interopRequireDefault(require("moment"));
18
21
  var _object = require("../../helpers/object");
19
22
  var _event = require("../../helpers/dom/event");
@@ -5,6 +5,9 @@ import "core-js/modules/es.set.is-subset-of.v2.js";
5
5
  import "core-js/modules/es.set.is-superset-of.v2.js";
6
6
  import "core-js/modules/es.set.symmetric-difference.v2.js";
7
7
  import "core-js/modules/es.set.union.v2.js";
8
+ import "core-js/modules/esnext.iterator.constructor.js";
9
+ import "core-js/modules/esnext.iterator.map.js";
10
+ import "core-js/modules/esnext.iterator.some.js";
8
11
  import moment from 'moment';
9
12
  import { isObject } from "../../helpers/object.mjs";
10
13
  import { isRightClick } from "../../helpers/dom/event.mjs";
@@ -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.for-each.js");
8
+ require("core-js/modules/esnext.iterator.some.js");
6
9
  var _array = require("../../helpers/array");
7
10
  var _console = require("../../helpers/console");
8
11
  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; }
@@ -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.for-each.js";
5
+ import "core-js/modules/esnext.iterator.some.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); }
@@ -241,6 +241,15 @@ class CommentEditor {
241
241
  return _classPrivateFieldGet(_editor, this).querySelector(`.${CommentEditor.CLASS_INPUT}`);
242
242
  }
243
243
 
244
+ /**
245
+ * Get the editor element.
246
+ *
247
+ * @returns {HTMLElement} The editor element.
248
+ */
249
+ getEditorElement() {
250
+ return _classPrivateFieldGet(_editor, this);
251
+ }
252
+
244
253
  /**
245
254
  * Destroy the comments editor.
246
255
  */
@@ -237,6 +237,15 @@ class CommentEditor {
237
237
  return _classPrivateFieldGet(_editor, this).querySelector(`.${CommentEditor.CLASS_INPUT}`);
238
238
  }
239
239
 
240
+ /**
241
+ * Get the editor element.
242
+ *
243
+ * @returns {HTMLElement} The editor element.
244
+ */
245
+ getEditorElement() {
246
+ return _classPrivateFieldGet(_editor, this);
247
+ }
248
+
240
249
  /**
241
250
  * Destroy the comments editor.
242
251
  */
@@ -194,6 +194,11 @@ class Comments extends _base.BasePlugin {
194
194
  static get PLUGIN_PRIORITY() {
195
195
  return PLUGIN_PRIORITY;
196
196
  }
197
+ static get DEFAULT_SETTINGS() {
198
+ return {
199
+ displayDelay: 250
200
+ };
201
+ }
197
202
  /**
198
203
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
199
204
  * hook and if it returns `true` then the {@link Comments#enablePlugin} method is called.
@@ -222,13 +227,19 @@ class Comments extends _base.BasePlugin {
222
227
  });
223
228
  }
224
229
  if (!_classPrivateFieldGet(_displaySwitch, this)) {
225
- _classPrivateFieldSet(_displaySwitch, this, new _displaySwitch2.default(this.getDisplayDelaySetting()));
230
+ _classPrivateFieldSet(_displaySwitch, this, new _displaySwitch2.default(this.getSetting('displayDelay')));
226
231
  }
227
232
  this.addHook('afterContextMenuDefaultOptions', options => this.addToContextMenu(options));
228
233
  this.addHook('afterRenderer', (TD, row, col, prop, value, cellProperties) => _assertClassBrand(_Comments_brand, this, _onAfterRenderer).call(this, TD, cellProperties));
229
234
  this.addHook('afterScroll', () => _assertClassBrand(_Comments_brand, this, _onAfterScroll).call(this));
230
235
  this.addHook('afterBeginEditing', () => this.hide());
231
236
  this.addHook('afterDocumentKeyDown', event => _assertClassBrand(_Comments_brand, this, _onAfterDocumentKeyDown).call(this, event));
237
+ this.addHook('afterSetTheme', function () {
238
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
239
+ args[_key2] = arguments[_key2];
240
+ }
241
+ return _assertClassBrand(_Comments_brand, _this, _updateEditorThemeClassName).call(_this, ...args);
242
+ });
232
243
  _classPrivateFieldGet(_displaySwitch, this).addLocalHook('hide', () => this.hide());
233
244
  _classPrivateFieldGet(_displaySwitch, this).addLocalHook('show', (row, col) => this.showAtCell(row, col));
234
245
  this.registerShortcuts();
@@ -243,7 +254,7 @@ class Comments extends _base.BasePlugin {
243
254
  * - [`comments`](@/api/options.md#comments)
244
255
  */
245
256
  updatePlugin() {
246
- _classPrivateFieldGet(_displaySwitch, this).updateDelay(this.getDisplayDelaySetting());
257
+ _classPrivateFieldGet(_displaySwitch, this).updateDelay(this.getSetting('displayDelay'));
247
258
  super.updatePlugin();
248
259
  }
249
260
 
@@ -282,7 +293,7 @@ class Comments extends _base.BasePlugin {
282
293
  stopPropagation: true,
283
294
  runOnlyIf: () => {
284
295
  var _this$hot$getSelected;
285
- return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isCell()) && !_classPrivateFieldGet(_editor, this).isVisible();
296
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isCell();
286
297
  },
287
298
  group: SHORTCUTS_GROUP
288
299
  });
@@ -570,7 +581,7 @@ class Comments extends _base.BasePlugin {
570
581
  } else {
571
582
  _classPrivateFieldGet(_editor, this).resetSize();
572
583
  }
573
- const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getStretchedColumnWidth(renderableColumn);
584
+ const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getColumnWidth(renderableColumn);
574
585
  const lastRowHeight = targetingPreviousRow && !isBeforeRenderedRows ? (0, _element.outerHeight)(TD) : 0;
575
586
  const {
576
587
  left,
@@ -660,19 +671,6 @@ class Comments extends _base.BasePlugin {
660
671
  }, (0, _addEditComment.default)(this), (0, _removeComment.default)(this), (0, _readOnlyComment.default)(this));
661
672
  }
662
673
 
663
- /**
664
- * Get `displayDelay` setting of comment plugin.
665
- *
666
- * @private
667
- * @returns {number|undefined}
668
- */
669
- getDisplayDelaySetting() {
670
- const commentSetting = this.hot.getSettings()[PLUGIN_KEY];
671
- if ((0, _object.isObject)(commentSetting)) {
672
- return commentSetting.displayDelay;
673
- }
674
- }
675
-
676
674
  /**
677
675
  * Gets the editors input element.
678
676
  *
@@ -785,7 +783,7 @@ function _onEditorResize(width, height) {
785
783
  * @param {Event} event The keydown event.
786
784
  */
787
785
  function _onAfterDocumentKeyDown(event) {
788
- if (_classPrivateFieldGet(_editor, this).isVisible()) {
786
+ if (_classPrivateFieldGet(_editor, this).isFocused()) {
789
787
  (0, _event.stopImmediatePropagation)(event);
790
788
  }
791
789
  }
@@ -796,4 +794,12 @@ function _onAfterScroll() {
796
794
  if (!_classPrivateFieldGet(_preventEditorHiding, this)) {
797
795
  this.hide();
798
796
  }
797
+ }
798
+ /**
799
+ * Updates the editor theme class name.
800
+ */
801
+ function _updateEditorThemeClassName() {
802
+ const editorElement = _classPrivateFieldGet(_editor, this).getEditorElement();
803
+ (0, _element.removeClass)(editorElement, /ht-theme-.*/g);
804
+ (0, _element.addClass)(editorElement, this.hot.getCurrentThemeName());
799
805
  }
@@ -9,9 +9,9 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
9
9
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
10
10
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
11
11
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
12
- import { addClass, closest, isChildOf, hasClass, outerHeight } from "../../helpers/dom/element.mjs";
12
+ import { addClass, removeClass, closest, isChildOf, hasClass, outerHeight } from "../../helpers/dom/element.mjs";
13
13
  import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
14
- import { deepClone, deepExtend, isObject } from "../../helpers/object.mjs";
14
+ import { deepClone, deepExtend } from "../../helpers/object.mjs";
15
15
  import { BasePlugin } from "../base/index.mjs";
16
16
  import CommentEditor from "./commentEditor.mjs";
17
17
  import DisplaySwitch from "./displaySwitch.mjs";
@@ -190,6 +190,11 @@ export class Comments extends BasePlugin {
190
190
  static get PLUGIN_PRIORITY() {
191
191
  return PLUGIN_PRIORITY;
192
192
  }
193
+ static get DEFAULT_SETTINGS() {
194
+ return {
195
+ displayDelay: 250
196
+ };
197
+ }
193
198
  /**
194
199
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
195
200
  * hook and if it returns `true` then the {@link Comments#enablePlugin} method is called.
@@ -218,13 +223,19 @@ export class Comments extends BasePlugin {
218
223
  });
219
224
  }
220
225
  if (!_classPrivateFieldGet(_displaySwitch, this)) {
221
- _classPrivateFieldSet(_displaySwitch, this, new DisplaySwitch(this.getDisplayDelaySetting()));
226
+ _classPrivateFieldSet(_displaySwitch, this, new DisplaySwitch(this.getSetting('displayDelay')));
222
227
  }
223
228
  this.addHook('afterContextMenuDefaultOptions', options => this.addToContextMenu(options));
224
229
  this.addHook('afterRenderer', (TD, row, col, prop, value, cellProperties) => _assertClassBrand(_Comments_brand, this, _onAfterRenderer).call(this, TD, cellProperties));
225
230
  this.addHook('afterScroll', () => _assertClassBrand(_Comments_brand, this, _onAfterScroll).call(this));
226
231
  this.addHook('afterBeginEditing', () => this.hide());
227
232
  this.addHook('afterDocumentKeyDown', event => _assertClassBrand(_Comments_brand, this, _onAfterDocumentKeyDown).call(this, event));
233
+ this.addHook('afterSetTheme', function () {
234
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
235
+ args[_key2] = arguments[_key2];
236
+ }
237
+ return _assertClassBrand(_Comments_brand, _this, _updateEditorThemeClassName).call(_this, ...args);
238
+ });
228
239
  _classPrivateFieldGet(_displaySwitch, this).addLocalHook('hide', () => this.hide());
229
240
  _classPrivateFieldGet(_displaySwitch, this).addLocalHook('show', (row, col) => this.showAtCell(row, col));
230
241
  this.registerShortcuts();
@@ -239,7 +250,7 @@ export class Comments extends BasePlugin {
239
250
  * - [`comments`](@/api/options.md#comments)
240
251
  */
241
252
  updatePlugin() {
242
- _classPrivateFieldGet(_displaySwitch, this).updateDelay(this.getDisplayDelaySetting());
253
+ _classPrivateFieldGet(_displaySwitch, this).updateDelay(this.getSetting('displayDelay'));
243
254
  super.updatePlugin();
244
255
  }
245
256
 
@@ -278,7 +289,7 @@ export class Comments extends BasePlugin {
278
289
  stopPropagation: true,
279
290
  runOnlyIf: () => {
280
291
  var _this$hot$getSelected;
281
- return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isCell()) && !_classPrivateFieldGet(_editor, this).isVisible();
292
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isCell();
282
293
  },
283
294
  group: SHORTCUTS_GROUP
284
295
  });
@@ -566,7 +577,7 @@ export class Comments extends BasePlugin {
566
577
  } else {
567
578
  _classPrivateFieldGet(_editor, this).resetSize();
568
579
  }
569
- const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getStretchedColumnWidth(renderableColumn);
580
+ const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getColumnWidth(renderableColumn);
570
581
  const lastRowHeight = targetingPreviousRow && !isBeforeRenderedRows ? outerHeight(TD) : 0;
571
582
  const {
572
583
  left,
@@ -656,19 +667,6 @@ export class Comments extends BasePlugin {
656
667
  }, addEditCommentItem(this), removeCommentItem(this), readOnlyCommentItem(this));
657
668
  }
658
669
 
659
- /**
660
- * Get `displayDelay` setting of comment plugin.
661
- *
662
- * @private
663
- * @returns {number|undefined}
664
- */
665
- getDisplayDelaySetting() {
666
- const commentSetting = this.hot.getSettings()[PLUGIN_KEY];
667
- if (isObject(commentSetting)) {
668
- return commentSetting.displayDelay;
669
- }
670
- }
671
-
672
670
  /**
673
671
  * Gets the editors input element.
674
672
  *
@@ -780,7 +778,7 @@ function _onEditorResize(width, height) {
780
778
  * @param {Event} event The keydown event.
781
779
  */
782
780
  function _onAfterDocumentKeyDown(event) {
783
- if (_classPrivateFieldGet(_editor, this).isVisible()) {
781
+ if (_classPrivateFieldGet(_editor, this).isFocused()) {
784
782
  stopImmediatePropagation(event);
785
783
  }
786
784
  }
@@ -791,4 +789,12 @@ function _onAfterScroll() {
791
789
  if (!_classPrivateFieldGet(_preventEditorHiding, this)) {
792
790
  this.hide();
793
791
  }
792
+ }
793
+ /**
794
+ * Updates the editor theme class name.
795
+ */
796
+ function _updateEditorThemeClassName() {
797
+ const editorElement = _classPrivateFieldGet(_editor, this).getEditorElement();
798
+ removeClass(editorElement, /ht-theme-.*/g);
799
+ addClass(editorElement, this.hot.getCurrentThemeName());
794
800
  }
@@ -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 _object = require("../../helpers/object");
6
8
  var _localHooks = _interopRequireDefault(require("../../mixins/localHooks"));
7
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -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
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
3
5
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
4
6
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -49,7 +49,8 @@ export interface SubmenuItemConfig extends Omit<MenuItemConfig, "key"> {
49
49
 
50
50
  export interface DetailedSettings {
51
51
  callback?: (key: string, selection: Selection[], clickEvent: MouseEvent) => void;
52
- items: PredefinedMenuItemKey[] | MenuConfig;
52
+ uiContainer?: HTMLElement,
53
+ items?: PredefinedMenuItemKey[] | MenuConfig;
53
54
  }
54
55
 
55
56
  export type Settings = boolean | PredefinedMenuItemKey[] | DetailedSettings;
@@ -3,7 +3,7 @@
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
5
  var _base = require("../base");
6
- var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
6
+ var _hooks = require("../../core/hooks");
7
7
  var _array = require("../../helpers/array");
8
8
  var _object = require("../../helpers/object");
9
9
  var _commandExecutor = require("./commandExecutor");
@@ -12,7 +12,6 @@ var _menu = require("./menu");
12
12
  var _utils = require("./utils");
13
13
  var _element = require("../../helpers/dom/element");
14
14
  var _predefinedItems = require("./predefinedItems");
15
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
15
  function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
17
16
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
18
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; }
@@ -22,11 +21,11 @@ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.h
22
21
  const PLUGIN_KEY = exports.PLUGIN_KEY = 'contextMenu';
23
22
  const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 70;
24
23
  const SHORTCUTS_GROUP = PLUGIN_KEY;
25
- _pluginHooks.default.getSingleton().register('afterContextMenuDefaultOptions');
26
- _pluginHooks.default.getSingleton().register('beforeContextMenuShow');
27
- _pluginHooks.default.getSingleton().register('afterContextMenuShow');
28
- _pluginHooks.default.getSingleton().register('afterContextMenuHide');
29
- _pluginHooks.default.getSingleton().register('afterContextMenuExecute');
24
+ _hooks.Hooks.getSingleton().register('afterContextMenuDefaultOptions');
25
+ _hooks.Hooks.getSingleton().register('beforeContextMenuShow');
26
+ _hooks.Hooks.getSingleton().register('afterContextMenuShow');
27
+ _hooks.Hooks.getSingleton().register('afterContextMenuHide');
28
+ _hooks.Hooks.getSingleton().register('afterContextMenuExecute');
30
29
 
31
30
  /* eslint-disable jsdoc/require-description-complete-sentence */
32
31
  /**
@@ -6,7 +6,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
6
6
  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); }
7
7
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
8
8
  import { BasePlugin } from "../base/index.mjs";
9
- import Hooks from "../../pluginHooks.mjs";
9
+ import { Hooks } from "../../core/hooks/index.mjs";
10
10
  import { arrayEach } from "../../helpers/array.mjs";
11
11
  import { objectEach } from "../../helpers/object.mjs";
12
12
  import { CommandExecutor } from "./commandExecutor.mjs";
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/esnext.iterator.constructor.js");
4
+ require("core-js/modules/esnext.iterator.for-each.js");
3
5
  exports.__esModule = true;
4
6
  var _menu = require("./menu");
5
7
  Object.keys(_menu).forEach(function (key) {
@@ -57,7 +57,7 @@ class Menu {
57
57
  */
58
58
  get tableBorderWidth() {
59
59
  if (_classPrivateFieldGet(_tableBorderWidth, this) === undefined && this.hotMenu) {
60
- _classPrivateFieldSet(_tableBorderWidth, this, parseInt((0, _element.getComputedStyle)(this.hotMenu.view._wt.wtTable.TABLE).borderWidth, 10));
60
+ _classPrivateFieldSet(_tableBorderWidth, this, parseInt(this.hotMenu.rootWindow.getComputedStyle(this.hotMenu.view._wt.wtTable.TABLE).borderWidth, 10));
61
61
  }
62
62
  return _classPrivateFieldGet(_tableBorderWidth, this);
63
63
  }
@@ -162,6 +162,12 @@ class Menu {
162
162
  return _this.parentMenu.runLocalHooks('afterSelectionChange', ...args);
163
163
  });
164
164
  }
165
+ this.hot.addHook('afterSetTheme', (themeName, firstRun) => {
166
+ if (!firstRun) {
167
+ var _this$hotMenu;
168
+ (_this$hotMenu = this.hotMenu) === null || _this$hotMenu === void 0 || _this$hotMenu.useTheme(themeName);
169
+ }
170
+ });
165
171
  }
166
172
 
167
173
  /**
@@ -286,6 +292,7 @@ class Menu {
286
292
  disableVisualSelection: 'area',
287
293
  layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr',
288
294
  ariaTags: false,
295
+ themeName: this.hot.getCurrentThemeName(),
289
296
  beforeOnCellMouseOver: (event, coords) => {
290
297
  _classPrivateFieldGet(_navigator, this).setCurrentPage(coords.row);
291
298
  },
@@ -579,10 +586,8 @@ class Menu {
579
586
  const currentRowHeight = itemCell ? (0, _element.outerHeight)(this.hotMenu.getCell(index, 0)) : 0;
580
587
  return accumulator + (value.name === _predefinedItems.SEPARATOR ? 1 : currentRowHeight);
581
588
  }, 0);
582
-
583
- // Additional 3px to menu's size because of additional border around its `table.htCore`.
584
- holderStyle.width = `${currentHiderWidth + 3}px`;
585
- holderStyle.height = `${realHeight + 3}px`;
589
+ holderStyle.width = `${currentHiderWidth}px`;
590
+ holderStyle.height = `${realHeight}px`;
586
591
  hiderStyle.height = holderStyle.height;
587
592
  }
588
593