handsontable 14.1.0-next-1211447-20240205 → 14.2.0-next-4873a35-20240228

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. package/3rdparty/walkontable/src/core/_base.js +12 -0
  2. package/3rdparty/walkontable/src/core/_base.mjs +12 -0
  3. package/3rdparty/walkontable/src/scroll.js +131 -98
  4. package/3rdparty/walkontable/src/scroll.mjs +133 -100
  5. package/3rdparty/walkontable/src/selection/border/border.js +3 -3
  6. package/3rdparty/walkontable/src/selection/border/border.mjs +3 -3
  7. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +26 -0
  8. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +26 -0
  9. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +26 -0
  10. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +26 -0
  11. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +20 -0
  12. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +20 -0
  13. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +20 -0
  14. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +20 -0
  15. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +20 -0
  16. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +20 -0
  17. package/3rdparty/walkontable/src/table.js +2 -0
  18. package/3rdparty/walkontable/src/table.mjs +2 -0
  19. package/3rdparty/walkontable/src/viewport.js +9 -0
  20. package/3rdparty/walkontable/src/viewport.mjs +10 -1
  21. package/CHANGELOG.md +38 -0
  22. package/base.js +2 -2
  23. package/base.mjs +2 -2
  24. package/core/index.js +6 -0
  25. package/core/index.mjs +2 -1
  26. package/core/viewportScroll/index.js +65 -0
  27. package/core/viewportScroll/index.mjs +61 -0
  28. package/core/viewportScroll/scrollStrategies/columnHeaderScroll.js +20 -0
  29. package/core/viewportScroll/scrollStrategies/columnHeaderScroll.mjs +16 -0
  30. package/core/viewportScroll/scrollStrategies/cornerHeaderScroll.js +14 -0
  31. package/core/viewportScroll/scrollStrategies/cornerHeaderScroll.mjs +10 -0
  32. package/core/viewportScroll/scrollStrategies/multipleScroll.js +15 -0
  33. package/core/viewportScroll/scrollStrategies/multipleScroll.mjs +11 -0
  34. package/core/viewportScroll/scrollStrategies/noncontiguousScroll.js +15 -0
  35. package/core/viewportScroll/scrollStrategies/noncontiguousScroll.mjs +11 -0
  36. package/core/viewportScroll/scrollStrategies/rowHeaderScroll.js +20 -0
  37. package/core/viewportScroll/scrollStrategies/rowHeaderScroll.mjs +16 -0
  38. package/core/viewportScroll/scrollStrategies/singleScroll.js +46 -0
  39. package/core/viewportScroll/scrollStrategies/singleScroll.mjs +42 -0
  40. package/core.d.ts +1 -1
  41. package/core.js +11 -52
  42. package/core.mjs +12 -53
  43. package/dataMap/metaManager/index.js +1 -1
  44. package/dataMap/metaManager/index.mjs +1 -1
  45. package/dataMap/metaManager/metaLayers/cellMeta.js +6 -1
  46. package/dataMap/metaManager/metaLayers/cellMeta.mjs +6 -1
  47. package/dataMap/metaManager/metaSchema.js +36 -12
  48. package/dataMap/metaManager/metaSchema.mjs +36 -12
  49. package/dist/handsontable.css +2 -2
  50. package/dist/handsontable.full.css +2 -2
  51. package/dist/handsontable.full.js +2997 -1929
  52. package/dist/handsontable.full.min.css +2 -2
  53. package/dist/handsontable.full.min.js +42 -42
  54. package/dist/handsontable.js +2999 -1931
  55. package/dist/handsontable.min.css +2 -2
  56. package/dist/handsontable.min.js +25 -25
  57. package/dist/languages/all.js +130 -25
  58. package/dist/languages/all.min.js +1 -1
  59. package/dist/languages/hr-HR.js +167 -0
  60. package/dist/languages/hr-HR.min.js +1 -0
  61. package/editorManager.js +15 -4
  62. package/editorManager.mjs +15 -4
  63. package/editors/autocompleteEditor/autocompleteEditor.js +2 -2
  64. package/editors/autocompleteEditor/autocompleteEditor.mjs +2 -2
  65. package/editors/baseEditor/baseEditor.js +1 -1
  66. package/editors/baseEditor/baseEditor.mjs +1 -1
  67. package/editors/checkboxEditor/checkboxEditor.js +5 -4
  68. package/editors/checkboxEditor/checkboxEditor.mjs +5 -4
  69. package/editors/dateEditor/dateEditor.js +1 -1
  70. package/editors/dateEditor/dateEditor.mjs +1 -1
  71. package/editors/dropdownEditor/dropdownEditor.js +1 -1
  72. package/editors/dropdownEditor/dropdownEditor.mjs +1 -1
  73. package/editors/handsontableEditor/handsontableEditor.js +1 -1
  74. package/editors/handsontableEditor/handsontableEditor.mjs +1 -1
  75. package/editors/selectEditor/selectEditor.js +1 -1
  76. package/editors/selectEditor/selectEditor.mjs +1 -1
  77. package/editors/textEditor/textEditor.js +1 -2
  78. package/editors/textEditor/textEditor.mjs +1 -2
  79. package/editors/timeEditor/timeEditor.js +1 -1
  80. package/editors/timeEditor/timeEditor.mjs +1 -1
  81. package/helpers/mixed.js +2 -2
  82. package/helpers/mixed.mjs +2 -2
  83. package/helpers/moves.js +86 -0
  84. package/helpers/moves.mjs +82 -0
  85. package/i18n/languages/hr-HR.js +96 -0
  86. package/i18n/languages/hr-HR.mjs +90 -0
  87. package/i18n/languages/index.js +2 -0
  88. package/i18n/languages/index.mjs +2 -1
  89. package/languages/all.js +130 -25
  90. package/languages/hr-HR.js +167 -0
  91. package/languages/hr-HR.mjs +92 -0
  92. package/languages/index.js +130 -25
  93. package/languages/index.mjs +2 -1
  94. package/package.json +11 -1
  95. package/pluginHooks.d.ts +4 -2
  96. package/pluginHooks.js +33 -3
  97. package/pluginHooks.mjs +33 -3
  98. package/plugins/autoColumnSize/autoColumnSize.js +6 -1
  99. package/plugins/autoColumnSize/autoColumnSize.mjs +6 -1
  100. package/plugins/autoRowSize/autoRowSize.js +5 -0
  101. package/plugins/autoRowSize/autoRowSize.mjs +5 -0
  102. package/plugins/autofill/autofill.js +3 -2
  103. package/plugins/autofill/autofill.mjs +3 -2
  104. package/plugins/columnSummary/columnSummary.js +1 -1
  105. package/plugins/columnSummary/columnSummary.mjs +1 -1
  106. package/plugins/dropdownMenu/dropdownMenu.js +58 -4
  107. package/plugins/dropdownMenu/dropdownMenu.mjs +58 -4
  108. package/plugins/filters/component/value.js +51 -5
  109. package/plugins/filters/component/value.mjs +51 -5
  110. package/plugins/filters/utils.js +1 -1
  111. package/plugins/filters/utils.mjs +1 -1
  112. package/plugins/formulas/formulas.js +10 -1
  113. package/plugins/formulas/formulas.mjs +10 -1
  114. package/plugins/formulas/indexSyncer/axisSyncer.js +3 -75
  115. package/plugins/formulas/indexSyncer/axisSyncer.mjs +3 -75
  116. package/plugins/manualColumnResize/manualColumnResize.js +3 -0
  117. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -0
  118. package/plugins/mergeCells/cellsCollection.js +1 -1
  119. package/plugins/mergeCells/cellsCollection.mjs +1 -1
  120. package/plugins/mergeCells/mergeCells.js +30 -0
  121. package/plugins/mergeCells/mergeCells.mjs +30 -0
  122. package/plugins/undoRedo/undoRedo.js +61 -14
  123. package/plugins/undoRedo/undoRedo.mjs +61 -14
  124. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -1
  125. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -1
  126. package/renderers/baseRenderer/baseRenderer.js +1 -1
  127. package/renderers/baseRenderer/baseRenderer.mjs +1 -1
  128. package/renderers/checkboxRenderer/checkboxRenderer.js +36 -8
  129. package/renderers/checkboxRenderer/checkboxRenderer.mjs +36 -8
  130. package/renderers/dateRenderer/dateRenderer.js +1 -1
  131. package/renderers/dateRenderer/dateRenderer.mjs +1 -1
  132. package/renderers/dropdownRenderer/dropdownRenderer.js +1 -1
  133. package/renderers/dropdownRenderer/dropdownRenderer.mjs +1 -1
  134. package/renderers/handsontableRenderer/handsontableRenderer.js +1 -1
  135. package/renderers/handsontableRenderer/handsontableRenderer.mjs +1 -1
  136. package/renderers/htmlRenderer/htmlRenderer.js +1 -1
  137. package/renderers/htmlRenderer/htmlRenderer.mjs +1 -1
  138. package/renderers/numericRenderer/index.js +2 -1
  139. package/renderers/numericRenderer/index.mjs +1 -1
  140. package/renderers/numericRenderer/numericRenderer.js +28 -13
  141. package/renderers/numericRenderer/numericRenderer.mjs +27 -13
  142. package/renderers/passwordRenderer/passwordRenderer.js +1 -1
  143. package/renderers/passwordRenderer/passwordRenderer.mjs +1 -1
  144. package/renderers/selectRenderer/selectRenderer.js +1 -1
  145. package/renderers/selectRenderer/selectRenderer.mjs +1 -1
  146. package/renderers/textRenderer/textRenderer.js +1 -1
  147. package/renderers/textRenderer/textRenderer.mjs +1 -1
  148. package/renderers/timeRenderer/timeRenderer.js +1 -1
  149. package/renderers/timeRenderer/timeRenderer.mjs +1 -1
  150. package/selection/mouseEventHandler.js +4 -0
  151. package/selection/mouseEventHandler.mjs +4 -0
  152. package/selection/selection.js +64 -5
  153. package/selection/selection.mjs +64 -5
  154. package/shortcuts/recorder.js +27 -8
  155. package/shortcuts/recorder.mjs +27 -8
  156. package/tableView.js +86 -5
  157. package/tableView.mjs +87 -6
  158. package/utils/autoResize.js +0 -1
  159. package/utils/autoResize.mjs +0 -1
  160. package/utils/ghostTable.js +6 -6
  161. package/utils/ghostTable.mjs +6 -6
  162. package/utils/parseTable.js +9 -1
  163. package/utils/parseTable.mjs +9 -1
