handsontable 12.3.3-next-e19badf-20230328 → 12.4.0-next-ddbea0c-20230512

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/3rdparty/walkontable/src/cell/coords.js +13 -16
  2. package/3rdparty/walkontable/src/cell/coords.mjs +13 -16
  3. package/3rdparty/walkontable/src/cell/range.js +25 -29
  4. package/3rdparty/walkontable/src/cell/range.mjs +24 -28
  5. package/3rdparty/walkontable/src/event.js +4 -0
  6. package/3rdparty/walkontable/src/event.mjs +4 -0
  7. package/3rdparty/walkontable/src/overlay/_base.js +6 -7
  8. package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
  9. package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
  10. package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
  11. package/3rdparty/walkontable/src/overlay/top.js +6 -7
  12. package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
  13. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
  14. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
  15. package/3rdparty/walkontable/src/overlays.js +55 -64
  16. package/3rdparty/walkontable/src/overlays.mjs +55 -64
  17. package/3rdparty/walkontable/src/scroll.js +20 -23
  18. package/3rdparty/walkontable/src/scroll.mjs +20 -23
  19. package/3rdparty/walkontable/src/settings.js +13 -15
  20. package/3rdparty/walkontable/src/settings.mjs +13 -15
  21. package/3rdparty/walkontable/src/table.js +22 -26
  22. package/3rdparty/walkontable/src/table.mjs +22 -26
  23. package/CHANGELOG.md +14 -0
  24. package/base.js +2 -4
  25. package/base.mjs +2 -2
  26. package/core.js +23 -6
  27. package/core.mjs +23 -6
  28. package/dataMap/dataSource.js +5 -5
  29. package/dataMap/dataSource.mjs +5 -5
  30. package/dataMap/metaManager/metaSchema.js +9 -7
  31. package/dataMap/metaManager/metaSchema.mjs +9 -7
  32. package/dist/handsontable.css +2 -2
  33. package/dist/handsontable.full.css +2 -2
  34. package/dist/handsontable.full.js +5047 -4193
  35. package/dist/handsontable.full.min.css +2 -2
  36. package/dist/handsontable.full.min.js +86 -78
  37. package/dist/handsontable.js +4023 -3170
  38. package/dist/handsontable.min.css +2 -2
  39. package/dist/handsontable.min.js +11 -3
  40. package/dist/languages/all.js +133 -0
  41. package/dist/languages/ar-AR.js +7 -0
  42. package/dist/languages/cs-CZ.js +7 -0
  43. package/dist/languages/de-CH.js +7 -0
  44. package/dist/languages/de-DE.js +7 -0
  45. package/dist/languages/en-US.js +7 -0
  46. package/dist/languages/es-MX.js +7 -0
  47. package/dist/languages/fr-FR.js +7 -0
  48. package/dist/languages/it-IT.js +7 -0
  49. package/dist/languages/ja-JP.js +7 -0
  50. package/dist/languages/ko-KR.js +7 -0
  51. package/dist/languages/lv-LV.js +7 -0
  52. package/dist/languages/nb-NO.js +7 -0
  53. package/dist/languages/nl-NL.js +7 -0
  54. package/dist/languages/pl-PL.js +7 -0
  55. package/dist/languages/pt-BR.js +7 -0
  56. package/dist/languages/ru-RU.js +7 -0
  57. package/dist/languages/sr-SP.js +7 -0
  58. package/dist/languages/zh-CN.js +7 -0
  59. package/dist/languages/zh-TW.js +7 -0
  60. package/helpers/mixed.js +2 -2
  61. package/helpers/mixed.mjs +2 -2
  62. package/i18n/languages/ar-AR.js +7 -1
  63. package/i18n/languages/cs-CZ.js +7 -1
  64. package/i18n/languages/de-CH.js +7 -1
  65. package/i18n/languages/de-DE.js +7 -1
  66. package/i18n/languages/en-US.js +7 -1
  67. package/i18n/languages/es-MX.js +7 -1
  68. package/i18n/languages/fr-FR.js +7 -1
  69. package/i18n/languages/it-IT.js +7 -1
  70. package/i18n/languages/ja-JP.js +7 -1
  71. package/i18n/languages/ko-KR.js +7 -1
  72. package/i18n/languages/lv-LV.js +7 -1
  73. package/i18n/languages/nb-NO.js +7 -1
  74. package/i18n/languages/nl-NL.js +7 -1
  75. package/i18n/languages/pl-PL.js +7 -1
  76. package/i18n/languages/pt-BR.js +7 -1
  77. package/i18n/languages/ru-RU.js +7 -1
  78. package/i18n/languages/sr-SP.js +7 -1
  79. package/i18n/languages/zh-CN.js +7 -1
  80. package/i18n/languages/zh-TW.js +7 -1
  81. package/languages/all.js +133 -0
  82. package/languages/ar-AR.js +7 -0
  83. package/languages/cs-CZ.js +7 -0
  84. package/languages/de-CH.js +7 -0
  85. package/languages/de-DE.js +7 -0
  86. package/languages/en-US.js +7 -0
  87. package/languages/es-MX.js +7 -0
  88. package/languages/fr-FR.js +7 -0
  89. package/languages/index.js +133 -0
  90. package/languages/it-IT.js +7 -0
  91. package/languages/ja-JP.js +7 -0
  92. package/languages/ko-KR.js +7 -0
  93. package/languages/lv-LV.js +7 -0
  94. package/languages/nb-NO.js +7 -0
  95. package/languages/nl-NL.js +7 -0
  96. package/languages/pl-PL.js +7 -0
  97. package/languages/pt-BR.js +7 -0
  98. package/languages/ru-RU.js +7 -0
  99. package/languages/sr-SP.js +7 -0
  100. package/languages/zh-CN.js +7 -0
  101. package/languages/zh-TW.js +7 -0
  102. package/package.json +3 -2
  103. package/pluginHooks.js +16 -6
  104. package/pluginHooks.mjs +15 -3
  105. package/plugins/autoRowSize/autoRowSize.js +2 -2
  106. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  107. package/plugins/copyPaste/copyableRanges.js +25 -31
  108. package/plugins/copyPaste/copyableRanges.mjs +18 -24
  109. package/plugins/customBorders/customBorders.d.ts +2 -0
  110. package/plugins/filters/filters.js +5 -0
  111. package/plugins/filters/filters.mjs +5 -0
  112. package/plugins/formulas/engine/register.js +9 -0
  113. package/plugins/formulas/engine/register.mjs +13 -4
  114. package/plugins/formulas/engine/settings.js +18 -3
  115. package/plugins/formulas/engine/settings.mjs +16 -3
  116. package/plugins/formulas/formulas.js +274 -155
  117. package/plugins/formulas/formulas.mjs +274 -156
  118. package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
  119. package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
  120. package/plugins/formulas/indexSyncer/index.js +225 -0
  121. package/plugins/formulas/indexSyncer/index.mjs +219 -0
  122. package/plugins/formulas/utils.js +81 -0
  123. package/plugins/formulas/utils.mjs +74 -0
  124. package/plugins/manualRowMove/manualRowMove.js +26 -11
  125. package/plugins/manualRowMove/manualRowMove.mjs +27 -12
  126. package/plugins/nestedHeaders/stateManager/headersTree.js +23 -26
  127. package/plugins/nestedHeaders/stateManager/headersTree.mjs +20 -23
  128. package/plugins/nestedHeaders/stateManager/index.js +3 -3
  129. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
  130. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +1 -1
  131. package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
  132. package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
  133. package/plugins/registry.js +3 -1
  134. package/plugins/undoRedo/undoRedo.js +0 -1
  135. package/plugins/undoRedo/undoRedo.mjs +0 -1
  136. package/selection/highlight/visualSelection.js +5 -6
  137. package/selection/highlight/visualSelection.mjs +5 -6
  138. package/tableView.js +62 -72
  139. package/tableView.mjs +62 -72
  140. package/translations/changesObservable/observable.js +41 -46
  141. package/translations/changesObservable/observable.mjs +36 -41
  142. package/translations/changesObservable/observer.js +1 -1
  143. package/translations/indexMapper.js +21 -0
  144. package/translations/indexMapper.mjs +21 -0
  145. package/utils/dataStructures/tree.js +15 -18
  146. package/utils/dataStructures/tree.mjs +15 -18
  147. package/utils/parseTable.js +5 -1
  148. package/utils/parseTable.mjs +5 -1
