handsontable 0.0.0-next-5a535ed-20240403 → 0.0.0-next-c2810a1-20240403

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (284) hide show
  1. package/3rdparty/walkontable/src/calculator/viewportColumns.js +12 -17
  2. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +12 -17
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +10 -15
  4. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +10 -15
  5. package/3rdparty/walkontable/src/cell/coords.js +12 -17
  6. package/3rdparty/walkontable/src/cell/coords.mjs +12 -17
  7. package/3rdparty/walkontable/src/cell/range.d.ts +2 -1
  8. package/3rdparty/walkontable/src/cell/range.js +40 -28
  9. package/3rdparty/walkontable/src/cell/range.mjs +40 -28
  10. package/3rdparty/walkontable/src/core/_base.js +1 -1
  11. package/3rdparty/walkontable/src/core/_base.mjs +1 -1
  12. package/3rdparty/walkontable/src/event.js +72 -104
  13. package/3rdparty/walkontable/src/event.mjs +72 -104
  14. package/3rdparty/walkontable/src/overlay/inlineStart.js +15 -1
  15. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +16 -2
  16. package/3rdparty/walkontable/src/overlay/top.js +11 -0
  17. package/3rdparty/walkontable/src/overlay/top.mjs +12 -1
  18. package/3rdparty/walkontable/src/overlays.js +46 -4
  19. package/3rdparty/walkontable/src/overlays.mjs +46 -4
  20. package/3rdparty/walkontable/src/scroll.js +15 -17
  21. package/3rdparty/walkontable/src/scroll.mjs +15 -17
  22. package/3rdparty/walkontable/src/selection/manager.js +48 -69
  23. package/3rdparty/walkontable/src/selection/manager.mjs +48 -69
  24. package/3rdparty/walkontable/src/selection/scanner.js +33 -42
  25. package/3rdparty/walkontable/src/selection/scanner.mjs +33 -42
  26. package/3rdparty/walkontable/src/utils/columnStretching.js +27 -44
  27. package/3rdparty/walkontable/src/utils/columnStretching.mjs +27 -44
  28. package/3rdparty/walkontable/src/utils/orderView/view.js +1 -1
  29. package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
  30. package/base.js +2 -2
  31. package/base.mjs +2 -2
  32. package/core/viewportScroll/index.js +4 -1
  33. package/core/viewportScroll/index.mjs +4 -1
  34. package/core/viewportScroll/scrollStrategies/focusScroll.js +15 -0
  35. package/core/viewportScroll/scrollStrategies/focusScroll.mjs +11 -0
  36. package/core.d.ts +4 -3
  37. package/core.js +77 -22
  38. package/core.mjs +77 -22
  39. package/dataMap/dataSource.js +1 -1
  40. package/dataMap/dataSource.mjs +1 -1
  41. package/dataMap/metaManager/metaLayers/cellMeta.js +1 -1
  42. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
  43. package/dataMap/metaManager/metaSchema.js +1 -1
  44. package/dataMap/metaManager/metaSchema.mjs +1 -1
  45. package/dataMap/replaceData.js +1 -1
  46. package/dataMap/replaceData.mjs +1 -1
  47. package/dist/handsontable.css +4 -4
  48. package/dist/handsontable.full.css +4 -4
  49. package/dist/handsontable.full.js +9063 -9122
  50. package/dist/handsontable.full.min.css +3 -3
  51. package/dist/handsontable.full.min.js +292 -292
  52. package/dist/handsontable.js +6968 -6574
  53. package/dist/handsontable.min.css +3 -3
  54. package/dist/handsontable.min.js +25 -25
  55. package/dist/languages/all.min.js +1 -1
  56. package/dist/languages/ar-AR.min.js +1 -1
  57. package/dist/languages/cs-CZ.min.js +1 -1
  58. package/dist/languages/de-CH.min.js +1 -1
  59. package/dist/languages/de-DE.min.js +1 -1
  60. package/dist/languages/en-US.min.js +1 -1
  61. package/dist/languages/es-MX.min.js +1 -1
  62. package/dist/languages/fr-FR.min.js +1 -1
  63. package/dist/languages/hr-HR.min.js +1 -1
  64. package/dist/languages/it-IT.min.js +1 -1
  65. package/dist/languages/ja-JP.min.js +1 -1
  66. package/dist/languages/ko-KR.min.js +1 -1
  67. package/dist/languages/lv-LV.min.js +1 -1
  68. package/dist/languages/nb-NO.min.js +1 -1
  69. package/dist/languages/nl-NL.min.js +1 -1
  70. package/dist/languages/pl-PL.min.js +1 -1
  71. package/dist/languages/pt-BR.min.js +1 -1
  72. package/dist/languages/ru-RU.min.js +1 -1
  73. package/dist/languages/sr-SP.min.js +1 -1
  74. package/dist/languages/zh-CN.min.js +1 -1
  75. package/dist/languages/zh-TW.min.js +1 -1
  76. package/editorManager.js +25 -23
  77. package/editorManager.mjs +25 -23
  78. package/editors/autocompleteEditor/autocompleteEditor.js +6 -10
  79. package/editors/autocompleteEditor/autocompleteEditor.mjs +6 -10
  80. package/editors/selectEditor/selectEditor.js +20 -19
  81. package/editors/selectEditor/selectEditor.mjs +20 -19
  82. package/eventManager.js +1 -1
  83. package/eventManager.mjs +1 -1
  84. package/focusManager.js +64 -82
  85. package/focusManager.mjs +64 -82
  86. package/helpers/dom/element.js +23 -1
  87. package/helpers/dom/element.mjs +21 -1
  88. package/helpers/mixed.js +1 -1
  89. package/helpers/mixed.mjs +1 -1
  90. package/helpers/object.js +2 -2
  91. package/helpers/object.mjs +2 -2
  92. package/i18n/languages/ar-AR.d.ts +5 -0
  93. package/i18n/languages/cs-CZ.d.ts +5 -0
  94. package/i18n/languages/hr-HR.d.ts +5 -0
  95. package/i18n/languages/sr-SP.d.ts +5 -0
  96. package/index.d.ts +10 -0
  97. package/package.json +7 -2
  98. package/pluginHooks.d.ts +4 -3
  99. package/pluginHooks.js +99 -38
  100. package/pluginHooks.mjs +99 -38
  101. package/plugins/autoColumnSize/autoColumnSize.js +49 -65
  102. package/plugins/autoColumnSize/autoColumnSize.mjs +49 -65
  103. package/plugins/autoRowSize/autoRowSize.js +28 -34
  104. package/plugins/autoRowSize/autoRowSize.mjs +28 -34
  105. package/plugins/autofill/autofill.js +30 -38
  106. package/plugins/autofill/autofill.mjs +30 -38
  107. package/plugins/base/base.js +12 -17
  108. package/plugins/base/base.mjs +12 -17
  109. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +5 -5
  110. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +5 -5
  111. package/plugins/collapsibleColumns/collapsibleColumns.js +59 -50
  112. package/plugins/collapsibleColumns/collapsibleColumns.mjs +59 -50
  113. package/plugins/columnSorting/columnSorting.js +49 -45
  114. package/plugins/columnSorting/columnSorting.mjs +49 -45
  115. package/plugins/columnSummary/columnSummary.js +22 -26
  116. package/plugins/columnSummary/columnSummary.mjs +22 -26
  117. package/plugins/comments/comments.js +116 -158
  118. package/plugins/comments/comments.mjs +116 -158
  119. package/plugins/contextMenu/contextMenu.js +20 -26
  120. package/plugins/contextMenu/contextMenu.mjs +20 -26
  121. package/plugins/contextMenu/itemsFactory.js +1 -1
  122. package/plugins/contextMenu/itemsFactory.mjs +1 -1
  123. package/plugins/contextMenu/menu/defaultShortcutsList.js +26 -10
  124. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +26 -10
  125. package/plugins/contextMenu/menu/menu.js +13 -21
  126. package/plugins/contextMenu/menu/menu.mjs +13 -21
  127. package/plugins/contextMenu/menu/positioner.js +41 -58
  128. package/plugins/contextMenu/menu/positioner.mjs +41 -58
  129. package/plugins/copyPaste/copyPaste.js +116 -157
  130. package/plugins/copyPaste/copyPaste.mjs +116 -157
  131. package/plugins/copyPaste/copyableRanges.js +43 -66
  132. package/plugins/copyPaste/copyableRanges.mjs +43 -66
  133. package/plugins/customBorders/customBorders.js +11 -13
  134. package/plugins/customBorders/customBorders.mjs +11 -13
  135. package/plugins/dragToScroll/dragToScroll.js +6 -6
  136. package/plugins/dragToScroll/dragToScroll.mjs +6 -6
  137. package/plugins/dropdownMenu/dropdownMenu.js +81 -107
  138. package/plugins/dropdownMenu/dropdownMenu.mjs +81 -107
  139. package/plugins/exportFile/dataProvider.js +1 -1
  140. package/plugins/exportFile/dataProvider.mjs +1 -1
  141. package/plugins/filters/component/actionBar.js +9 -9
  142. package/plugins/filters/component/actionBar.mjs +8 -8
  143. package/plugins/filters/component/condition.js +13 -15
  144. package/plugins/filters/component/condition.mjs +13 -15
  145. package/plugins/filters/component/operators.js +6 -6
  146. package/plugins/filters/component/operators.mjs +6 -6
  147. package/plugins/filters/component/value.js +24 -28
  148. package/plugins/filters/component/value.mjs +24 -28
  149. package/plugins/filters/conditionUpdateObserver.js +22 -24
  150. package/plugins/filters/conditionUpdateObserver.mjs +22 -24
  151. package/plugins/filters/dataFilter.js +1 -1
  152. package/plugins/filters/dataFilter.mjs +1 -1
  153. package/plugins/filters/filters.js +81 -95
  154. package/plugins/filters/filters.mjs +81 -95
  155. package/plugins/filters/ui/input.js +13 -19
  156. package/plugins/filters/ui/input.mjs +13 -19
  157. package/plugins/filters/ui/link.js +8 -13
  158. package/plugins/filters/ui/link.mjs +8 -13
  159. package/plugins/filters/ui/multipleSelect.js +85 -112
  160. package/plugins/filters/ui/multipleSelect.mjs +85 -112
  161. package/plugins/filters/ui/radioInput.js +12 -20
  162. package/plugins/filters/ui/radioInput.mjs +12 -20
  163. package/plugins/filters/ui/select.js +50 -72
  164. package/plugins/filters/ui/select.mjs +49 -71
  165. package/plugins/formulas/formulas.js +268 -326
  166. package/plugins/formulas/formulas.mjs +269 -327
  167. package/plugins/formulas/indexSyncer/axisSyncer.js +38 -61
  168. package/plugins/formulas/indexSyncer/axisSyncer.mjs +38 -61
  169. package/plugins/formulas/indexSyncer/index.js +25 -48
  170. package/plugins/formulas/indexSyncer/index.mjs +25 -48
  171. package/plugins/hiddenColumns/hiddenColumns.js +64 -83
  172. package/plugins/hiddenColumns/hiddenColumns.mjs +64 -83
  173. package/plugins/hiddenRows/hiddenRows.js +63 -82
  174. package/plugins/hiddenRows/hiddenRows.mjs +63 -82
  175. package/plugins/manualColumnFreeze/manualColumnFreeze.js +24 -32
  176. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +25 -33
  177. package/plugins/manualColumnMove/manualColumnMove.js +126 -170
  178. package/plugins/manualColumnMove/manualColumnMove.mjs +126 -170
  179. package/plugins/manualColumnResize/manualColumnResize.js +169 -230
  180. package/plugins/manualColumnResize/manualColumnResize.mjs +169 -230
  181. package/plugins/manualRowMove/manualRowMove.js +99 -128
  182. package/plugins/manualRowMove/manualRowMove.mjs +99 -128
  183. package/plugins/manualRowResize/manualRowResize.js +150 -209
  184. package/plugins/manualRowResize/manualRowResize.mjs +150 -209
  185. package/plugins/mergeCells/calculations/selection.js +2 -71
  186. package/plugins/mergeCells/calculations/selection.mjs +2 -71
  187. package/plugins/mergeCells/cellsCollection.js +117 -1
  188. package/plugins/mergeCells/cellsCollection.mjs +117 -1
  189. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +11 -1
  190. package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +11 -1
  191. package/plugins/mergeCells/focusOrder.js +305 -0
  192. package/plugins/mergeCells/focusOrder.mjs +300 -0
  193. package/plugins/mergeCells/mergeCells.js +499 -397
  194. package/plugins/mergeCells/mergeCells.mjs +499 -397
  195. package/plugins/multiColumnSorting/multiColumnSorting.js +8 -2
  196. package/plugins/multiColumnSorting/multiColumnSorting.mjs +8 -2
  197. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +1 -1
  198. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +1 -1
  199. package/plugins/nestedHeaders/nestedHeaders.js +205 -253
  200. package/plugins/nestedHeaders/nestedHeaders.mjs +206 -254
  201. package/plugins/nestedHeaders/stateManager/headersTree.js +21 -32
  202. package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -32
  203. package/plugins/nestedHeaders/stateManager/index.js +30 -41
  204. package/plugins/nestedHeaders/stateManager/index.mjs +30 -41
  205. package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -30
  206. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -30
  207. package/plugins/nestedRows/data/dataManager.js +1 -1
  208. package/plugins/nestedRows/data/dataManager.mjs +1 -1
  209. package/plugins/nestedRows/nestedRows.js +151 -182
  210. package/plugins/nestedRows/nestedRows.mjs +152 -183
  211. package/plugins/nestedRows/ui/contextMenu.js +11 -15
  212. package/plugins/nestedRows/ui/contextMenu.mjs +10 -14
  213. package/plugins/nestedRows/utils/rowMoveController.js +1 -1
  214. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -1
  215. package/plugins/persistentState/storage.js +2 -2
  216. package/plugins/persistentState/storage.mjs +2 -2
  217. package/plugins/search/search.js +7 -7
  218. package/plugins/search/search.mjs +7 -7
  219. package/plugins/touchScroll/touchScroll.js +15 -19
  220. package/plugins/touchScroll/touchScroll.mjs +16 -20
  221. package/plugins/trimRows/trimRows.js +6 -6
  222. package/plugins/trimRows/trimRows.mjs +6 -6
  223. package/renderers/checkboxRenderer/checkboxRenderer.js +8 -5
  224. package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -5
  225. package/selection/highlight/highlight.js +14 -14
  226. package/selection/highlight/highlight.mjs +13 -13
  227. package/selection/highlight/visualSelection.js +2 -0
  228. package/selection/highlight/visualSelection.mjs +2 -0
  229. package/selection/selection.js +225 -67
  230. package/selection/selection.mjs +224 -66
  231. package/selection/transformation.js +149 -118
  232. package/selection/transformation.mjs +149 -118
  233. package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
  234. package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
  235. package/shortcutContexts/commands/editor/open.js +18 -3
  236. package/shortcutContexts/commands/editor/open.mjs +18 -3
  237. package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
  238. package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
  239. package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
  240. package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
  241. package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
  242. package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
  243. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
  244. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
  245. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +3 -1
  246. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +3 -1
  247. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +9 -3
  248. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +9 -3
  249. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +10 -3
  250. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +10 -3
  251. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +3 -1
  252. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +3 -1
  253. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +3 -1
  254. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +3 -1
  255. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +3 -1
  256. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +3 -1
  257. package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
  258. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
  259. package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
  260. package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
  261. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +6 -1
  262. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +6 -1
  263. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +6 -1
  264. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +6 -1
  265. package/shortcutContexts/grid.js +9 -3
  266. package/shortcutContexts/grid.mjs +9 -3
  267. package/shortcuts/context.js +2 -1
  268. package/shortcuts/context.mjs +2 -1
  269. package/tableView.js +52 -78
  270. package/tableView.mjs +52 -78
  271. package/translations/changesObservable/observable.js +21 -38
  272. package/translations/changesObservable/observable.mjs +21 -38
  273. package/translations/changesObservable/observer.js +7 -12
  274. package/translations/changesObservable/observer.mjs +6 -11
  275. package/translations/mapCollections/aggregatedCollection.js +1 -1
  276. package/translations/mapCollections/aggregatedCollection.mjs +1 -1
  277. package/translations/maps/indexMap.js +1 -1
  278. package/translations/maps/indexMap.mjs +1 -1
  279. package/utils/dataStructures/linkedList.js +6 -1
  280. package/utils/dataStructures/linkedList.mjs +6 -1
  281. package/utils/dataStructures/tree.js +1 -1
  282. package/utils/dataStructures/tree.mjs +1 -1
  283. package/utils/interval.js +26 -44
  284. package/utils/interval.mjs +26 -44