@@ -15,10 +15,16 @@ var _predefinedItems = require("../contextMenu/predefinedItems");
15
15
  var _a11y = require("../../helpers/a11y");
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
18
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
18
19
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
19
20
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
21
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
21
22
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
23
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
24
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
25
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
26
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
27
+ 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; } }
22
28
  function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
23
29
  _pluginHooks.default.getSingleton().register('afterDropdownMenuDefaultOptions');
24
30
  _pluginHooks.default.getSingleton().register('beforeDropdownMenuShow');
@@ -80,6 +86,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
80
86
  * ```
81
87
  * :::
82
88
  */
89
+ var _isButtonClicked = /*#__PURE__*/new WeakMap();
83
90
  var _addCustomShortcuts = /*#__PURE__*/new WeakSet();
84
91
  var _onTableClick = /*#__PURE__*/new WeakSet();
85
92
  var _onAfterGetColHeader = /*#__PURE__*/new WeakSet();
@@ -87,6 +94,8 @@ var _onMenuBeforeOpen = /*#__PURE__*/new WeakSet();
87
94
  var _onMenuAfterOpen = /*#__PURE__*/new WeakSet();
88
95
  var _onSubMenuAfterOpen = /*#__PURE__*/new WeakSet();
89
96
  var _onMenuAfterClose = /*#__PURE__*/new WeakSet();
97
+ var _onBeforeViewportScrollHorizontally = /*#__PURE__*/new WeakSet();
98
+ var _onBeforeOnCellMouseDown = /*#__PURE__*/new WeakSet();
90
99
  class DropdownMenu extends _base.BasePlugin {
91
100
  static get PLUGIN_KEY() {
92
101
  return PLUGIN_KEY;
@@ -118,6 +127,21 @@ class DropdownMenu extends _base.BasePlugin {
118
127
  super(hotInstance);
119
128
 
120
129
  // One listener for enable/disable functionality
130
+ /**
131
+ * Hook sets the internal flag to `true` when the button is clicked.
132
+ *
133
+ * @param {MouseEvent} event The mouse event object.
134
+ */
135
+ _classPrivateMethodInitSpec(this, _onBeforeOnCellMouseDown);
136
+ /**
137
+ * Hook allows blocking horizontal scroll when the menu is opened by clicking on
138
+ * the column header button. This prevents from scrolling the viewport (jump effect) when
139
+ * the button is clicked.
140
+ *
141
+ * @param {number} visualColumn Visual column index.
142
+ * @returns {number | null}
143
+ */
144
+ _classPrivateMethodInitSpec(this, _onBeforeViewportScrollHorizontally);
121
145
  /**
122
146
  * On menu after close listener.
123
147
  *
@@ -182,6 +206,15 @@ class DropdownMenu extends _base.BasePlugin {
182
206
  * @type {Menu}
183
207
  */
184
208
  _defineProperty(this, "menu", null);
209
+ /**
210
+ * Flag which determines if the button that opens the menu was clicked.
211
+ *
212
+ * @type {boolean}
213
+ */
214
+ _classPrivateFieldInitSpec(this, _isButtonClicked, {
215
+ writable: true,
216
+ value: false
217
+ });
185
218
  this.hot.addHook('afterGetColHeader', (col, TH) => _classPrivateMethodGet(this, _onAfterGetColHeader, _onAfterGetColHeader2).call(this, col, TH));
186
219
  }
187
220
 
@@ -207,6 +240,18 @@ class DropdownMenu extends _base.BasePlugin {
207
240
  return;
208
241
  }
209
242
  this.itemsFactory = new _itemsFactory.ItemsFactory(this.hot, DropdownMenu.DEFAULT_ITEMS);
243
+ this.addHook('beforeOnCellMouseDown', function () {
244
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
245
+ args[_key] = arguments[_key];
246
+ }
247
+ return _classPrivateMethodGet(_this, _onBeforeOnCellMouseDown, _onBeforeOnCellMouseDown2).call(_this, ...args);
248
+ });
249
+ this.addHook('beforeViewportScrollHorizontally', function () {
250
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
251
+ args[_key2] = arguments[_key2];
252
+ }
253
+ return _classPrivateMethodGet(_this, _onBeforeViewportScrollHorizontally, _onBeforeViewportScrollHorizontally2).call(_this, ...args);
254
+ });
210
255
  const settings = this.hot.getSettings()[PLUGIN_KEY];
211
256
  const predefinedItems = {
212
257
  items: this.itemsFactory.getItems(settings)
@@ -236,8 +281,8 @@ class DropdownMenu extends _base.BasePlugin {
236
281
  this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => _classPrivateMethodGet(this, _onSubMenuAfterOpen, _onSubMenuAfterOpen2).call(this, subMenuInstance));
237
282
  this.menu.addLocalHook('afterClose', () => _classPrivateMethodGet(this, _onMenuAfterClose, _onMenuAfterClose2).call(this));
238
283
  this.menu.addLocalHook('executeCommand', function () {
239
- for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
240
- params[_key] = arguments[_key];
284
+ for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
285
+ params[_key3] = arguments[_key3];
241
286
  }
242
287
  return _this.executeCommand.call(_this, ...params);
243
288
  });
@@ -410,8 +455,8 @@ class DropdownMenu extends _base.BasePlugin {
410
455
  * @param {*} params Additional parameters passed to the command executor.
411
456
  */
412
457
  executeCommand(commandName) {
413
- for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
414
- params[_key2 - 1] = arguments[_key2];
458
+ for (var _len4 = arguments.length, params = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
459
+ params[_key4 - 1] = arguments[_key4];
415
460
  }
416
461
  this.commandExecutor.execute(commandName, ...params);
417
462
  }
@@ -455,6 +500,7 @@ function _onTableClick2(event) {
455
500
  if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
456
501
  const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
457
502
  const rect = event.target.getBoundingClientRect();
503
+ _classPrivateFieldSet(this, _isButtonClicked, false);
458
504
  this.open({
459
505
  left: rect.left + offset.left,
460
506
  top: rect.top + event.target.offsetHeight + 3 + offset.top
@@ -516,6 +562,14 @@ function _onMenuAfterClose2() {
516
562
  this.hot.listen();
517
563
  this.hot.runHooks('afterDropdownMenuHide', this);
518
564
  }
565
+ function _onBeforeViewportScrollHorizontally2(visualColumn) {
566
+ return _classPrivateFieldGet(this, _isButtonClicked) ? null : visualColumn;
567
+ }
568
+ function _onBeforeOnCellMouseDown2(event) {
569
+ if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
570
+ _classPrivateFieldSet(this, _isButtonClicked, true);
571
+ }
572
+ }
519
573
  DropdownMenu.SEPARATOR = {
520
574
  name: _predefinedItems.SEPARATOR
521
575
  };
@@ -1,9 +1,15 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
3
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
3
4
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
4
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
6
7
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
9
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
10
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
11
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
12
+ 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; } }
7
13
  function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
8
14
  import { BasePlugin } from "../base/index.mjs";
9
15
  import { arrayEach } from "../../helpers/array.mjs";
@@ -76,6 +82,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
76
82
  * ```
