handsontable 12.3.3 → 12.4.0-next-acb5d99-20230512

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) 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/core/_base.js +16 -20
  6. package/3rdparty/walkontable/src/core/_base.mjs +16 -20
  7. package/3rdparty/walkontable/src/event.js +4 -0
  8. package/3rdparty/walkontable/src/event.mjs +4 -0
  9. package/3rdparty/walkontable/src/overlay/_base.js +6 -7
  10. package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
  11. package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
  12. package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
  13. package/3rdparty/walkontable/src/overlay/top.js +6 -7
  14. package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
  15. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
  16. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
  17. package/3rdparty/walkontable/src/overlays.js +55 -64
  18. package/3rdparty/walkontable/src/overlays.mjs +55 -64
  19. package/3rdparty/walkontable/src/scroll.js +20 -23
  20. package/3rdparty/walkontable/src/scroll.mjs +20 -23
  21. package/3rdparty/walkontable/src/settings.js +13 -15
  22. package/3rdparty/walkontable/src/settings.mjs +13 -15
  23. package/3rdparty/walkontable/src/table.js +22 -26
  24. package/3rdparty/walkontable/src/table.mjs +22 -26
  25. package/CHANGELOG.md +14 -0
  26. package/base.js +2 -4
  27. package/base.mjs +2 -2
  28. package/core.js +23 -6
  29. package/core.mjs +23 -6
  30. package/dataMap/dataSource.js +5 -5
  31. package/dataMap/dataSource.mjs +5 -5
  32. package/dataMap/metaManager/metaSchema.js +9 -7
  33. package/dataMap/metaManager/metaSchema.mjs +9 -7
  34. package/dist/handsontable.css +2 -2
  35. package/dist/handsontable.full.css +2 -2
  36. package/dist/handsontable.full.js +7364 -5992
  37. package/dist/handsontable.full.min.css +2 -2
  38. package/dist/handsontable.full.min.js +256 -234
  39. package/dist/handsontable.js +4326 -3275
  40. package/dist/handsontable.min.css +2 -2
  41. package/dist/handsontable.min.js +11 -3
  42. package/dist/languages/all.js +133 -0
  43. package/dist/languages/ar-AR.js +7 -0
  44. package/dist/languages/cs-CZ.js +7 -0
  45. package/dist/languages/de-CH.js +7 -0
  46. package/dist/languages/de-DE.js +7 -0
  47. package/dist/languages/en-US.js +7 -0
  48. package/dist/languages/es-MX.js +7 -0
  49. package/dist/languages/fr-FR.js +7 -0
  50. package/dist/languages/it-IT.js +7 -0
  51. package/dist/languages/ja-JP.js +7 -0
  52. package/dist/languages/ko-KR.js +7 -0
  53. package/dist/languages/lv-LV.js +7 -0
  54. package/dist/languages/nb-NO.js +7 -0
  55. package/dist/languages/nl-NL.js +7 -0
  56. package/dist/languages/pl-PL.js +7 -0
  57. package/dist/languages/pt-BR.js +7 -0
  58. package/dist/languages/ru-RU.js +7 -0
  59. package/dist/languages/sr-SP.js +7 -0
  60. package/dist/languages/zh-CN.js +7 -0
  61. package/dist/languages/zh-TW.js +7 -0
  62. package/editors/autocompleteEditor/autocompleteEditor.js +8 -9
  63. package/editors/autocompleteEditor/autocompleteEditor.mjs +8 -9
  64. package/helpers/mixed.js +2 -2
  65. package/helpers/mixed.mjs +2 -2
  66. package/i18n/languages/ar-AR.js +7 -1
  67. package/i18n/languages/cs-CZ.js +7 -1
  68. package/i18n/languages/de-CH.js +7 -1
  69. package/i18n/languages/de-DE.js +7 -1
  70. package/i18n/languages/en-US.js +7 -1
  71. package/i18n/languages/es-MX.js +7 -1
  72. package/i18n/languages/fr-FR.js +7 -1
  73. package/i18n/languages/it-IT.js +7 -1
  74. package/i18n/languages/ja-JP.js +7 -1
  75. package/i18n/languages/ko-KR.js +7 -1
  76. package/i18n/languages/lv-LV.js +7 -1
  77. package/i18n/languages/nb-NO.js +7 -1
  78. package/i18n/languages/nl-NL.js +7 -1
  79. package/i18n/languages/pl-PL.js +7 -1
  80. package/i18n/languages/pt-BR.js +7 -1
  81. package/i18n/languages/ru-RU.js +7 -1
  82. package/i18n/languages/sr-SP.js +7 -1
  83. package/i18n/languages/zh-CN.js +7 -1
  84. package/i18n/languages/zh-TW.js +7 -1
  85. package/languages/all.js +133 -0
  86. package/languages/ar-AR.js +7 -0
  87. package/languages/cs-CZ.js +7 -0
  88. package/languages/de-CH.js +7 -0
  89. package/languages/de-DE.js +7 -0
  90. package/languages/en-US.js +7 -0
  91. package/languages/es-MX.js +7 -0
  92. package/languages/fr-FR.js +7 -0
  93. package/languages/index.js +133 -0
  94. package/languages/it-IT.js +7 -0
  95. package/languages/ja-JP.js +7 -0
  96. package/languages/ko-KR.js +7 -0
  97. package/languages/lv-LV.js +7 -0
  98. package/languages/nb-NO.js +7 -0
  99. package/languages/nl-NL.js +7 -0
  100. package/languages/pl-PL.js +7 -0
  101. package/languages/pt-BR.js +7 -0
  102. package/languages/ru-RU.js +7 -0
  103. package/languages/sr-SP.js +7 -0
  104. package/languages/zh-CN.js +7 -0
  105. package/languages/zh-TW.js +7 -0
  106. package/package.json +3 -2
  107. package/pluginHooks.js +16 -6
  108. package/pluginHooks.mjs +15 -3
  109. package/plugins/autoRowSize/autoRowSize.js +2 -2
  110. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  111. package/plugins/base/base.js +9 -10
  112. package/plugins/base/base.mjs +9 -10
  113. package/plugins/collapsibleColumns/collapsibleColumns.js +24 -7
  114. package/plugins/collapsibleColumns/collapsibleColumns.mjs +24 -7
  115. package/plugins/copyPaste/copyPaste.js +92 -16
  116. package/plugins/copyPaste/copyPaste.mjs +92 -16
  117. package/plugins/copyPaste/copyableRanges.js +39 -39
  118. package/plugins/copyPaste/copyableRanges.mjs +32 -32
  119. package/plugins/customBorders/customBorders.d.ts +2 -0
  120. package/plugins/customBorders/customBorders.js +6 -7
  121. package/plugins/customBorders/customBorders.mjs +6 -7
  122. package/plugins/filters/filters.js +5 -0
  123. package/plugins/filters/filters.mjs +5 -0
  124. package/plugins/formulas/engine/register.js +9 -0
  125. package/plugins/formulas/engine/register.mjs +13 -4
  126. package/plugins/formulas/engine/settings.js +18 -3
  127. package/plugins/formulas/engine/settings.mjs +16 -3
  128. package/plugins/formulas/formulas.js +308 -162
  129. package/plugins/formulas/formulas.mjs +308 -163
  130. package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
  131. package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
  132. package/plugins/formulas/indexSyncer/index.js +225 -0
  133. package/plugins/formulas/indexSyncer/index.mjs +219 -0
  134. package/plugins/formulas/utils.js +81 -0
  135. package/plugins/formulas/utils.mjs +74 -0
  136. package/plugins/hiddenColumns/hiddenColumns.js +12 -7
  137. package/plugins/hiddenColumns/hiddenColumns.mjs +12 -7
  138. package/plugins/hiddenRows/hiddenRows.js +12 -7
  139. package/plugins/hiddenRows/hiddenRows.mjs +12 -7
  140. package/plugins/manualRowMove/manualRowMove.js +26 -11
  141. package/plugins/manualRowMove/manualRowMove.mjs +27 -12
  142. package/plugins/nestedHeaders/nestedHeaders.js +26 -7
  143. package/plugins/nestedHeaders/nestedHeaders.mjs +26 -7
  144. package/plugins/nestedHeaders/stateManager/headersTree.js +23 -26
  145. package/plugins/nestedHeaders/stateManager/headersTree.mjs +20 -23
  146. package/plugins/nestedHeaders/stateManager/index.js +21 -3
  147. package/plugins/nestedHeaders/stateManager/index.mjs +18 -0
  148. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
  149. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +1 -1
  150. package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -0
  151. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -0
  152. package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
  153. package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
  154. package/plugins/registry.js +3 -1
  155. package/plugins/undoRedo/undoRedo.js +0 -1
  156. package/plugins/undoRedo/undoRedo.mjs +0 -1
  157. package/selection/highlight/visualSelection.js +5 -6
  158. package/selection/highlight/visualSelection.mjs +5 -6
  159. package/tableView.js +62 -72
  160. package/tableView.mjs +62 -72
  161. package/translations/changesObservable/observable.js +41 -46
  162. package/translations/changesObservable/observable.mjs +36 -41
  163. package/translations/changesObservable/observer.js +8 -1
  164. package/translations/changesObservable/observer.mjs +7 -0
  165. package/translations/indexMapper.js +21 -0
  166. package/translations/indexMapper.mjs +21 -0
  167. package/translations/maps/linkedPhysicalIndexToValueMap.js +6 -0
  168. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +6 -0
  169. package/utils/dataStructures/tree.js +15 -18
  170. package/utils/dataStructures/tree.mjs +15 -18
  171. package/utils/parseTable.js +5 -1
  172. package/utils/parseTable.mjs +5 -1