@@ -1,11 +1,9 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
3
3
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
4
- function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
5
- function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
6
- function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
7
- function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
8
- function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
4
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
5
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
6
+ 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"); }
9
7
  import { closestDown, hasClass, isChildOf, getParent } from "../../../helpers/dom/element.mjs";
10
8
  import { partial } from "../../../helpers/function.mjs";
11
9
  import { isTouchSupported } from "../../../helpers/feature.mjs";
@@ -36,35 +34,17 @@ class Event {
36
34
  */
37
35
  constructor(facadeGetter, domBindings, wtSettings, eventManager, wtTable, selectionManager) {
38
36
  let parent = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
39
- _classPrivateFieldInitSpec(this, _wtSettings, {
40
- writable: true,
41
- value: void 0
42
- });
43
- _classPrivateFieldInitSpec(this, _domBindings, {
44
- writable: true,
45
- value: void 0
46
- });
47
- _classPrivateFieldInitSpec(this, _wtTable, {
48
- writable: true,
49
- value: void 0
50
- });
51
- _classPrivateFieldInitSpec(this, _selectionManager, {
52
- writable: true,
53
- value: void 0
54
- });
55
- _classPrivateFieldInitSpec(this, _parent, {
56
- writable: true,
57
- value: void 0
58
- });
37
+ _classPrivateFieldInitSpec(this, _wtSettings, void 0);
38
+ _classPrivateFieldInitSpec(this, _domBindings, void 0);
39
+ _classPrivateFieldInitSpec(this, _wtTable, void 0);
40
+ _classPrivateFieldInitSpec(this, _selectionManager, void 0);
41
+ _classPrivateFieldInitSpec(this, _parent, void 0);
59
42
  /**
60
43
  * Instance of {@link EventManager}.
61
44
  *
62
45
  * @type {EventManager}
63
46
  */
64
- _classPrivateFieldInitSpec(this, _eventManager, {
65
- writable: true,
66
- value: void 0
67
- });
47
+ _classPrivateFieldInitSpec(this, _eventManager, void 0);
68
48
  /**
69
49
  * Should be use only for passing face called external origin methods, like registered event listeners.
70
50
  * It provides backward compatibility by getting instance facade.
@@ -75,38 +55,26 @@ class Event {
75
55
  *
76
56
  * @type {FacadeGetter}
77
57
  */
78
- _classPrivateFieldInitSpec(this, _facadeGetter, {
79
- writable: true,
80
- value: void 0
81
- });
58
+ _classPrivateFieldInitSpec(this, _facadeGetter, void 0);
82
59
  /**
83
60
  * @type {boolean}
84
61
  */
85
- _classPrivateFieldInitSpec(this, _selectedCellBeforeTouchEnd, {
86
- writable: true,
87
- value: void 0
88
- });
62
+ _classPrivateFieldInitSpec(this, _selectedCellBeforeTouchEnd, void 0);
89
63
  /**
90
64
  * @type {number[]}
91
65
  */
92
- _classPrivateFieldInitSpec(this, _dblClickTimeout, {
93
- writable: true,
94
- value: [null, null]
95
- });
66
+ _classPrivateFieldInitSpec(this, _dblClickTimeout, [null, null]);
96
67
  /**
97
68
  * @type {number[]}
98
69
  */
99
- _classPrivateFieldInitSpec(this, _dblClickOrigin, {
100
- writable: true,
101
- value: [null, null]
102
- });
103
- _classPrivateFieldSet(this, _wtSettings, wtSettings);
104
- _classPrivateFieldSet(this, _domBindings, domBindings);
105
- _classPrivateFieldSet(this, _wtTable, wtTable);
106
- _classPrivateFieldSet(this, _selectionManager, selectionManager);
107
- _classPrivateFieldSet(this, _parent, parent);
108
- _classPrivateFieldSet(this, _eventManager, eventManager);
109
- _classPrivateFieldSet(this, _facadeGetter, facadeGetter);
70
+ _classPrivateFieldInitSpec(this, _dblClickOrigin, [null, null]);
71
+ _classPrivateFieldSet(_wtSettings, this, wtSettings);
72
+ _classPrivateFieldSet(_domBindings, this, domBindings);
73
+ _classPrivateFieldSet(_wtTable, this, wtTable);
74
+ _classPrivateFieldSet(_selectionManager, this, selectionManager);
75
+ _classPrivateFieldSet(_parent, this, parent);
76
+ _classPrivateFieldSet(_eventManager, this, eventManager);
77
+ _classPrivateFieldSet(_facadeGetter, this, facadeGetter);
110
78
  this.registerEvents();
111
79
  }
112
80
 
@@ -116,32 +84,32 @@ class Event {
116
84
  * @private
117
85
  */
118
86
  registerEvents() {
119
- _classPrivateFieldGet(this, _eventManager).addEventListener(_classPrivateFieldGet(this, _wtTable).holder, 'contextmenu', event => this.onContextMenu(event));
120
- _classPrivateFieldGet(this, _eventManager).addEventListener(_classPrivateFieldGet(this, _wtTable).TABLE, 'mouseover', event => this.onMouseOver(event));
121
- _classPrivateFieldGet(this, _eventManager).addEventListener(_classPrivateFieldGet(this, _wtTable).TABLE, 'mouseout', event => this.onMouseOut(event));
87
+ _classPrivateFieldGet(_eventManager, this).addEventListener(_classPrivateFieldGet(_wtTable, this).holder, 'contextmenu', event => this.onContextMenu(event));
88
+ _classPrivateFieldGet(_eventManager, this).addEventListener(_classPrivateFieldGet(_wtTable, this).TABLE, 'mouseover', event => this.onMouseOver(event));
89
+ _classPrivateFieldGet(_eventManager, this).addEventListener(_classPrivateFieldGet(_wtTable, this).TABLE, 'mouseout', event => this.onMouseOut(event));
122
90
  const initTouchEvents = () => {
123
- _classPrivateFieldGet(this, _eventManager).addEventListener(_classPrivateFieldGet(this, _wtTable).holder, 'touchstart', event => this.onTouchStart(event));
124
- _classPrivateFieldGet(this, _eventManager).addEventListener(_classPrivateFieldGet(this, _wtTable).holder, 'touchend', event => this.onTouchEnd(event));
91
+ _classPrivateFieldGet(_eventManager, this).addEventListener(_classPrivateFieldGet(_wtTable, this).holder, 'touchstart', event => this.onTouchStart(event));
92
+ _classPrivateFieldGet(_eventManager, this).addEventListener(_classPrivateFieldGet(_wtTable, this).holder, 'touchend', event => this.onTouchEnd(event));
125
93
  if (!this.momentumScrolling) {
126
94
  this.momentumScrolling = {};
127
95
  }
128
- _classPrivateFieldGet(this, _eventManager).addEventListener(_classPrivateFieldGet(this, _wtTable).holder, 'scroll', () => {
96
+ _classPrivateFieldGet(_eventManager, this).addEventListener(_classPrivateFieldGet(_wtTable, this).holder, 'scroll', () => {
129
97
  clearTimeout(this.momentumScrolling._timeout);
130
98
  if (!this.momentumScrolling.ongoing) {
131
- _classPrivateFieldGet(this, _wtSettings).getSetting('onBeforeTouchScroll');
99
+ _classPrivateFieldGet(_wtSettings, this).getSetting('onBeforeTouchScroll');
132
100
  }
133
101
  this.momentumScrolling.ongoing = true;
134
102
  this.momentumScrolling._timeout = setTimeout(() => {
135
103
  if (!this.touchApplied) {
136
104
  this.momentumScrolling.ongoing = false;
137
- _classPrivateFieldGet(this, _wtSettings).getSetting('onAfterMomentumScroll');
105
+ _classPrivateFieldGet(_wtSettings, this).getSetting('onAfterMomentumScroll');
138
106
  }
139
107
  }, 200);
140
108
  });
141
109
  };
142
110
  const initMouseEvents = () => {
143
- _classPrivateFieldGet(this, _eventManager).addEventListener(_classPrivateFieldGet(this, _wtTable).holder, 'mouseup', event => this.onMouseUp(event));
144
- _classPrivateFieldGet(this, _eventManager).addEventListener(_classPrivateFieldGet(this, _wtTable).holder, 'mousedown', event => this.onMouseDown(event));
111
+ _classPrivateFieldGet(_eventManager, this).addEventListener(_classPrivateFieldGet(_wtTable, this).holder, 'mouseup', event => this.onMouseUp(event));
112
+ _classPrivateFieldGet(_eventManager, this).addEventListener(_classPrivateFieldGet(_wtTable, this).holder, 'mousedown', event => this.onMouseDown(event));
145
113
  };
146
114
  if (isMobileBrowser()) {
147
115
  initTouchEvents();
@@ -164,9 +132,9 @@ class Event {
164
132
  selectedCellWasTouched(touchTarget) {
165
133
  const cellUnderFinger = this.parentCell(touchTarget);
166
134
  const coordsOfCellUnderFinger = cellUnderFinger.coords;
167
- if (_classPrivateFieldGet(this, _selectedCellBeforeTouchEnd) && coordsOfCellUnderFinger) {
168
- const [rowTouched, rowSelected] = [coordsOfCellUnderFinger.row, _classPrivateFieldGet(this, _selectedCellBeforeTouchEnd).from.row];
169
- const [colTouched, colSelected] = [coordsOfCellUnderFinger.col, _classPrivateFieldGet(this, _selectedCellBeforeTouchEnd).from.col];
135
+ if (_classPrivateFieldGet(_selectedCellBeforeTouchEnd, this) && coordsOfCellUnderFinger) {
136
+ const [rowTouched, rowSelected] = [coordsOfCellUnderFinger.row, _classPrivateFieldGet(_selectedCellBeforeTouchEnd, this).from.row];
137
+ const [colTouched, colSelected] = [coordsOfCellUnderFinger.col, _classPrivateFieldGet(_selectedCellBeforeTouchEnd, this).from.col];
170
138
  return rowTouched === rowSelected && colTouched === colSelected;
171
139
  }
172
140
  return false;
@@ -181,18 +149,18 @@ class Event {
181
149
  */
182
150
  parentCell(elem) {
183
151
  const cell = {};
184
- const TABLE = _classPrivateFieldGet(this, _wtTable).TABLE;
152
+ const TABLE = _classPrivateFieldGet(_wtTable, this).TABLE;
185
153
  const TD = closestDown(elem, ['TD', 'TH'], TABLE);
186
154
  if (TD) {
187
- cell.coords = _classPrivateFieldGet(this, _wtTable).getCoords(TD);
155
+ cell.coords = _classPrivateFieldGet(_wtTable, this).getCoords(TD);
188
156
  cell.TD = TD;
189
157
  } else if (hasClass(elem, 'wtBorder') && hasClass(elem, 'current')) {
190
- cell.coords = _classPrivateFieldGet(this, _selectionManager).getFocusSelection().cellRange.highlight;
191
- cell.TD = _classPrivateFieldGet(this, _wtTable).getCell(cell.coords);
158
+ cell.coords = _classPrivateFieldGet(_selectionManager, this).getFocusSelection().cellRange.highlight;
159
+ cell.TD = _classPrivateFieldGet(_wtTable, this).getCell(cell.coords);
192
160
  } else if (hasClass(elem, 'wtBorder') && hasClass(elem, 'area')) {
193
- if (_classPrivateFieldGet(this, _selectionManager).getAreaSelection().cellRange) {
194
- cell.coords = _classPrivateFieldGet(this, _selectionManager).getAreaSelection().cellRange.to;
195
- cell.TD = _classPrivateFieldGet(this, _wtTable).getCell(cell.coords);
161
+ if (_classPrivateFieldGet(_selectionManager, this).getAreaSelection().cellRange) {
162
+ cell.coords = _classPrivateFieldGet(_selectionManager, this).getAreaSelection().cellRange.to;
163
+ cell.TD = _classPrivateFieldGet(_wtTable, this).getCell(cell.coords);
196
164
  }
197
165
  }
198
166
  return cell;
@@ -205,7 +173,7 @@ class Event {
205
173
  * @param {MouseEvent} event The mouse event object.
206
174
  */
207
175
  onMouseDown(event) {
208
- const activeElement = _classPrivateFieldGet(this, _domBindings).rootDocument.activeElement;
176
+ const activeElement = _classPrivateFieldGet(_domBindings, this).rootDocument.activeElement;
209
177
  const getParentNode = partial(getParent, event.target);
210
178
  const realTarget = event.target;
211
179
 
@@ -216,17 +184,17 @@ class Event {
216
184
  }
217
185
  const cell = this.parentCell(realTarget);
218
186
  if (hasClass(realTarget, 'corner')) {
219
- _classPrivateFieldGet(this, _wtSettings).getSetting('onCellCornerMouseDown', event, realTarget);
220
- } else if (cell.TD && _classPrivateFieldGet(this, _wtSettings).has('onCellMouseDown')) {
187
+ _classPrivateFieldGet(_wtSettings, this).getSetting('onCellCornerMouseDown', event, realTarget);
188
+ } else if (cell.TD && _classPrivateFieldGet(_wtSettings, this).has('onCellMouseDown')) {
221
189
  this.callListener('onCellMouseDown', event, cell.coords, cell.TD);
222
190
  }
223
191
 
224
192
  // doubleclick reacts only for left mouse button or from touch events
225
193
  if ((event.button === 0 || this.touchApplied) && cell.TD) {
226
- _classPrivateFieldGet(this, _dblClickOrigin)[0] = cell.TD;
227
- clearTimeout(_classPrivateFieldGet(this, _dblClickTimeout)[0]);
228
- _classPrivateFieldGet(this, _dblClickTimeout)[0] = setTimeout(() => {
229
- _classPrivateFieldGet(this, _dblClickOrigin)[0] = null;
194
+ _classPrivateFieldGet(_dblClickOrigin, this)[0] = cell.TD;
195
+ clearTimeout(_classPrivateFieldGet(_dblClickTimeout, this)[0]);
196
+ _classPrivateFieldGet(_dblClickTimeout, this)[0] = setTimeout(() => {
197
+ _classPrivateFieldGet(_dblClickOrigin, this)[0] = null;
230
198
  }, 1000);
231
199
  }
232
200
  }
@@ -238,7 +206,7 @@ class Event {
238
206
  * @param {MouseEvent} event The mouse event object.
239
207
  */
240
208
  onContextMenu(event) {
241
- if (_classPrivateFieldGet(this, _wtSettings).has('onCellContextMenu')) {
209
+ if (_classPrivateFieldGet(_wtSettings, this).has('onCellContextMenu')) {
242
210
  const cell = this.parentCell(event.target);
243
211
  if (cell.TD) {
244
212
  this.callListener('onCellContextMenu', event, cell.coords, cell.TD);
@@ -253,15 +221,15 @@ class Event {
253
221
  * @param {MouseEvent} event The mouse event object.
254
222
  */
255
223
  onMouseOver(event) {
256
- if (!_classPrivateFieldGet(this, _wtSettings).has('onCellMouseOver')) {
224
+ if (!_classPrivateFieldGet(_wtSettings, this).has('onCellMouseOver')) {
257
225
  return;
258
226
  }
259
- const table = _classPrivateFieldGet(this, _wtTable).TABLE;
227
+ const table = _classPrivateFieldGet(_wtTable, this).TABLE;
260
228
  const td = closestDown(event.target, ['TD', 'TH'], table);
261
- const parent = _classPrivateFieldGet(this, _parent) || this;
229
+ const parent = _classPrivateFieldGet(_parent, this) || this;
262
230
  if (td && td !== parent.lastMouseOver && isChildOf(td, table)) {
263
231
  parent.lastMouseOver = td;
264
- this.callListener('onCellMouseOver', event, _classPrivateFieldGet(this, _wtTable).getCoords(td), td);
232
+ this.callListener('onCellMouseOver', event, _classPrivateFieldGet(_wtTable, this).getCoords(td), td);
265
233
  }
266
234
  }
267
235
 
@@ -272,15 +240,15 @@ class Event {
272
240
  * @param {MouseEvent} event The mouse event object.
273
241
  */
274
242
  onMouseOut(event) {
275
- if (!_classPrivateFieldGet(this, _wtSettings).has('onCellMouseOut')) {
243
+ if (!_classPrivateFieldGet(_wtSettings, this).has('onCellMouseOut')) {
276
244
  return;
277
245
  }
278
- const table = _classPrivateFieldGet(this, _wtTable).TABLE;
246
+ const table = _classPrivateFieldGet(_wtTable, this).TABLE;
279
247
  const lastTD = closestDown(event.target, ['TD', 'TH'], table);
280
248
  const nextTD = closestDown(event.relatedTarget, ['TD', 'TH'], table);
281
- const parent = _classPrivateFieldGet(this, _parent) || this;
249
+ const parent = _classPrivateFieldGet(_parent, this) || this;
282
250
  if (lastTD && lastTD !== nextTD && isChildOf(lastTD, table)) {
283
- this.callListener('onCellMouseOut', event, _classPrivateFieldGet(this, _wtTable).getCoords(lastTD), lastTD);
251
+ this.callListener('onCellMouseOut', event, _classPrivateFieldGet(_wtTable, this).getCoords(lastTD), lastTD);
284
252
  if (nextTD === null) {
285
253
  parent.lastMouseOver = null;
286
254
  }
@@ -295,7 +263,7 @@ class Event {
295
263
  */
296
264
  onMouseUp(event) {
297
265
  const cell = this.parentCell(event.target);
298
- if (cell.TD && _classPrivateFieldGet(this, _wtSettings).has('onCellMouseUp')) {
266
+ if (cell.TD && _classPrivateFieldGet(_wtSettings, this).has('onCellMouseUp')) {
299
267
  this.callListener('onCellMouseUp', event, cell.coords, cell.TD);
300
268
  }
301
269
 
@@ -303,19 +271,19 @@ class Event {
303
271
  if (event.button !== 0 && !this.touchApplied) {
304
272
  return;
305
273
  }
306
- if (cell.TD === _classPrivateFieldGet(this, _dblClickOrigin)[0] && cell.TD === _classPrivateFieldGet(this, _dblClickOrigin)[1]) {
274
+ if (cell.TD === _classPrivateFieldGet(_dblClickOrigin, this)[0] && cell.TD === _classPrivateFieldGet(_dblClickOrigin, this)[1]) {
307
275
  if (hasClass(event.target, 'corner')) {
308
276
  this.callListener('onCellCornerDblClick', event, cell.coords, cell.TD);
309
277
  } else {
310
278
  this.callListener('onCellDblClick', event, cell.coords, cell.TD);
311
279
  }
312
- _classPrivateFieldGet(this, _dblClickOrigin)[0] = null;
313
- _classPrivateFieldGet(this, _dblClickOrigin)[1] = null;
314
- } else if (cell.TD === _classPrivateFieldGet(this, _dblClickOrigin)[0]) {
315
- _classPrivateFieldGet(this, _dblClickOrigin)[1] = cell.TD;
316
- clearTimeout(_classPrivateFieldGet(this, _dblClickTimeout)[1]);
317
- _classPrivateFieldGet(this, _dblClickTimeout)[1] = setTimeout(() => {
318
- _classPrivateFieldGet(this, _dblClickOrigin)[1] = null;
280
+ _classPrivateFieldGet(_dblClickOrigin, this)[0] = null;
281
+ _classPrivateFieldGet(_dblClickOrigin, this)[1] = null;
282
+ } else if (cell.TD === _classPrivateFieldGet(_dblClickOrigin, this)[0]) {
283
+ _classPrivateFieldGet(_dblClickOrigin, this)[1] = cell.TD;
284
+ clearTimeout(_classPrivateFieldGet(_dblClickTimeout, this)[1]);
285
+ _classPrivateFieldGet(_dblClickTimeout, this)[1] = setTimeout(() => {
286
+ _classPrivateFieldGet(_dblClickOrigin, this)[1] = null;
319
287
  }, 500);
320
288
  }
321
289
  }
@@ -327,7 +295,7 @@ class Event {
327
295
  * @param {MouseEvent} event The mouse event object.
328
296
  */
329
297
  onTouchStart(event) {
330
- _classPrivateFieldSet(this, _selectedCellBeforeTouchEnd, _classPrivateFieldGet(this, _selectionManager).getFocusSelection().cellRange);
298
+ _classPrivateFieldSet(_selectedCellBeforeTouchEnd, this, _classPrivateFieldGet(_selectionManager, this).getFocusSelection().cellRange);
331
299
  this.touchApplied = true;
332
300
  this.onMouseDown(event);
333
301
  }
@@ -343,7 +311,7 @@ class Event {
343
311
  const target = event.target;
344
312
  const parentCellCoords = (_this$parentCell = this.parentCell(target)) === null || _this$parentCell === void 0 ? void 0 : _this$parentCell.coords;
345
313
  const isCellsRange = isDefined(parentCellCoords) && parentCellCoords.row >= 0 && parentCellCoords.col >= 0;
346
- const isEventCancelable = event.cancelable && isCellsRange && _classPrivateFieldGet(this, _wtSettings).getSetting('isDataViewInstance');
314
+ const isEventCancelable = event.cancelable && isCellsRange && _classPrivateFieldGet(_wtSettings, this).getSetting('isDataViewInstance');
347
315
 
348
316
  // To prevent accidental redirects or other actions that the interactive elements (e.q "A" link) do
349
317
  // while the cell is highlighted, all touch events that are triggered on different cells are
@@ -379,9 +347,9 @@ class Event {
379
347
  * @param {HTMLElement} target Event target.
380
348
  */
381
349
  callListener(name, event, coords, target) {
382
- const listener = _classPrivateFieldGet(this, _wtSettings).getSettingPure(name);
350
+ const listener = _classPrivateFieldGet(_wtSettings, this).getSettingPure(name);
383
351
  if (listener) {
384
- listener(event, coords, target, _classPrivateFieldGet(this, _facadeGetter).call(this));
352
+ listener(event, coords, target, _classPrivateFieldGet(_facadeGetter, this).call(this));
385
353
  }
386
354
  }
387
355
 
@@ -389,9 +357,9 @@ class Event {
389
357
  * Clears double-click timeouts and destroys the internal eventManager instance.
390
358
  */
391
359
  destroy() {
392
- clearTimeout(_classPrivateFieldGet(this, _dblClickTimeout)[0]);
393
- clearTimeout(_classPrivateFieldGet(this, _dblClickTimeout)[1]);
394
- _classPrivateFieldGet(this, _eventManager).destroy();
360
+ clearTimeout(_classPrivateFieldGet(_dblClickTimeout, this)[0]);
361
+ clearTimeout(_classPrivateFieldGet(_dblClickTimeout, this)[1]);
362
+ _classPrivateFieldGet(_eventManager, this).destroy();
395
363
  }
396
364
  }
397
365
  export default Event;
@@ -227,9 +227,15 @@ class InlineStartOverlay extends _base.Overlay {
227
227
  * @returns {boolean}
228
228
  */
229
229
  scrollTo(sourceCol, beyondRendered) {
230
- let newX = this.getTableParentOffset();
230
+ const {
231
+ wtSettings
232
+ } = this;
233
+ const rowHeaders = wtSettings.getSetting('rowHeaders');
234
+ const fixedColumnsStart = wtSettings.getSetting('fixedColumnsStart');
231
235
  const sourceInstance = this.wot.cloneSource ? this.wot.cloneSource : this.wot;
232
236
  const mainHolder = sourceInstance.wtTable.holder;
237
+ const rowHeaderBorderCompensation = fixedColumnsStart === 0 && rowHeaders.length > 0 && !(0, _element.hasClass)(mainHolder.parentNode, 'innerBorderInlineStart') ? 1 : 0;
238
+ let newX = this.getTableParentOffset();
233
239
  let scrollbarCompensation = 0;
234
240
  if (beyondRendered) {
235
241
  const columnWidth = this.wot.wtTable.getColumnWidth(sourceCol);
@@ -244,10 +250,18 @@ class InlineStartOverlay extends _base.Overlay {
244
250
  if (beyondRendered) {
245
251
  newX += this.sumCellSizes(0, sourceCol + 1);
246
252
  newX -= this.wot.wtViewport.getViewportWidth();
253
+ // Compensate for the right header border if scrolled from the absolute left.
254
+ newX += rowHeaderBorderCompensation;
247
255
  } else {
248
256
  newX += this.sumCellSizes(this.wtSettings.getSetting('fixedColumnsStart'), sourceCol);
249
257
  }
250
258
  newX += scrollbarCompensation;
259
+
260
+ // If the table is scrolled all the way left when starting the scroll and going to be scrolled to the far right,
261
+ // we need to compensate for the potential header border width.
262
+ if ((0, _element.getMaximumScrollLeft)(this.mainTableScrollableElement) === newX - rowHeaderBorderCompensation && rowHeaderBorderCompensation > 0) {
263
+ this.wot.wtOverlays.expandHiderHorizontallyBy(rowHeaderBorderCompensation);
264
+ }
251
265
  return this.setScrollPosition(newX);
252
266
  }
253
267
 
@@ -1,5 +1,5 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
- import { addClass, getScrollbarWidth, getScrollLeft, getWindowScrollTop, hasClass, outerWidth, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
2
+ import { addClass, getScrollbarWidth, getScrollLeft, getMaximumScrollLeft, getWindowScrollTop, hasClass, outerWidth, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
3
3
  import InlineStartOverlayTable from "../table/inlineStart.mjs";
4
4
  import { Overlay } from "./_base.mjs";
5
5
  import { CORNER_DEFAULT_STYLE } from "../selection/index.mjs";
@@ -223,9 +223,15 @@ export class InlineStartOverlay extends Overlay {
223
223
  * @returns {boolean}
224
224
  */
225
225
  scrollTo(sourceCol, beyondRendered) {
226
- let newX = this.getTableParentOffset();
226
+ const {
227
+ wtSettings
228
+ } = this;
229
+ const rowHeaders = wtSettings.getSetting('rowHeaders');
230
+ const fixedColumnsStart = wtSettings.getSetting('fixedColumnsStart');
227
231
  const sourceInstance = this.wot.cloneSource ? this.wot.cloneSource : this.wot;
228
232
  const mainHolder = sourceInstance.wtTable.holder;
233
+ const rowHeaderBorderCompensation = fixedColumnsStart === 0 && rowHeaders.length > 0 && !hasClass(mainHolder.parentNode, 'innerBorderInlineStart') ? 1 : 0;
234
+ let newX = this.getTableParentOffset();
229
235
  let scrollbarCompensation = 0;
230
236
  if (beyondRendered) {
231
237
  const columnWidth = this.wot.wtTable.getColumnWidth(sourceCol);
@@ -240,10 +246,18 @@ export class InlineStartOverlay extends Overlay {
240
246
  if (beyondRendered) {
241
247
  newX += this.sumCellSizes(0, sourceCol + 1);
242
248
  newX -= this.wot.wtViewport.getViewportWidth();
249
+ // Compensate for the right header border if scrolled from the absolute left.
250
+ newX += rowHeaderBorderCompensation;
243
251
  } else {
244
252
  newX += this.sumCellSizes(this.wtSettings.getSetting('fixedColumnsStart'), sourceCol);
245
253
  }
246
254
  newX += scrollbarCompensation;
255
+
256
+ // If the table is scrolled all the way left when starting the scroll and going to be scrolled to the far right,
257
+ // we need to compensate for the potential header border width.
258
+ if (getMaximumScrollLeft(this.mainTableScrollableElement) === newX - rowHeaderBorderCompensation && rowHeaderBorderCompensation > 0) {
259
+ this.wot.wtOverlays.expandHiderHorizontallyBy(rowHeaderBorderCompensation);
260
+ }
247
261
  return this.setScrollPosition(newX);
248
262
  }
249
263
 
@@ -259,6 +259,9 @@ class TopOverlay extends _base.Overlay {
259
259
  } = this;
260
260
  const sourceInstance = wot.cloneSource ? wot.cloneSource : wot;
261
261
  const mainHolder = sourceInstance.wtTable.holder;
262
+ const columnHeaders = wtSettings.getSetting('columnHeaders');
263
+ const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
264
+ const columnHeaderBorderCompensation = fixedRowsTop === 0 && columnHeaders.length > 0 && !(0, _element.hasClass)(mainHolder.parentNode, 'innerBorderTop') ? 1 : 0;
262
265
  let newY = this.getTableParentOffset();
263
266
  let scrollbarCompensation = 0;
264
267
  if (bottomEdge) {
@@ -278,10 +281,18 @@ class TopOverlay extends _base.Overlay {
278
281
  newY -= wot.wtViewport.getViewportHeight() - this.sumCellSizes(totalRows - fixedRowsBottom, totalRows);
279
282
  // Fix 1 pixel offset when cell is selected
280
283
  newY += 1;
284
+ // Compensate for the bottom header border if scrolled from the absolute top.
285
+ newY += columnHeaderBorderCompensation;
281
286
  } else {
282
287
  newY += this.sumCellSizes(wtSettings.getSetting('fixedRowsTop'), sourceRow);
283
288
  }
284
289
  newY += scrollbarCompensation;
290
+
291
+ // If the table is scrolled all the way up when starting the scroll and going to be scrolled to the bottom,
292
+ // we need to compensate for the potential header bottom border height.
293
+ if ((0, _element.getMaximumScrollTop)(this.mainTableScrollableElement) === newY - columnHeaderBorderCompensation && columnHeaderBorderCompensation > 0) {
294
+ this.wot.wtOverlays.expandHiderVerticallyBy(columnHeaderBorderCompensation);
295
+ }
285
296
  return this.setScrollPosition(newY);
286
297
  }
287
298
 
@@ -2,7 +2,7 @@ import "core-js/modules/es.error.cause.js";
2
2
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
3
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
4
4
  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); }
5
- import { addClass, getScrollbarWidth, getScrollTop, getWindowScrollLeft, hasClass, outerHeight, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
5
+ import { addClass, getMaximumScrollTop, getScrollbarWidth, getScrollTop, getWindowScrollLeft, hasClass, outerHeight, removeClass, setOverlayPosition, resetCssTransform } from "../../../../helpers/dom/element.mjs";
6
6
  import TopOverlayTable from "./../table/top.mjs";
7
7
  import { Overlay } from "./_base.mjs";
8
8
  import { CORNER_DEFAULT_STYLE } from "../selection/index.mjs";
@@ -255,6 +255,9 @@ export class TopOverlay extends Overlay {
255
255
  } = this;
256
256
  const sourceInstance = wot.cloneSource ? wot.cloneSource : wot;
257
257
  const mainHolder = sourceInstance.wtTable.holder;
258
+ const columnHeaders = wtSettings.getSetting('columnHeaders');
259
+ const fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
260
+ const columnHeaderBorderCompensation = fixedRowsTop === 0 && columnHeaders.length > 0 && !hasClass(mainHolder.parentNode, 'innerBorderTop') ? 1 : 0;
258
261
  let newY = this.getTableParentOffset();
259
262
  let scrollbarCompensation = 0;
260
263
  if (bottomEdge) {
@@ -274,10 +277,18 @@ export class TopOverlay extends Overlay {
274
277
  newY -= wot.wtViewport.getViewportHeight() - this.sumCellSizes(totalRows - fixedRowsBottom, totalRows);
275
278
  // Fix 1 pixel offset when cell is selected
276
279
  newY += 1;
280
+ // Compensate for the bottom header border if scrolled from the absolute top.
281
+ newY += columnHeaderBorderCompensation;
277
282
  } else {
278
283
  newY += this.sumCellSizes(wtSettings.getSetting('fixedRowsTop'), sourceRow);
279
284
  }
280
285
  newY += scrollbarCompensation;
286
+
287
+ // If the table is scrolled all the way up when starting the scroll and going to be scrolled to the bottom,
288
+ // we need to compensate for the potential header bottom border height.
289
+ if (getMaximumScrollTop(this.mainTableScrollableElement) === newY - columnHeaderBorderCompensation && columnHeaderBorderCompensation > 0) {
290
+ this.wot.wtOverlays.expandHiderVerticallyBy(columnHeaderBorderCompensation);
291
+ }
281
292
  return this.setScrollPosition(newY);
282
293
  }
283
294
 
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- require("core-js/modules/es.array.push.js");
5
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/es.array.push.js");
6
6
  var _element = require("../../../helpers/dom/element");
7
7
  var _feature = require("../../../helpers/feature");
8
8
  var _array = require("../../../helpers/array");
@@ -562,13 +562,31 @@ class Overlays {
562
562
  const {
563
563
  wtTable
564
564
  } = this;
565
+ const {
566
+ rootWindow
567
+ } = this.domBindings;
568
+ const isWindowScrolled = this.scrollableElement === rootWindow;
565
569
  const totalColumns = this.wtSettings.getSetting('totalColumns');
566
570
  const totalRows = this.wtSettings.getSetting('totalRows');
567
571
  const headerRowSize = wtViewport.getRowHeaderWidth();
568
572
  const headerColumnSize = wtViewport.getColumnHeaderHeight();
569
- const hiderStyle = wtTable.hider.style;
570
- hiderStyle.width = `${headerRowSize + this.inlineStartOverlay.sumCellSizes(0, totalColumns)}px`;
571
- hiderStyle.height = `${headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1}px`;
573
+ const proposedHiderHeight = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1;
574
+ const proposedHiderWidth = headerRowSize + this.inlineStartOverlay.sumCellSizes(0, totalColumns);
575
+ const hiderElement = wtTable.hider;
576
+ const hiderStyle = hiderElement.style;
577
+ const isScrolledBeyondHiderHeight = () => {
578
+ return isWindowScrolled ? false : this.scrollableElement.scrollTop > Math.max(0, proposedHiderHeight - wtTable.holder.clientHeight);
579
+ };
580
+ const isScrolledBeyondHiderWidth = () => {
581
+ return isWindowScrolled ? false : this.scrollableElement.scrollLeft > Math.max(0, proposedHiderWidth - wtTable.holder.clientWidth);
582
+ };
583
+ const columnHeaderBorderCompensation = isScrolledBeyondHiderHeight() ? 1 : 0;
584
+ const rowHeaderBorderCompensation = isScrolledBeyondHiderWidth() ? 1 : 0;
585
+
586
+ // If the elements are being adjusted after scrolling the table from the very beginning to the very end,
587
+ // we need to adjust the hider dimensions by the header border size. (https://github.com/handsontable/dev-handsontable/issues/1772)
588
+ hiderStyle.width = `${proposedHiderWidth + rowHeaderBorderCompensation}px`;
589
+ hiderStyle.height = `${proposedHiderHeight + columnHeaderBorderCompensation}px`;
572
590
  if (this.scrollbarSize > 0) {
573
591
  // todo refactoring, looking as a part of logic which should be moved outside the class
574
592
  const {
@@ -592,6 +610,30 @@ class Overlays {
592
610
  this.bottomOverlay.adjustElementsSize(force);
593
611
  }
594
612
 
613
+ /**
614
+ * Expand the hider vertically element by the provided delta value.
615
+ *
616
+ * @param {number} heightDelta The delta value to expand the hider element by.
617
+ */
618
+ expandHiderVerticallyBy(heightDelta) {
619
+ const {
620
+ wtTable
621
+ } = this;
622
+ wtTable.hider.style.height = `${parseInt(wtTable.hider.style.height, 10) + heightDelta}px`;
623
+ }
624
+
625
+ /**
626
+ * Expand the hider horizontally element by the provided delta value.
627
+ *
628
+ * @param {number} widthDelta The delta value to expand the hider element by.
629
+ */
630
+ expandHiderHorizontallyBy(widthDelta) {
631
+ const {
632
+ wtTable
633
+ } = this;
634
+ wtTable.hider.style.width = `${parseInt(wtTable.hider.style.width, 10) + widthDelta}px`;
635
+ }
636
+
595
637
  /**
596
638
  *
597
639
  */
@@ -1,5 +1,5 @@
1
- import "core-js/modules/es.array.push.js";
2
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/es.array.push.js";
3
3
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
5
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); }
@@ -559,13 +559,31 @@ class Overlays {
559
559
  const {
560
560
  wtTable
561
561
  } = this;
562
+ const {
563
+ rootWindow
564
+ } = this.domBindings;
565
+ const isWindowScrolled = this.scrollableElement === rootWindow;
562
566
  const totalColumns = this.wtSettings.getSetting('totalColumns');
563
567
  const totalRows = this.wtSettings.getSetting('totalRows');
564
568
  const headerRowSize = wtViewport.getRowHeaderWidth();
565
569
  const headerColumnSize = wtViewport.getColumnHeaderHeight();
566
- const hiderStyle = wtTable.hider.style;
567
- hiderStyle.width = `${headerRowSize + this.inlineStartOverlay.sumCellSizes(0, totalColumns)}px`;
568
- hiderStyle.height = `${headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1}px`;
570
+ const proposedHiderHeight = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1;
571
+ const proposedHiderWidth = headerRowSize + this.inlineStartOverlay.sumCellSizes(0, totalColumns);
572
+ const hiderElement = wtTable.hider;
573
+ const hiderStyle = hiderElement.style;
574
+ const isScrolledBeyondHiderHeight = () => {
575
+ return isWindowScrolled ? false : this.scrollableElement.scrollTop > Math.max(0, proposedHiderHeight - wtTable.holder.clientHeight);
576
+ };
577
+ const isScrolledBeyondHiderWidth = () => {
578
+ return isWindowScrolled ? false : this.scrollableElement.scrollLeft > Math.max(0, proposedHiderWidth - wtTable.holder.clientWidth);
579
+ };
580
+ const columnHeaderBorderCompensation = isScrolledBeyondHiderHeight() ? 1 : 0;
581
+ const rowHeaderBorderCompensation = isScrolledBeyondHiderWidth() ? 1 : 0;
582
+
583
+ // If the elements are being adjusted after scrolling the table from the very beginning to the very end,
584
+ // we need to adjust the hider dimensions by the header border size. (https://github.com/handsontable/dev-handsontable/issues/1772)
585
+ hiderStyle.width = `${proposedHiderWidth + rowHeaderBorderCompensation}px`;
586
+ hiderStyle.height = `${proposedHiderHeight + columnHeaderBorderCompensation}px`;
569
587
  if (this.scrollbarSize > 0) {
570
588
  // todo refactoring, looking as a part of logic which should be moved outside the class
571
589
  const {
@@ -589,6 +607,30 @@ class Overlays {
589
607
  this.bottomOverlay.adjustElementsSize(force);
590
608
  }
591
609
 
610
+ /**
611
+ * Expand the hider vertically element by the provided delta value.
612
+ *
613
+ * @param {number} heightDelta The delta value to expand the hider element by.
614
+ */
615
+ expandHiderVerticallyBy(heightDelta) {
616
+ const {
617
+ wtTable
618
+ } = this;
619
+ wtTable.hider.style.height = `${parseInt(wtTable.hider.style.height, 10) + heightDelta}px`;
620
+ }
621
+
622
+ /**
623
+ * Expand the hider horizontally element by the provided delta value.
624
+ *
625
+ * @param {number} widthDelta The delta value to expand the hider element by.
626
+ */
627
+ expandHiderHorizontallyBy(widthDelta) {
628
+ const {
629
+ wtTable
630
+ } = this;
631
+ wtTable.hider.style.width = `${parseInt(wtTable.hider.style.width, 10) + widthDelta}px`;
632
+ }
633
+
592
634
  /**
593
635
  *
594
636
  */