handsontable 0.0.0-next-f512acf-20240930 → 0.0.0-next-3a00df6-20241001

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 (96) hide show
  1. package/3rdparty/walkontable/src/selection/manager.js +7 -7
  2. package/3rdparty/walkontable/src/selection/manager.mjs +7 -7
  3. package/3rdparty/walkontable/src/selection/scanner.js +7 -7
  4. package/3rdparty/walkontable/src/selection/scanner.mjs +7 -7
  5. package/CHANGELOG.md +29 -0
  6. package/base.js +2 -2
  7. package/base.mjs +2 -2
  8. package/core.js +7 -18
  9. package/core.mjs +7 -18
  10. package/dataMap/metaManager/lazyFactoryMap.js +7 -7
  11. package/dataMap/metaManager/lazyFactoryMap.mjs +7 -7
  12. package/dataMap/metaManager/metaSchema.js +0 -17
  13. package/dataMap/metaManager/metaSchema.mjs +2 -19
  14. package/dataMap/metaManager/mods/dynamicCellMeta.js +7 -7
  15. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +7 -7
  16. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -7
  17. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -7
  18. package/dataMap/metaManager/utils.js +7 -7
  19. package/dataMap/metaManager/utils.mjs +7 -7
  20. package/dist/handsontable.css +145 -296
  21. package/dist/handsontable.full.css +152 -305
  22. package/dist/handsontable.full.js +3755 -3641
  23. package/dist/handsontable.full.min.css +14 -85
  24. package/dist/handsontable.full.min.js +122 -132
  25. package/dist/handsontable.js +3440 -3336
  26. package/dist/handsontable.min.css +11 -82
  27. package/dist/handsontable.min.js +23 -23
  28. package/editors/dateEditor/dateEditor.js +0 -2
  29. package/editors/dateEditor/dateEditor.mjs +0 -2
  30. package/editors/handsontableEditor/handsontableEditor.js +1 -1
  31. package/editors/handsontableEditor/handsontableEditor.mjs +1 -1
  32. package/editors/selectEditor/selectEditor.js +9 -20
  33. package/editors/selectEditor/selectEditor.mjs +9 -20
  34. package/editors/textEditor/textEditor.js +11 -4
  35. package/editors/textEditor/textEditor.mjs +11 -4
  36. package/helpers/array.js +7 -7
  37. package/helpers/array.mjs +7 -7
  38. package/helpers/mixed.js +3 -3
  39. package/helpers/mixed.mjs +3 -3
  40. package/helpers/number.js +7 -7
  41. package/helpers/number.mjs +7 -7
  42. package/package.json +3 -10
  43. package/pluginHooks.js +3 -1
  44. package/pluginHooks.mjs +3 -1
  45. package/plugins/columnSorting/utils.js +7 -7
  46. package/plugins/columnSorting/utils.mjs +7 -7
  47. package/plugins/comments/commentEditor.js +1 -8
  48. package/plugins/comments/commentEditor.mjs +1 -8
  49. package/plugins/comments/comments.js +1 -1
  50. package/plugins/comments/comments.mjs +1 -1
  51. package/plugins/contextMenu/menu/menu.js +4 -4
  52. package/plugins/contextMenu/menu/menu.mjs +4 -4
  53. package/plugins/filters/utils.js +7 -7
  54. package/plugins/filters/utils.mjs +7 -7
  55. package/plugins/formulas/formulas.js +7 -7
  56. package/plugins/formulas/formulas.mjs +7 -7
  57. package/plugins/hiddenColumns/hiddenColumns.js +7 -7
  58. package/plugins/hiddenColumns/hiddenColumns.mjs +7 -7
  59. package/plugins/hiddenRows/hiddenRows.js +7 -7
  60. package/plugins/hiddenRows/hiddenRows.mjs +7 -7
  61. package/plugins/mergeCells/cellsCollection.js +7 -7
  62. package/plugins/mergeCells/cellsCollection.mjs +7 -7
  63. package/plugins/mergeCells/mergeCells.js +7 -7
  64. package/plugins/mergeCells/mergeCells.mjs +7 -7
  65. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +7 -7
  66. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +7 -7
  67. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.js +7 -7
  68. package/plugins/nestedHeaders/stateManager/nodeModifiers/expand.mjs +7 -7
  69. package/plugins/nestedRows/nestedRows.js +7 -7
  70. package/plugins/nestedRows/nestedRows.mjs +7 -7
  71. package/plugins/trimRows/trimRows.js +7 -7
  72. package/plugins/trimRows/trimRows.mjs +7 -7
  73. package/selection/selection.js +7 -7
  74. package/selection/selection.mjs +7 -7
  75. package/selection/utils.js +7 -7
  76. package/selection/utils.mjs +7 -7
  77. package/shortcuts/keyObserver.js +7 -7
  78. package/shortcuts/keyObserver.mjs +7 -7
  79. package/translations/changesObservable/observable.js +7 -7
  80. package/translations/changesObservable/observable.mjs +7 -7
  81. package/translations/indexMapper.js +7 -7
  82. package/translations/indexMapper.mjs +7 -7
  83. package/utils/dataStructures/uniqueSet.js +7 -7
  84. package/utils/dataStructures/uniqueSet.mjs +7 -7
  85. package/utils/ghostTable.js +1 -1
  86. package/utils/ghostTable.mjs +1 -1
  87. package/utils/paginator.js +7 -7
  88. package/utils/paginator.mjs +7 -7
  89. package/helpers/themes.js +0 -17
  90. package/helpers/themes.mjs +0 -13
  91. package/styles/handsontable.css +0 -1921
  92. package/styles/handsontable.min.css +0 -30
  93. package/styles/ht-theme-gemini.css +0 -689
  94. package/styles/ht-theme-gemini.min.css +0 -30
  95. package/styles/ht-theme-main.css +0 -697
  96. package/styles/ht-theme-main.min.css +0 -30
