handsontable 0.0.0-next-02c94b0-20240416 → 0.0.0-next-c99a89d-20240418

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 (55) hide show
  1. package/3rdparty/walkontable/src/overlay/_base.js +24 -20
  2. package/3rdparty/walkontable/src/overlay/_base.mjs +24 -20
  3. package/3rdparty/walkontable/src/overlay/bottom.js +3 -6
  4. package/3rdparty/walkontable/src/overlay/bottom.mjs +3 -6
  5. package/3rdparty/walkontable/src/overlay/inlineStart.js +3 -6
  6. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +3 -6
  7. package/3rdparty/walkontable/src/overlay/top.js +3 -6
  8. package/3rdparty/walkontable/src/overlay/top.mjs +3 -6
  9. package/3rdparty/walkontable/src/overlays.js +46 -24
  10. package/3rdparty/walkontable/src/overlays.mjs +46 -24
  11. package/3rdparty/walkontable/src/table.js +10 -11
  12. package/3rdparty/walkontable/src/table.mjs +10 -11
  13. package/base.js +2 -2
  14. package/base.mjs +2 -2
  15. package/dataMap/metaManager/mods/extendMetaProperties.js +37 -31
  16. package/dataMap/metaManager/mods/extendMetaProperties.mjs +37 -31
  17. package/dist/handsontable.css +2 -2
  18. package/dist/handsontable.full.css +2 -2
  19. package/dist/handsontable.full.js +149 -129
  20. package/dist/handsontable.full.min.css +2 -2
  21. package/dist/handsontable.full.min.js +8 -8
  22. package/dist/handsontable.js +149 -129
  23. package/dist/handsontable.min.css +2 -2
  24. package/dist/handsontable.min.js +8 -8
  25. package/helpers/mixed.js +1 -1
  26. package/helpers/mixed.mjs +1 -1
  27. package/package.json +1 -1
  28. package/plugins/autoRowSize/autoRowSize.js +2 -2
  29. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  30. package/plugins/collapsibleColumns/collapsibleColumns.js +1 -1
  31. package/plugins/collapsibleColumns/collapsibleColumns.mjs +1 -1
  32. package/plugins/filters/filters.js +1 -1
  33. package/plugins/filters/filters.mjs +1 -1
  34. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
  35. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +1 -1
  36. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -1
  37. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +1 -1
  38. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
  39. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +1 -1
  40. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -1
  41. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +1 -1
  42. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  43. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  44. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  45. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  46. package/plugins/manualColumnMove/manualColumnMove.js +1 -1
  47. package/plugins/manualColumnMove/manualColumnMove.mjs +1 -1
  48. package/plugins/manualColumnResize/manualColumnResize.js +2 -2
  49. package/plugins/manualColumnResize/manualColumnResize.mjs +2 -2
  50. package/plugins/manualRowMove/manualRowMove.js +1 -1
  51. package/plugins/manualRowMove/manualRowMove.mjs +1 -1
  52. package/plugins/manualRowResize/manualRowResize.js +2 -2
  53. package/plugins/manualRowResize/manualRowResize.mjs +2 -2
  54. package/tableView.js +1 -4
  55. package/tableView.mjs +1 -4
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-02c94b0-20240416
29
- * Release date: 16/04/2024 (built at 16/04/2024 08:48:15)
28
+ * Version: 0.0.0-next-c99a89d-20240418
29
+ * Release date: 16/04/2024 (built at 18/04/2024 11:00:07)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -107,8 +107,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
107
107
  Handsontable.CellCoords = _src.CellCoords;
108
108
  Handsontable.CellRange = _src.CellRange;
109
109
  Handsontable.packageName = 'handsontable';