77
83
  * :::
78
84
  */
85
+ var _isButtonClicked = /*#__PURE__*/new WeakMap();
79
86
  var _addCustomShortcuts = /*#__PURE__*/new WeakSet();
80
87
  var _onTableClick = /*#__PURE__*/new WeakSet();
81
88
  var _onAfterGetColHeader = /*#__PURE__*/new WeakSet();
@@ -83,6 +90,8 @@ var _onMenuBeforeOpen = /*#__PURE__*/new WeakSet();
83
90
  var _onMenuAfterOpen = /*#__PURE__*/new WeakSet();
84
91
  var _onSubMenuAfterOpen = /*#__PURE__*/new WeakSet();
85
92
  var _onMenuAfterClose = /*#__PURE__*/new WeakSet();
93
+ var _onBeforeViewportScrollHorizontally = /*#__PURE__*/new WeakSet();
94
+ var _onBeforeOnCellMouseDown = /*#__PURE__*/new WeakSet();
86
95
  export class DropdownMenu extends BasePlugin {
87
96
  static get PLUGIN_KEY() {
88
97
  return PLUGIN_KEY;
@@ -114,6 +123,21 @@ export class DropdownMenu extends BasePlugin {
114
123
  super(hotInstance);
115
124
 
116
125
  // One listener for enable/disable functionality
126
+ /**
127
+ * Hook sets the internal flag to `true` when the button is clicked.
128
+ *
129
+ * @param {MouseEvent} event The mouse event object.
130
+ */
131
+ _classPrivateMethodInitSpec(this, _onBeforeOnCellMouseDown);
132
+ /**
133
+ * Hook allows blocking horizontal scroll when the menu is opened by clicking on
134
+ * the column header button. This prevents from scrolling the viewport (jump effect) when
135
+ * the button is clicked.
136
+ *
137
+ * @param {number} visualColumn Visual column index.
138
+ * @returns {number | null}
139
+ */
140
+ _classPrivateMethodInitSpec(this, _onBeforeViewportScrollHorizontally);
117
141
  /**
118
142
  * On menu after close listener.
119
143
  *
@@ -178,6 +202,15 @@ export class DropdownMenu extends BasePlugin {
178
202
  * @type {Menu}
179
203
  */
180
204
  _defineProperty(this, "menu", null);
205
+ /**
206
+ * Flag which determines if the button that opens the menu was clicked.
207
+ *
208
+ * @type {boolean}
209
+ */
210
+ _classPrivateFieldInitSpec(this, _isButtonClicked, {
211
+ writable: true,
212
+ value: false
213
+ });
181
214
  this.hot.addHook('afterGetColHeader', (col, TH) => _classPrivateMethodGet(this, _onAfterGetColHeader, _onAfterGetColHeader2).call(this, col, TH));
182
215
  }
183
216
 
@@ -203,6 +236,18 @@ export class DropdownMenu extends BasePlugin {
203
236
  return;
204
237
  }
205
238
  this.itemsFactory = new ItemsFactory(this.hot, DropdownMenu.DEFAULT_ITEMS);
239
+ this.addHook('beforeOnCellMouseDown', function () {
240
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
241
+ args[_key] = arguments[_key];
242
+ }
243
+ return _classPrivateMethodGet(_this, _onBeforeOnCellMouseDown, _onBeforeOnCellMouseDown2).call(_this, ...args);
244
+ });
245
+ this.addHook('beforeViewportScrollHorizontally', function () {
246
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
247
+ args[_key2] = arguments[_key2];
248
+ }
249
+ return _classPrivateMethodGet(_this, _onBeforeViewportScrollHorizontally, _onBeforeViewportScrollHorizontally2).call(_this, ...args);
250
+ });
206
251
  const settings = this.hot.getSettings()[PLUGIN_KEY];
