handsontable 0.0.0-next-48677e7-20230509 → 0.0.0-next-834f47e-20230509

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (227) hide show
  1. package/3rdparty/walkontable/src/{selection/border/border.js → border.js} +12 -7
  2. package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
  3. package/3rdparty/walkontable/src/cell/coords.js +13 -40
  4. package/3rdparty/walkontable/src/cell/coords.mjs +13 -40
  5. package/3rdparty/walkontable/src/cell/range.js +25 -29
  6. package/3rdparty/walkontable/src/cell/range.mjs +24 -28
  7. package/3rdparty/walkontable/src/core/_base.js +3 -9
  8. package/3rdparty/walkontable/src/core/_base.mjs +3 -9
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +2 -3
  12. package/3rdparty/walkontable/src/core/core.mjs +2 -3
  13. package/3rdparty/walkontable/src/event.js +10 -12
  14. package/3rdparty/walkontable/src/event.mjs +10 -12
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +2 -10
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +7 -8
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +7 -8
  21. package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
  22. package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +4 -2
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +4 -2
  25. package/3rdparty/walkontable/src/overlay/top.js +10 -9
  26. package/3rdparty/walkontable/src/overlay/top.mjs +10 -9
  27. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
  28. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
  29. package/3rdparty/walkontable/src/overlays.js +55 -64
  30. package/3rdparty/walkontable/src/overlays.mjs +55 -64
  31. package/3rdparty/walkontable/src/renderer/table.js +0 -2
  32. package/3rdparty/walkontable/src/renderer/table.mjs +0 -2
  33. package/3rdparty/walkontable/src/scroll.js +20 -23
  34. package/3rdparty/walkontable/src/scroll.mjs +20 -23
  35. package/3rdparty/walkontable/src/selection.js +354 -0
  36. package/3rdparty/walkontable/src/selection.mjs +348 -0
  37. package/3rdparty/walkontable/src/settings.js +13 -15
  38. package/3rdparty/walkontable/src/settings.mjs +13 -15
  39. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
  40. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
  41. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
  42. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
  43. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
  44. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
  45. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
  46. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
  47. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
  48. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
  49. package/3rdparty/walkontable/src/table.js +101 -33
  50. package/3rdparty/walkontable/src/table.mjs +102 -34
  51. package/base.js +2 -4
  52. package/base.mjs +2 -2
  53. package/core.d.ts +0 -4
  54. package/core.js +19 -52
  55. package/core.mjs +19 -52
  56. package/dataMap/dataSource.js +5 -5
  57. package/dataMap/dataSource.mjs +5 -5
  58. package/dataMap/metaManager/metaSchema.js +1 -8
  59. package/dataMap/metaManager/metaSchema.mjs +1 -8
  60. package/dist/handsontable.css +2 -7
  61. package/dist/handsontable.full.css +2 -7
  62. package/dist/handsontable.full.js +9162 -9474
  63. package/dist/handsontable.full.min.css +3 -3
  64. package/dist/handsontable.full.min.js +123 -115
  65. package/dist/handsontable.js +8763 -9076
  66. package/dist/handsontable.min.css +3 -3
  67. package/dist/handsontable.min.js +11 -3
  68. package/dist/languages/all.js +133 -0
  69. package/dist/languages/ar-AR.js +7 -0
  70. package/dist/languages/cs-CZ.js +7 -0
  71. package/dist/languages/de-CH.js +7 -0
  72. package/dist/languages/de-DE.js +7 -0
  73. package/dist/languages/en-US.js +7 -0
  74. package/dist/languages/es-MX.js +7 -0
  75. package/dist/languages/fr-FR.js +7 -0
  76. package/dist/languages/it-IT.js +7 -0
  77. package/dist/languages/ja-JP.js +7 -0
  78. package/dist/languages/ko-KR.js +7 -0
  79. package/dist/languages/lv-LV.js +7 -0
  80. package/dist/languages/nb-NO.js +7 -0
  81. package/dist/languages/nl-NL.js +7 -0
  82. package/dist/languages/pl-PL.js +7 -0
  83. package/dist/languages/pt-BR.js +7 -0
  84. package/dist/languages/ru-RU.js +7 -0
  85. package/dist/languages/sr-SP.js +7 -0
  86. package/dist/languages/zh-CN.js +7 -0
  87. package/dist/languages/zh-TW.js +7 -0
  88. package/editorManager.js +3 -7
  89. package/editorManager.mjs +3 -7
  90. package/editors/textEditor/textEditor.js +16 -3
  91. package/editors/textEditor/textEditor.mjs +17 -4
  92. package/helpers/dom/element.js +0 -11
  93. package/helpers/dom/element.mjs +0 -10
  94. package/helpers/mixed.js +1 -1
  95. package/helpers/mixed.mjs +1 -1
  96. package/i18n/languages/ar-AR.js +7 -1
  97. package/i18n/languages/cs-CZ.js +7 -1
  98. package/i18n/languages/de-CH.js +7 -1
  99. package/i18n/languages/de-DE.js +7 -1
  100. package/i18n/languages/en-US.js +7 -1
  101. package/i18n/languages/es-MX.js +7 -1
  102. package/i18n/languages/fr-FR.js +7 -1
  103. package/i18n/languages/it-IT.js +7 -1
  104. package/i18n/languages/ja-JP.js +7 -1
  105. package/i18n/languages/ko-KR.js +7 -1
  106. package/i18n/languages/lv-LV.js +7 -1
  107. package/i18n/languages/nb-NO.js +7 -1
  108. package/i18n/languages/nl-NL.js +7 -1
  109. package/i18n/languages/pl-PL.js +7 -1
  110. package/i18n/languages/pt-BR.js +7 -1
  111. package/i18n/languages/ru-RU.js +7 -1
  112. package/i18n/languages/sr-SP.js +7 -1
  113. package/i18n/languages/zh-CN.js +7 -1
  114. package/i18n/languages/zh-TW.js +7 -1
  115. package/languages/all.js +133 -0
  116. package/languages/ar-AR.js +7 -0
  117. package/languages/cs-CZ.js +7 -0
  118. package/languages/de-CH.js +7 -0
  119. package/languages/de-DE.js +7 -0
  120. package/languages/en-US.js +7 -0
  121. package/languages/es-MX.js +7 -0
  122. package/languages/fr-FR.js +7 -0
  123. package/languages/index.js +133 -0
  124. package/languages/it-IT.js +7 -0
  125. package/languages/ja-JP.js +7 -0
  126. package/languages/ko-KR.js +7 -0
  127. package/languages/lv-LV.js +7 -0
  128. package/languages/nb-NO.js +7 -0
  129. package/languages/nl-NL.js +7 -0
  130. package/languages/pl-PL.js +7 -0
  131. package/languages/pt-BR.js +7 -0
  132. package/languages/ru-RU.js +7 -0
  133. package/languages/sr-SP.js +7 -0
  134. package/languages/zh-CN.js +7 -0
  135. package/languages/zh-TW.js +7 -0
  136. package/package.json +3 -2
  137. package/pluginHooks.js +17 -7
  138. package/pluginHooks.mjs +16 -4
  139. package/plugins/autoRowSize/autoRowSize.js +2 -2
  140. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  141. package/plugins/copyPaste/copyPaste.js +93 -12
  142. package/plugins/copyPaste/copyPaste.mjs +93 -12
  143. package/plugins/copyPaste/copyableRanges.js +25 -31
  144. package/plugins/copyPaste/copyableRanges.mjs +18 -24
  145. package/plugins/copyPaste/focusableElement.js +219 -0
  146. package/plugins/copyPaste/focusableElement.mjs +213 -0
  147. package/plugins/customBorders/customBorders.js +2 -6
  148. package/plugins/customBorders/customBorders.mjs +3 -7
  149. package/plugins/filters/filters.js +5 -0
  150. package/plugins/filters/filters.mjs +5 -0
  151. package/plugins/formulas/formulas.js +190 -168
  152. package/plugins/formulas/formulas.mjs +190 -168
  153. package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
  154. package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
  155. package/plugins/formulas/indexSyncer/index.js +225 -0
  156. package/plugins/formulas/indexSyncer/index.mjs +219 -0
  157. package/plugins/mergeCells/mergeCells.js +16 -0
  158. package/plugins/mergeCells/mergeCells.mjs +16 -0
  159. package/plugins/nestedHeaders/nestedHeaders.js +4 -3
  160. package/plugins/nestedHeaders/nestedHeaders.mjs +4 -3
  161. package/plugins/nestedHeaders/stateManager/headersTree.js +23 -26
  162. package/plugins/nestedHeaders/stateManager/headersTree.mjs +20 -23
  163. package/plugins/nestedHeaders/stateManager/index.js +3 -3
  164. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
  165. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +1 -1
  166. package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
  167. package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
  168. package/plugins/registry.js +3 -1
  169. package/plugins/undoRedo/undoRedo.js +0 -1
  170. package/plugins/undoRedo/undoRedo.mjs +0 -1
  171. package/renderers/baseRenderer/baseRenderer.js +0 -3
  172. package/renderers/baseRenderer/baseRenderer.mjs +0 -3
  173. package/selection/highlight/constants.js +16 -0
  174. package/selection/highlight/constants.mjs +6 -0
  175. package/selection/highlight/highlight.js +133 -335
  176. package/selection/highlight/highlight.mjs +129 -325
  177. package/selection/highlight/types/activeHeader.js +9 -10
  178. package/selection/highlight/types/activeHeader.mjs +8 -10
  179. package/selection/highlight/types/area.js +27 -12
  180. package/selection/highlight/types/area.mjs +30 -16
  181. package/selection/highlight/types/{focus.js → cell.js} +8 -5
  182. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  183. package/selection/highlight/types/customSelection.js +10 -7
  184. package/selection/highlight/types/customSelection.mjs +9 -7
  185. package/selection/highlight/types/fill.js +8 -5
  186. package/selection/highlight/types/fill.mjs +7 -5
  187. package/selection/highlight/types/header.js +20 -10
  188. package/selection/highlight/types/header.mjs +19 -10
  189. package/selection/highlight/types/{row.js → index.js} +31 -27
  190. package/selection/highlight/types/{row.mjs → index.mjs} +29 -24
  191. package/selection/highlight/visualSelection.js +21 -12
  192. package/selection/highlight/visualSelection.mjs +21 -12
  193. package/selection/index.js +7 -4
  194. package/selection/index.mjs +3 -2
  195. package/selection/selection.js +46 -88
  196. package/selection/selection.mjs +44 -82
  197. package/settings.d.ts +0 -1
  198. package/tableView.js +66 -94
  199. package/tableView.mjs +66 -94
  200. package/translations/changesObservable/observable.js +41 -46
  201. package/translations/changesObservable/observable.mjs +36 -41
  202. package/translations/changesObservable/observer.js +1 -1
  203. package/translations/indexMapper.js +21 -0
  204. package/translations/indexMapper.mjs +21 -0
  205. package/utils/dataStructures/tree.js +15 -18
  206. package/utils/dataStructures/tree.mjs +15 -18
  207. package/utils/parseTable.js +5 -1
  208. package/utils/parseTable.mjs +5 -1
  209. package/3rdparty/walkontable/src/selection/border/constants.js +0 -18
  210. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -13
  211. package/3rdparty/walkontable/src/selection/constants.js +0 -63
  212. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  213. package/3rdparty/walkontable/src/selection/index.js +0 -30
  214. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  215. package/3rdparty/walkontable/src/selection/manager.js +0 -334
  216. package/3rdparty/walkontable/src/selection/manager.mjs +0 -328
  217. package/3rdparty/walkontable/src/selection/scanner.js +0 -363
  218. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -359
  219. package/3rdparty/walkontable/src/selection/selection.js +0 -133
  220. package/3rdparty/walkontable/src/selection/selection.mjs +0 -127
  221. package/focusManager.d.ts +0 -12
  222. package/focusManager.js +0 -249
  223. package/focusManager.mjs +0 -245
  224. package/selection/highlight/types/areaLayered.js +0 -54
  225. package/selection/highlight/types/areaLayered.mjs +0 -49
  226. package/selection/highlight/types/column.js +0 -50
  227. package/selection/highlight/types/column.mjs +0 -45