110
- Handsontable.buildDate = "16/04/2024 08:48:15";
111
- Handsontable.version = "0.0.0-next-02c94b0-20240416";
110
+ Handsontable.buildDate = "18/04/2024 11:00:07";
111
+ Handsontable.version = "0.0.0-next-c99a89d-20240418";
112
112
  Handsontable.languages = {
113
113
  dictionaryKeys: _registry.dictionaryKeys,
114
114
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -8551,7 +8551,7 @@ const domMessages = {
8551
8551
  function _injectProductInfo(key, element) {
8552
8552
  const hasValidType = !isEmpty(key);
8553
8553
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
8554
- const hotVersion = "0.0.0-next-02c94b0-20240416";
8554
+ const hotVersion = "0.0.0-next-c99a89d-20240418";
8555
8555
  let keyValidityDate;
8556
8556
  let consoleMessageState = 'invalid';
8557
8557
  let domMessageState = 'invalid';
@@ -15979,15 +15979,12 @@ class TableView {
15979
15979
 
15980
15980
  /**
15981
15981
  * Adjust overlays elements size and master table size.
15982
- *
15983
- * @param {boolean} [force=false] When `true`, it adjust the DOM nodes sizes for all overlays.
15984
15982
  */
15985
15983
  adjustElementsSize() {
15986
- let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
15987
15984
  if (this.hot.isRenderSuspended()) {
15988
15985
  this.postponedAdjustElementsSize = true;
15989
15986
  } else {
15990
- this._wt.wtOverlays.adjustElementsSize(force);
15987
+ this._wt.wtOverlays.adjustElementsSize();
15991
15988
  }
15992
15989
  }
15993
15990
 
@@ -19764,6 +19761,7 @@ var _default = exports["default"] = Event;
19764
19761
 
19765
19762
  var _interopRequireDefault = __webpack_require__(1);
19766
19763
  exports.__esModule = true;
19764
+ __webpack_require__(8);
19767
19765
  __webpack_require__(90);
19768
19766
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(122));
19769
19767
  var _element = __webpack_require__(107);
@@ -19772,9 +19770,16 @@ var _array = __webpack_require__(113);
19772
19770
  var _unicode = __webpack_require__(126);
19773
19771
  var _browser = __webpack_require__(116);
19774
19772
  var _overlay = __webpack_require__(166);
19773
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
19774
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
19775
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
19776
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
19777
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
19775
19778
  /**
19776
19779
  * @class Overlays
19777
19780
  */
19781
+ var _overlays = /*#__PURE__*/new WeakMap();
19782
+ var _hasRenderingStateChanged = /*#__PURE__*/new WeakMap();
19778
19783
  class Overlays {
19779
19784
  /**
19780
19785
  * @param {Walkontable} wotInstance The Walkontable instance. @todo refactoring remove.
@@ -19792,6 +19797,12 @@ class Overlays {
19792
19797
  * @type {Walkontable}
19793
19798
  */
19794
19799
  (0, _defineProperty2.default)(this, "wot", null);
19800
+ /**
19801
+ * An array of the all overlays.
19802
+ *
19803
+ * @type {Overlay[]}
19804
+ */
19805
+ _classPrivateFieldInitSpec(this, _overlays, []);
19795
19806
  /**
19796
19807
  * Refer to the TopOverlay instance.
19797
19808
  *
@@ -19841,6 +19852,12 @@ class Overlays {
19841
19852
  * @type {Settings}
19842
19853
  */
19843
19854
  (0, _defineProperty2.default)(this, "wtSettings", null);
19855
+ /**
19856
+ * Indicates whether the rendering state has changed for one of the overlays.
19857
+ *
19858
+ * @type {boolean}
19859
+ */
19860
+ _classPrivateFieldInitSpec(this, _hasRenderingStateChanged, false);
19844
19861
  /**
19845
19862
  * The instance of the ResizeObserver that observes the size of the Walkontable wrapper element.
19846
19863
  * In case of the size change detection the `onContainerElementResize` is fired.
@@ -19900,7 +19917,7 @@ class Overlays {
19900
19917
  */
19901
19918
  getOverlays() {
19902
19919
  let includeMaster = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
19903
- const overlays = [this.topOverlay, this.topInlineStartCornerOverlay, this.inlineStartOverlay, this.bottomOverlay, this.bottomInlineStartCornerOverlay];
19920
+ const overlays = [..._classPrivateFieldGet(_overlays, this)];
19904
19921
  if (includeMaster) {
19905
19922
  overlays.push(this.wtTable);
19906
19923
  }
@@ -19945,29 +19962,31 @@ class Overlays {
19945
19962
  // TODO cond. Has no any visual impact. They're initially hidden in same way like left, top, and bottom overlays.
19946
19963
  this.topInlineStartCornerOverlay = new _overlay.TopInlineStartCornerOverlay(...args, this.topOverlay, this.inlineStartOverlay);
19947
19964
  this.bottomInlineStartCornerOverlay = new _overlay.BottomInlineStartCornerOverlay(...args, this.bottomOverlay, this.inlineStartOverlay);
19965
+ _classPrivateFieldSet(_overlays, this, [this.topOverlay, this.bottomOverlay, this.inlineStartOverlay, this.topInlineStartCornerOverlay, this.bottomInlineStartCornerOverlay]);
19948
19966
  }
19949
19967
 
19950
19968
  /**
19951
- * Update state of rendering, check if changed.
19952
- *
19953
- * @package
19954
- * @returns {boolean} Returns `true` if changes applied to overlay needs scroll synchronization.
19969
+ * Runs logic for the overlays before the table is drawn.
19955
19970
  */
19956
- updateStateOfRendering() {
19957
- let syncScroll = this.topOverlay.updateStateOfRendering();
19958
- syncScroll = this.bottomOverlay.updateStateOfRendering() || syncScroll;
19959
- syncScroll = this.inlineStartOverlay.updateStateOfRendering() || syncScroll;
19971
+ beforeDraw() {
19972
+ _classPrivateFieldSet(_hasRenderingStateChanged, this, _classPrivateFieldGet(_overlays, this).reduce((acc, overlay) => {
19973
+ return overlay.hasRenderingStateChanged() || acc;
19974
+ }, false));
19975
+ _classPrivateFieldGet(_overlays, this).forEach(overlay => overlay.updateStateOfRendering('before'));
19976
+ }
19960
19977
 
19961
- // todo refactoring: move conditions into updateStateOfRendering(),
19962
- if (this.inlineStartOverlay.needFullRender) {
19963
- if (this.topOverlay.needFullRender) {
19964
- syncScroll = this.topInlineStartCornerOverlay.updateStateOfRendering() || syncScroll;
19965
- }
19966
- if (this.bottomOverlay.needFullRender) {
19967
- syncScroll = this.bottomInlineStartCornerOverlay.updateStateOfRendering() || syncScroll;
19978
+ /**
19979
+ * Runs logic for the overlays after the table is drawn.
19980
+ */
19981
+ afterDraw() {
19982
+ this.syncScrollWithMaster();
19983
+ _classPrivateFieldGet(_overlays, this).forEach(overlay => {
19984
+ const hasRenderingStateChanged = overlay.hasRenderingStateChanged();
19985
+ overlay.updateStateOfRendering('after');
19986
+ if (hasRenderingStateChanged && !overlay.needFullRender) {
19987
+ overlay.reset();
19968
19988
  }
19969
- }
19970
- return syncScroll;
19989
+ });
19971
19990
  }
19972
19991
 
19973
19992
  /**
@@ -20207,6 +20226,9 @@ class Overlays {
20207
20226
  * Synchronize overlay scrollbars with the master scrollbar.
20208
20227
  */
20209
20228
  syncScrollWithMaster() {
20229
+ if (!_classPrivateFieldGet(_hasRenderingStateChanged, this)) {
20230
+ return;
20231
+ }
20210
20232
  const master = this.topOverlay.mainTableScrollableElement;
20211
20233
  const {
20212
20234
  scrollLeft,
@@ -20221,6 +20243,7 @@ class Overlays {
20221
20243
  if (this.inlineStartOverlay.needFullRender) {
20222
20244
  this.inlineStartOverlay.clone.wtTable.holder.scrollTop = scrollTop; // todo rethink, *overlay.setScroll*()
20223
20245
  }
20246
+ _classPrivateFieldSet(_hasRenderingStateChanged, this, false);
20224
20247
  }
20225
20248
 
20226
20249
  /**
@@ -20311,11 +20334,8 @@ class Overlays {
20311
20334
 
20312
20335
  /**
20313
20336
  * Adjust overlays elements size and master table size.
20314
- *
20315
- * @param {boolean} [force=false] When `true`, it adjust the DOM nodes sizes for all overlays.
20316
20337
  */
20317
20338
  adjustElementsSize() {
20318
- let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
20319
20339
  const {
20320
20340
  wtViewport
20321
20341
  } = this.wot;
@@ -20365,9 +20385,9 @@ class Overlays {
20365
20385
  this.hasScrollbarRight = true;
20366
20386
  }
20367
20387
  }
20368
- this.topOverlay.adjustElementsSize(force);
20369
- this.inlineStartOverlay.adjustElementsSize(force);
20370
- this.bottomOverlay.adjustElementsSize(force);
20388
+ this.topOverlay.adjustElementsSize();
20389
+ this.inlineStartOverlay.adjustElementsSize();
20390
+ this.bottomOverlay.adjustElementsSize();
20371
20391
  }
20372
20392
 
20373
20393
  /**
@@ -20890,7 +20910,6 @@ class Table {
20890
20910
  const rowHeadersCount = rowHeaders.length;
20891
20911
  const columnHeaders = wtSettings.getSetting('columnHeaders');
20892
20912
  const columnHeadersCount = columnHeaders.length;
20893
- let syncScroll = false;
20894
20913
  let runFastDraw = fastDraw;
20895
20914
  if (this.isMaster) {
20896
20915
  this.holderOffset = (0, _element.offset)(this.holder);
@@ -20905,7 +20924,7 @@ class Table {
20905
20924
  }
20906
20925
  }
20907
20926
  if (this.isMaster) {
20908
- syncScroll = wtOverlays.updateStateOfRendering();
20927
+ wtOverlays.beforeDraw();
20909
20928
  }
20910
20929
  if (runFastDraw) {
20911
20930
  if (this.isMaster) {
@@ -20946,7 +20965,7 @@ class Table {
20946
20965
  let workspaceWidth;
20947
20966
  if (this.isMaster) {
20948
20967
  workspaceWidth = this.dataAccessObject.workspaceWidth;
20949
- this.dataAccessObject.wtViewport.containerWidth = null;
20968
+ wtViewport.containerWidth = null;
20950
20969
  this.markOversizedColumnHeaders();
20951
20970
  }
20952
20971
  this.adjustColumnHeaderHeights();
@@ -20954,10 +20973,10 @@ class Table {
20954
20973
  this.markOversizedRows();
20955
20974
  }
20956
20975
  if (this.isMaster) {
20957
- this.dataAccessObject.wtViewport.createVisibleCalculators();
20958
- this.dataAccessObject.wtViewport.createPartiallyVisibleCalculators();
20959
- this.dataAccessObject.wtOverlays.refresh(false);
20960
- this.dataAccessObject.wtOverlays.applyToDOM();
20976
+ wtViewport.createVisibleCalculators();
20977
+ wtViewport.createPartiallyVisibleCalculators();
20978
+ wtOverlays.refresh(false);
20979
+ wtOverlays.applyToDOM();
20961
20980
  const hiderWidth = (0, _element.outerWidth)(this.hider);
20962
20981
  const tableWidth = (0, _element.outerWidth)(this.TABLE);
20963
20982
  if (hiderWidth !== 0 && tableWidth !== hiderWidth) {
@@ -20965,9 +20984,9 @@ class Table {
20965
20984
  this.columnUtils.calculateWidths();
20966
20985
  this.tableRenderer.renderer.colGroup.render();
20967
20986
  }
20968
- if (workspaceWidth !== this.dataAccessObject.wtViewport.getWorkspaceWidth()) {
20987
+ if (workspaceWidth !== wtViewport.getWorkspaceWidth()) {
20969
20988
  // workspace width changed though to shown/hidden vertical scrollbar. Let's reapply stretching
20970
- this.dataAccessObject.wtViewport.containerWidth = null;
20989
+ wtViewport.containerWidth = null;
20971
20990
  this.columnUtils.calculateWidths();
20972
20991
  this.tableRenderer.renderer.colGroup.render();
20973
20992
  }
@@ -21000,8 +21019,8 @@ class Table {
21000
21019
  } else {
21001
21020
  this.dataAccessObject.selectionManager.setActiveOverlay(this.facadeGetter()).render(runFastDraw);
21002
21021
  }
21003
- if (syncScroll) {
21004
- wtOverlays.syncScrollWithMaster();
21022
+ if (this.isMaster) {
21023
+ wtOverlays.afterDraw();
21005
21024
  }
21006
21025
  this.dataAccessObject.drawn = true;
21007
21026
  return this;
@@ -24057,7 +24076,6 @@ __webpack_require__(8);
24057
24076
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(122));
24058
24077
  var _element = __webpack_require__(107);
24059
24078
  var _object = __webpack_require__(117);
24060
- var _array = __webpack_require__(113);
24061
24079
  var _console = __webpack_require__(130);
24062
24080
  var _constants = __webpack_require__(193);
24063
24081
  var _clone = _interopRequireDefault(__webpack_require__(194));
@@ -24110,24 +24128,35 @@ class Overlay {
24110
24128
  this.holder = holder;
24111
24129
  this.wtRootElement = wtRootElement;
24112
24130
  this.trimmingContainer = (0, _element.getTrimmingContainer)(this.hider.parentNode.parentNode);
24113
- this.updateStateOfRendering();
24131
+ this.needFullRender = this.shouldBeRendered();
24114
24132
  this.clone = this.makeClone();
24115
24133
  }
24116
24134
 
24117
24135
  /**
24118
- * Update internal state of object with an information about the need of full rendering of the overlay.
24136
+ * Checks if the overlay rendering state has changed.
24119
24137
  *
24120
- * @returns {boolean} Returns `true` if the state has changed since the last check.
24138
+ * @returns {boolean}
24121
24139
  */
24122
- updateStateOfRendering() {
24123
- // todo refactoring: conceive introducing final state machine, normal -> changed (once) -> needs-full-render -> ...? -> normal
24124
- const previousState = this.needFullRender;
24125
- this.needFullRender = this.shouldBeRendered();
24126
- const changed = previousState !== this.needFullRender;
24127
- if (changed && !this.needFullRender) {
24128
- this.reset();
24140
+ hasRenderingStateChanged() {
24141
+ return this.needFullRender !== this.shouldBeRendered();
24142
+ }
24143
+
24144
+ /**
24145
+ * Updates internal state with an information about the need of full rendering of the overlay in the next draw cycles.
24146
+ *
24147
+ * If the state is changed to render the overlay, the `needFullRender` property is set to `true` which means that
24148
+ * the overlay will be fully rendered in the current draw cycle. If the state is changed to not render the overlay,
24149
+ * the `needFullRender` property is set to `false` which means that the overlay will be fully rendered in the
24150
+ * current draw cycle but it will not be rendered in the next draw cycles.
24151
+ *
24152
+ * @param {'before' | 'after'} drawPhase The phase of the rendering process.
24153
+ */
24154
+ updateStateOfRendering(drawPhase) {
24155
+ if (drawPhase === 'before' && this.shouldBeRendered()) {
24156
+ this.needFullRender = true;
24157
+ } else if (drawPhase === 'after' && !this.shouldBeRendered()) {
24158
+ this.needFullRender = false;
24129
24159
  }
24130
- return changed;
24131
24160
  }
24132
24161
 
24133
24162
  /**
@@ -24354,27 +24383,21 @@ class Overlay {
24354
24383
  */
24355
24384
  refresh() {
24356
24385
  let fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
24357
- // When hot settings are changed we allow to refresh overlay once before blocking
24358
- const nextCycleRenderFlag = this.shouldBeRendered();
24359
- if (this.clone && (this.needFullRender || nextCycleRenderFlag)) {
24386
+ if (this.needFullRender) {
24360
24387
  this.clone.draw(fastDraw);
24361
24388
  }
24362
- this.needFullRender = nextCycleRenderFlag;
24363
24389
  }
24364
24390
 
24365
24391
  /**
24366
24392
  * Reset overlay styles to initial values.
24367
24393
  */
24368
24394
  reset() {
24369
- if (!this.clone) {
24370
- return;
24371
- }
24372
24395
  const holder = this.clone.wtTable.holder; // todo refactoring: DEMETER
24373
24396
  const hider = this.clone.wtTable.hider; // todo refactoring: DEMETER
24374
24397
  const holderStyle = holder.style;
24375
24398
  const hiderStyle = hider.style;
24376
24399
  const rootStyle = holder.parentNode.style;
24377
- (0, _array.arrayEach)([holderStyle, hiderStyle, rootStyle], style => {
24400
+ [holderStyle, hiderStyle, rootStyle].forEach(style => {
24378
24401
  style.width = '';
24379
24402
  style.height = '';
24380
24403
  });
@@ -25194,7 +25217,7 @@ class BottomOverlay extends _base.Overlay {
25194
25217
  * @returns {boolean}
25195
25218
  */
25196
25219
  resetFixedPosition() {
25197
- if (!this.needFullRender || !this.wot.wtTable.holder.parentNode) {
25220
+ if (!this.needFullRender || !this.shouldBeRendered() || !this.wot.wtTable.holder.parentNode) {
25198
25221
  // removed from DOM
25199
25222
  return false;
25200
25223
  }
@@ -25291,14 +25314,11 @@ class BottomOverlay extends _base.Overlay {
25291
25314
  }
25292
25315
 
25293
25316
  /**
25294
- * Adjust overlay root element, childs and master table element sizes (width, height).
25295
- *
25296
- * @param {boolean} [force=false] When `true`, it adjusts the DOM nodes sizes for that overlay.
25317
+ * Adjust overlay root element, children and master table element sizes (width, height).
25297
25318
  */
25298
25319
  adjustElementsSize() {
25299
- let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
25300
25320
  this.updateTrimmingContainer();
25301
- if (this.needFullRender || force) {
25321
+ if (this.needFullRender) {
25302
25322
  this.adjustRootElementSize();
25303
25323
  this.adjustRootChildrenSize();
25304
25324
  }
@@ -25711,7 +25731,7 @@ class InlineStartOverlay extends _base.Overlay {
25711
25731
  const {
25712
25732
  wtTable
25713
25733
  } = this.wot;
25714
- if (!this.needFullRender || !wtTable.holder.parentNode) {
25734
+ if (!this.needFullRender || !this.shouldBeRendered() || !wtTable.holder.parentNode) {
25715
25735
  // removed from DOM
25716
25736
  return false;
25717
25737
  }
@@ -25783,14 +25803,11 @@ class InlineStartOverlay extends _base.Overlay {
25783
25803
  }
25784
25804
 
25785
25805
  /**
25786
- * Adjust overlay root element, childs and master table element sizes (width, height).
25787
- *
25788
- * @param {boolean} [force=false] When `true`, it adjusts the DOM nodes sizes for that overlay.
25806
+ * Adjust overlay root element, children and master table element sizes (width, height).
25789
25807
  */
25790
25808
  adjustElementsSize() {
25791
- let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
25792
25809
  this.updateTrimmingContainer();
25793
- if (this.needFullRender || force) {
25810
+ if (this.needFullRender) {
25794
25811
  this.adjustRootElementSize();
25795
25812
  this.adjustRootChildrenSize();
25796
25813
  }
@@ -28015,7 +28032,7 @@ class TopOverlay extends _base.Overlay {
28015
28032
  * @returns {boolean}
28016
28033
  */
28017
28034
  resetFixedPosition() {
28018
- if (!this.needFullRender || !this.wot.wtTable.holder.parentNode) {
28035
+ if (!this.needFullRender || !this.shouldBeRendered() || !this.wot.wtTable.holder.parentNode) {
28019
28036
  // removed from DOM
28020
28037
  return false;
28021
28038
  }
@@ -28103,14 +28120,11 @@ class TopOverlay extends _base.Overlay {
28103
28120
  }
28104
28121
 
28105
28122
  /**
28106
- * Adjust overlay root element, childs and master table element sizes (width, height).
28107
- *
28108
- * @param {boolean} [force=false] When `true`, it adjusts the DOM nodes sizes for that overlay.
28123
+ * Adjust overlay root element, children and master table element sizes (width, height).
28109
28124
  */
28110
28125
  adjustElementsSize() {
28111
- let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
28112
28126
  this.updateTrimmingContainer();
28113
- if (this.needFullRender || force) {
28127
+ if (this.needFullRender) {
28114
28128
  this.adjustRootElementSize();
28115
28129
  this.adjustRootChildrenSize();
28116
28130
  }
@@ -42738,7 +42752,13 @@ exports.DynamicCellMetaMod = DynamicCellMetaMod;
42738
42752
  var _interopRequireDefault = __webpack_require__(1);
42739
42753
  exports.__esModule = true;
42740
42754
  __webpack_require__(8);
42755
+ __webpack_require__(90);
42741
42756
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(122));
42757
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
42758
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
42759
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
42760
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
42761
+ var _initOnlyCallback = /*#__PURE__*/new WeakMap();
42742
42762
  /**
42743
42763
  * @class ExtendMetaPropertiesMod
42744
42764
  */
@@ -42756,11 +42776,7 @@ class ExtendMetaPropertiesMod {
42756
42776
  * @type {Map}
42757
42777
  */
42758
42778
  (0, _defineProperty2.default)(this, "propDescriptors", new Map([['ariaTags', {
42759
- onChange(propName, value, isInitialChange) {
42760
- if (!isInitialChange) {
42761
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable instance was initialized.`);
42762
- }
42763
- }
42779
+ initOnly: true
42764
42780
  }], ['fixedColumnsLeft', {
42765
42781
  target: 'fixedColumnsStart',
42766
42782
  onChange(propName) {
@@ -42773,48 +42789,52 @@ class ExtendMetaPropertiesMod {
42773
42789
  }
42774
42790
  }
42775
42791
  }], ['layoutDirection', {
42776
- onChange(propName, value, isInitialChange) {
42777
- if (!isInitialChange) {
42778
- throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
42779
- }
42792
+ initOnly: true
42793
+ }], ['renderAllColumns', {
42794
+ initOnly: true
42795
+ }], ['renderAllRows', {
42796
+ initOnly: true
42797
+ }]]));
42798
+ /**
42799
+ * Callback called when the prop is marked as `initOnly`.
42800
+ *
42801
+ * @param {string} propName The property name.
42802
+ * @param {*} value The new value.
42803
+ * @param {boolean} isInitialChange Is the change initial.
42804
+ */
42805
+ _classPrivateFieldInitSpec(this, _initOnlyCallback, (propName, value, isInitialChange) => {
42806
+ if (!isInitialChange) {
42807
+ throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
42780
42808
  }
42781
- }]
42782
- // Temporary commented out due to the bug in the React wrapper.
42783
- // ['renderAllColumns', {
42784
- // onChange(propName, value, isInitialChange) {
42785
- // if (!isInitialChange) {
42786
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
42787
- // }
42788
- // }
42789
- // }],
42790
- // ['renderAllRows', {
42791
- // onChange(propName, value, isInitialChange) {
42792
- // if (!isInitialChange) {
42793
- // throw new Error(`The \`${propName}\` option can not be updated after the Handsontable is initialized.`);
42794
- // }
42795
- // }
42796
- // }],
42797
- ]));
42809
+ });
42798
42810
  this.metaManager = metaManager;
42799
42811
  this.extendMetaProps();
42800
42812
  }
42801
-
42802
42813
  /**
42803
42814
  * Extends the meta options based on the object descriptors from the `propDescriptors` list.
42804
42815
  */
42805
42816
  extendMetaProps() {
42806
42817
  this.propDescriptors.forEach((descriptor, alias) => {
42807
42818
  const {
42819
+ initOnly,
42808
42820
  target,
42809
- onChange = () => {}
42821
+ onChange
42810
42822
  } = descriptor;
42811
42823
  const hasTarget = typeof target === 'string';
42812
42824
  const targetProp = hasTarget ? target : alias;
42813
42825
  const origProp = `_${targetProp}`;
42814
42826
  this.metaManager.globalMeta.meta[origProp] = this.metaManager.globalMeta.meta[targetProp];
42815
- this.installPropWatcher(alias, origProp, onChange);
42816
- if (hasTarget) {
42817
- this.installPropWatcher(target, origProp, onChange);
42827
+ if (onChange) {
42828
+ this.installPropWatcher(alias, origProp, onChange);
42829
+ if (hasTarget) {
42830
+ this.installPropWatcher(target, origProp, onChange);
42831
+ }
42832
+ } else if (initOnly) {
42833
+ this.installPropWatcher(alias, origProp, _classPrivateFieldGet(_initOnlyCallback, this));
42834
+ if (!this.metaManager.globalMeta.meta._initOnlySettings) {
42835
+ this.metaManager.globalMeta.meta._initOnlySettings = [];
42836
+ }
42837
+ this.metaManager.globalMeta.meta._initOnlySettings.push(alias);
42818
42838
  }
42819
42839
  });
42820
42840
  }
@@ -53486,7 +53506,7 @@ class AutoRowSize extends _base.BasePlugin {
53486
53506
  this.inProgress = false;
53487
53507
 
53488
53508
  // @TODO Should call once per render cycle, currently fired separately in different plugins
53489
- this.hot.view.adjustElementsSize(true);
53509
+ this.hot.view.adjustElementsSize();
53490
53510
 
53491
53511
  // tmp
53492
53512
  if (this.hot.view._wt.wtOverlays.inlineStartOverlay.needFullRender) {
@@ -53510,7 +53530,7 @@ class AutoRowSize extends _base.BasePlugin {
53510
53530
  loop();
53511
53531
  } else {
53512
53532
  this.inProgress = false;
53513
- this.hot.view.adjustElementsSize(false);
53533
+ this.hot.view.adjustElementsSize();
53514
53534
  }
53515
53535
  }
53516
53536
 
@@ -54508,7 +54528,7 @@ class CollapsibleColumns extends _base.BasePlugin {
54508
54528
  }
54509
54529
  this.hot.runHooks(actionTranslator.afterHook, currentCollapsedColumns, destinationCollapsedColumns, isActionPossible, isActionPerformed);
54510
54530
  this.hot.render();
54511
- this.hot.view.adjustElementsSize(true);
54531
+ this.hot.view.adjustElementsSize();
54512
54532
  }
54513
54533
 
54514
54534
  /**
@@ -66485,7 +66505,7 @@ class Filters extends _base.BasePlugin {
66485
66505
  }
66486
66506
  }
66487
66507
  this.hot.runHooks('afterFilter', conditions);
66488
- this.hot.view.adjustElementsSize(true);
66508
+ this.hot.view.adjustElementsSize();
66489
66509
  this.hot.render();
66490
66510
  if (this.hot.selection.isSelected()) {
66491
66511
  this.hot.selectCell(navigableHeaders ? -1 : 0, this.hot.getSelectedRangeLast().highlight.col);
@@ -73857,7 +73877,7 @@ function hideColumnItem(hiddenColumnsPlugin) {
73857
73877
  this.deselectCell();
73858
73878
  }
73859
73879
  this.render();
73860
- this.view.adjustElementsSize(true);
73880
+ this.view.adjustElementsSize();
73861
73881
  },
73862
73882
  disabled: false,
73863
73883
  hidden() {
@@ -73909,7 +73929,7 @@ function showColumnItem(hiddenColumnsPlugin) {
73909
73929
  // We render columns at first. It was needed for getting fixed columns.
73910
73930
  // Please take a look at #6864 for broader description.
73911
73931
  this.render();
73912
- this.view.adjustElementsSize(true);
73932
+ this.view.adjustElementsSize();
73913
73933
  const allColumnsSelected = endVisualColumn - startVisualColumn + 1 === this.countCols();
73914
73934
 
73915
73935
  // When all headers needs to be selected then do nothing. The header selection is
@@ -74549,7 +74569,7 @@ function hideRowItem(hiddenRowsPlugin) {
74549
74569
  this.deselectCell();
74550
74570
  }
74551
74571
  this.render();
74552
- this.view.adjustElementsSize(true);
74572
+ this.view.adjustElementsSize();
74553
74573
  },
74554
74574
  disabled: false,
74555
74575
  hidden() {
@@ -74601,7 +74621,7 @@ function showRowItem(hiddenRowsPlugin) {
74601
74621
  // We render rows at first. It was needed for getting fixed rows.
74602
74622
  // Please take a look at #6864 for broader description.
74603
74623
  this.render();
74604
- this.view.adjustElementsSize(true);
74624
+ this.view.adjustElementsSize();
74605
74625
  const allRowsSelected = endVisualRow - startVisualRow + 1 === this.countRows();
74606
74626
 
74607
74627
  // When all headers needs to be selected then do nothing. The header selection is
@@ -74915,7 +74935,7 @@ function freezeColumnItem(manualColumnFreezePlugin) {
74915
74935
  }] = selected;
74916
74936
  manualColumnFreezePlugin.freezeColumn(selectedColumn);
74917
74937
  this.render();
74918
- this.view.adjustElementsSize(true);
74938
+ this.view.adjustElementsSize();
74919
74939
  },
74920
74940
  hidden() {
74921
74941
  const selection = this.getSelectedRange();
@@ -74962,7 +74982,7 @@ function unfreezeColumnItem(manualColumnFreezePlugin) {
74962
74982
  }] = selected;
74963
74983
  manualColumnFreezePlugin.unfreezeColumn(selectedColumn);
74964
74984
  this.render();
74965
- this.view.adjustElementsSize(true);
74985
+ this.view.adjustElementsSize();
74966
74986
  },
74967
74987
  hidden() {
74968
74988
  const selection = this.getSelectedRange();
@@ -75664,7 +75684,7 @@ function _onMouseUp() {
75664
75684
  if (movePerformed === true) {
75665
75685
  this.persistentStateSave();
75666
75686
  this.hot.render();
75667
- this.hot.view.adjustElementsSize(true);
75687
+ this.hot.view.adjustElementsSize();
75668
75688
  const selectionStart = this.hot.toVisualColumn(firstMovedPhysicalColumn);
75669
75689
  const selectionEnd = selectionStart + columnsLen - 1;
75670
75690
  this.hot.selectColumns(selectionStart, selectionEnd);
@@ -76360,7 +76380,7 @@ class ManualColumnResize extends _base.BasePlugin {
76360
76380
  const render = () => {
76361
76381
  this.hot.forceFullRender = true;
76362
76382
  this.hot.view.render(); // updates all
76363
- this.hot.view.adjustElementsSize(true);
76383
+ this.hot.view.adjustElementsSize();
76364
76384
  };
76365
76385
  const resize = (column, forceRender) => {
76366
76386
  const hookNewSize = this.hot.runHooks('beforeColumnResize', _classPrivateFieldGet(_newSize, this), column, true);
@@ -76525,7 +76545,7 @@ function _onMouseUp() {
76525
76545
  const render = () => {
76526
76546
  this.hot.forceFullRender = true;
76527
76547
  this.hot.view.render(); // updates all
76528
- this.hot.view.adjustElementsSize(true);
76548
+ this.hot.view.adjustElementsSize();
76529
76549
  };
76530
76550
  const resize = (column, forceRender) => {
76531
76551
  this.hot.runHooks('beforeColumnResize', _classPrivateFieldGet(_newSize, this), column, false);
@@ -77247,7 +77267,7 @@ function _onMouseUp() {
77247
77267
  if (movePerformed === true) {
77248
77268
  this.persistentStateSave();
77249
77269
  this.hot.render();
77250
- this.hot.view.adjustElementsSize(true);
77270
+ this.hot.view.adjustElementsSize();
77251
77271
  const selectionStart = this.hot.toVisualRow(firstMovedPhysicalRow);
77252
77272
  const selectionEnd = selectionStart + rowsLen - 1;
77253
77273
  this.hot.selectRows(selectionStart, selectionEnd);
@@ -77934,7 +77954,7 @@ class ManualRowResize extends _base.BasePlugin {
77934
77954
  const render = () => {
77935
77955
  this.hot.forceFullRender = true;
77936
77956
  this.hot.view.render(); // updates all
77937
- this.hot.view.adjustElementsSize(true);
77957
+ this.hot.view.adjustElementsSize();
77938
77958
  };
77939
77959
  const resize = (row, forceRender) => {
77940
77960
  const hookNewSize = this.hot.runHooks('beforeRowResize', this.getActualRowHeight(row), row, true);
@@ -78063,7 +78083,7 @@ function _onMouseUp() {
78063
78083
  const render = () => {
78064
78084
  this.hot.forceFullRender = true;
78065
78085
  this.hot.view.render(); // updates all
78066
- this.hot.view.adjustElementsSize(true);
78086
+ this.hot.view.adjustElementsSize();
78067
78087
  };
78068
78088
  const runHooks = (row, forceRender) => {
78069
78089
  this.hot.runHooks('beforeRowResize', this.getActualRowHeight(row), row, false);