207
252
  const predefinedItems = {
208
253
  items: this.itemsFactory.getItems(settings)
@@ -232,8 +277,8 @@ export class DropdownMenu extends BasePlugin {
232
277
  this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => _classPrivateMethodGet(this, _onSubMenuAfterOpen, _onSubMenuAfterOpen2).call(this, subMenuInstance));
233
278
  this.menu.addLocalHook('afterClose', () => _classPrivateMethodGet(this, _onMenuAfterClose, _onMenuAfterClose2).call(this));
234
279
  this.menu.addLocalHook('executeCommand', function () {
235
- for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
236
- params[_key] = arguments[_key];
280
+ for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
281
+ params[_key3] = arguments[_key3];
237
282
  }
238
283
  return _this.executeCommand.call(_this, ...params);
239
284
  });
@@ -406,8 +451,8 @@ export class DropdownMenu extends BasePlugin {
406
451
  * @param {*} params Additional parameters passed to the command executor.
407
452
  */
408
453
  executeCommand(commandName) {
409
- for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
410
- params[_key2 - 1] = arguments[_key2];
454
+ for (var _len4 = arguments.length, params = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
455
+ params[_key4 - 1] = arguments[_key4];
411
456
  }
412
457
  this.commandExecutor.execute(commandName, ...params);
413
458
  }
@@ -450,6 +495,7 @@ function _onTableClick2(event) {
450
495
  if (hasClass(event.target, BUTTON_CLASS_NAME)) {
451
496
  const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
452
497
  const rect = event.target.getBoundingClientRect();
498
+ _classPrivateFieldSet(this, _isButtonClicked, false);
453
499
  this.open({
454
500
  left: rect.left + offset.left,
455
501
  top: rect.top + event.target.offsetHeight + 3 + offset.top
@@ -511,6 +557,14 @@ function _onMenuAfterClose2() {
511
557
  this.hot.listen();
512
558
  this.hot.runHooks('afterDropdownMenuHide', this);
513
559
  }
560
+ function _onBeforeViewportScrollHorizontally2(visualColumn) {
561
+ return _classPrivateFieldGet(this, _isButtonClicked) ? null : visualColumn;
562
+ }
563
+ function _onBeforeOnCellMouseDown2(event) {
564
+ if (hasClass(event.target, BUTTON_CLASS_NAME)) {
565
+ _classPrivateFieldSet(this, _isButtonClicked, true);
566
+ }
567
+ }
514
568
  DropdownMenu.SEPARATOR = {
515
569
  name: SEPARATOR
516
570
  };
@@ -13,6 +13,7 @@ var _base = require("./_base");
13
13
  var _multipleSelect = require("../ui/multipleSelect");
14
14
  var _constants2 = require("../constants");
15
15
  var _conditionRegisterer = require("../conditionRegisterer");
16
+ var _numericRenderer = require("../../../renderers/numericRenderer");
16
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
19
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
@@ -26,12 +27,29 @@ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(
26
27
  * @class ValueComponent
27
28
  */
28
29
  var _onInputKeyDown = /*#__PURE__*/new WeakSet();
30
+ var _triggerModifyMultipleSelectionValueHook = /*#__PURE__*/new WeakSet();
31
+ var _onModifyDisplayedValue = /*#__PURE__*/new WeakSet();
29
32
  class ValueComponent extends _base.BaseComponent {
30
33
  constructor(hotInstance, options) {
31
34
  super(hotInstance, {
32
35
  id: options.id,
33
36
  stateless: false
34
37
  });
38
+ /**
39
+ * Modify the value displayed in the multiple select list.
40
+ *
41
+ * @param {*} value Cell value.
42
+ * @param {object} meta The cell meta object.
43
+ * @returns {*} Returns the modified value.
44
+ */
45
+ _classPrivateMethodInitSpec(this, _onModifyDisplayedValue);
46
+ /**
47
+ * Trigger the `modifyFiltersMultiSelectValue` hook.
48
+ *
49
+ * @param {object} item Item from the multiple select list.
50
+ * @param {Map} metaMap Map of row meta objects.
51
+ */
52
+ _classPrivateMethodInitSpec(this, _triggerModifyMultipleSelectionValueHook);
35
53
  /**
36
54
  * Key down listener.
37
55
  *
@@ -56,6 +74,7 @@ class ValueComponent extends _base.BaseComponent {
56
74
  */
57
75
  registerHooks() {
58
76
  this.getMultipleSelectElement().addLocalHook('keydown', event => _classPrivateMethodGet(this, _onInputKeyDown, _onInputKeyDown2).call(this, event)).addLocalHook('listTabKeydown', event => this.runLocalHooks('listTabKeydown', event));
77
+ this.hot.addHook('modifyFiltersMultiSelectValue', (value, meta) => _classPrivateMethodGet(this, _onModifyDisplayedValue, _onModifyDisplayedValue2).call(this, value, meta));
59
78
  }
60
79
 
61
80
  /**
@@ -113,15 +132,19 @@ class ValueComponent extends _base.BaseComponent {
113
132
  const state = {};
114
133
  const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
115
134
  if (firstByValueCondition) {
116
- const rowValues = (0, _utils.unifyColumnValues)((0, _array.arrayMap)(filteredRowsFactory(physicalColumn, conditionsStack), row => row.value));
135
+ const filteredRows = filteredRowsFactory(physicalColumn, conditionsStack);
136
+ const rowValues = (0, _array.arrayMap)(filteredRows, row => row.value);
137
+ const rowMetaMap = new Map(filteredRows.map(row => [row.value, this.hot.getCellMeta(row.meta.visualRow, row.meta.visualCol)]));
138
+ const unifiedRowValues = (0, _utils.unifyColumnValues)(rowValues);
117
139
  if (conditionArgsChange) {
118
140
  firstByValueCondition.args[0] = conditionArgsChange;
119
141
  }
120
142
  const selectedValues = [];
121
- const itemsSnapshot = (0, _utils.intersectValues)(rowValues, firstByValueCondition.args[0], defaultBlankCellValue, item => {
143
+ const itemsSnapshot = (0, _utils.intersectValues)(unifiedRowValues, firstByValueCondition.args[0], defaultBlankCellValue, item => {
122
144
  if (item.checked) {
123
145
  selectedValues.push(item.value);
124
146
  }
147
+ _classPrivateMethodGet(this, _triggerModifyMultipleSelectionValueHook, _triggerModifyMultipleSelectionValueHook2).call(this, item, rowMetaMap);
125
148
  });
126
149
  const column = stateInfo.editedConditionStack.column;
127
150
  state.locale = this.hot.getCellMeta(0, column).locale;
@@ -182,8 +205,13 @@ class ValueComponent extends _base.BaseComponent {
182
205
  */
183
206
  reset() {
184
207
  const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
185
- const values = (0, _utils.unifyColumnValues)(this._getColumnVisibleValues());
186
- const items = (0, _utils.intersectValues)(values, values, defaultBlankCellValue);
208
+ const rowEntries = this._getColumnVisibleValues();
209
+ const rowValues = rowEntries.map(entry => entry.value);
210
+ const rowMetaMap = new Map(rowEntries.map(row => [row.value, row.meta]));
211
+ const values = (0, _utils.unifyColumnValues)(rowValues);
212
+ const items = (0, _utils.intersectValues)(values, values, defaultBlankCellValue, item => {
213
+ _classPrivateMethodGet(this, _triggerModifyMultipleSelectionValueHook, _triggerModifyMultipleSelectionValueHook2).call(this, item, rowMetaMap);
214
+ });
187
215
  this.getMultipleSelectElement().setItems(items);
188
216
  super.reset();
189
217
  this.getMultipleSelectElement().setValue(values);
@@ -203,7 +231,12 @@ class ValueComponent extends _base.BaseComponent {
203
231
  if (selectedColumn === null) {
204
232
  return [];
205
233
  }
206
- return (0, _array.arrayMap)(this.hot.getDataAtCol(selectedColumn.visualIndex), v => (0, _utils.toEmptyString)(v));
234
+ return (0, _array.arrayMap)(this.hot.getDataAtCol(selectedColumn.visualIndex), (v, rowIndex) => {
235
+ return {
236
+ value: (0, _utils.toEmptyString)(v),
237
+ meta: this.hot.getCellMeta(rowIndex, selectedColumn.visualIndex)
238
+ };
239
+ });
207
240
  }
208
241
  }
209
242
  exports.ValueComponent = ValueComponent;
@@ -212,4 +245,17 @@ function _onInputKeyDown2(event) {
212
245
  this.runLocalHooks('cancel');
213
246
  (0, _event.stopImmediatePropagation)(event);
214
247
  }
248
+ }
249
+ function _triggerModifyMultipleSelectionValueHook2(item, metaMap) {
250
+ if (this.hot.hasHook('modifyFiltersMultiSelectValue')) {
251
+ item.visualValue = this.hot.runHooks('modifyFiltersMultiSelectValue', item.visualValue, metaMap.get(item.value));
252
+ }
253
+ }
254
+ function _onModifyDisplayedValue2(value, meta) {
255
+ switch (meta.type) {
256
+ case 'numeric':
257
+ return (0, _numericRenderer.getRenderedValue)(value, meta);
258
+ default:
259
+ return value;
260
+ }
215
261
  }
@@ -16,17 +16,35 @@ import { BaseComponent } from "./_base.mjs";
16
16
  import { MultipleSelectUI } from "../ui/multipleSelect.mjs";
17
17
  import { CONDITION_BY_VALUE, CONDITION_NONE } from "../constants.mjs";
18
18
  import { getConditionDescriptor } from "../conditionRegisterer.mjs";
19
+ import { getRenderedValue as getRenderedNumericValue } from "../../../renderers/numericRenderer/index.mjs";
19
20
  /**
20
21
  * @private
21
22
  * @class ValueComponent
22
23
  */
23
24
  var _onInputKeyDown = /*#__PURE__*/new WeakSet();
25
+ var _triggerModifyMultipleSelectionValueHook = /*#__PURE__*/new WeakSet();
26
+ var _onModifyDisplayedValue = /*#__PURE__*/new WeakSet();
24
27
  export class ValueComponent extends BaseComponent {
25
28
  constructor(hotInstance, options) {
26
29
  super(hotInstance, {
27
30
  id: options.id,
28
31
  stateless: false
29
32
  });
33
+ /**
34
+ * Modify the value displayed in the multiple select list.
35
+ *
36
+ * @param {*} value Cell value.
37
+ * @param {object} meta The cell meta object.
38
+ * @returns {*} Returns the modified value.
39
+ */
40
+ _classPrivateMethodInitSpec(this, _onModifyDisplayedValue);
41
+ /**
42
+ * Trigger the `modifyFiltersMultiSelectValue` hook.
43
+ *
44
+ * @param {object} item Item from the multiple select list.
45
+ * @param {Map} metaMap Map of row meta objects.
46
+ */
47
+ _classPrivateMethodInitSpec(this, _triggerModifyMultipleSelectionValueHook);
30
48
  /**
31
49
  * Key down listener.
32
50
  *
@@ -51,6 +69,7 @@ export class ValueComponent extends BaseComponent {
51
69
  */
52
70
  registerHooks() {
53
71
  this.getMultipleSelectElement().addLocalHook('keydown', event => _classPrivateMethodGet(this, _onInputKeyDown, _onInputKeyDown2).call(this, event)).addLocalHook('listTabKeydown', event => this.runLocalHooks('listTabKeydown', event));
72
+ this.hot.addHook('modifyFiltersMultiSelectValue', (value, meta) => _classPrivateMethodGet(this, _onModifyDisplayedValue, _onModifyDisplayedValue2).call(this, value, meta));
54
73
  }
55
74
 
56
75
  /**
@@ -108,15 +127,19 @@ export class ValueComponent extends BaseComponent {
108
127
  const state = {};
109
128
  const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
110
129
  if (firstByValueCondition) {
111
- const rowValues = unifyColumnValues(arrayMap(filteredRowsFactory(physicalColumn, conditionsStack), row => row.value));
130
+ const filteredRows = filteredRowsFactory(physicalColumn, conditionsStack);
131
+ const rowValues = arrayMap(filteredRows, row => row.value);
132
+ const rowMetaMap = new Map(filteredRows.map(row => [row.value, this.hot.getCellMeta(row.meta.visualRow, row.meta.visualCol)]));
133
+ const unifiedRowValues = unifyColumnValues(rowValues);
112
134
  if (conditionArgsChange) {
113
135
  firstByValueCondition.args[0] = conditionArgsChange;
114
136
  }
115
137
  const selectedValues = [];
116
- const itemsSnapshot = intersectValues(rowValues, firstByValueCondition.args[0], defaultBlankCellValue, item => {
138
+ const itemsSnapshot = intersectValues(unifiedRowValues, firstByValueCondition.args[0], defaultBlankCellValue, item => {
117
139
  if (item.checked) {
118
140
  selectedValues.push(item.value);
119
141
  }
142
+ _classPrivateMethodGet(this, _triggerModifyMultipleSelectionValueHook, _triggerModifyMultipleSelectionValueHook2).call(this, item, rowMetaMap);
120
143
  });
121
144
  const column = stateInfo.editedConditionStack.column;
122
145
  state.locale = this.hot.getCellMeta(0, column).locale;
@@ -177,8 +200,13 @@ export class ValueComponent extends BaseComponent {
177
200
  */
178
201
  reset() {
179
202
  const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
180
- const values = unifyColumnValues(this._getColumnVisibleValues());
181
- const items = intersectValues(values, values, defaultBlankCellValue);
203
+ const rowEntries = this._getColumnVisibleValues();
204
+ const rowValues = rowEntries.map(entry => entry.value);
205
+ const rowMetaMap = new Map(rowEntries.map(row => [row.value, row.meta]));
206
+ const values = unifyColumnValues(rowValues);
207
+ const items = intersectValues(values, values, defaultBlankCellValue, item => {
208
+ _classPrivateMethodGet(this, _triggerModifyMultipleSelectionValueHook, _triggerModifyMultipleSelectionValueHook2).call(this, item, rowMetaMap);
209
+ });
182
210
  this.getMultipleSelectElement().setItems(items);
183
211
  super.reset();
184
212
  this.getMultipleSelectElement().setValue(values);
@@ -198,7 +226,12 @@ export class ValueComponent extends BaseComponent {
198
226
  if (selectedColumn === null) {
199
227
  return [];
200
228
  }
201
- return arrayMap(this.hot.getDataAtCol(selectedColumn.visualIndex), v => toEmptyString(v));
229
+ return arrayMap(this.hot.getDataAtCol(selectedColumn.visualIndex), (v, rowIndex) => {
230
+ return {
231
+ value: toEmptyString(v),
232
+ meta: this.hot.getCellMeta(rowIndex, selectedColumn.visualIndex)
233
+ };
234
+ });
202
235
  }
203
236
  }
204
237
  function _onInputKeyDown2(event) {
@@ -206,4 +239,17 @@ function _onInputKeyDown2(event) {
206
239
  this.runLocalHooks('cancel');
207
240
  stopImmediatePropagation(event);
208
241
  }
242
+ }
243
+ function _triggerModifyMultipleSelectionValueHook2(item, metaMap) {
244
+ if (this.hot.hasHook('modifyFiltersMultiSelectValue')) {
245
+ item.visualValue = this.hot.runHooks('modifyFiltersMultiSelectValue', item.visualValue, metaMap.get(item.value));
246
+ }
247
+ }
248
+ function _onModifyDisplayedValue2(value, meta) {
249
+ switch (meta.type) {
250
+ case 'numeric':
251
+ return getRenderedNumericValue(value, meta);
252
+ default:
253
+ return value;
254
+ }
209
255
  }
@@ -77,7 +77,7 @@ function toEmptyString(value) {
77
77
  }
78
78
 
79
79
  /**
80
- * Unify column values (replace `null` and `undefined` values into empty string, unique values and sort them).
80
+ * Unify column values (remove duplicated values and sort them).
81
81
  *
82
82
  * @param {Array} values An array of values.
83
83
  * @returns {Array}
@@ -68,7 +68,7 @@ export function toEmptyString(value) {
68
68
  }
69
69
 
70
70
  /**
71
- * Unify column values (replace `null` and `undefined` values into empty string, unique values and sort them).
71
+ * Unify column values (remove duplicated values and sort them).
72
72
  *
73
73
  * @param {Array} values An array of values.
74
74
  * @returns {Array}
@@ -1069,7 +1069,15 @@ function _onModifyData2(physicalRow, visualColumn, valueHolder, ioMode) {
1069
1069
  sheet: this.sheetId
1070
1070
  };
1071
1071
  let cellValue = this.engine.getCellValue(address); // Date as an integer (Excel like date).
1072
- const cellMeta = this.hot.getCellMeta(visualRow, visualColumn);
1072
+
1073
+ // TODO: Workaround. We use HOT's `getCellsMeta` method instead of HOT's `getCellMeta` method. Getting cell meta
1074
+ // using the second method lead to execution of the `cells` method. Using the `getDataAtCell` (which may be useful)
1075
+ // in a callback to the `cells` method leads to triggering the `modifyData` hook. Thus, the `onModifyData` callback
1076
+ // is executed once again and it cause creation of an infinite loop.
1077
+ let cellMeta = this.hot.getCellsMeta().find(singleCellMeta => singleCellMeta.visualRow === visualRow && singleCellMeta.visualCol === visualColumn);
1078
+ if (cellMeta === undefined) {
1079
+ cellMeta = {};
1080
+ }
1073
1081
  if (cellMeta.type === 'date' && (0, _number.isNumeric)(cellValue)) {
1074
1082
  cellValue = (0, _utils.getDateFromExcelDate)(cellValue, cellMeta.dateFormat);
1075
1083
  }
@@ -1282,6 +1290,7 @@ function _onEngineSheetAdded2(addedSheetDisplayName) {
1282
1290
  this.hot.runHooks('afterSheetAdded', addedSheetDisplayName);
1283
1291
  }
1284
1292
  function _onEngineSheetRenamed2(oldDisplayName, newDisplayName) {
1293
+ this.sheetName = newDisplayName;
1285
1294
  this.hot.runHooks('afterSheetRenamed', oldDisplayName, newDisplayName);
1286
1295
  }
1287
1296
  function _onEngineSheetRemoved2(removedSheetDisplayName, changes) {
@@ -1064,7 +1064,15 @@ function _onModifyData2(physicalRow, visualColumn, valueHolder, ioMode) {
1064
1064
  sheet: this.sheetId
1065
1065
  };
1066
1066
  let cellValue = this.engine.getCellValue(address); // Date as an integer (Excel like date).
1067
- const cellMeta = this.hot.getCellMeta(visualRow, visualColumn);
1067
+
1068
+ // TODO: Workaround. We use HOT's `getCellsMeta` method instead of HOT's `getCellMeta` method. Getting cell meta
1069
+ // using the second method lead to execution of the `cells` method. Using the `getDataAtCell` (which may be useful)
1070
+ // in a callback to the `cells` method leads to triggering the `modifyData` hook. Thus, the `onModifyData` callback
1071
+ // is executed once again and it cause creation of an infinite loop.
1072
+ let cellMeta = this.hot.getCellsMeta().find(singleCellMeta => singleCellMeta.visualRow === visualRow && singleCellMeta.visualCol === visualColumn);
1073
+ if (cellMeta === undefined) {
1074
+ cellMeta = {};
1075
+ }
1068
1076
  if (cellMeta.type === 'date' && isNumeric(cellValue)) {
1069
1077
  cellValue = getDateFromExcelDate(cellValue, cellMeta.dateFormat);
1070
1078
  }
@@ -1277,6 +1285,7 @@ function _onEngineSheetAdded2(addedSheetDisplayName) {
1277
1285
  this.hot.runHooks('afterSheetAdded', addedSheetDisplayName);
1278
1286
  }
1279
1287
  function _onEngineSheetRenamed2(oldDisplayName, newDisplayName) {
1288
+ this.sheetName = newDisplayName;
1280
1289
  this.hot.runHooks('afterSheetRenamed', oldDisplayName, newDisplayName);
1281
1290
  }
1282
1291
  function _onEngineSheetRemoved2(removedSheetDisplayName, changes) {