@@ -0,0 +1,219 @@
1
+ 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); }
2
+ import "core-js/modules/es.array.iterator.js";
3
+ import "core-js/modules/es.object.to-string.js";
4
+ import "core-js/modules/es.string.iterator.js";
5
+ import "core-js/modules/es.weak-map.js";
6
+ import "core-js/modules/web.dom-collections.iterator.js";
7
+ import "core-js/modules/es.symbol.to-primitive.js";
8
+ import "core-js/modules/es.date.to-primitive.js";
9
+ import "core-js/modules/es.symbol.js";
10
+ import "core-js/modules/es.symbol.description.js";
11
+ import "core-js/modules/es.number.constructor.js";
12
+ import "core-js/modules/es.symbol.iterator.js";
13
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
14
+ 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); } }
15
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
16
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
17
+ 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); }
18
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
19
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
20
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
21
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
22
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
23
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
24
+ 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; } }
25
+ import AxisSyncer from "./axisSyncer.mjs";
26
+ /**
27
+ * @private
28
+ * @class IndexSyncer
29
+ * @description
30
+ *
31
+ * Indexes synchronizer responsible for providing logic for syncing actions done on indexes for HOT to actions performed
32
+ * on HF's.
33
+ *
34
+ */
35
+ var _rowIndexSyncer = /*#__PURE__*/new WeakMap();
36
+ var _columnIndexSyncer = /*#__PURE__*/new WeakMap();
37
+ var _postponeAction = /*#__PURE__*/new WeakMap();
38
+ var _isPerformingUndo = /*#__PURE__*/new WeakMap();
39
+ var _isPerformingRedo = /*#__PURE__*/new WeakMap();
40
+ var _engine = /*#__PURE__*/new WeakMap();
41
+ var _sheetId = /*#__PURE__*/new WeakMap();
42
+ var IndexSyncer = /*#__PURE__*/function () {
43
+ function IndexSyncer(rowIndexMapper, columnIndexMapper, postponeAction) {
44
+ _classCallCheck(this, IndexSyncer);
45
+ /**
46
+ * Indexes synchronizer for the axis of the rows.
47
+ *
48
+ * @private
49
+ * @type {AxisSyncer}
50
+ */
51
+ _classPrivateFieldInitSpec(this, _rowIndexSyncer, {
52
+ writable: true,
53
+ value: void 0
54
+ });
55
+ /**
56
+ * Indexes synchronizer for the axis of the columns.
57
+ *
58
+ * @private
59
+ * @type {AxisSyncer}
60
+ */
61
+ _classPrivateFieldInitSpec(this, _columnIndexSyncer, {
62
+ writable: true,
63
+ value: void 0
64
+ });
65
+ /**
66
+ * Method which will postpone execution of some action (needed when synchronization endpoint isn't setup yet).
67
+ *
68
+ * @private
69
+ * @type {Function}
70
+ */
71
+ _classPrivateFieldInitSpec(this, _postponeAction, {
72
+ writable: true,
73
+ value: void 0
74
+ });
75
+ /**
76
+ * Flag informing whether undo is already performed (we don't perform synchronization in such case).
77
+ *
78
+ * @private
79
+ * @type {boolean}
80
+ */
81
+ _classPrivateFieldInitSpec(this, _isPerformingUndo, {
82
+ writable: true,
83
+ value: false
84
+ });
85
+ /**
86
+ * Flag informing whether redo is already performed (we don't perform synchronization in such case).
87
+ *
88
+ * @private
89
+ * @type {boolean}
90
+ */
91
+ _classPrivateFieldInitSpec(this, _isPerformingRedo, {
92
+ writable: true,
93
+ value: false
94
+ });
95
+ /**
96
+ * The HF's engine instance which will be synced.
97
+ *
98
+ * @private
99
+ * @type {HyperFormula|null}
100
+ */
101
+ _classPrivateFieldInitSpec(this, _engine, {
102
+ writable: true,
103
+ value: null
104
+ });
105
+ /**
106
+ * HyperFormula's sheet name.
107
+ *
108
+ * @private
109
+ * @type {string|null}
110
+ */
111
+ _classPrivateFieldInitSpec(this, _sheetId, {
112
+ writable: true,
113
+ value: null
114
+ });
115
+ _classPrivateFieldSet(this, _rowIndexSyncer, new AxisSyncer('row', rowIndexMapper, this));
116
+ _classPrivateFieldSet(this, _columnIndexSyncer, new AxisSyncer('column', columnIndexMapper, this));
117
+ _classPrivateFieldSet(this, _postponeAction, postponeAction);
118
+ }
119
+
120
+ /**
121
+ * Gets index synchronizer for a particular axis.
122
+ *
123
+ * @param {'row'|'column'} indexType Type of indexes.
124
+ * @returns {AxisSyncer}
125
+ */
126
+ _createClass(IndexSyncer, [{
127
+ key: "getForAxis",
128
+ value: function getForAxis(indexType) {
129
+ if (indexType === 'row') {
130
+ return _classPrivateFieldGet(this, _rowIndexSyncer);
131
+ }
132
+ return _classPrivateFieldGet(this, _columnIndexSyncer);
133
+ }
134
+
135
+ /**
136
+ * Sets flag informing whether an undo action is already performed (we don't execute synchronization in such case).
137
+ *
138
+ * @param {boolean} flagValue Boolean value for the flag.
139
+ */
140
+ }, {
141
+ key: "setPerformUndo",
142
+ value: function setPerformUndo(flagValue) {
143
+ _classPrivateFieldSet(this, _isPerformingUndo, flagValue);
144
+ }
145
+
146
+ /**
147
+ * Sets flag informing whether a redo action is already performed (we don't execute synchronization in such case).
148
+ *
149
+ * @param {boolean} flagValue Boolean value for the flag.
150
+ */
151
+ }, {
152
+ key: "setPerformRedo",
153
+ value: function setPerformRedo(flagValue) {
154
+ _classPrivateFieldSet(this, _isPerformingRedo, flagValue);
155
+ }
156
+
157
+ /**
158
+ * Gets information whether redo or undo action is already performed (we don't execute synchronization in such case).
159
+ *
160
+ * @private
161
+ * @returns {boolean}
162
+ */
163
+ }, {
164
+ key: "isPerformingUndoRedo",
165
+ value: function isPerformingUndoRedo() {
166
+ return _classPrivateFieldGet(this, _isPerformingUndo) || _classPrivateFieldGet(this, _isPerformingRedo);
167
+ }
168
+
169
+ /**
170
+ * Gets HyperFormula's sheet id.
171
+ *
172
+ * @returns {string|null}
173
+ */
174
+ }, {
175
+ key: "getSheetId",
176
+ value: function getSheetId() {
177
+ return _classPrivateFieldGet(this, _sheetId);
178
+ }
179
+
180
+ /**
181
+ * Gets engine instance that will be used for handled instance of Handsontable.
182
+ *
183
+ * @type {HyperFormula|null}
184
+ */
185
+ }, {
186
+ key: "getEngine",
187
+ value: function getEngine() {
188
+ return _classPrivateFieldGet(this, _engine);
189
+ }
190
+
191
+ /**
192
+ * Gets method which will postpone execution of some action (needed when synchronization endpoint isn't setup yet).
193
+ *
194
+ * @returns {Function}
195
+ */
196
+ }, {
197
+ key: "getPostponeAction",
198
+ value: function getPostponeAction() {
199
+ return _classPrivateFieldGet(this, _postponeAction);
200
+ }
201
+
202
+ /**
203
+ * Setups a synchronization endpoint.
204
+ *
205
+ * @param {HyperFormula|null} engine The HF's engine instance which will be synced.
206
+ * @param {string|null} sheetId HyperFormula's sheet name.
207
+ */
208
+ }, {
209
+ key: "setupSyncEndpoint",
210
+ value: function setupSyncEndpoint(engine, sheetId) {
211
+ _classPrivateFieldSet(this, _engine, engine);
212
+ _classPrivateFieldSet(this, _sheetId, sheetId);
213
+ _classPrivateFieldGet(this, _rowIndexSyncer).init();
214
+ _classPrivateFieldGet(this, _columnIndexSyncer).init();
215
+ }
216
+ }]);
217
+ return IndexSyncer;
218
+ }();
219
+ export default IndexSyncer;
@@ -242,6 +242,9 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
242
242
  this.addHook('afterDrawSelection', function () {
243
243
  return _this2.onAfterDrawSelection.apply(_this2, arguments);
244
244
  });