@@ -0,0 +1,379 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.to-primitive.js");
4
+ require("core-js/modules/es.date.to-primitive.js");
5
+ require("core-js/modules/es.symbol.js");
6
+ require("core-js/modules/es.symbol.description.js");
7
+ require("core-js/modules/es.number.constructor.js");
8
+ require("core-js/modules/es.symbol.iterator.js");
9
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
10
+ exports.__esModule = true;
11
+ exports.default = void 0;
12
+ require("core-js/modules/es.array.map.js");
13
+ require("core-js/modules/es.array.index-of.js");
14
+ require("core-js/modules/es.object.to-string.js");
15
+ require("core-js/modules/web.dom-collections.for-each.js");
16
+ require("core-js/modules/es.array.filter.js");
17
+ require("core-js/modules/es.array.from.js");
18
+ require("core-js/modules/es.string.iterator.js");
19
+ require("core-js/modules/es.array.iterator.js");
20
+ require("core-js/modules/web.dom-collections.iterator.js");
21
+ require("core-js/modules/es.array.includes.js");
22
+ require("core-js/modules/es.string.includes.js");
23
+ require("core-js/modules/es.array.slice.js");
24
+ require("core-js/modules/es.weak-map.js");
25
+ var _string = require("../../../helpers/string");
26
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
28
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
29
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
30
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
31
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
32
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
33
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
34
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
35
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
36
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
37
+ 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; } }
38
+ /**
39
+ * @private
40
+ * @class IndexSyncer
41
+ * @description
42
+ *
43
+ * Indexes synchronizer responsible for providing logic for particular axis. It respects an idea to represent trimmed
44
+ * elements in HF's engine to perform formulas calculations on them. It also provides method for translation from visual
45
+ * row/column indexes to HF's row/column indexes.
46
+ */
47
+ var _axis = /*#__PURE__*/new WeakMap();
48
+ var _indexMapper = /*#__PURE__*/new WeakMap();
49
+ var _indexSyncer = /*#__PURE__*/new WeakMap();
50
+ var _indexesSequence = /*#__PURE__*/new WeakMap();
51
+ var _movedIndexes = /*#__PURE__*/new WeakMap();
52
+ var _finalIndex = /*#__PURE__*/new WeakMap();
53
+ var _removedIndexes = /*#__PURE__*/new WeakMap();
54
+ var AxisSyncer = /*#__PURE__*/function () {
55
+ function AxisSyncer(axis, indexMapper, indexSyncer) {
56
+ _classCallCheck(this, AxisSyncer);
57
+ /**
58
+ * The axis for which the actions are performed.
59
+ *
60
+ * @private
61
+ * @type {'row'|'column'}
62
+ */
63
+ _classPrivateFieldInitSpec(this, _axis, {
64
+ writable: true,
65
+ value: void 0
66
+ });
67
+ /**
68
+ * Reference to index mapper.
69
+ *
70
+ * @private
71
+ * @type {IndexMapper}
72
+ */
73
+ _classPrivateFieldInitSpec(this, _indexMapper, {
74
+ writable: true,
75
+ value: void 0
76
+ });
77
+ /**
78
+ * The index synchronizer for both axis (is storing some more general information).
79
+ *
80
+ * @private
81
+ * @type {IndexSyncer}
82
+ */
83
+ _classPrivateFieldInitSpec(this, _indexSyncer, {
84
+ writable: true,
85
+ value: void 0
86
+ });
87
+ /**
88
+ * Sequence of physical indexes stored for watching changes and calculating some transformations.
89
+ *
90
+ * @private
91
+ * @type {Array<number>}
92
+ */
93
+ _classPrivateFieldInitSpec(this, _indexesSequence, {
94
+ writable: true,
95
+ value: []
96
+ });
97
+ /**
98
+ * List of moved HF indexes, stored before performing move on HOT to calculate transformation needed on HF's engine.
99
+ *
100
+ * @private
101
+ * @type {Array<number>}
102
+ */
103
+ _classPrivateFieldInitSpec(this, _movedIndexes, {
104
+ writable: true,
105
+ value: []
106
+ });
107
+ /**
108
+ * Final HF's place where to move indexes, stored before performing move on HOT to calculate transformation needed on HF's engine.
109
+ *
110
+ * @private
111
+ * @type {number|undefined}
112
+ */
113
+ _classPrivateFieldInitSpec(this, _finalIndex, {
114
+ writable: true,
115
+ value: void 0
116
+ });
117
+ /**
118
+ * List of removed HF indexes, stored before performing removal on HOT to calculate transformation needed on HF's engine.
119
+ *
120
+ * @private
121
+ * @type {Array<number>}
122
+ */
123
+ _classPrivateFieldInitSpec(this, _removedIndexes, {
124
+ writable: true,
125
+ value: []
126
+ });
127
+ _classPrivateFieldSet(this, _axis, axis);
128
+ _classPrivateFieldSet(this, _indexMapper, indexMapper);
129
+ _classPrivateFieldSet(this, _indexSyncer, indexSyncer);
130
+ }
131
+
132
+ /**
133
+ * Sets removed HF indexes (it should be done right before performing move on HOT).
134
+ *
135
+ * @param {Array<number>} removedIndexes List of removed physical indexes.
136
+ * @returns {Array<number>} List of removed visual indexes.
137
+ */
138
+ _createClass(AxisSyncer, [{
139
+ key: "setRemovedHfIndexes",
140
+ value: function setRemovedHfIndexes(removedIndexes) {
141
+ var _this = this;
142
+ _classPrivateFieldSet(this, _removedIndexes, removedIndexes.map(function (physicalIndex) {
143
+ var visualIndex = _classPrivateFieldGet(_this, _indexMapper).getVisualFromPhysicalIndex(physicalIndex);
144
+ return _this.getHfIndexFromVisualIndex(visualIndex);
145
+ }));
146
+ return _classPrivateFieldGet(this, _removedIndexes);
147
+ }
148
+
149
+ /**
150
+ * Gets removed HF indexes (right before performing removal on HOT).
151
+ *
152
+ * @returns {Array<number>} List of removed HF indexes.
153
+ */
154
+ }, {
155
+ key: "getRemovedHfIndexes",
156
+ value: function getRemovedHfIndexes() {
157
+ return _classPrivateFieldGet(this, _removedIndexes);
158
+ }
159
+
160
+ /**
161
+ * Gets corresponding HyperFormula index for particular visual index. It's respecting the idea that HF's engine
162
+ * is fed also with trimmed indexes (business requirements for formula result calculation also for trimmed elements).
163
+ *
164
+ * @param {number} visualIndex Visual index.
165
+ * @returns {number}
166
+ */
167
+ }, {
168
+ key: "getHfIndexFromVisualIndex",
169
+ value: function getHfIndexFromVisualIndex(visualIndex) {
170
+ var indexesSequence = _classPrivateFieldGet(this, _indexMapper).getIndexesSequence();
171
+ var notTrimmedIndexes = _classPrivateFieldGet(this, _indexMapper).getNotTrimmedIndexes();
172
+ return indexesSequence.indexOf(notTrimmedIndexes[visualIndex]);
173
+ }
174
+
175
+ /**
176
+ * Synchronizes moves done on HOT to HF engine (based on previously calculated positions).
177
+ *
178
+ * @private
179
+ * @param {Array<{from: number, to: number}>} moves Calculated HF's move positions.
180
+ */
181
+ }, {
182
+ key: "syncMoves",
183
+ value: function syncMoves(moves) {
184
+ var _this2 = this;
185
+ var NUMBER_OF_MOVED_INDEXES = 1;
186
+ var SYNC_MOVE_METHOD_NAME = "move".concat((0, _string.toUpperCaseFirst)(_classPrivateFieldGet(this, _axis)), "s");
187
+ _classPrivateFieldGet(this, _indexSyncer).getEngine().batch(function () {
188
+ moves.forEach(function (move) {
189
+ var moveToTheSamePosition = move.from !== move.to;
190
+ // Moving from left to right (or top to bottom) to a line (drop index) right after already moved element.
191
+ var anotherMoveWithoutEffect = move.from + 1 !== move.to;
192
+ if (moveToTheSamePosition && anotherMoveWithoutEffect) {
193
+ _classPrivateFieldGet(_this2, _indexSyncer).getEngine()[SYNC_MOVE_METHOD_NAME](_classPrivateFieldGet(_this2, _indexSyncer).getSheetId(), move.from, NUMBER_OF_MOVED_INDEXES, move.to);
194
+ }
195
+ });
196
+ });
197
+ }
198
+
199
+ /**
200
+ * Stores information about performed HOT moves for purpose of calculating where to move HF elements.
201
+ *
202
+ * @param {Array<number>} movedVisualIndexes Sequence of moved visual indexes for certain axis.
203
+ * @param {number} visualFinalIndex Final visual place where to move HOT indexes.
204
+ * @param {boolean} movePossible Indicates if it's possible to move HOT indexes to the desired position.
205
+ */
206
+ }, {
207
+ key: "storeMovesInformation",
208
+ value: function storeMovesInformation(movedVisualIndexes, visualFinalIndex, movePossible) {
209
+ var _this3 = this;
210
+ if (movePossible === false) {
211
+ return;
212
+ }
213
+ _classPrivateFieldSet(this, _movedIndexes, movedVisualIndexes.map(function (index) {
214
+ return _this3.getHfIndexFromVisualIndex(index);
215
+ }));
216
+ _classPrivateFieldSet(this, _finalIndex, this.getHfIndexFromVisualIndex(visualFinalIndex));
217
+ }
218
+
219
+ /**
220
+ * Gets first position where to move element (respecting the fact that some element will be sooner or later
221
+ * taken out of the dataset in order to move them).
222
+ *
223
+ * @param {Array<number>} movedHfIndexes Sequence of moved HF indexes for certain axis.
224
+ * @param {number} finalHfIndex Final HF place where to move rows.
225
+ * @returns {number} HF's index informing where to move the first element.
226
+ * @private
227
+ */
228
+ }, {
229
+ key: "getMoveLine",
230
+ value: function getMoveLine(movedHfIndexes, finalHfIndex) {
231
+ var numberOfElements = _classPrivateFieldGet(this, _indexMapper).getNumberOfIndexes();
232
+ var notMovedElements = Array.from(Array(numberOfElements).keys()).filter(function (index) {
233
+ return movedHfIndexes.includes(index) === false;
234
+ });
235
+ if (finalHfIndex === 0) {
236
+ var _notMovedElements$fin;
237
+ return (_notMovedElements$fin = notMovedElements[finalHfIndex]) !== null && _notMovedElements$fin !== void 0 ? _notMovedElements$fin : 0; // Moving before the first dataset's element.
238
+ }
239
+
240
+ return notMovedElements[finalHfIndex - 1] + 1; // Moving before another element.
241
+ }
242
+
243
+ /**
244
+ * Gets initially calculated HF's move positions.
245
+ *
246
+ * @private
247
+ * @param {Array<number>} movedHfIndexes Sequence of moved HF indexes for certain axis.
248
+ * @param {number} finalHfIndex Final HF place where to move rows.
249
+ * @returns {Array<{from: number, to: number}>} Initially calculated HF's move positions.
250
+ */
251
+ }, {
252
+ key: "getInitiallyCalculatedMoves",
253
+ value: function getInitiallyCalculatedMoves(movedHfIndexes, finalHfIndex) {
254
+ var moveLine = this.getMoveLine(movedHfIndexes, finalHfIndex);
255
+ var moves = [];
256
+ movedHfIndexes.forEach(function (movedHfIndex) {
257
+ var move = {
258
+ from: movedHfIndex,
259
+ to: moveLine
260
+ };
261
+ moves.forEach(function (previouslyMovedIndex) {
262
+ var isMovingFromEndToStart = previouslyMovedIndex.from > previouslyMovedIndex.to;
263
+ var isMovingElementBefore = previouslyMovedIndex.to <= move.from;
264
+ var isMovingAfterElement = previouslyMovedIndex.from > move.from;
265
+ if (isMovingAfterElement && isMovingElementBefore && isMovingFromEndToStart) {
266
+ move.from += 1;
267
+ }
268
+ });
269
+
270
+ // Moved element from right to left (or bottom to top).
271
+ if (move.from >= moveLine) {
272
+ moveLine += 1;
273
+ }
274
+ moves.push(move);
275
+ });
276
+ return moves;
277
+ }
278
+
279
+ /**
280
+ * Gets finally calculated HF's move positions (after adjusting).
281
+ *
282
+ * @private
283
+ * @param {Array<{from: number, to: number}>} moves Initially calculated HF's move positions.
284
+ * @returns {Array<{from: number, to: number}>} Finally calculated HF's move positions (after adjusting).
285
+ */
286
+ }, {
287
+ key: "adjustedCalculatedMoves",
288
+ value: function adjustedCalculatedMoves(moves) {
289
+ moves.forEach(function (move, index) {
290
+ var nextMoved = moves.slice(index + 1);
291
+ nextMoved.forEach(function (nextMovedIndex) {
292
+ var isMovingFromStartToEnd = nextMovedIndex.from < nextMovedIndex.to;
293
+ if (nextMovedIndex.from > move.from && isMovingFromStartToEnd) {
294
+ nextMovedIndex.from -= 1;
295
+ }
296
+ });
297
+ });
298
+ return moves;
299
+ }
300
+
301
+ /**
302
+ * Calculating where to move HF elements and performing already calculated moves.
303
+ *
304
+ * @param {boolean} movePossible Indicates if it was possible to move HOT indexes to the desired position.
305
+ * @param {boolean} orderChanged Indicates if order of HOT indexes was changed by move.
306
+ */
307
+ }, {
308
+ key: "calculateAndSyncMoves",
309
+ value: function calculateAndSyncMoves(movePossible, orderChanged) {
310
+ var _this4 = this;
311
+ if (_classPrivateFieldGet(this, _indexSyncer).isPerformingUndoRedo()) {
312
+ return;
313
+ }
314
+ if (movePossible === false || orderChanged === false) {
315
+ return;
316
+ }
317
+ var calculatedMoves = this.adjustedCalculatedMoves(this.getInitiallyCalculatedMoves(_classPrivateFieldGet(this, _movedIndexes), _classPrivateFieldGet(this, _finalIndex)));
318
+ if (_classPrivateFieldGet(this, _indexSyncer).getSheetId() === null) {
319
+ _classPrivateFieldGet(this, _indexSyncer).getPostponeAction(function () {
320
+ return _this4.syncMoves(calculatedMoves);
321
+ });
322
+ } else {
323
+ this.syncMoves(calculatedMoves);
324
+ }
325
+ }
326
+
327
+ /**
328
+ * Gets callback for hook triggered after performing change of indexes order.
329
+ *
330
+ * @returns {Function}
331
+ */
332
+ }, {
333
+ key: "getIndexesChangeSyncMethod",
334
+ value: function getIndexesChangeSyncMethod() {
335
+ var _this5 = this;
336
+ var SYNC_ORDER_CHANGE_METHOD_NAME = "set".concat((0, _string.toUpperCaseFirst)(_classPrivateFieldGet(this, _axis)), "Order");
337
+ return function (source) {
338
+ if (_classPrivateFieldGet(_this5, _indexSyncer).isPerformingUndoRedo()) {
339
+ return;
340
+ }
341
+ var newSequence = _classPrivateFieldGet(_this5, _indexMapper).getIndexesSequence();
342
+ if (source === 'update') {
343
+ var relativeTransformation = _classPrivateFieldGet(_this5, _indexesSequence).map(function (index) {
344
+ return newSequence.indexOf(index);
345
+ });
346
+ var sheetDimensions = _classPrivateFieldGet(_this5, _indexSyncer).getEngine().getSheetDimensions(_classPrivateFieldGet(_this5, _indexSyncer).getSheetId());
347
+ var sizeForAxis;
348
+ if (_classPrivateFieldGet(_this5, _axis) === 'row') {
349
+ sizeForAxis = sheetDimensions.height;
350
+ } else {
351
+ sizeForAxis = sheetDimensions.width;
352
+ }
353
+ var numberOfReorganisedIndexes = relativeTransformation.length;
354
+
355
+ // Sheet dimension can be changed by HF's engine for purpose of calculating values. It extends dependency
356
+ // graph to calculate values outside of a defined dataset. This part of code could be removed after resolving
357
+ // feature request from HF issue board (handsontable/hyperformula#1179).
358
+ for (var i = numberOfReorganisedIndexes; i < sizeForAxis; i += 1) {
359
+ relativeTransformation.push(i);
360
+ }
361
+ _classPrivateFieldGet(_this5, _indexSyncer).getEngine()[SYNC_ORDER_CHANGE_METHOD_NAME](_classPrivateFieldGet(_this5, _indexSyncer).getSheetId(), relativeTransformation);
362
+ }
363
+ _classPrivateFieldSet(_this5, _indexesSequence, newSequence);
364
+ };
365
+ }
366
+
367
+ /**
368
+ * Initialize the AxisSyncer.
369
+ */
370
+ }, {
371
+ key: "init",
372
+ value: function init() {
373
+ _classPrivateFieldSet(this, _indexesSequence, _classPrivateFieldGet(this, _indexMapper).getIndexesSequence());
374
+ }
375
+ }]);
376
+ return AxisSyncer;
377
+ }();
378
+ var _default = AxisSyncer;
379
+ exports.default = _default;