@@ -33,70 +33,6 @@ import { InlineStartOverlay, TopOverlay, TopInlineStartCornerOverlay, BottomOver
33
33
  * @class Overlays
34
34
  */
35
35
  var Overlays = /*#__PURE__*/function () {
36
- /**
37
- * Walkontable instance's reference.
38
- *
39
- * @protected
40
- * @type {Walkontable}
41
- */
42
-
43
- /**
44
- * Refer to the TopOverlay instance.
45
- *
46
- * @protected
47
- * @type {TopOverlay}
48
- */
49
-
50
- /**
51
- * Refer to the BottomOverlay instance.
52
- *
53
- * @protected
54
- * @type {BottomOverlay}
55
- */
56
-
57
- /**
58
- * Refer to the InlineStartOverlay or instance.
59
- *
60
- * @protected
61
- * @type {InlineStartOverlay}
62
- */
63
-
64
- /**
65
- * Refer to the TopInlineStartCornerOverlay instance.
66
- *
67
- * @protected
68
- * @type {TopInlineStartCornerOverlay}
69
- */
70
-
71
- /**
72
- * Refer to the BottomInlineStartCornerOverlay instance.
73
- *
74
- * @protected
75
- * @type {BottomInlineStartCornerOverlay}
76
- */
77
-
78
- /**
79
- * Browser line height for purposes of translating mouse wheel.
80
- *
81
- * @private
82
- * @type {number}
83
- */
84
-
85
- /**
86
- * The walkontable settings.
87
- *
88
- * @protected
89
- * @type {Settings}
90
- */
91
-
92
- /**
93
- * The instance of the ResizeObserver that observes the size of the Walkontable wrapper element.
94
- * In case of the size change detection the `onContainerElementResize` is fired.
95
- *
96
- * @private
97
- * @type {ResizeObserver}
98
- */
99
-
100
36
  /**
101
37
  * @param {Walkontable} wotInstance The Walkontable instance. @todo refactoring remove.
102
38
  * @param {FacadeGetter} facadeGetter Function which return proper facade.
@@ -108,14 +44,69 @@ var Overlays = /*#__PURE__*/function () {
108
44
  function Overlays(wotInstance, facadeGetter, domBindings, wtSettings, eventManager, wtTable) {
109
45
  var _this = this;
110
46
  _classCallCheck(this, Overlays);
47
+ /**
48
+ * Walkontable instance's reference.
49
+ *
50
+ * @protected
51
+ * @type {Walkontable}
52
+ */
111
53
  _defineProperty(this, "wot", null);
54
+ /**
55
+ * Refer to the TopOverlay instance.
56
+ *
57
+ * @protected
58
+ * @type {TopOverlay}
59
+ */
112
60
  _defineProperty(this, "topOverlay", null);
61
+ /**
62
+ * Refer to the BottomOverlay instance.
63
+ *
64
+ * @protected
65
+ * @type {BottomOverlay}
66
+ */
113
67
  _defineProperty(this, "bottomOverlay", null);
68
+ /**
69
+ * Refer to the InlineStartOverlay or instance.
70
+ *
71
+ * @protected
72
+ * @type {InlineStartOverlay}
73
+ */
114
74
  _defineProperty(this, "inlineStartOverlay", null);
75
+ /**
76
+ * Refer to the TopInlineStartCornerOverlay instance.
77
+ *
78
+ * @protected
79
+ * @type {TopInlineStartCornerOverlay}
80
+ */
115
81
  _defineProperty(this, "topInlineStartCornerOverlay", null);
82
+ /**
83
+ * Refer to the BottomInlineStartCornerOverlay instance.
84
+ *
85
+ * @protected
86
+ * @type {BottomInlineStartCornerOverlay}
87
+ */
116
88
  _defineProperty(this, "bottomInlineStartCornerOverlay", null);
89
+ /**
90
+ * Browser line height for purposes of translating mouse wheel.
91
+ *
92
+ * @private
93
+ * @type {number}
94
+ */
117
95
  _defineProperty(this, "browserLineHeight", undefined);
96
+ /**
97
+ * The walkontable settings.
98
+ *
99
+ * @protected
100
+ * @type {Settings}
101
+ */
118
102
  _defineProperty(this, "wtSettings", null);
103
+ /**
104
+ * The instance of the ResizeObserver that observes the size of the Walkontable wrapper element.
105
+ * In case of the size change detection the `onContainerElementResize` is fired.
106
+ *
107
+ * @private
108
+ * @type {ResizeObserver}
109
+ */
119
110
  _defineProperty(this, "resizeObserver", new ResizeObserver(function (entries) {
120
111
  requestAnimationFrame(function () {
121
112
  if (!Array.isArray(entries) || !entries.length) {
@@ -25,36 +25,33 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
25
25
  * @class Scroll
26
26
  */
27
27
  var Scroll = /*#__PURE__*/function () {
28
- /**
29
- * The data access object.
30
- *
31
- * @protected
32
- * @type {ScrollDao}
33
- */
34
-
35
- /**
36
- * Holds the last column reached by the scroll, which determines the scroll snapping direction
37
- * (left or right) for a next horizontal scroll.
38
- *
39
- * @protected
40
- * @type {number}
41
- */
42
-
43
- /**
44
- * Holds the last row reached by the scroll, which determines the scroll snapping direction
45
- * (top or bottom) for a next vertical scroll.
46
- *
47
- * @protected
48
- * @type {number}
49
- */
50
-
51
28
  /**
52
29
  * @param {ScrollDao} dataAccessObject Tha data access object.
53
30
  */
54
31
  function Scroll(dataAccessObject) {
55
32
  _classCallCheck(this, Scroll);
33
+ /**
34
+ * The data access object.
35
+ *
36
+ * @protected
37
+ * @type {ScrollDao}
38
+ */
56
39
  _defineProperty(this, "dataAccessObject", void 0);
40
+ /**
41
+ * Holds the last column reached by the scroll, which determines the scroll snapping direction
42
+ * (left or right) for a next horizontal scroll.
43
+ *
44
+ * @protected
45
+ * @type {number}
46
+ */
57
47
  _defineProperty(this, "lastScrolledColumnPos", -1);
48
+ /**
49
+ * Holds the last row reached by the scroll, which determines the scroll snapping direction
50
+ * (top or bottom) for a next vertical scroll.
51
+ *
52
+ * @protected
53
+ * @type {number}
54
+ */
58
55
  _defineProperty(this, "lastScrolledRowPos", -1);
59
56
  this.dataAccessObject = dataAccessObject;
60
57
  }
@@ -21,36 +21,33 @@ import { innerHeight, innerWidth, getScrollLeft, getScrollTop, offset } from "..
21
21
  * @class Scroll
22
22
  */
23
23
  var Scroll = /*#__PURE__*/function () {
24
- /**
25
- * The data access object.
26
- *
27
- * @protected
28
- * @type {ScrollDao}
29
- */
30
-
31
- /**
32
- * Holds the last column reached by the scroll, which determines the scroll snapping direction
33
- * (left or right) for a next horizontal scroll.
34
- *
35
- * @protected
36
- * @type {number}
37
- */
38
-
39
- /**
40
- * Holds the last row reached by the scroll, which determines the scroll snapping direction
41
- * (top or bottom) for a next vertical scroll.
42
- *
43
- * @protected
44
- * @type {number}
45
- */
46
-
47
24
  /**
48
25
  * @param {ScrollDao} dataAccessObject Tha data access object.
49
26
  */
50
27
  function Scroll(dataAccessObject) {
51
28
  _classCallCheck(this, Scroll);
29
+ /**
30
+ * The data access object.
31
+ *
32
+ * @protected
33
+ * @type {ScrollDao}
34
+ */
52
35
  _defineProperty(this, "dataAccessObject", void 0);
36
+ /**
37
+ * Holds the last column reached by the scroll, which determines the scroll snapping direction
38
+ * (left or right) for a next horizontal scroll.
39
+ *
40
+ * @protected
41
+ * @type {number}
42
+ */
53
43
  _defineProperty(this, "lastScrolledColumnPos", -1);
44
+ /**
45
+ * Holds the last row reached by the scroll, which determines the scroll snapping direction
46
+ * (top or bottom) for a next vertical scroll.
47
+ *
48
+ * @protected
49
+ * @type {number}
50
+ */
54
51
  _defineProperty(this, "lastScrolledRowPos", -1);
55
52
  this.dataAccessObject = dataAccessObject;
56
53
  }
@@ -95,28 +95,26 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
95
95
  * @class Settings
96
96
  */
97
97
  var Settings = /*#__PURE__*/function () {
98
- /**
99
- * Reference to settings.
100
- *
101
- * @protected
102
- * @type {SettingsPure}
103
- */
104
-
105
- /**
106
- * The defaults values of settings.
107
- * Void 0 means it is required, null means it can be empty.
108
- *
109
- * @public
110
- * @type {Readonly<SettingsPure>}
111
- */
112
-
113
98
  /**
114
99
  * @param {SettingsPure} settings The user defined settings.
115
100
  */
116
101
  function Settings(settings) {
117
102
  var _this = this;
118
103
  _classCallCheck(this, Settings);
104
+ /**
105
+ * Reference to settings.
106
+ *
107
+ * @protected
108
+ * @type {SettingsPure}
109
+ */
119
110
  _defineProperty(this, "settings", {});
111
+ /**
112
+ * The defaults values of settings.
113
+ * Void 0 means it is required, null means it can be empty.
114
+ *
115
+ * @public
116
+ * @type {Readonly<SettingsPure>}
117
+ */
120
118
  _defineProperty(this, "defaults", Object.freeze(this.getDefaults()));
121
119
  (0, _object.objectEach)(this.defaults, function (value, key) {
122
120
  if (settings[key] !== void 0) {
@@ -91,28 +91,26 @@ import { objectEach } from "../../../helpers/object.mjs";
91
91
  * @class Settings
92
92
  */
93
93
  var Settings = /*#__PURE__*/function () {
94
- /**
95
- * Reference to settings.
96
- *
97
- * @protected
98
- * @type {SettingsPure}
99
- */
100
-
101
- /**
102
- * The defaults values of settings.
103
- * Void 0 means it is required, null means it can be empty.
104
- *
105
- * @public
106
- * @type {Readonly<SettingsPure>}
107
- */
108
-
109
94
  /**
110
95
  * @param {SettingsPure} settings The user defined settings.
111
96
  */
112
97
  function Settings(settings) {
113
98
  var _this = this;
114
99
  _classCallCheck(this, Settings);
100
+ /**
101
+ * Reference to settings.
102
+ *
103
+ * @protected
104
+ * @type {SettingsPure}
105
+ */
115
106
  _defineProperty(this, "settings", {});
107
+ /**
108
+ * The defaults values of settings.
109
+ * Void 0 means it is required, null means it can be empty.
110
+ *
111
+ * @public
112
+ * @type {Readonly<SettingsPure>}
113
+ */
116
114
  _defineProperty(this, "defaults", Object.freeze(this.getDefaults()));
117
115
  objectEach(this.defaults, function (value, key) {
118
116
  if (settings[key] !== void 0) {
@@ -56,32 +56,6 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
56
56
  * @abstract
57
57
  */
58
58
  var Table = /*#__PURE__*/function () {
59
- /**
60
- * The walkontable settings.
61
- *
62
- * @protected
63
- * @type {Settings}
64
- */
65
-
66
- /**
67
- * Indicates if the table has height bigger than 0px.
68
- *
69
- * @type {boolean}
70
- */
71
-
72
- /**
73
- * Indicates if the table has width bigger than 0px.
74
- *
75
- * @type {boolean}
76
- */
77
-
78
- /**
79
- * Indicates if the table is visible. By visible, it means that the holder
80
- * element has CSS 'display' property different than 'none'.
81
- *
82
- * @type {boolean}
83
- */
84
-
85
59
  /**
86
60
  *
87
61
  * @abstract
@@ -94,13 +68,35 @@ var Table = /*#__PURE__*/function () {
94
68
  function Table(dataAccessObject, facadeGetter, domBindings, wtSettings, name) {
95
69
  var _this = this;
96
70
  _classCallCheck(this, Table);
71
+ /**
72
+ * The walkontable settings.
73
+ *
74
+ * @protected
75
+ * @type {Settings}
76
+ */
97
77
  _defineProperty(this, "wtSettings", null);
98
78
  _defineProperty(this, "domBindings", void 0);
99
79
  _defineProperty(this, "TBODY", null);
100
80
  _defineProperty(this, "THEAD", null);
101
81
  _defineProperty(this, "COLGROUP", null);
82
+ /**
83
+ * Indicates if the table has height bigger than 0px.
84
+ *
85
+ * @type {boolean}
86
+ */
102
87
  _defineProperty(this, "hasTableHeight", true);
88
+ /**
89
+ * Indicates if the table has width bigger than 0px.
90
+ *
91
+ * @type {boolean}
92
+ */
103
93
  _defineProperty(this, "hasTableWidth", true);
94
+ /**
95
+ * Indicates if the table is visible. By visible, it means that the holder
96
+ * element has CSS 'display' property different than 'none'.
97
+ *
98
+ * @type {boolean}
99
+ */
104
100
  _defineProperty(this, "isTableVisible", false);
105
101
  _defineProperty(this, "tableOffset", 0);
106
102
  _defineProperty(this, "holderOffset", 0);
@@ -51,32 +51,6 @@ import { CLONE_TOP, CLONE_BOTTOM, CLONE_INLINE_START, CLONE_TOP_INLINE_START_COR
51
51
  * @abstract
52
52
  */
53
53
  var Table = /*#__PURE__*/function () {
54
- /**
55
- * The walkontable settings.
56
- *
57
- * @protected
58
- * @type {Settings}
59
- */
60
-
61
- /**
62
- * Indicates if the table has height bigger than 0px.
63
- *
64
- * @type {boolean}
65
- */
66
-
67
- /**
68
- * Indicates if the table has width bigger than 0px.
69
- *
70
- * @type {boolean}
71
- */
72
-
73
- /**
74
- * Indicates if the table is visible. By visible, it means that the holder
75
- * element has CSS 'display' property different than 'none'.
76
- *
77
- * @type {boolean}
78
- */
79
-
80
54
  /**
81
55
  *
82
56
  * @abstract
@@ -89,13 +63,35 @@ var Table = /*#__PURE__*/function () {
89
63
  function Table(dataAccessObject, facadeGetter, domBindings, wtSettings, name) {
90
64
  var _this = this;
91
65
  _classCallCheck(this, Table);
66
+ /**
67
+ * The walkontable settings.
68
+ *
69
+ * @protected
70
+ * @type {Settings}
71
+ */
92
72
  _defineProperty(this, "wtSettings", null);
93
73
  _defineProperty(this, "domBindings", void 0);
94
74
  _defineProperty(this, "TBODY", null);
95
75
  _defineProperty(this, "THEAD", null);
96
76
  _defineProperty(this, "COLGROUP", null);
77
+ /**
78
+ * Indicates if the table has height bigger than 0px.
79
+ *
80
+ * @type {boolean}
81
+ */
97
82
  _defineProperty(this, "hasTableHeight", true);
83
+ /**
84
+ * Indicates if the table has width bigger than 0px.
85
+ *
86
+ * @type {boolean}
87
+ */
98
88
  _defineProperty(this, "hasTableWidth", true);
89
+ /**
90
+ * Indicates if the table is visible. By visible, it means that the holder
91
+ * element has CSS 'display' property different than 'none'.
92
+ *
93
+ * @type {boolean}
94
+ */
99
95
  _defineProperty(this, "isTableVisible", false);
100
96
  _defineProperty(this, "tableOffset", 0);
101
97
  _defineProperty(this, "holderOffset", 0);
package/CHANGELOG.md CHANGED
@@ -9,6 +9,20 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
10
  <!-- UNVERSIONED -->
11
11
 
12
+ ## [12.4.0] - 2023-05-23
13
+
14
+ ### Added
15
+ - Added new afterColumnSequenceChange and afterRowSequenceChange hooks and synchronization of actions done on HOT with HF's engine [#10215](https://github.com/handsontable/handsontable/pull/10215)
16
+
17
+ ### Fixed
18
+ - Fixed problem related to copying and pasting from Hansontable to Excel [#10017](https://github.com/handsontable/handsontable/issues/10017)
19
+ - Fixed an issue where Handsontable's dates didn't sync correctly with HyperFormula's dates. [#10085](https://github.com/handsontable/handsontable/issues/10085)
20
+ - Fixed problem related to Autofill, TrimRows and Formulas plugins cooperation. [#10200](https://github.com/handsontable/handsontable/issues/10200)
21
+ - Fixed a problem where re-entering the same cells/headers with the mouse cursor would not trigger the `beforeOnCellMouseOver` and `afterOnCellMouseOver` hooks. [#10321](https://github.com/handsontable/handsontable/pull/10321)
22
+ - Fixed a problem where Handsontable's `updateSettings` method would reset the HyperFormula's Undo/Redo actions stack in the connected instance. [#10326](https://github.com/handsontable/handsontable/pull/10326)
23
+ - Updated TypeScript definition files related to CustomBorders plugin [#1240](https://github.com/handsontable/handsontable/pull/1240)
24
+ - Fixed problems with backlight and guideline elements misalignment and moving row after the last position [#9556](https://github.com/handsontable/handsontable/issues/9556)
25
+
12
26
  ## [12.3.3] - 2023-03-28
13
27
 
14
28
  ### Added
package/base.js CHANGED
@@ -16,9 +16,7 @@ exports.CellRange = _src.CellRange;
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
  // FIXME: Bug in eslint-plugin-import: https://github.com/benmosher/eslint-plugin-import/issues/1883
18
18
  /* eslint-disable import/named */
19
-
20
19
  /* eslint-enable import/named */
21
-
22
20
  // register default mandatory cell type for the Base package
23
21
  (0, _registry2.registerCellType)(_textType.TextCellType);
24
22
 
@@ -46,8 +44,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
46
44
  Handsontable.CellCoords = _src.CellCoords;
47
45
  Handsontable.CellRange = _src.CellRange;
48
46
  Handsontable.packageName = 'handsontable';
49
- Handsontable.buildDate = "28/03/2023 10:00:43";
50
- Handsontable.version = "12.3.3-next-e19badf-20230328";
47
+ Handsontable.buildDate = "12/05/2023 12:12:12";
48
+ Handsontable.version = "12.4.0-next-ddbea0c-20230512";
51
49
  Handsontable.languages = {
52
50
  dictionaryKeys: _registry.dictionaryKeys,
53
51
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "28/03/2023 10:00:57";
39
- Handsontable.version = "12.3.3-next-e19badf-20230328";
38
+ Handsontable.buildDate = "12/05/2023 12:12:29";
39
+ Handsontable.version = "12.4.0-next-ddbea0c-20230512";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys: dictionaryKeys,
42
42
  getLanguageDictionary: getLanguageDictionary,
package/core.js CHANGED
@@ -107,7 +107,7 @@ var deprecationWarns = new Set();
107
107
  * :::
108
108
  *
109
109
  * ::: only-for react
110
- * ```jsx{3,7,13}
110
+ * ```jsx
111
111
  * import { useRef } from 'react';
112
112
  *
113
113
  * const hotTableComponent = useRef(null);
@@ -263,6 +263,12 @@ function Core(rootElement, userSettings) {
263
263
  * @type {IndexMapper}
264
264
  */
265
265
  this.rowIndexMapper = new _translations.IndexMapper();
266
+ this.columnIndexMapper.addLocalHook('indexesSequenceChange', function (source) {
267
+ instance.runHooks('afterColumnSequenceChange', source);
268
+ });
269
+ this.rowIndexMapper.addLocalHook('indexesSequenceChange', function (source) {
270
+ instance.runHooks('afterRowSequenceChange', source);
271
+ });
266
272
  dataSource = new _dataSource.default(instance);
267
273
  if (!this.rootElement.id || this.rootElement.id.substring(0, 3) === 'ht_') {
268
274
  this.rootElement.id = this.guid; // if root element does not have an id, assign a random id
@@ -2442,11 +2448,13 @@ function Core(rootElement, userSettings) {
2442
2448
  };
2443
2449
 
2444
2450
  /**
2445
- * Get value from the selected cell.
2451
+ * Gets the value of the currently focused cell.
2452
+ *
2453
+ * For column headers and row headers, returns `null`.
2446
2454
  *
2447
2455
  * @memberof Core#
2448
2456
  * @function getValue
2449
- * @returns {*} Value of selected cell.
2457
+ * @returns {*} The value of the focused cell.
2450
2458
  */
2451
2459
  this.getValue = function () {
2452
2460
  var sel = instance.getSelectedLast();
@@ -2789,6 +2797,11 @@ function Core(rootElement, userSettings) {
2789
2797
  * __Note__: This method does not participate in data transformation. If the visual data of the table is reordered,
2790
2798
  * sorted or trimmed only physical indexes are correct.
2791
2799
  *
2800
+ * __Note__: This method may return incorrect values for cells that contain
2801
+ * [formulas](@/guides/formulas/formula-calculation.md). This is because `getSourceData()`
2802
+ * operates on source data ([physical indexes](@/api/indexMapper.md)),
2803
+ * whereas formulas operate on visual data (visual indexes).
2804
+ *
2792
2805
  * @memberof Core#
2793
2806
  * @function getSourceData
2794
2807
  * @param {number} [row] From physical row index.
@@ -3138,7 +3151,13 @@ function Core(rootElement, userSettings) {
3138
3151
  };
3139
3152
 
3140
3153
  /**
3141
- * Checks if the data format and config allows user to modify the column structure.
3154
+ * Checks if your [data format](@/guides/getting-started/binding-to-data.md#compatible-data-types)
3155
+ * and [configuration options](@/guides/getting-started/configuration-options.md)
3156
+ * allow for changing the number of columns.
3157
+ *
3158
+ * Returns `false` when your data is an array of objects,
3159
+ * or when you use the [`columns`](@/api/options.md#columns) option.
3160
+ * Otherwise, returns `true`.
3142
3161
  *
3143
3162
  * @memberof Core#
3144
3163
  * @function isColumnModificationAllowed
@@ -4104,8 +4123,6 @@ function Core(rootElement, userSettings) {
4104
4123
  if (datamap) {
4105
4124
  datamap.destroy();
4106
4125
  }
4107
- instance.rowIndexMapper = null;
4108
- instance.columnIndexMapper = null;
4109
4126
  datamap = null;
4110
4127
  grid = null;
4111
4128
  selection = null;
package/core.mjs CHANGED
@@ -102,7 +102,7 @@ var deprecationWarns = new Set();
102
102
  * :::
103
103
  *
104
104
  * ::: only-for react
105
- * ```jsx{3,7,13}
105
+ * ```jsx
106
106
  * import { useRef } from 'react';
107
107
  *
108
108
  * const hotTableComponent = useRef(null);
@@ -258,6 +258,12 @@ export default function Core(rootElement, userSettings) {
258
258
  * @type {IndexMapper}
259
259
  */
260
260
  this.rowIndexMapper = new IndexMapper();
261
+ this.columnIndexMapper.addLocalHook('indexesSequenceChange', function (source) {
262
+ instance.runHooks('afterColumnSequenceChange', source);
263
+ });
264
+ this.rowIndexMapper.addLocalHook('indexesSequenceChange', function (source) {
265
+ instance.runHooks('afterRowSequenceChange', source);
266
+ });
261
267
  dataSource = new DataSource(instance);
262
268
  if (!this.rootElement.id || this.rootElement.id.substring(0, 3) === 'ht_') {
263
269
  this.rootElement.id = this.guid; // if root element does not have an id, assign a random id
@@ -2437,11 +2443,13 @@ export default function Core(rootElement, userSettings) {
2437
2443
  };
2438
2444
 
2439
2445
  /**
2440
- * Get value from the selected cell.
2446
+ * Gets the value of the currently focused cell.
2447
+ *
2448
+ * For column headers and row headers, returns `null`.
2441
2449
  *
2442
2450
  * @memberof Core#
2443
2451
  * @function getValue
2444
- * @returns {*} Value of selected cell.
2452
+ * @returns {*} The value of the focused cell.
2445
2453
  */
2446
2454
  this.getValue = function () {
2447
2455
  var sel = instance.getSelectedLast();
@@ -2784,6 +2792,11 @@ export default function Core(rootElement, userSettings) {
2784
2792
  * __Note__: This method does not participate in data transformation. If the visual data of the table is reordered,
2785
2793
  * sorted or trimmed only physical indexes are correct.
2786
2794
  *
2795
+ * __Note__: This method may return incorrect values for cells that contain
2796
+ * [formulas](@/guides/formulas/formula-calculation.md). This is because `getSourceData()`
2797
+ * operates on source data ([physical indexes](@/api/indexMapper.md)),
2798
+ * whereas formulas operate on visual data (visual indexes).
2799
+ *
2787
2800
  * @memberof Core#
2788
2801
  * @function getSourceData
2789
2802
  * @param {number} [row] From physical row index.
@@ -3133,7 +3146,13 @@ export default function Core(rootElement, userSettings) {
3133
3146
  };
3134
3147
 
3135
3148
  /**
3136
- * Checks if the data format and config allows user to modify the column structure.
3149
+ * Checks if your [data format](@/guides/getting-started/binding-to-data.md#compatible-data-types)
3150
+ * and [configuration options](@/guides/getting-started/configuration-options.md)
3151
+ * allow for changing the number of columns.
3152
+ *
3153
+ * Returns `false` when your data is an array of objects,
3154
+ * or when you use the [`columns`](@/api/options.md#columns) option.
3155
+ * Otherwise, returns `true`.
3137
3156
  *
3138
3157
  * @memberof Core#
3139
3158
  * @function isColumnModificationAllowed
@@ -4099,8 +4118,6 @@ export default function Core(rootElement, userSettings) {
4099
4118
  if (datamap) {
4100
4119
  datamap.destroy();
4101
4120
  }
4102
- instance.rowIndexMapper = null;
4103
- instance.columnIndexMapper = null;
4104
4121
  datamap = null;
4105
4122
  grid = null;
4106
4123
  selection = null;