245
+ this.addHook('beforeRemoveCellClassNames', function () {
246
+ return _this2.onBeforeRemoveCellClassNames.apply(_this2, arguments);
247
+ });
245
248
  this.addHook('beforeUndoStackChange', function (action, source) {
246
249
  if (source === 'MergeCells') {
247
250
  return false;
@@ -1336,6 +1339,19 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1336
1339
  }
1337
1340
  return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1338
1341
  }
1342
+
1343
+ /**
1344
+ * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
1345
+ *
1346
+ * @private
1347
+ * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
1348
+ * all the cells in the table.
1349
+ */
1350
+ }, {
1351
+ key: "onBeforeRemoveCellClassNames",
1352
+ value: function onBeforeRemoveCellClassNames() {
1353
+ return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1354
+ }
1339
1355
  }], [{
1340
1356
  key: "PLUGIN_KEY",
1341
1357
  get: function get() {
@@ -235,6 +235,9 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
235
235
  this.addHook('afterDrawSelection', function () {
236
236
  return _this2.onAfterDrawSelection.apply(_this2, arguments);
237
237
  });
238
+ this.addHook('beforeRemoveCellClassNames', function () {
239
+ return _this2.onBeforeRemoveCellClassNames.apply(_this2, arguments);
240
+ });
238
241
  this.addHook('beforeUndoStackChange', function (action, source) {
239
242
  if (source === 'MergeCells') {
240
243
  return false;
@@ -1329,6 +1332,19 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1329
1332
  }
1330
1333
  return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1331
1334
  }
1335
+
1336
+ /**
1337
+ * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
1338
+ *
1339
+ * @private
1340
+ * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
1341
+ * all the cells in the table.
1342
+ */
1343
+ }, {
1344
+ key: "onBeforeRemoveCellClassNames",
1345
+ value: function onBeforeRemoveCellClassNames() {
1346
+ return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1347
+ }
1332
1348
  }], [{
1333
1349
  key: "PLUGIN_KEY",
1334
1350
  get: function get() {
@@ -456,7 +456,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
456
456
  if (!headerNodeData) {
457
457
  return visualColumn;
458
458
  }
459
- var columnCursor = highlightMeta.columnCursor,
459
+ var classNames = highlightMeta.classNames,
460
+ columnCursor = highlightMeta.columnCursor,
460
461
  selectionType = highlightMeta.selectionType,
461
462
  selectionWidth = highlightMeta.selectionWidth;
462
463
  var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
@@ -468,8 +469,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
468
469
  }
469
470
  } else if (selectionType === _selection.ACTIVE_HEADER_TYPE) {
470
471
  if (colspan > selectionWidth - columnCursor || !isRoot) {
471
- // Prevents adding any CSS class names to the TH element
472
- return null;
472
+ // Reset the class names array so the generated TH element won't be modified.
473
+ classNames.length = 0;
473
474
  }
474
475
  }
475
476
  return visualColumn;
@@ -449,7 +449,8 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
449
449
  if (!headerNodeData) {
450
450
  return visualColumn;
451
451
  }
452
- var columnCursor = highlightMeta.columnCursor,
452
+ var classNames = highlightMeta.classNames,
453
+ columnCursor = highlightMeta.columnCursor,
453
454
  selectionType = highlightMeta.selectionType,
454
455
  selectionWidth = highlightMeta.selectionWidth;
455
456
  var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
@@ -461,8 +462,8 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
461
462
  }
462
463
  } else if (selectionType === ACTIVE_HEADER_TYPE) {
463
464
  if (colspan > selectionWidth - columnCursor || !isRoot) {
464
- // Prevents adding any CSS class names to the TH element
465
- return null;
465
+ // Reset the class names array so the generated TH element won't be modified.
466
+ classNames.length = 0;
466
467
  }
467
468
  }
468
469
  return visualColumn;
@@ -48,9 +48,6 @@ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) {
48
48
  function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
49
49
  function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
50
50
  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; } }