@@ -66,9 +66,7 @@ class DateEditor extends _textEditor.TextEditor {
66
66
  this.datePickerStyle.left = 0;
67
67
  this.datePickerStyle.zIndex = 9999;
68
68
  this.datePicker.setAttribute('dir', this.hot.isRtl() ? 'rtl' : 'ltr');
69
- const themeClassName = this.hot.getSettings().themeName;
70
69
  (0, _element.addClass)(this.datePicker, 'htDatepickerHolder');
71
- (0, _element.addClass)(this.datePicker, themeClassName);
72
70
  this.hot.rootDocument.body.appendChild(this.datePicker);
73
71
 
74
72
  /**
@@ -62,9 +62,7 @@ export class DateEditor extends TextEditor {
62
62
  this.datePickerStyle.left = 0;
63
63
  this.datePickerStyle.zIndex = 9999;
64
64
  this.datePicker.setAttribute('dir', this.hot.isRtl() ? 'rtl' : 'ltr');
65
- const themeClassName = this.hot.getSettings().themeName;
66
65
  addClass(this.datePicker, 'htDatepickerHolder');
67
- addClass(this.datePicker, themeClassName);
68
66
  this.hot.rootDocument.body.appendChild(this.datePicker);
69
67
 
70
68
  /**
@@ -158,7 +158,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
158
158
  * @returns {number}
159
159
  */
160
160
  getHeight() {
161
- return this.htEditor.view.getTableHeight() + 1;
161
+ return this.htEditor.view.getTableHeight();
162
162
  }
163
163
 
164
164
  /**
@@ -155,7 +155,7 @@ export class HandsontableEditor extends TextEditor {
155
155
  * @returns {number}
156
156
  */
157
157
  getHeight() {
158
- return this.htEditor.view.getTableHeight() + 1;
158
+ return this.htEditor.view.getTableHeight();
159
159
  }
160
160
 
161
161
  /**
@@ -4,7 +4,6 @@ exports.__esModule = true;
4
4
  var _baseEditor = require("../baseEditor");
5
5
  var _element = require("../../helpers/dom/element");
6
6
  var _object = require("../../helpers/object");
7
- var _a11y = require("../../helpers/a11y");
8
7
  const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
9
8
  const SHORTCUTS_GROUP = 'selectEditor';
10
9
  const EDITOR_TYPE = exports.EDITOR_TYPE = 'select';
@@ -22,21 +21,11 @@ class SelectEditor extends _baseEditor.BaseEditor {
22
21
  * Initializes editor instance, DOM Element and mount hooks.
23
22
  */
24
23
  init() {
25
- this.selectWrapper = this.hot.rootDocument.createElement('div');
26
24
  this.select = this.hot.rootDocument.createElement('select');
27
25
  this.select.setAttribute('data-hot-input', 'true');
28
- this.selectWrapper.style.display = 'none';
29
- const ARROW = this.hot.rootDocument.createElement('DIV');
30
- const isAriaEnabled = this.hot.getSettings().ariaTags;
31
- ARROW.className = 'htAutocompleteArrow';
32
- if (isAriaEnabled) {
33
- ARROW.setAttribute(...(0, _a11y.A11Y_HIDDEN)());
34
- }
35
- ARROW.appendChild(this.hot.rootDocument.createTextNode(String.fromCharCode(9660)));
36
- (0, _element.addClass)(this.selectWrapper, 'htSelectEditor');
37
- this.selectWrapper.appendChild(this.select);
38
- this.selectWrapper.insertBefore(ARROW, this.selectWrapper.firstChild);
39
- this.hot.rootElement.appendChild(this.selectWrapper);
26
+ this.select.style.display = 'none';
27
+ (0, _element.addClass)(this.select, 'htSelectEditor');
28
+ this.hot.rootElement.appendChild(this.select);
40
29
  this.registerHooks();
41
30
  }
42
31
 
@@ -64,7 +53,7 @@ class SelectEditor extends _baseEditor.BaseEditor {
64
53
  open() {
65
54
  this._opened = true;
66
55
  this.refreshDimensions();
67
- this.selectWrapper.style.display = '';
56
+ this.select.style.display = '';
68
57
  const shortcutManager = this.hot.getShortcutManager();
69
58
  shortcutManager.setActiveContextName('editor');
70
59
  this.registerShortcuts();
@@ -75,9 +64,9 @@ class SelectEditor extends _baseEditor.BaseEditor {
75
64
  */
76
65
  close() {
77
66
  this._opened = false;
78
- this.selectWrapper.style.display = 'none';
79
- if ((0, _element.hasClass)(this.selectWrapper, EDITOR_VISIBLE_CLASS_NAME)) {
80
- (0, _element.removeClass)(this.selectWrapper, EDITOR_VISIBLE_CLASS_NAME);
67
+ this.select.style.display = 'none';
68
+ if ((0, _element.hasClass)(this.select, EDITOR_VISIBLE_CLASS_NAME)) {
69
+ (0, _element.removeClass)(this.select, EDITOR_VISIBLE_CLASS_NAME);
81
70
  }
82
71
  this.unregisterShortcuts();
83
72
  this.clearHooks();
@@ -183,13 +172,13 @@ class SelectEditor extends _baseEditor.BaseEditor {
183
172
  width,
184
173
  height
185
174
  } = this.getEditedCellRect();
186
- const selectStyle = this.selectWrapper.style;
175
+ const selectStyle = this.select.style;
187
176
  selectStyle.height = `${height}px`;
188
177
  selectStyle.width = `${width}px`;
189
178
  selectStyle.top = `${top}px`;
190
179
  selectStyle[this.hot.isRtl() ? 'right' : 'left'] = `${start}px`;
191
180
  selectStyle.margin = '0px';
192
- (0, _element.addClass)(this.selectWrapper, EDITOR_VISIBLE_CLASS_NAME);
181
+ (0, _element.addClass)(this.select, EDITOR_VISIBLE_CLASS_NAME);
193
182
  }
194
183
 
195
184
  /**
@@ -1,7 +1,6 @@
1
1
  import { BaseEditor, EDITOR_STATE } from "../baseEditor/index.mjs";
2
2
  import { addClass, empty, fastInnerHTML, hasClass, removeClass } from "../../helpers/dom/element.mjs";
3
3
  import { objectEach } from "../../helpers/object.mjs";
4
- import { A11Y_HIDDEN } from "../../helpers/a11y.mjs";
5
4
  const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
6
5
  const SHORTCUTS_GROUP = 'selectEditor';
7
6
  export const EDITOR_TYPE = 'select';
@@ -19,21 +18,11 @@ export class SelectEditor extends BaseEditor {
19
18
  * Initializes editor instance, DOM Element and mount hooks.
20
19
  */
21
20
  init() {
22
- this.selectWrapper = this.hot.rootDocument.createElement('div');
23
21
  this.select = this.hot.rootDocument.createElement('select');
24
22
  this.select.setAttribute('data-hot-input', 'true');
25
- this.selectWrapper.style.display = 'none';
26
- const ARROW = this.hot.rootDocument.createElement('DIV');
27
- const isAriaEnabled = this.hot.getSettings().ariaTags;
28
- ARROW.className = 'htAutocompleteArrow';
29
- if (isAriaEnabled) {
30
- ARROW.setAttribute(...A11Y_HIDDEN());
31
- }
32
- ARROW.appendChild(this.hot.rootDocument.createTextNode(String.fromCharCode(9660)));
33
- addClass(this.selectWrapper, 'htSelectEditor');
34
- this.selectWrapper.appendChild(this.select);
35
- this.selectWrapper.insertBefore(ARROW, this.selectWrapper.firstChild);
36
- this.hot.rootElement.appendChild(this.selectWrapper);
23
+ this.select.style.display = 'none';
24
+ addClass(this.select, 'htSelectEditor');
25
+ this.hot.rootElement.appendChild(this.select);
37
26
  this.registerHooks();
38
27
  }
39
28
 
@@ -61,7 +50,7 @@ export class SelectEditor extends BaseEditor {
61
50
  open() {
62
51
  this._opened = true;
63
52
  this.refreshDimensions();
64
- this.selectWrapper.style.display = '';
53
+ this.select.style.display = '';
65
54
  const shortcutManager = this.hot.getShortcutManager();
66
55
  shortcutManager.setActiveContextName('editor');
67
56
  this.registerShortcuts();
@@ -72,9 +61,9 @@ export class SelectEditor extends BaseEditor {
72
61
  */
73
62
  close() {
74
63
  this._opened = false;
75
- this.selectWrapper.style.display = 'none';
76
- if (hasClass(this.selectWrapper, EDITOR_VISIBLE_CLASS_NAME)) {
77
- removeClass(this.selectWrapper, EDITOR_VISIBLE_CLASS_NAME);
64
+ this.select.style.display = 'none';
65
+ if (hasClass(this.select, EDITOR_VISIBLE_CLASS_NAME)) {
66
+ removeClass(this.select, EDITOR_VISIBLE_CLASS_NAME);
78
67
  }
79
68
  this.unregisterShortcuts();
80
69
  this.clearHooks();
@@ -180,13 +169,13 @@ export class SelectEditor extends BaseEditor {
180
169
  width,
181
170
  height
182
171
  } = this.getEditedCellRect();
183
- const selectStyle = this.selectWrapper.style;
172
+ const selectStyle = this.select.style;
184
173
  selectStyle.height = `${height}px`;
185
174
  selectStyle.width = `${width}px`;
186
175
  selectStyle.top = `${top}px`;
187
176
  selectStyle[this.hot.isRtl() ? 'right' : 'left'] = `${start}px`;
188
177
  selectStyle.margin = '0px';
189
- addClass(this.selectWrapper, EDITOR_VISIBLE_CLASS_NAME);
178
+ addClass(this.select, EDITOR_VISIBLE_CLASS_NAME);
190
179
  }
191
180
 
192
181
  /**
@@ -312,12 +312,19 @@ class TextEditor extends _baseEditor.BaseEditor {
312
312
  this.TEXTAREA.style.fontSize = cellComputedStyle.fontSize;
313
313
  this.TEXTAREA.style.fontFamily = cellComputedStyle.fontFamily;
314
314
  this.TEXTAREA.style.backgroundColor = this.TD.style.backgroundColor;
315
+ const textareaComputedStyle = this.hot.rootWindow.getComputedStyle(this.TEXTAREA);
316
+ const horizontalPadding = parseInt(textareaComputedStyle.paddingLeft, 10) + parseInt(textareaComputedStyle.paddingRight, 10);
317
+ const verticalPadding = parseInt(textareaComputedStyle.paddingTop, 10) + parseInt(textareaComputedStyle.paddingBottom, 10);
318
+ const finalWidth = width - horizontalPadding;
319
+ const finalHeight = height - verticalPadding;
320
+ const finalMaxWidth = maxWidth - horizontalPadding;
321
+ const finalMaxHeight = maxHeight - verticalPadding;
315
322
  this.autoResize.init(this.TEXTAREA, {
316
- minWidth: Math.min(width, maxWidth),
317
- minHeight: Math.min(height, maxHeight),
323
+ minWidth: Math.min(finalWidth, finalMaxWidth),
324
+ minHeight: Math.min(finalHeight, finalMaxHeight),
318
325
  // TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar)
319
- maxWidth,
320
- maxHeight
326
+ maxWidth: finalMaxWidth,
327
+ maxHeight: finalMaxHeight
321
328
  }, true);
322
329
  }
323
330
 
@@ -308,12 +308,19 @@ export class TextEditor extends BaseEditor {
308
308
  this.TEXTAREA.style.fontSize = cellComputedStyle.fontSize;
309
309
  this.TEXTAREA.style.fontFamily = cellComputedStyle.fontFamily;
310
310
  this.TEXTAREA.style.backgroundColor = this.TD.style.backgroundColor;
311
+ const textareaComputedStyle = this.hot.rootWindow.getComputedStyle(this.TEXTAREA);
312
+ const horizontalPadding = parseInt(textareaComputedStyle.paddingLeft, 10) + parseInt(textareaComputedStyle.paddingRight, 10);
313
+ const verticalPadding = parseInt(textareaComputedStyle.paddingTop, 10) + parseInt(textareaComputedStyle.paddingBottom, 10);
314
+ const finalWidth = width - horizontalPadding;
315
+ const finalHeight = height - verticalPadding;
316
+ const finalMaxWidth = maxWidth - horizontalPadding;
317
+ const finalMaxHeight = maxHeight - verticalPadding;
311
318
  this.autoResize.init(this.TEXTAREA, {
312
- minWidth: Math.min(width, maxWidth),
313
- minHeight: Math.min(height, maxHeight),
319
+ minWidth: Math.min(finalWidth, finalMaxWidth),
320
+ minHeight: Math.min(finalHeight, finalMaxHeight),
314
321
  // TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar)
315
- maxWidth,
316
- maxHeight
322
+ maxWidth: finalMaxWidth,
323
+ maxHeight: finalMaxHeight
317
324
  }, true);
318
325
  }
319
326
 
package/helpers/array.js CHANGED
@@ -19,13 +19,13 @@ exports.pivot = pivot;
19
19
  exports.stringToArray = stringToArray;
20
20
  exports.to2dArray = to2dArray;
21
21
  require("core-js/modules/es.array.push.js");
22
- require("core-js/modules/esnext.set.difference.v2.js");
23
- require("core-js/modules/esnext.set.intersection.v2.js");
24
- require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
25
- require("core-js/modules/esnext.set.is-subset-of.v2.js");
26
- require("core-js/modules/esnext.set.is-superset-of.v2.js");
27
- require("core-js/modules/esnext.set.symmetric-difference.v2.js");
28
- require("core-js/modules/esnext.set.union.v2.js");
22
+ require("core-js/modules/es.set.difference.v2.js");
23
+ require("core-js/modules/es.set.intersection.v2.js");
24
+ require("core-js/modules/es.set.is-disjoint-from.v2.js");
25
+ require("core-js/modules/es.set.is-subset-of.v2.js");
26
+ require("core-js/modules/es.set.is-superset-of.v2.js");
27
+ require("core-js/modules/es.set.symmetric-difference.v2.js");
28
+ require("core-js/modules/es.set.union.v2.js");
29
29
  /**
30
30
  * @param {Array} arr An array to process.
31
31
  */
package/helpers/array.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  import "core-js/modules/es.array.push.js";
2
- import "core-js/modules/esnext.set.difference.v2.js";
3
- import "core-js/modules/esnext.set.intersection.v2.js";
4
- import "core-js/modules/esnext.set.is-disjoint-from.v2.js";
5
- import "core-js/modules/esnext.set.is-subset-of.v2.js";
6
- import "core-js/modules/esnext.set.is-superset-of.v2.js";
7
- import "core-js/modules/esnext.set.symmetric-difference.v2.js";
8
- import "core-js/modules/esnext.set.union.v2.js";
2
+ import "core-js/modules/es.set.difference.v2.js";
3
+ import "core-js/modules/es.set.intersection.v2.js";
4
+ import "core-js/modules/es.set.is-disjoint-from.v2.js";
5
+ import "core-js/modules/es.set.is-subset-of.v2.js";
6
+ import "core-js/modules/es.set.is-superset-of.v2.js";
7
+ import "core-js/modules/es.set.symmetric-difference.v2.js";
8
+ import "core-js/modules/es.set.union.v2.js";
9
9
  /**
10
10
  * @param {Array} arr An array to process.
11
11
  */
package/helpers/mixed.js CHANGED
@@ -134,7 +134,7 @@ const domMessages = {
134
134
  function _injectProductInfo(key, element) {
135
135
  const hasValidType = !isEmpty(key);
136
136
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
137
- const hotVersion = "0.0.0-next-f512acf-20240930";
137
+ const hotVersion = "0.0.0-next-3a00df6-20241001";
138
138
  let keyValidityDate;
139
139
  let consoleMessageState = 'invalid';
140
140
  let domMessageState = 'invalid';
@@ -142,7 +142,7 @@ function _injectProductInfo(key, element) {
142
142
  const schemaValidity = _checkKeySchema(key);
143
143
  if (hasValidType || isNonCommercial || schemaValidity) {
144
144
  if (schemaValidity) {
145
- const releaseDate = (0, _moment.default)("30/07/2024", 'DD/MM/YYYY');
145
+ const releaseDate = (0, _moment.default)("01/10/2024", 'DD/MM/YYYY');
146
146
  const releaseDays = Math.floor(releaseDate.toDate().getTime() / 8.64e7);
147
147
  const keyValidityDays = _extractTime(key);
148
148
  keyValidityDate = (0, _moment.default)((keyValidityDays + 1) * 8.64e7, 'x').format('MMMM DD, YYYY');
@@ -188,7 +188,7 @@ function _injectProductInfo(key, element) {
188
188
  });
189
189
  if (message) {
190
190
  const messageNode = document.createElement('div');
191
- messageNode.className = 'handsontable hot-display-license-info';
191
+ messageNode.className = 'hot-display-license-info';
192
192
  messageNode.innerHTML = domMessages[domMessageState]({
193
193
  keyValidityDate,
194
194
  hotVersion
package/helpers/mixed.mjs CHANGED
@@ -124,7 +124,7 @@ const domMessages = {
124
124
  export function _injectProductInfo(key, element) {
125
125
  const hasValidType = !isEmpty(key);
126
126
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
127
- const hotVersion = "0.0.0-next-f512acf-20240930";
127
+ const hotVersion = "0.0.0-next-3a00df6-20241001";
128
128
  let keyValidityDate;
129
129
  let consoleMessageState = 'invalid';
130
130
  let domMessageState = 'invalid';
@@ -132,7 +132,7 @@ export function _injectProductInfo(key, element) {
132
132
  const schemaValidity = _checkKeySchema(key);
133
133
  if (hasValidType || isNonCommercial || schemaValidity) {
134
134
  if (schemaValidity) {
135
- const releaseDate = moment("30/07/2024", 'DD/MM/YYYY');
135
+ const releaseDate = moment("01/10/2024", 'DD/MM/YYYY');
136
136
  const releaseDays = Math.floor(releaseDate.toDate().getTime() / 8.64e7);
137
137
  const keyValidityDays = _extractTime(key);
138
138
  keyValidityDate = moment((keyValidityDays + 1) * 8.64e7, 'x').format('MMMM DD, YYYY');
@@ -178,7 +178,7 @@ export function _injectProductInfo(key, element) {
178
178
  });
179
179
  if (message) {
180
180
  const messageNode = document.createElement('div');
181
- messageNode.className = 'handsontable hot-display-license-info';
181
+ messageNode.className = 'hot-display-license-info';
182
182
  messageNode.innerHTML = domMessages[domMessageState]({
183
183
  keyValidityDate,
184
184
  hotVersion
package/helpers/number.js CHANGED
@@ -7,13 +7,13 @@ exports.isNumericLike = isNumericLike;
7
7
  exports.rangeEach = rangeEach;
8
8
  exports.rangeEachReverse = rangeEachReverse;
9
9
  exports.valueAccordingPercent = valueAccordingPercent;
10
- require("core-js/modules/esnext.set.difference.v2.js");
11
- require("core-js/modules/esnext.set.intersection.v2.js");
12
- require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
13
- require("core-js/modules/esnext.set.is-subset-of.v2.js");
14
- require("core-js/modules/esnext.set.is-superset-of.v2.js");
15
- require("core-js/modules/esnext.set.symmetric-difference.v2.js");
16
- require("core-js/modules/esnext.set.union.v2.js");
10
+ require("core-js/modules/es.set.difference.v2.js");
11
+ require("core-js/modules/es.set.intersection.v2.js");
12
+ require("core-js/modules/es.set.is-disjoint-from.v2.js");
13
+ require("core-js/modules/es.set.is-subset-of.v2.js");
14
+ require("core-js/modules/es.set.is-superset-of.v2.js");
15
+ require("core-js/modules/es.set.symmetric-difference.v2.js");
16
+ require("core-js/modules/es.set.union.v2.js");
17
17
  /* eslint-disable jsdoc/require-description-complete-sentence */
18
18
  /**
19
19
  * Checks if the passed value is numeric one. For example these values (passed as string or number)
@@ -1,10 +1,10 @@
1
- import "core-js/modules/esnext.set.difference.v2.js";
2
- import "core-js/modules/esnext.set.intersection.v2.js";
3
- import "core-js/modules/esnext.set.is-disjoint-from.v2.js";
4
- import "core-js/modules/esnext.set.is-subset-of.v2.js";
5
- import "core-js/modules/esnext.set.is-superset-of.v2.js";
6
- import "core-js/modules/esnext.set.symmetric-difference.v2.js";
7
- import "core-js/modules/esnext.set.union.v2.js";
1
+ import "core-js/modules/es.set.difference.v2.js";
2
+ import "core-js/modules/es.set.intersection.v2.js";
3
+ import "core-js/modules/es.set.is-disjoint-from.v2.js";
4
+ import "core-js/modules/es.set.is-subset-of.v2.js";
5
+ import "core-js/modules/es.set.is-superset-of.v2.js";
6
+ import "core-js/modules/es.set.symmetric-difference.v2.js";
7
+ import "core-js/modules/es.set.union.v2.js";
8
8
  /* eslint-disable jsdoc/require-description-complete-sentence */
9
9
  /**
10
10
  * Checks if the passed value is numeric one. For example these values (passed as string or number)
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "url": "https://github.com/handsontable/handsontable/issues"
11
11
  },
12
12
  "author": "Handsoncode <hello@handsontable.com>",
13
- "version": "0.0.0-next-f512acf-20240930",
13
+ "version": "0.0.0-next-3a00df6-20241001",
14
14
  "main": "index",
15
15
  "module": "index.mjs",
16
16
  "jsnext:main": "index.mjs",
@@ -50,6 +50,7 @@
50
50
  "@babel/register": "^7.8.3",
51
51
  "@babel/runtime": "^7.11.2",
52
52
  "@babel/types": "^7.12.12",
53
+ "@typescript-eslint/eslint-plugin": "^4.33.0",
53
54
  "babel-jest": "^26.6.3",
54
55
  "babel-loader": "^8.0.4",
55
56
  "babel-plugin-forbidden-imports": "^0.1.2",
@@ -93,10 +94,8 @@
93
94
  "string-replace-loader": "^3.1.0",
94
95
  "stylelint": "^16.3.1",
95
96
  "typescript": "3.8.2",
96
- "@typescript-eslint/eslint-plugin": "^4.33.0",
97
97
  "webpack": "^5.88.1",
98
- "webpack-cli": "^5.1.4",
99
- "webpack-remove-empty-scripts": "^1.0.4"
98
+ "webpack-cli": "^5.1.4"
100
99
  },
101
100
  "optionalDependencies": {
102
101
  "hyperformula": "^2.6.2"
@@ -768,12 +767,6 @@
768
767
  "./dist/languages/zh-CN.min.js": "./dist/languages/zh-CN.min.js",
769
768
  "./dist/languages/zh-TW.js": "./dist/languages/zh-TW.js",
770
769
  "./dist/languages/zh-TW.min.js": "./dist/languages/zh-TW.min.js",
771
- "./styles/handsontable.css": "./styles/handsontable.css",
772
- "./styles/handsontable.min.css": "./styles/handsontable.min.css",
773
- "./styles/ht-theme-gemini.css": "./styles/ht-theme-gemini.css",
774
- "./styles/ht-theme-gemini.min.css": "./styles/ht-theme-gemini.min.css",
775
- "./styles/ht-theme-main.css": "./styles/ht-theme-main.css",
776
- "./styles/ht-theme-main.min.css": "./styles/ht-theme-main.min.css",
777
770
  ".": {
778
771
  "types": "./index.d.ts",
779
772
  "import": "./index.mjs",
package/pluginHooks.js CHANGED
@@ -1953,7 +1953,9 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1953
1953
  * Fired by the [`Filters`](@/api/filters.md) plugin,
1954
1954
  * before a [column filter](@/guides/columns/column-filter/column-filter.md) gets applied.
1955
1955
  *
1956
- * [`beforeFilter`](#beforefilter) takes one argument (`conditionsStack`), which is an array of objects.
1956
+ * [`beforeFilter`](#beforefilter) takes two arguments: `conditionsStack` and `previousConditionsStack`, both are
1957
+ * arrays of objects.
1958
+ *
1957
1959
  * Each object represents one of your [column filters](@/api/filters.md#addcondition),
1958
1960
  * and consists of the following properties:
1959
1961
  *
package/pluginHooks.mjs CHANGED
@@ -1949,7 +1949,9 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
1949
1949
  * Fired by the [`Filters`](@/api/filters.md) plugin,
1950
1950
  * before a [column filter](@/guides/columns/column-filter/column-filter.md) gets applied.
1951
1951
  *
1952
- * [`beforeFilter`](#beforefilter) takes one argument (`conditionsStack`), which is an array of objects.
1952
+ * [`beforeFilter`](#beforefilter) takes two arguments: `conditionsStack` and `previousConditionsStack`, both are
1953
+ * arrays of objects.
1954
+ *
1953
1955
  * Each object represents one of your [column filters](@/api/filters.md#addcondition),
1954
1956
  * and consists of the following properties:
1955
1957
  *
@@ -7,13 +7,13 @@ exports.getHeaderSpanElement = getHeaderSpanElement;
7
7
  exports.getNextSortOrder = getNextSortOrder;
8
8
  exports.isFirstLevelColumnHeader = isFirstLevelColumnHeader;
9
9
  exports.wasHeaderClickedProperly = wasHeaderClickedProperly;
10
- require("core-js/modules/esnext.set.difference.v2.js");
11
- require("core-js/modules/esnext.set.intersection.v2.js");
12
- require("core-js/modules/esnext.set.is-disjoint-from.v2.js");
13
- require("core-js/modules/esnext.set.is-subset-of.v2.js");
14
- require("core-js/modules/esnext.set.is-superset-of.v2.js");
15
- require("core-js/modules/esnext.set.symmetric-difference.v2.js");
16
- require("core-js/modules/esnext.set.union.v2.js");
10
+ require("core-js/modules/es.set.difference.v2.js");
11
+ require("core-js/modules/es.set.intersection.v2.js");
12
+ require("core-js/modules/es.set.is-disjoint-from.v2.js");
13
+ require("core-js/modules/es.set.is-subset-of.v2.js");
14
+ require("core-js/modules/es.set.is-superset-of.v2.js");
15
+ require("core-js/modules/es.set.symmetric-difference.v2.js");
16
+ require("core-js/modules/es.set.union.v2.js");
17
17
  var _moment = _interopRequireDefault(require("moment"));
18
18
  var _object = require("../../helpers/object");
19
19
  var _event = require("../../helpers/dom/event");
@@ -1,10 +1,10 @@
1
- import "core-js/modules/esnext.set.difference.v2.js";
2
- import "core-js/modules/esnext.set.intersection.v2.js";
3
- import "core-js/modules/esnext.set.is-disjoint-from.v2.js";
4
- import "core-js/modules/esnext.set.is-subset-of.v2.js";
5
- import "core-js/modules/esnext.set.is-superset-of.v2.js";
6
- import "core-js/modules/esnext.set.symmetric-difference.v2.js";
7
- import "core-js/modules/esnext.set.union.v2.js";
1
+ import "core-js/modules/es.set.difference.v2.js";
2
+ import "core-js/modules/es.set.intersection.v2.js";
3
+ import "core-js/modules/es.set.is-disjoint-from.v2.js";
4
+ import "core-js/modules/es.set.is-subset-of.v2.js";
5
+ import "core-js/modules/es.set.is-superset-of.v2.js";
6
+ import "core-js/modules/es.set.symmetric-difference.v2.js";
7
+ import "core-js/modules/es.set.union.v2.js";
8
8
  import moment from 'moment';
9
9
  import { isObject } from "../../helpers/object.mjs";
10
10
  import { isRightClick } from "../../helpers/dom/event.mjs";
@@ -25,7 +25,6 @@ var _editor = /*#__PURE__*/new WeakMap();
25
25
  var _editorStyle = /*#__PURE__*/new WeakMap();
26
26
  var _hidden = /*#__PURE__*/new WeakMap();
27
27
  var _resizeObserver = /*#__PURE__*/new WeakMap();
28
- var _themeClassName = /*#__PURE__*/new WeakMap();
29
28
  class CommentEditor {
30
29
  static get CLASS_EDITOR_CONTAINER() {
31
30
  return 'htCommentsContainer';
@@ -44,7 +43,7 @@ class CommentEditor {
44
43
  * @type {Document}
45
44
  */
46
45
 
47
- constructor(rootDocument, isRtl, themeClassName) {
46
+ constructor(rootDocument, isRtl) {
48
47
  var _this = this;
49
48
  _classPrivateFieldInitSpec(this, _rootDocument, void 0);
50
49
  /**
@@ -71,13 +70,8 @@ class CommentEditor {
71
70
  * @type {EditorResizeObserver}
72
71
  */
73
72
  _classPrivateFieldInitSpec(this, _resizeObserver, new _editorResizeObserver.EditorResizeObserver());
74
- /**
75
- * @type {string}
76
- */
77
- _classPrivateFieldInitSpec(this, _themeClassName, void 0);
78
73
  _classPrivateFieldSet(_rootDocument, this, rootDocument);
79
74
  _classPrivateFieldSet(_isRtl, this, isRtl);
80
- _classPrivateFieldSet(_themeClassName, this, themeClassName);
81
75
  _classPrivateFieldSet(_editor, this, this.createEditor());
82
76
  _classPrivateFieldSet(_editorStyle, this, _classPrivateFieldGet(_editor, this).style);
83
77
  _classPrivateFieldGet(_resizeObserver, this).setObservedElement(this.getInputElement());
@@ -229,7 +223,6 @@ class CommentEditor {
229
223
  _classPrivateFieldSet(_container, this, _classPrivateFieldGet(_rootDocument, this).createElement('div'));
230
224
  _classPrivateFieldGet(_container, this).setAttribute('dir', _classPrivateFieldGet(_isRtl, this) ? 'rtl' : 'ltr');
231
225
  (0, _element.addClass)(_classPrivateFieldGet(_container, this), CommentEditor.CLASS_EDITOR_CONTAINER);
232
- (0, _element.addClass)(_classPrivateFieldGet(_container, this), _classPrivateFieldGet(_themeClassName, this));
233
226
  _classPrivateFieldGet(_rootDocument, this).body.appendChild(_classPrivateFieldGet(_container, this));
234
227
  (0, _element.addClass)(editor, CommentEditor.CLASS_EDITOR);
235
228
  (0, _element.addClass)(textarea, CommentEditor.CLASS_INPUT);
@@ -21,7 +21,6 @@ var _editor = /*#__PURE__*/new WeakMap();
21
21
  var _editorStyle = /*#__PURE__*/new WeakMap();
22
22
  var _hidden = /*#__PURE__*/new WeakMap();
23
23
  var _resizeObserver = /*#__PURE__*/new WeakMap();
24
- var _themeClassName = /*#__PURE__*/new WeakMap();
25
24
  class CommentEditor {
26
25
  static get CLASS_EDITOR_CONTAINER() {
27
26
  return 'htCommentsContainer';
@@ -40,7 +39,7 @@ class CommentEditor {
40
39
  * @type {Document}
41
40
  */
42
41
 
43
- constructor(rootDocument, isRtl, themeClassName) {
42
+ constructor(rootDocument, isRtl) {
44
43
  var _this = this;
45
44
  _classPrivateFieldInitSpec(this, _rootDocument, void 0);
46
45
  /**
@@ -67,13 +66,8 @@ class CommentEditor {
67
66
  * @type {EditorResizeObserver}
68
67
  */
69
68
  _classPrivateFieldInitSpec(this, _resizeObserver, new EditorResizeObserver());
70
- /**
71
- * @type {string}
72
- */
73
- _classPrivateFieldInitSpec(this, _themeClassName, void 0);
74
69
  _classPrivateFieldSet(_rootDocument, this, rootDocument);
75
70
  _classPrivateFieldSet(_isRtl, this, isRtl);
76
- _classPrivateFieldSet(_themeClassName, this, themeClassName);
77
71
  _classPrivateFieldSet(_editor, this, this.createEditor());
78
72
  _classPrivateFieldSet(_editorStyle, this, _classPrivateFieldGet(_editor, this).style);
79
73
  _classPrivateFieldGet(_resizeObserver, this).setObservedElement(this.getInputElement());
@@ -225,7 +219,6 @@ class CommentEditor {
225
219
  _classPrivateFieldSet(_container, this, _classPrivateFieldGet(_rootDocument, this).createElement('div'));
226
220
  _classPrivateFieldGet(_container, this).setAttribute('dir', _classPrivateFieldGet(_isRtl, this) ? 'rtl' : 'ltr');
227
221
  addClass(_classPrivateFieldGet(_container, this), CommentEditor.CLASS_EDITOR_CONTAINER);
228
- addClass(_classPrivateFieldGet(_container, this), _classPrivateFieldGet(_themeClassName, this));
229
222
  _classPrivateFieldGet(_rootDocument, this).body.appendChild(_classPrivateFieldGet(_container, this));
230
223
  addClass(editor, CommentEditor.CLASS_EDITOR);
231
224
  addClass(textarea, CommentEditor.CLASS_INPUT);
@@ -213,7 +213,7 @@ class Comments extends _base.BasePlugin {
213
213
  return;
214
214
  }
215
215
  if (!_classPrivateFieldGet(_editor, this)) {
216
- _classPrivateFieldSet(_editor, this, new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl(), this.hot.getSettings().themeName));
216
+ _classPrivateFieldSet(_editor, this, new _commentEditor.default(this.hot.rootDocument, this.hot.isRtl()));
217
217
  _classPrivateFieldGet(_editor, this).addLocalHook('resize', function () {
218
218
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
219
219
  args[_key] = arguments[_key];
@@ -209,7 +209,7 @@ export class Comments extends BasePlugin {
209
209
  return;
210
210
  }
211
211
  if (!_classPrivateFieldGet(_editor, this)) {
212
- _classPrivateFieldSet(_editor, this, new CommentEditor(this.hot.rootDocument, this.hot.isRtl(), this.hot.getSettings().themeName));
212
+ _classPrivateFieldSet(_editor, this, new CommentEditor(this.hot.rootDocument, this.hot.isRtl()));
213
213
  _classPrivateFieldGet(_editor, this).addLocalHook('resize', function () {
214
214
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
215
215
  args[_key] = arguments[_key];
@@ -579,8 +579,10 @@ class Menu {
579
579
  const currentRowHeight = itemCell ? (0, _element.outerHeight)(this.hotMenu.getCell(index, 0)) : 0;
580
580
  return accumulator + (value.name === _predefinedItems.SEPARATOR ? 1 : currentRowHeight);
581
581
  }, 0);
582
- holderStyle.width = `${currentHiderWidth}px`;
583
- holderStyle.height = `${realHeight}px`;
582
+
583
+ // Additional 3px to menu's size because of additional border around its `table.htCore`.
584
+ holderStyle.width = `${currentHiderWidth + 3}px`;
585
+ holderStyle.height = `${realHeight + 3}px`;
584
586
  hiderStyle.height = holderStyle.height;
585
587
  }
586
588
 
@@ -610,10 +612,8 @@ class Menu {
610
612
  container = doc.querySelector(`.${this.options.className}.${className}`);
611
613
  }
612
614
  if (!container) {
613
- const themeClassName = this.hot.getSettings().themeName;
614
615
  container = doc.createElement('div');
615
616
  (0, _element.addClass)(container, `htMenu ${this.options.className}`);
616
- (0, _element.addClass)(container, themeClassName);
617
617
  if (className) {
618
618
  (0, _element.addClass)(container, className);
619
619
  }
@@ -575,8 +575,10 @@ export class Menu {
575
575
  const currentRowHeight = itemCell ? outerHeight(this.hotMenu.getCell(index, 0)) : 0;
576
576
  return accumulator + (value.name === SEPARATOR ? 1 : currentRowHeight);
577
577
  }, 0);
578
- holderStyle.width = `${currentHiderWidth}px`;
579
- holderStyle.height = `${realHeight}px`;
578
+
579
+ // Additional 3px to menu's size because of additional border around its `table.htCore`.
580
+ holderStyle.width = `${currentHiderWidth + 3}px`;
581
+ holderStyle.height = `${realHeight + 3}px`;
580
582
  hiderStyle.height = holderStyle.height;
581
583
  }
582
584
 
@@ -606,10 +608,8 @@ export class Menu {
606
608
  container = doc.querySelector(`.${this.options.className}.${className}`);
607
609
  }
608
610
  if (!container) {
609
- const themeClassName = this.hot.getSettings().themeName;
610
611
  container = doc.createElement('div');
611
612
  addClass(container, `htMenu ${this.options.className}`);
612
- addClass(container, themeClassName);
613
613
  if (className) {
614
614
  addClass(container, className);
615
615
  }