@handsontable/react 14.1.0 → 14.2.0-next-7ae341f-20240229

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var ReactDOM = require('react-dom');
7
7
  var Handsontable = require('handsontable/base');
8
+ var registry$1 = require('handsontable/renderers/registry');
9
+ var registry = require('handsontable/editors/registry');
8
10
 
9
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
12
 
@@ -310,23 +312,27 @@ function getExtendedEditorElement(children, editorCache) {
310
312
  * @param {React.ReactElement} rElement React element to be used as a base for the component.
311
313
  * @param {Object} props Props to be passed to the cloned element.
312
314
  * @param {Document} [ownerDocument] The owner document to set the portal up into.
315
+ * @param {String} portalKey The key to be used for the portal.
316
+ * @param {HTMLElement} [cachedContainer] The cached container to be used for the portal.
313
317
  * @returns {{portal: React.ReactPortal, portalContainer: HTMLElement}} An object containing the portal and its container.
314
318
  */
315
319
  function createPortal(rElement, props) {
316
320
  var ownerDocument = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document;
321
+ var portalKey = arguments.length > 3 ? arguments[3] : undefined;
322
+ var cachedContainer = arguments.length > 4 ? arguments[4] : undefined;
317
323
  if (!ownerDocument) {
318
324
  ownerDocument = document;
319
325
  }
320
326
  if (!bulkComponentContainer) {
321
327
  bulkComponentContainer = ownerDocument.createDocumentFragment();
322
328
  }
323
- var portalContainer = ownerDocument.createElement('DIV');
329
+ var portalContainer = cachedContainer !== null && cachedContainer !== void 0 ? cachedContainer : ownerDocument.createElement('DIV');
324
330
  bulkComponentContainer.appendChild(portalContainer);
325
331
  var extendedRendererElement = React__default["default"].cloneElement(rElement, _objectSpread2({
326
332
  key: "".concat(props.row, "-").concat(props.col)
327
333
  }, props));
328
334
  return {
329
- portal: ReactDOM__default["default"].createPortal(extendedRendererElement, portalContainer, "".concat(props.row, "-").concat(props.col, "-").concat(Math.random())),
335
+ portal: ReactDOM__default["default"].createPortal(extendedRendererElement, portalContainer, portalKey),
330
336
  portalContainer: portalContainer
331
337
  };
332
338
  }
@@ -511,7 +517,7 @@ var RenderersPortalManager = /*#__PURE__*/function (_React$Component) {
511
517
  return RenderersPortalManager;
512
518
  }(React__default["default"].Component);
513
519
 
514
- var version="14.1.0";
520
+ var version="14.2.0-next-7ae341f-20240229";
515
521
 
516
522
  function createCommonjsModule(fn, module) {
517
523
  return module = { exports: {} }, fn(module, module.exports), module.exports;
@@ -1692,9 +1698,17 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1692
1698
  */
1693
1699
  _this.renderersPortalManager = null;
1694
1700
  /**
1695
- * Array containing the portals cashed to be rendered in bulk after Handsontable's render cycle.
1701
+ * Map that stores React portals.
1702
+ * @type {Map<string, React.ReactPortal>}
1696
1703
  */
1697
- _this.portalCacheArray = [];
1704
+ _this.portalCache = new Map();
1705
+ /**
1706
+ * Portal Container Cache
1707
+ *
1708
+ * @private
1709
+ * @type {Map}
1710
+ */
1711
+ _this.portalContainerCache = new Map();
1698
1712
  /**
1699
1713
  * The rendered cells cache.
1700
1714
  *
@@ -1746,6 +1760,16 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1746
1760
  set: function set(hotInstance) {
1747
1761
  this.__hotInstance = hotInstance;
1748
1762
  }
1763
+ /**
1764
+ * Get Portal Container Cache
1765
+ *
1766
+ * @returns {Map}
1767
+ */
1768
+ }, {
1769
+ key: "getPortalContainerCache",
1770
+ value: function getPortalContainerCache() {
1771
+ return this.portalContainerCache;
1772
+ }
1749
1773
  /**
1750
1774
  * Get the rendered table cell cache.
1751
1775
  *
@@ -1808,30 +1832,44 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1808
1832
  key: "getRendererWrapper",
1809
1833
  value: function getRendererWrapper(rendererElement) {
1810
1834
  var hotTableComponent = this;
1811
- return function (instance, TD, row, col, prop, value, cellProperties) {
1835
+ return function __internalRenderer(instance, TD, row, col, prop, value, cellProperties) {
1812
1836
  var renderedCellCache = hotTableComponent.getRenderedCellCache();
1813
- if (renderedCellCache.has("".concat(row, "-").concat(col))) {
1814
- TD.innerHTML = renderedCellCache.get("".concat(row, "-").concat(col)).innerHTML;
1837
+ var portalContainerCache = hotTableComponent.getPortalContainerCache();
1838
+ var key = "".concat(row, "-").concat(col);
1839
+ // Handsontable.Core type is missing guid
1840
+ var instanceGuid = instance.guid;
1841
+ var portalContainerKey = "".concat(instanceGuid, "-").concat(key);
1842
+ var portalKey = "".concat(key, "-").concat(instanceGuid);
1843
+ if (renderedCellCache.has(key)) {
1844
+ TD.innerHTML = renderedCellCache.get(key).innerHTML;
1815
1845
  }
1816
1846
  if (TD && !TD.getAttribute('ghost-table')) {
1817
- var _createPortal = createPortal(rendererElement, {
1818
- TD: TD,
1819
- row: row,
1820
- col: col,
1821
- prop: prop,
1822
- value: value,
1823
- cellProperties: cellProperties,
1824
- isRenderer: true
1825
- }, TD.ownerDocument),
1826
- portal = _createPortal.portal,
1827
- portalContainer = _createPortal.portalContainer;
1847
+ var cachedPortal = hotTableComponent.portalCache.get(portalKey);
1848
+ var cachedPortalContainer = portalContainerCache.get(portalContainerKey);
1828
1849
  while (TD.firstChild) {
1829
1850
  TD.removeChild(TD.firstChild);
1830
1851
  }
1831
- TD.appendChild(portalContainer);
1832
- hotTableComponent.portalCacheArray.push(portal);
1852
+ // if portal already exists, do not recreate
1853
+ if (cachedPortal && cachedPortalContainer) {
1854
+ TD.appendChild(cachedPortalContainer);
1855
+ } else {
1856
+ var _createPortal = createPortal(rendererElement, {
1857
+ TD: TD,
1858
+ row: row,
1859
+ col: col,
1860
+ prop: prop,
1861
+ value: value,
1862
+ cellProperties: cellProperties,
1863
+ isRenderer: true
1864
+ }, TD.ownerDocument, portalKey, cachedPortalContainer),
1865
+ portal = _createPortal.portal,
1866
+ portalContainer = _createPortal.portalContainer;
1867
+ portalContainerCache.set(portalContainerKey, portalContainer);
1868
+ TD.appendChild(portalContainer);
1869
+ hotTableComponent.portalCache.set(portalKey, portal);
1870
+ }
1833
1871
  }
1834
- renderedCellCache.set("".concat(row, "-").concat(col), TD);
1872
+ renderedCellCache.set(key, TD);
1835
1873
  return TD;
1836
1874
  };
1837
1875
  }
@@ -1940,13 +1978,23 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1940
1978
  if (globalEditorNode) {
1941
1979
  newSettings.editor = this.getEditorClass(globalEditorNode, GLOBAL_EDITOR_SCOPE);
1942
1980
  } else {
1943
- newSettings.editor = this.props.editor || (this.props.settings ? this.props.settings.editor : void 0);
1981
+ var _this$props$settings;
1982
+ if (this.props.editor || (_this$props$settings = this.props.settings) !== null && _this$props$settings !== void 0 && _this$props$settings.editor) {
1983
+ newSettings.editor = this.props.editor || this.props.settings.editor;
1984
+ } else {
1985
+ newSettings.editor = registry.getEditor('text');
1986
+ }
1944
1987
  }
1945
1988
  if (globalRendererNode) {
1946
1989
  newSettings.renderer = this.getRendererWrapper(globalRendererNode);
1947
1990
  this.componentRendererColumns.set('global', true);
1948
1991
  } else {
1949
- newSettings.renderer = this.props.renderer || (this.props.settings ? this.props.settings.renderer : void 0);
1992
+ var _this$props$settings2;
1993
+ if (this.props.renderer || (_this$props$settings2 = this.props.settings) !== null && _this$props$settings2 !== void 0 && _this$props$settings2.renderer) {
1994
+ newSettings.renderer = this.props.renderer || this.props.settings.renderer;
1995
+ } else {
1996
+ newSettings.renderer = registry$1.getRenderer('text');
1997
+ }
1950
1998
  }
1951
1999
  return newSettings;
1952
2000
  }
@@ -1982,6 +2030,7 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1982
2030
  }, {
1983
2031
  key: "handsontableBeforeViewRender",
1984
2032
  value: function handsontableBeforeViewRender() {
2033
+ this.portalCache.clear();
1985
2034
  this.getRenderedCellCache().clear();
1986
2035
  }
1987
2036
  /**
@@ -1990,11 +2039,8 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1990
2039
  }, {
1991
2040
  key: "handsontableAfterViewRender",
1992
2041
  value: function handsontableAfterViewRender() {
1993
- var _this3 = this;
1994
2042
  this.renderersPortalManager.setState({
1995
- portals: _toConsumableArray(this.portalCacheArray)
1996
- }, function () {
1997
- _this3.portalCacheArray = [];
2043
+ portals: _toConsumableArray(this.portalCache.values())
1998
2044
  });
1999
2045
  }
2000
2046
  /**
@@ -2030,14 +2076,14 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
2030
2076
  }, {
2031
2077
  key: "componentDidMount",
2032
2078
  value: function componentDidMount() {
2033
- var _this4 = this;
2079
+ var _this3 = this;
2034
2080
  var newGlobalSettings = this.createNewGlobalSettings();
2035
2081
  this.hotInstance = new Handsontable__default["default"].Core(this.hotElementRef, newGlobalSettings);
2036
2082
  this.hotInstance.addHook('beforeViewRender', function () {
2037
- return _this4.handsontableBeforeViewRender();
2083
+ return _this3.handsontableBeforeViewRender();
2038
2084
  });
2039
2085
  this.hotInstance.addHook('afterViewRender', function () {
2040
- return _this4.handsontableAfterViewRender();
2086
+ return _this3.handsontableAfterViewRender();
2041
2087
  });
2042
2088
  // `init` missing in Handsontable's type definitions.
2043
2089
  this.hotInstance.init();
@@ -2071,7 +2117,7 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
2071
2117
  }, {
2072
2118
  key: "render",
2073
2119
  value: function render() {
2074
- var _this5 = this;
2120
+ var _this4 = this;
2075
2121
  var isHotColumn = function isHotColumn(childNode) {
2076
2122
  return childNode.type === HotColumn;
2077
2123
  };
@@ -2081,14 +2127,14 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
2081
2127
  return isHotColumn(childNode);
2082
2128
  }).map(function (childNode, columnIndex) {
2083
2129
  return React__default["default"].cloneElement(childNode, {
2084
- _componentRendererColumns: _this5.componentRendererColumns,
2085
- _emitColumnSettings: _this5.setHotColumnSettings.bind(_this5),
2130
+ _componentRendererColumns: _this4.componentRendererColumns,
2131
+ _emitColumnSettings: _this4.setHotColumnSettings.bind(_this4),
2086
2132
  _columnIndex: columnIndex,
2087
- _getChildElementByType: getChildElementByType.bind(_this5),
2088
- _getRendererWrapper: _this5.getRendererWrapper.bind(_this5),
2089
- _getEditorClass: _this5.getEditorClass.bind(_this5),
2090
- _getOwnerDocument: _this5.getOwnerDocument.bind(_this5),
2091
- _getEditorCache: _this5.getEditorCache.bind(_this5),
2133
+ _getChildElementByType: getChildElementByType.bind(_this4),
2134
+ _getRendererWrapper: _this4.getRendererWrapper.bind(_this4),
2135
+ _getEditorClass: _this4.getEditorClass.bind(_this4),
2136
+ _getOwnerDocument: _this4.getOwnerDocument.bind(_this4),
2137
+ _getEditorCache: _this4.getEditorCache.bind(_this4),
2092
2138
  children: childNode.props.children
2093
2139
  });
2094
2140
  });
@@ -2403,4 +2449,5 @@ var BaseEditorComponent = /*#__PURE__*/function (_React$Component) {
2403
2449
  exports.BaseEditorComponent = BaseEditorComponent;
2404
2450
  exports.HotColumn = HotColumn;
2405
2451
  exports.HotTable = HotTable;
2452
+ exports.HotTableClass = HotTableClass;
2406
2453
  exports["default"] = HotTable;
@@ -25,13 +25,13 @@
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: 14.1.0 (built at Tue Jan 16 2024 10:29:21 GMT+0100 (Central European Standard Time))
28
+ * Version: 14.2.0-next-7ae341f-20240229 (built at Thu Feb 29 2024 08:45:57 GMT+0000 (Coordinated Universal Time))
29
29
  */
30
30
  (function (global, factory) {
31
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('react-dom'), require('handsontable/base')) :
32
- typeof define === 'function' && define.amd ? define(['exports', 'react', 'react-dom', 'handsontable/base'], factory) :
33
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.Handsontable = global.Handsontable || {}, global.Handsontable.react = {}), global.React, global.ReactDOM, global.Handsontable));
34
- })(this, (function (exports, React, ReactDOM, Handsontable) { 'use strict';
31
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('react-dom'), require('handsontable/base'), require('handsontable/renderers/registry'), require('handsontable/editors/registry')) :
32
+ typeof define === 'function' && define.amd ? define(['exports', 'react', 'react-dom', 'handsontable/base', 'handsontable/renderers/registry', 'handsontable/editors/registry'], factory) :
33
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.Handsontable = global.Handsontable || {}, global.Handsontable.react = {}), global.React, global.ReactDOM, global.Handsontable, global.Handsontable.renderers, global.Handsontable.editors));
34
+ })(this, (function (exports, React, ReactDOM, Handsontable, registry$1, registry) { 'use strict';
35
35
 
36
36
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
37
37
 
@@ -337,23 +337,27 @@ function getExtendedEditorElement(children, editorCache) {
337
337
  * @param {React.ReactElement} rElement React element to be used as a base for the component.
338
338
  * @param {Object} props Props to be passed to the cloned element.
339
339
  * @param {Document} [ownerDocument] The owner document to set the portal up into.
340
+ * @param {String} portalKey The key to be used for the portal.
341
+ * @param {HTMLElement} [cachedContainer] The cached container to be used for the portal.
340
342
  * @returns {{portal: React.ReactPortal, portalContainer: HTMLElement}} An object containing the portal and its container.
341
343
  */
342
344
  function createPortal(rElement, props) {
343
345
  var ownerDocument = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document;
346
+ var portalKey = arguments.length > 3 ? arguments[3] : undefined;
347
+ var cachedContainer = arguments.length > 4 ? arguments[4] : undefined;
344
348
  if (!ownerDocument) {
345
349
  ownerDocument = document;
346
350
  }
347
351
  if (!bulkComponentContainer) {
348
352
  bulkComponentContainer = ownerDocument.createDocumentFragment();
349
353
  }
350
- var portalContainer = ownerDocument.createElement('DIV');
354
+ var portalContainer = cachedContainer !== null && cachedContainer !== void 0 ? cachedContainer : ownerDocument.createElement('DIV');
351
355
  bulkComponentContainer.appendChild(portalContainer);
352
356
  var extendedRendererElement = React__default["default"].cloneElement(rElement, _objectSpread2({
353
357
  key: "".concat(props.row, "-").concat(props.col)
354
358
  }, props));
355
359
  return {
356
- portal: ReactDOM__default["default"].createPortal(extendedRendererElement, portalContainer, "".concat(props.row, "-").concat(props.col, "-").concat(Math.random())),
360
+ portal: ReactDOM__default["default"].createPortal(extendedRendererElement, portalContainer, portalKey),
357
361
  portalContainer: portalContainer
358
362
  };
359
363
  }
@@ -538,7 +542,7 @@ var RenderersPortalManager = /*#__PURE__*/function (_React$Component) {
538
542
  return RenderersPortalManager;
539
543
  }(React__default["default"].Component);
540
544
 
541
- var version="14.1.0";
545
+ var version="14.2.0-next-7ae341f-20240229";
542
546
 
543
547
  function createCommonjsModule(fn, module) {
544
548
  return module = { exports: {} }, fn(module, module.exports), module.exports;
@@ -941,9 +945,17 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
941
945
  */
942
946
  _this.renderersPortalManager = null;
943
947
  /**
944
- * Array containing the portals cashed to be rendered in bulk after Handsontable's render cycle.
948
+ * Map that stores React portals.
949
+ * @type {Map<string, React.ReactPortal>}
945
950
  */
946
- _this.portalCacheArray = [];
951
+ _this.portalCache = new Map();
952
+ /**
953
+ * Portal Container Cache
954
+ *
955
+ * @private
956
+ * @type {Map}
957
+ */
958
+ _this.portalContainerCache = new Map();
947
959
  /**
948
960
  * The rendered cells cache.
949
961
  *
@@ -995,6 +1007,16 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
995
1007
  set: function set(hotInstance) {
996
1008
  this.__hotInstance = hotInstance;
997
1009
  }
1010
+ /**
1011
+ * Get Portal Container Cache
1012
+ *
1013
+ * @returns {Map}
1014
+ */
1015
+ }, {
1016
+ key: "getPortalContainerCache",
1017
+ value: function getPortalContainerCache() {
1018
+ return this.portalContainerCache;
1019
+ }
998
1020
  /**
999
1021
  * Get the rendered table cell cache.
1000
1022
  *
@@ -1057,30 +1079,44 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1057
1079
  key: "getRendererWrapper",
1058
1080
  value: function getRendererWrapper(rendererElement) {
1059
1081
  var hotTableComponent = this;
1060
- return function (instance, TD, row, col, prop, value, cellProperties) {
1082
+ return function __internalRenderer(instance, TD, row, col, prop, value, cellProperties) {
1061
1083
  var renderedCellCache = hotTableComponent.getRenderedCellCache();
1062
- if (renderedCellCache.has("".concat(row, "-").concat(col))) {
1063
- TD.innerHTML = renderedCellCache.get("".concat(row, "-").concat(col)).innerHTML;
1084
+ var portalContainerCache = hotTableComponent.getPortalContainerCache();
1085
+ var key = "".concat(row, "-").concat(col);
1086
+ // Handsontable.Core type is missing guid
1087
+ var instanceGuid = instance.guid;
1088
+ var portalContainerKey = "".concat(instanceGuid, "-").concat(key);
1089
+ var portalKey = "".concat(key, "-").concat(instanceGuid);
1090
+ if (renderedCellCache.has(key)) {
1091
+ TD.innerHTML = renderedCellCache.get(key).innerHTML;
1064
1092
  }
1065
1093
  if (TD && !TD.getAttribute('ghost-table')) {
1066
- var _createPortal = createPortal(rendererElement, {
1067
- TD: TD,
1068
- row: row,
1069
- col: col,
1070
- prop: prop,
1071
- value: value,
1072
- cellProperties: cellProperties,
1073
- isRenderer: true
1074
- }, TD.ownerDocument),
1075
- portal = _createPortal.portal,
1076
- portalContainer = _createPortal.portalContainer;
1094
+ var cachedPortal = hotTableComponent.portalCache.get(portalKey);
1095
+ var cachedPortalContainer = portalContainerCache.get(portalContainerKey);
1077
1096
  while (TD.firstChild) {
1078
1097
  TD.removeChild(TD.firstChild);
1079
1098
  }
1080
- TD.appendChild(portalContainer);
1081
- hotTableComponent.portalCacheArray.push(portal);
1099
+ // if portal already exists, do not recreate
1100
+ if (cachedPortal && cachedPortalContainer) {
1101
+ TD.appendChild(cachedPortalContainer);
1102
+ } else {
1103
+ var _createPortal = createPortal(rendererElement, {
1104
+ TD: TD,
1105
+ row: row,
1106
+ col: col,
1107
+ prop: prop,
1108
+ value: value,
1109
+ cellProperties: cellProperties,
1110
+ isRenderer: true
1111
+ }, TD.ownerDocument, portalKey, cachedPortalContainer),
1112
+ portal = _createPortal.portal,
1113
+ portalContainer = _createPortal.portalContainer;
1114
+ portalContainerCache.set(portalContainerKey, portalContainer);
1115
+ TD.appendChild(portalContainer);
1116
+ hotTableComponent.portalCache.set(portalKey, portal);
1117
+ }
1082
1118
  }
1083
- renderedCellCache.set("".concat(row, "-").concat(col), TD);
1119
+ renderedCellCache.set(key, TD);
1084
1120
  return TD;
1085
1121
  };
1086
1122
  }
@@ -1189,13 +1225,23 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1189
1225
  if (globalEditorNode) {
1190
1226
  newSettings.editor = this.getEditorClass(globalEditorNode, GLOBAL_EDITOR_SCOPE);
1191
1227
  } else {
1192
- newSettings.editor = this.props.editor || (this.props.settings ? this.props.settings.editor : void 0);
1228
+ var _this$props$settings;
1229
+ if (this.props.editor || (_this$props$settings = this.props.settings) !== null && _this$props$settings !== void 0 && _this$props$settings.editor) {
1230
+ newSettings.editor = this.props.editor || this.props.settings.editor;
1231
+ } else {
1232
+ newSettings.editor = registry.getEditor('text');
1233
+ }
1193
1234
  }
1194
1235
  if (globalRendererNode) {
1195
1236
  newSettings.renderer = this.getRendererWrapper(globalRendererNode);
1196
1237
  this.componentRendererColumns.set('global', true);
1197
1238
  } else {
1198
- newSettings.renderer = this.props.renderer || (this.props.settings ? this.props.settings.renderer : void 0);
1239
+ var _this$props$settings2;
1240
+ if (this.props.renderer || (_this$props$settings2 = this.props.settings) !== null && _this$props$settings2 !== void 0 && _this$props$settings2.renderer) {
1241
+ newSettings.renderer = this.props.renderer || this.props.settings.renderer;
1242
+ } else {
1243
+ newSettings.renderer = registry$1.getRenderer('text');
1244
+ }
1199
1245
  }
1200
1246
  return newSettings;
1201
1247
  }
@@ -1231,6 +1277,7 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1231
1277
  }, {
1232
1278
  key: "handsontableBeforeViewRender",
1233
1279
  value: function handsontableBeforeViewRender() {
1280
+ this.portalCache.clear();
1234
1281
  this.getRenderedCellCache().clear();
1235
1282
  }
1236
1283
  /**
@@ -1239,11 +1286,8 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1239
1286
  }, {
1240
1287
  key: "handsontableAfterViewRender",
1241
1288
  value: function handsontableAfterViewRender() {
1242
- var _this3 = this;
1243
1289
  this.renderersPortalManager.setState({
1244
- portals: _toConsumableArray(this.portalCacheArray)
1245
- }, function () {
1246
- _this3.portalCacheArray = [];
1290
+ portals: _toConsumableArray(this.portalCache.values())
1247
1291
  });
1248
1292
  }
1249
1293
  /**
@@ -1279,14 +1323,14 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1279
1323
  }, {
1280
1324
  key: "componentDidMount",
1281
1325
  value: function componentDidMount() {
1282
- var _this4 = this;
1326
+ var _this3 = this;
1283
1327
  var newGlobalSettings = this.createNewGlobalSettings();
1284
1328
  this.hotInstance = new Handsontable__default["default"].Core(this.hotElementRef, newGlobalSettings);
1285
1329
  this.hotInstance.addHook('beforeViewRender', function () {
1286
- return _this4.handsontableBeforeViewRender();
1330
+ return _this3.handsontableBeforeViewRender();
1287
1331
  });
1288
1332
  this.hotInstance.addHook('afterViewRender', function () {
1289
- return _this4.handsontableAfterViewRender();
1333
+ return _this3.handsontableAfterViewRender();
1290
1334
  });
1291
1335
  // `init` missing in Handsontable's type definitions.
1292
1336
  this.hotInstance.init();
@@ -1320,7 +1364,7 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1320
1364
  }, {
1321
1365
  key: "render",
1322
1366
  value: function render() {
1323
- var _this5 = this;
1367
+ var _this4 = this;
1324
1368
  var isHotColumn = function isHotColumn(childNode) {
1325
1369
  return childNode.type === HotColumn;
1326
1370
  };
@@ -1330,14 +1374,14 @@ var HotTableClass = /*#__PURE__*/function (_React$Component) {
1330
1374
  return isHotColumn(childNode);
1331
1375
  }).map(function (childNode, columnIndex) {
1332
1376
  return React__default["default"].cloneElement(childNode, {
1333
- _componentRendererColumns: _this5.componentRendererColumns,
1334
- _emitColumnSettings: _this5.setHotColumnSettings.bind(_this5),
1377
+ _componentRendererColumns: _this4.componentRendererColumns,
1378
+ _emitColumnSettings: _this4.setHotColumnSettings.bind(_this4),
1335
1379
  _columnIndex: columnIndex,
1336
- _getChildElementByType: getChildElementByType.bind(_this5),
1337
- _getRendererWrapper: _this5.getRendererWrapper.bind(_this5),
1338
- _getEditorClass: _this5.getEditorClass.bind(_this5),
1339
- _getOwnerDocument: _this5.getOwnerDocument.bind(_this5),
1340
- _getEditorCache: _this5.getEditorCache.bind(_this5),
1380
+ _getChildElementByType: getChildElementByType.bind(_this4),
1381
+ _getRendererWrapper: _this4.getRendererWrapper.bind(_this4),
1382
+ _getEditorClass: _this4.getEditorClass.bind(_this4),
1383
+ _getOwnerDocument: _this4.getOwnerDocument.bind(_this4),
1384
+ _getEditorCache: _this4.getEditorCache.bind(_this4),
1341
1385
  children: childNode.props.children
1342
1386
  });
1343
1387
  });
@@ -1652,6 +1696,7 @@ var BaseEditorComponent = /*#__PURE__*/function (_React$Component) {
1652
1696
  exports.BaseEditorComponent = BaseEditorComponent;
1653
1697
  exports.HotColumn = HotColumn;
1654
1698
  exports.HotTable = HotTable;
1699
+ exports.HotTableClass = HotTableClass;
1655
1700
  exports["default"] = HotTable;
1656
1701
 
1657
1702
  Object.defineProperty(exports, '__esModule', { value: true });