51
- var _rootNodes = /*#__PURE__*/new WeakMap();
52
- var _rootsIndex = /*#__PURE__*/new WeakMap();
53
- var _sourceSettings = /*#__PURE__*/new WeakMap();
54
51
  /* eslint-disable jsdoc/require-description-complete-sentence */
55
52
  /**
56
53
  * @private
@@ -87,40 +84,40 @@ var _sourceSettings = /*#__PURE__*/new WeakMap();
87
84
  *
88
85
  */
89
86
  /* eslint-enable jsdoc/require-description-complete-sentence */
87
+ var _rootNodes = /*#__PURE__*/new WeakMap();
88
+ var _rootsIndex = /*#__PURE__*/new WeakMap();
89
+ var _sourceSettings = /*#__PURE__*/new WeakMap();
90
90
  var HeadersTree = /*#__PURE__*/function () {
91
- /**
92
- * The collection of nested headers settings structured into trees. The root trees are stored
93
- * under the visual column index.
94
- *
95
- * @private
96
- * @type {Map<number, TreeNode>}
97
- */
98
-
99
- /**
100
- * A map that translates the visual column indexes that intersect the range
101
- * defined by the header colspan width to the root index.
102
- *
103
- * @private
104
- * @type {Map<number, number>}
105
- */
106
-
107
- /**
108
- * The instance of the SourceSettings class.
109
- *
110
- * @private
111
- * @type {SourceSettings}
112
- */
113
-
114
91
  function HeadersTree(sourceSettings) {
115
92
  _classCallCheck(this, HeadersTree);
93
+ /**
94
+ * The collection of nested headers settings structured into trees. The root trees are stored
95
+ * under the visual column index.
96
+ *
97
+ * @private
98
+ * @type {Map<number, TreeNode>}
99
+ */
116
100
  _classPrivateFieldInitSpec(this, _rootNodes, {
117
101
  writable: true,
118
102
  value: new Map()
119
103
  });
104
+ /**
105
+ * A map that translates the visual column indexes that intersect the range
106
+ * defined by the header colspan width to the root index.
107
+ *
108
+ * @private
109
+ * @type {Map<number, number>}
110
+ */
120
111
  _classPrivateFieldInitSpec(this, _rootsIndex, {
121
112
  writable: true,
122
113
  value: new Map()
123
114
  });
115
+ /**
116
+ * The instance of the SourceSettings class.
117
+ *
118
+ * @private
119
+ * @type {SourceSettings}
120
+ */
124
121
  _classPrivateFieldInitSpec(this, _sourceSettings, {
125
122
  writable: true,
126
123
  value: null
@@ -83,39 +83,36 @@ var _rootNodes = /*#__PURE__*/new WeakMap();
83
83
  var _rootsIndex = /*#__PURE__*/new WeakMap();
84
84
  var _sourceSettings = /*#__PURE__*/new WeakMap();
85
85
  var HeadersTree = /*#__PURE__*/function () {
86
- /**
87
- * The collection of nested headers settings structured into trees. The root trees are stored
88
- * under the visual column index.
89
- *
90
- * @private
91
- * @type {Map<number, TreeNode>}
92
- */
93
-
94
- /**
95
- * A map that translates the visual column indexes that intersect the range
96
- * defined by the header colspan width to the root index.
97
- *
98
- * @private
99
- * @type {Map<number, number>}
100
- */
101
-
102
- /**
103
- * The instance of the SourceSettings class.
104
- *
105
- * @private
106
- * @type {SourceSettings}
107
- */
108
-
109
86
  function HeadersTree(sourceSettings) {
110
87
  _classCallCheck(this, HeadersTree);
88
+ /**
89
+ * The collection of nested headers settings structured into trees. The root trees are stored
90
+ * under the visual column index.
91
+ *
92
+ * @private
93
+ * @type {Map<number, TreeNode>}
94
+ */
111
95
  _classPrivateFieldInitSpec(this, _rootNodes, {
112
96
  writable: true,
113
97
  value: new Map()
114
98
  });
99
+ /**
100
+ * A map that translates the visual column indexes that intersect the range
101
+ * defined by the header colspan width to the root index.
102
+ *
103
+ * @private
104
+ * @type {Map<number, number>}
105
+ */
115
106
  _classPrivateFieldInitSpec(this, _rootsIndex, {
116
107
  writable: true,
117
108
  value: new Map()
118
109
  });
110
+ /**
111
+ * The instance of the SourceSettings class.
112
+ *
113
+ * @private
114
+ * @type {SourceSettings}
115
+ */
119
116
  _classPrivateFieldInitSpec(this, _sourceSettings, {
120
117
  writable: true,
121
118
  value: null
@@ -45,9 +45,6 @@ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.
45
45
  function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
46
46
  function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
47
47
  function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
48
- var _sourceSettings = /*#__PURE__*/new WeakMap();
49
- var _headersTree = /*#__PURE__*/new WeakMap();
50
- var _stateMatrix = /*#__PURE__*/new WeakMap();
51
48
  /**
52
49
  * The state manager is a source of truth for nested headers configuration.
53
50
  * The state generation process is divided into three stages.
@@ -76,6 +73,9 @@ var _stateMatrix = /*#__PURE__*/new WeakMap();
76
73
  *
77
74
  * @class StateManager
78
75
  */
76
+ var _sourceSettings = /*#__PURE__*/new WeakMap();
77
+ var _headersTree = /*#__PURE__*/new WeakMap();
78
+ var _stateMatrix = /*#__PURE__*/new WeakMap();
79
79
  var StateManager = /*#__PURE__*/function () {
80
80
  function StateManager() {
81
81
  _classCallCheck(this, StateManager);
@@ -10,6 +10,7 @@ require("core-js/modules/es.string.includes.js");
10
10
  var _array = require("../../../helpers/array");
11
11
  var _utils = require("./utils");
12
12
  var _excluded = ["crossHiddenColumns"];
13
+ /* eslint-disable jsdoc/require-description-complete-sentence */
13
14
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
14
15
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
15
16
  /**
@@ -24,7 +24,7 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
24
24
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
25
25
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
26
26
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
27
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
27
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* eslint-disable jsdoc/require-description-complete-sentence */
28
28
  /**
29
29
  * A function that normalizes user-defined settings into one predictable
30
30
  * structure. Currently, the developer can declare nested headers by passing
@@ -29,47 +29,42 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
29
29
  * @private
30
30
  */
31
31
  var GhostTable = /*#__PURE__*/function () {
32
- /**
33
- * Reference to the Handsontable instance.
34
- *
35
- * @private
36
- * @type {Handsontable}
37
- */
38
-
39
- /**
40
- * The function for retrieving the nested headers settings.
41
- *
42
- * @private
43
- * @type {Function}
44
- */
45
-
46
- /**
47
- * The value that holds information about the number of the nested header layers (header rows).
48
- *
49
- * @private
50
- * @type {number}
51
- */
52
-
53
- /**
54
- * Temporary element created to get minimal headers widths.
55
- *
56
- * @private
57
- * @type {*}
58
- */
59
-
60
- /**
61
- * PhysicalIndexToValueMap to keep and track of the columns' widths.
62
- *
63
- * @private
64
- * @type {PhysicalIndexToValueMap}
65
- */
66
-
67
32
  function GhostTable(hot, nestedHeaderSettingsGetter) {
68
33
  _classCallCheck(this, GhostTable);
34
+ /**
35
+ * Reference to the Handsontable instance.
36
+ *
37
+ * @private
38
+ * @type {Handsontable}
39
+ */
69
40
  _defineProperty(this, "hot", void 0);
41
+ /**
42
+ * The function for retrieving the nested headers settings.
43
+ *
44
+ * @private
45
+ * @type {Function}
46
+ */
70
47
  _defineProperty(this, "nestedHeaderSettingsGetter", void 0);
48
+ /**
49
+ * The value that holds information about the number of the nested header layers (header rows).
50
+ *
51
+ * @private
52
+ * @type {number}
53
+ */
71
54
  _defineProperty(this, "layersCount", 0);
55
+ /**
56
+ * Temporary element created to get minimal headers widths.
57
+ *
58
+ * @private
59
+ * @type {*}
60
+ */
72
61
  _defineProperty(this, "container", void 0);
62
+ /**
63
+ * PhysicalIndexToValueMap to keep and track of the columns' widths.
64
+ *
65
+ * @private
66
+ * @type {PhysicalIndexToValueMap}
67
+ */
73
68
  _defineProperty(this, "widthsMap", void 0);
74
69
  this.hot = hot;
75
70
  this.nestedHeaderSettingsGetter = nestedHeaderSettingsGetter;
@@ -25,47 +25,42 @@ import { fastInnerHTML } from "../../../helpers/dom/element.mjs";
25
25
  * @private
26
26
  */
27
27
  var GhostTable = /*#__PURE__*/function () {
28
- /**
29
- * Reference to the Handsontable instance.
30
- *
31
- * @private
32
- * @type {Handsontable}
33
- */
34
-
35
- /**
36
- * The function for retrieving the nested headers settings.
37
- *
38
- * @private
39
- * @type {Function}
40
- */
41
-
42
- /**
43
- * The value that holds information about the number of the nested header layers (header rows).
44
- *
45
- * @private
46
- * @type {number}
47
- */
48
-
49
- /**
50
- * Temporary element created to get minimal headers widths.
51
- *
52
- * @private
53
- * @type {*}
54
- */
55
-
56
- /**
57
- * PhysicalIndexToValueMap to keep and track of the columns' widths.
58
- *
59
- * @private
60
- * @type {PhysicalIndexToValueMap}
61
- */
62
-
63
28
  function GhostTable(hot, nestedHeaderSettingsGetter) {
64
29
  _classCallCheck(this, GhostTable);
30
+ /**
31
+ * Reference to the Handsontable instance.
32
+ *
33
+ * @private
34
+ * @type {Handsontable}
35
+ */
65
36
  _defineProperty(this, "hot", void 0);
37
+ /**
38
+ * The function for retrieving the nested headers settings.
39
+ *
40
+ * @private
41
+ * @type {Function}
42
+ */
66
43
  _defineProperty(this, "nestedHeaderSettingsGetter", void 0);
44
+ /**
45
+ * The value that holds information about the number of the nested header layers (header rows).
46
+ *
47
+ * @private
48
+ * @type {number}
49
+ */
67
50
  _defineProperty(this, "layersCount", 0);
51
+ /**
52
+ * Temporary element created to get minimal headers widths.
53
+ *
54
+ * @private
55
+ * @type {*}
56
+ */
68
57
  _defineProperty(this, "container", void 0);
58
+ /**
59
+ * PhysicalIndexToValueMap to keep and track of the columns' widths.
60
+ *
61
+ * @private
62
+ * @type {PhysicalIndexToValueMap}
63
+ */
69
64
  _defineProperty(this, "widthsMap", void 0);
70
65
  this.hot = hot;
71
66
  this.nestedHeaderSettingsGetter = nestedHeaderSettingsGetter;
@@ -30,7 +30,9 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
30
30
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
31
31
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
32
32
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
33
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
33
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /**
34
+ * Utility to register plugins and common namespace for keeping the reference to all plugins classes.
35
+ */
34
36
  var ERROR_PLUGIN_REGISTERED = function ERROR_PLUGIN_REGISTERED(pluginName) {
35
37
  return "There is already registered \"".concat(pluginName, "\" plugin.");
36
38
  };
@@ -591,7 +591,6 @@ UndoRedo.RemoveColumnAction.prototype.undo = function (instance, undoneCallback)
591
591
  });
592
592
  });
593
593
  instance.setSourceDataAtCell(changes, void 0, void 0, 'UndoRedo.undo');
594
- instance.columnIndexMapper.insertIndexes(ascendingIndexes[0], ascendingIndexes.length);
595
594
  if (typeof this.headers !== 'undefined') {
596
595
  (0, _array.arrayEach)(sortedHeaders, function (headerData, columnIndex) {
597
596
  instance.getSettings().colHeaders[ascendingIndexes[columnIndex]] = headerData;