handsontable 0.0.0-next-21b8f14-20221206 → 0.0.0-next-98bffa5-20221207

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.

@@ -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-21b8f14-20221206
29
- * Release date: 25/10/2022 (built at 06/12/2022 11:15:30)
28
+ * Version: 0.0.0-next-98bffa5-20221207
29
+ * Release date: 25/10/2022 (built at 07/12/2022 08:00:21)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -2846,7 +2846,7 @@ var domMessages = {
2846
2846
  function _injectProductInfo(key, element) {
2847
2847
  var hasValidType = !isEmpty(key);
2848
2848
  var isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
2849
- var hotVersion = "0.0.0-next-21b8f14-20221206";
2849
+ var hotVersion = "0.0.0-next-98bffa5-20221207";
2850
2850
  var keyValidityDate;
2851
2851
  var consoleMessageState = 'invalid';
2852
2852
  var domMessageState = 'invalid';
@@ -12968,6 +12968,7 @@ var _classCallCheck2 = _interopRequireDefault(__webpack_require__(2));
12968
12968
  var _createClass2 = _interopRequireDefault(__webpack_require__(3));
12969
12969
  var _unicode = __webpack_require__(90);
12970
12970
  var _event = __webpack_require__(65);
12971
+ var _element = __webpack_require__(16);
12971
12972
  var _registry = __webpack_require__(106);
12972
12973
  var _eventManager = _interopRequireDefault(__webpack_require__(42));
12973
12974
  var _mixed = __webpack_require__(23);
@@ -13191,10 +13192,12 @@ var EditorManager = /*#__PURE__*/function () {
13191
13192
  // Getting values using the modified coordinates.
13192
13193
  this.cellProperties = this.instance.getCellMeta(visualRowToCheck, visualColumnToCheck);
13193
13194
  var activeElement = this.instance.rootDocument.activeElement;
13194
- if (activeElement) {
13195
- // Blurring the activeElement removes unwanted border around the focusable element
13196
- // (and resets activeElement prop). Without blurring the activeElement points to the
13197
- // previously focusable element after clicking onto the cell (#6877).
13195
+
13196
+ // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
13197
+ // and resets the `document.activeElement` property. The blurring should happen only when the
13198
+ // previously selected input element has not belonged to the Handsontable editor. If blurring is
13199
+ // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
13200
+ if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
13198
13201
  activeElement.blur();
13199
13202
  }
13200
13203
  if (!this.isCellEditable()) {
@@ -23079,7 +23082,6 @@ function Core(rootElement, userSettings) {
23079
23082
  rowDelta = _datamap$createRow.delta,
23080
23083
  startRowPhysicalIndex = _datamap$createRow.startPhysicalIndex;
23081
23084
  if (rowDelta) {
23082
- metaManager.createRow(startRowPhysicalIndex, amount);
23083
23085
  var currentSelectedRange = selection.selectedRange.current();
23084
23086
  var currentFromRange = currentSelectedRange === null || currentSelectedRange === void 0 ? void 0 : currentSelectedRange.from;
23085
23087
  var currentFromRow = currentFromRange === null || currentFromRange === void 0 ? void 0 : currentFromRange.row;
@@ -23135,7 +23137,6 @@ function Core(rootElement, userSettings) {
23135
23137
  colDelta = _datamap$createCol.delta,
23136
23138
  startColumnPhysicalIndex = _datamap$createCol.startPhysicalIndex;
23137
23139
  if (colDelta) {
23138
- metaManager.createColumn(startColumnPhysicalIndex, amount);
23139
23140
  if (Array.isArray(tableMeta.colHeaders)) {
23140
23141
  var spliceArray = [instance.toVisualColumn(startColumnPhysicalIndex), 0];
23141
23142
  spliceArray.length += colDelta; // inserts empty (undefined) elements at the end of an array
@@ -23198,7 +23199,6 @@ function Core(rootElement, userSettings) {
23198
23199
  if (!wasRemoved) {
23199
23200
  return;
23200
23201
  }
23201
- metaManager.removeRow(instance.toPhysicalRow(calcIndex), groupAmount);
23202
23202
  var totalRows = instance.countRows();
23203
23203
  var fixedRowsTop = tableMeta.fixedRowsTop;
23204
23204
  if (fixedRowsTop >= calcIndex + 1) {
@@ -23244,7 +23244,6 @@ function Core(rootElement, userSettings) {
23244
23244
  if (!wasRemoved) {
23245
23245
  return;
23246
23246
  }
23247
- metaManager.removeColumn(physicalColumnIndex, groupAmount);
23248
23247
  var fixedColumnsStart = tableMeta.fixedColumnsStart;
23249
23248
  if (fixedColumnsStart >= calcIndex + 1) {
23250
23249
  tableMeta.fixedColumnsStart -= Math.min(groupAmount, fixedColumnsStart - calcIndex);
@@ -23826,9 +23825,7 @@ function Core(rootElement, userSettings) {
23826
23825
  source: source
23827
23826
  }),
23828
23827
  numberOfCreatedRows = _datamap$createRow2.delta;
23829
- if (numberOfCreatedRows >= 1) {
23830
- metaManager.createRow(null, numberOfCreatedRows);
23831
- } else {
23828
+ if (numberOfCreatedRows === 0) {
23832
23829
  skipThisChange = true;
23833
23830
  break;
23834
23831
  }
@@ -23840,9 +23837,7 @@ function Core(rootElement, userSettings) {
23840
23837
  source: source
23841
23838
  }),
23842
23839
  numberOfCreatedColumns = _datamap$createCol2.delta;
23843
- if (numberOfCreatedColumns >= 1) {
23844
- metaManager.createColumn(null, numberOfCreatedColumns);
23845
- } else {
23840
+ if (numberOfCreatedColumns === 0) {
23846
23841
  skipThisChange = true;
23847
23842
  break;
23848
23843
  }
@@ -24667,6 +24662,7 @@ function Core(rootElement, userSettings) {
24667
24662
  dataSource: dataSource,
24668
24663
  internalSource: 'updateData',
24669
24664
  source: source,
24665
+ metaManager: metaManager,
24670
24666
  firstRun: firstRun
24671
24667
  });
24672
24668
  };
@@ -24709,6 +24705,7 @@ function Core(rootElement, userSettings) {
24709
24705
  dataSource: dataSource,
24710
24706
  internalSource: 'loadData',
24711
24707
  source: source,
24708
+ metaManager: metaManager,
24712
24709
  firstRun: firstRun
24713
24710
  });
24714
24711
  };
@@ -31589,8 +31586,8 @@ __webpack_require__(63);
31589
31586
  __webpack_require__(46);
31590
31587
  __webpack_require__(77);
31591
31588
  __webpack_require__(34);
31592
- __webpack_require__(19);
31593
31589
  __webpack_require__(22);
31590
+ __webpack_require__(19);
31594
31591
  __webpack_require__(31);
31595
31592
  __webpack_require__(21);
31596
31593
  var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(29));
@@ -31637,9 +31634,9 @@ var DataMap = /*#__PURE__*/function () {
31637
31634
  /**
31638
31635
  * @param {object} instance Instance of Handsontable.
31639
31636
  * @param {Array} data Array of arrays or array of objects containing data.
31640
- * @param {TableMeta} tableMeta The table meta instance.
31637
+ * @param {MetaManager} metaManager The meta manager instance.
31641
31638
  */
31642
- function DataMap(instance, data, tableMeta) {
31639
+ function DataMap(instance, data, metaManager) {
31643
31640
  (0, _classCallCheck2.default)(this, DataMap);
31644
31641
  /**
31645
31642
  * Instance of {@link Handsontable}.
@@ -31648,13 +31645,20 @@ var DataMap = /*#__PURE__*/function () {
31648
31645
  * @type {Handsontable}
31649
31646
  */
31650
31647
  this.instance = instance;
31648
+ /**
31649
+ * Instance of {@link MetaManager}.
31650
+ *
31651
+ * @private
31652
+ * @type {MetaManager}
31653
+ */
31654
+ this.metaManager = metaManager;
31651
31655
  /**
31652
31656
  * Instance of {@link TableMeta}.
31653
31657
  *
31654
31658
  * @private
31655
31659
  * @type {TableMeta}
31656
31660
  */
31657
- this.tableMeta = tableMeta;
31661
+ this.tableMeta = metaManager.getTableMeta();
31658
31662
  /**
31659
31663
  * Reference to the original dataset.
31660
31664
  *
@@ -31889,7 +31893,9 @@ var DataMap = /*#__PURE__*/function () {
31889
31893
  }
31890
31894
  var continueProcess = this.instance.runHooks('beforeCreateRow', rowIndex, amount, source);
31891
31895
  if (continueProcess === false || physicalRowIndex === null) {
31892
- return 0;
31896
+ return {
31897
+ delta: 0
31898
+ };
31893
31899
  }
31894
31900
  var maxRows = this.tableMeta.maxRows;
31895
31901
  var columnCount = this.getSchema().length;
@@ -31931,6 +31937,15 @@ var DataMap = /*#__PURE__*/function () {
31931
31937
  if (this.instance.countSourceRows() === rowsToAdd.length) {
31932
31938
  this.instance.columnIndexMapper.initToLength(this.instance.getInitialColumnCount());
31933
31939
  }
31940
+ if (numberOfCreatedRows > 0) {
31941
+ if (index === void 0 || index === null) {
31942
+ // Creates the meta rows at the end of the rows collection without shifting the cells
31943
+ // that were defined out of the range of the dataset.
31944
+ this.metaManager.createRow(null, numberOfCreatedRows);
31945
+ } else if (source !== 'auto') {
31946
+ this.metaManager.createRow(physicalRowIndex, amount);
31947
+ }
31948
+ }
31934
31949
  this.instance.runHooks('afterCreateRow', newVisualRowIndex, numberOfCreatedRows, source);
31935
31950
  this.instance.forceFullRender = true; // used when data was changed
31936
31951
 
@@ -31972,7 +31987,9 @@ var DataMap = /*#__PURE__*/function () {
31972
31987
  }
31973
31988
  var continueProcess = this.instance.runHooks('beforeCreateCol', columnIndex, amount, source);
31974
31989
  if (continueProcess === false) {
31975
- return 0;
31990
+ return {
31991
+ delta: 0
31992
+ };
31976
31993
  }
31977
31994
  var physicalColumnIndex = countSourceCols;
31978
31995
  if (columnIndex < this.instance.countCols()) {
@@ -32008,6 +32025,15 @@ var DataMap = /*#__PURE__*/function () {
32008
32025
  nrOfColumns += 1;
32009
32026
  }
32010
32027
  this.instance.columnIndexMapper.insertIndexes(columnIndex, numberOfCreatedCols);
32028
+ if (numberOfCreatedCols > 0) {
32029
+ if (index === void 0 || index === null) {
32030
+ // Creates the meta columns at the end of the columns collection without shifting the cells
32031
+ // that were defined out of the range of the dataset.
32032
+ this.metaManager.createColumn(null, numberOfCreatedCols);
32033
+ } else if (source !== 'auto') {
32034
+ this.metaManager.createColumn(startPhysicalIndex, amount);
32035
+ }
32036
+ }
32011
32037
  var newVisualColumnIndex = this.instance.toVisualColumn(startPhysicalIndex);
32012
32038
  this.instance.runHooks('afterCreateCol', newVisualColumnIndex, numberOfCreatedCols, source);
32013
32039
  this.instance.forceFullRender = true; // used when data was changed
@@ -32032,6 +32058,7 @@ var DataMap = /*#__PURE__*/function () {
32032
32058
  }, {
32033
32059
  key: "removeRow",
32034
32060
  value: function removeRow(index) {
32061
+ var _this3 = this;
32035
32062
  var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
32036
32063
  var source = arguments.length > 2 ? arguments[2] : undefined;
32037
32064
  var rowIndex = Number.isInteger(index) ? index : -amount; // -amount = taking indexes from the end.
@@ -32059,6 +32086,12 @@ var DataMap = /*#__PURE__*/function () {
32059
32086
  this.instance.columnIndexMapper.setIndexesSequence([]);
32060
32087
  }
32061
32088
  }
32089
+ var descendingPhysicalRows = removedPhysicalIndexes.slice(0).sort(function (a, b) {
32090
+ return b - a;
32091
+ });
32092
+ descendingPhysicalRows.forEach(function (rowPhysicalIndex) {
32093
+ _this3.metaManager.removeRow(rowPhysicalIndex, 1);
32094
+ });
32062
32095
  this.instance.runHooks('afterRemoveRow', rowIndex, numberOfRemovedIndexes, removedPhysicalIndexes, source);
32063
32096
  this.instance.forceFullRender = true; // used when data was changed
32064
32097
 
@@ -32085,46 +32118,51 @@ var DataMap = /*#__PURE__*/function () {
32085
32118
  }
32086
32119
  var columnIndex = typeof index !== 'number' ? -amount : index;
32087
32120
  columnIndex = (this.instance.countCols() + columnIndex) % this.instance.countCols();
32088
- var logicColumns = this.visualColumnsToPhysical(columnIndex, amount);
32089
- var descendingLogicColumns = logicColumns.slice(0).sort(function (a, b) {
32121
+ var removedPhysicalIndexes = this.visualColumnsToPhysical(columnIndex, amount);
32122
+ var descendingPhysicalColumns = removedPhysicalIndexes.slice(0).sort(function (a, b) {
32090
32123
  return b - a;
32091
32124
  });
32092
- var actionWasNotCancelled = this.instance.runHooks('beforeRemoveCol', columnIndex, amount, logicColumns, source);
32125
+ var actionWasNotCancelled = this.instance.runHooks('beforeRemoveCol', columnIndex, amount, removedPhysicalIndexes, source);
32093
32126
  if (actionWasNotCancelled === false) {
32094
32127
  return false;
32095
32128
  }
32096
32129
  var isTableUniform = true;
32097
- var removedColumnsCount = descendingLogicColumns.length;
32130
+ var removedColumnsCount = descendingPhysicalColumns.length;
32098
32131
  var data = this.dataSource;
32099
32132
  for (var c = 0; c < removedColumnsCount; c++) {
32100
- if (isTableUniform && logicColumns[0] !== logicColumns[c] - c) {
32133
+ if (isTableUniform && removedPhysicalIndexes[0] !== removedPhysicalIndexes[c] - c) {
32101
32134
  isTableUniform = false;
32102
32135
  }
32103
32136
  }
32104
32137
  if (isTableUniform) {
32105
32138
  for (var r = 0, rlen = this.instance.countSourceRows(); r < rlen; r++) {
32106
- data[r].splice(logicColumns[0], amount);
32139
+ data[r].splice(removedPhysicalIndexes[0], amount);
32140
+ if (r === 0) {
32141
+ this.metaManager.removeColumn(removedPhysicalIndexes[0], amount);
32142
+ }
32107
32143
  }
32108
32144
  } else {
32109
32145
  for (var _r = 0, _rlen = this.instance.countSourceRows(); _r < _rlen; _r++) {
32110
32146
  for (var _c = 0; _c < removedColumnsCount; _c++) {
32111
- data[_r].splice(descendingLogicColumns[_c], 1);
32147
+ data[_r].splice(descendingPhysicalColumns[_c], 1);
32148
+ if (_r === 0) {
32149
+ this.metaManager.removeColumn(descendingPhysicalColumns[_c], 1);
32150
+ }
32112
32151
  }
32113
32152
  }
32114
32153
  }
32115
32154
 
32116
32155
  // TODO: Function `removeCol` should validate fully, probably above.
32117
32156
  if (columnIndex < this.instance.countCols()) {
32118
- this.instance.columnIndexMapper.removeIndexes(logicColumns);
32157
+ this.instance.columnIndexMapper.removeIndexes(removedPhysicalIndexes);
32119
32158
 
32120
32159
  // All columns have been removed. There shouldn't be any rows.
32121
32160
  if (this.instance.columnIndexMapper.getNotTrimmedIndexesLength() === 0) {
32122
32161
  this.instance.rowIndexMapper.setIndexesSequence([]);
32123
32162
  }
32124
32163
  }
32125
- this.instance.runHooks('afterRemoveCol', columnIndex, amount, logicColumns, source);
32164
+ this.instance.runHooks('afterRemoveCol', columnIndex, amount, removedPhysicalIndexes, source);
32126
32165
  this.instance.forceFullRender = true; // used when data was changed
32127
-
32128
32166
  this.refreshDuckSchema();
32129
32167
  return true;
32130
32168
  }
@@ -32196,7 +32234,7 @@ var DataMap = /*#__PURE__*/function () {
32196
32234
  }, {
32197
32235
  key: "spliceData",
32198
32236
  value: function spliceData(index, deleteCount, elements) {
32199
- var _this3 = this;
32237
+ var _this4 = this;
32200
32238
  var continueSplicing = this.instance.runHooks('beforeDataSplice', index, deleteCount, elements);
32201
32239
  if (continueSplicing !== false) {
32202
32240
  var newData = [].concat((0, _toConsumableArray2.default)(this.dataSource.slice(0, index)), (0, _toConsumableArray2.default)(elements), (0, _toConsumableArray2.default)(this.dataSource.slice(index)));
@@ -32207,7 +32245,7 @@ var DataMap = /*#__PURE__*/function () {
32207
32245
  // Pushing to array instead of using `splice`, because Babel changes the code to one that uses the `apply` method.
32208
32246
  // The used method was cause of the problem described within #7840.
32209
32247
  newData.forEach(function (row) {
32210
- return _this3.dataSource.push(row);
32248
+ return _this4.dataSource.push(row);
32211
32249
  });
32212
32250
  }
32213
32251
  }
@@ -32533,7 +32571,7 @@ var DataMap = /*#__PURE__*/function () {
32533
32571
  key: "destroy",
32534
32572
  value: function destroy() {
32535
32573
  this.instance = null;
32536
- this.tableMeta = null;
32574
+ this.metaManager = null;
32537
32575
  this.dataSource = null;
32538
32576
  this.duckSchema = null;
32539
32577
  this.colToPropCache.length = 0;
@@ -41560,8 +41598,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
41560
41598
  Handsontable.CellCoords = _src.CellCoords;
41561
41599
  Handsontable.CellRange = _src.CellRange;
41562
41600
  Handsontable.packageName = 'handsontable';
41563
- Handsontable.buildDate = "06/12/2022 11:15:30";
41564
- Handsontable.version = "0.0.0-next-21b8f14-20221206";
41601
+ Handsontable.buildDate = "07/12/2022 08:00:21";
41602
+ Handsontable.version = "0.0.0-next-98bffa5-20221207";
41565
41603
  Handsontable.languages = {
41566
41604
  dictionaryKeys: _registry.dictionaryKeys,
41567
41605
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -56231,6 +56269,7 @@ function replaceData(data, setDataMapFunction, callbackFunction, config) {
56231
56269
  dataSource = config.dataSource,
56232
56270
  internalSource = config.internalSource,
56233
56271
  source = config.source,
56272
+ metaManager = config.metaManager,
56234
56273
  firstRun = config.firstRun;
56235
56274
  var capitalizedInternalSource = (0, _string.toUpperCaseFirst)(internalSource);
56236
56275
  var tableMeta = hotInstance.getSettings();
@@ -56245,7 +56284,7 @@ function replaceData(data, setDataMapFunction, callbackFunction, config) {
56245
56284
  dataMap.destroy();
56246
56285
  }
56247
56286
  data = hotInstance.runHooks("before".concat(capitalizedInternalSource), data, firstRun, source);
56248
- var newDataMap = new _dataMap.default(hotInstance, data, tableMeta);
56287
+ var newDataMap = new _dataMap.default(hotInstance, data, metaManager);
56249
56288
 
56250
56289
  // We need to apply the new dataMap immediately, because of some asynchronous logic in the
56251
56290
  // `autoRowSize`/`autoColumnSize` plugins.
@@ -67727,15 +67766,6 @@ var Endpoints = /*#__PURE__*/function () {
67727
67766
  var useOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
67728
67767
  var alterRowOffset = endpoint.alterRowOffset || 0;
67729
67768
  var alterColOffset = endpoint.alterColumnOffset || 0;
67730
- var _ref = [this.hot.toVisualRow(endpoint.destinationRow), this.hot.toVisualColumn(endpoint.destinationColumn)],
67731
- visualRowIndex = _ref[0],
67732
- visualColumnIndex = _ref[1];
67733
- if (visualColumnIndex !== null && visualRowIndex !== null) {
67734
- // Clear the meta on the "old" indexes
67735
- var cellMeta = this.hot.getCellMeta(visualRowIndex, visualColumnIndex);
67736
- cellMeta.readOnly = false;
67737
- cellMeta.className = '';
67738
- }
67739
67769
  this.cellsToSetCache.push([this.hot.toVisualRow(endpoint.destinationRow + (useOffset ? alterRowOffset : 0)), this.hot.toVisualColumn(endpoint.destinationColumn + (useOffset ? alterColOffset : 0)), '']);
67740
67770
  }
67741
67771
 
@@ -67750,17 +67780,14 @@ var Endpoints = /*#__PURE__*/function () {
67750
67780
  key: "setEndpointValue",
67751
67781
  value: function setEndpointValue(endpoint, source) {
67752
67782
  var render = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
67753
- // We'll need the reversed offset values, because cellMeta will be shifted AGAIN afterwards.
67754
- var reverseRowOffset = -1 * endpoint.alterRowOffset || 0;
67755
- var reverseColOffset = -1 * endpoint.alterColumnOffset || 0;
67756
67783
  var visualEndpointRowIndex = this.hot.toVisualRow(endpoint.destinationRow);
67757
67784
  if (endpoint.destinationRow >= this.hot.countRows() || endpoint.destinationColumn >= this.hot.countCols()) {
67758
67785
  this.throwOutOfBoundsWarning();
67759
67786
  return;
67760
67787
  }
67761
- var destinationVisualRow = this.hot.toVisualRow(endpoint.destinationRow + reverseRowOffset);
67788
+ var destinationVisualRow = this.hot.toVisualRow(endpoint.destinationRow);
67762
67789
  if (destinationVisualRow !== null) {
67763
- var cellMeta = this.hot.getCellMeta(destinationVisualRow, endpoint.destinationColumn + reverseColOffset);
67790
+ var cellMeta = this.hot.getCellMeta(destinationVisualRow, endpoint.destinationColumn);
67764
67791
  if (source === 'init' || cellMeta.readOnly !== endpoint.readOnly) {
67765
67792
  cellMeta.readOnly = endpoint.readOnly;
67766
67793
  cellMeta.className = 'columnSummaryResult';
@@ -26,8 +26,8 @@
26
26
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
27
27
  * USE OR INABILITY TO USE THIS SOFTWARE.
28
28
  *
29
- * Version: 0.0.0-next-21b8f14-20221206
30
- * Release date: 25/10/2022 (built at 06/12/2022 11:16:04)
29
+ * Version: 0.0.0-next-98bffa5-20221207
30
+ * Release date: 25/10/2022 (built at 07/12/2022 08:01:11)
31
31
  */.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-md-1.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{width:0}.handsontable .wtSpreader{position:relative;width:0;height:auto}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:0}.handsontable table.htCore{border-collapse:separate;border-spacing:0;margin:0;border-width:0;table-layout:fixed;width:0;outline-width:0;cursor:default;max-width:none;max-height:none}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{border-top-width:0;border-left-width:0;border-right:1px solid #ccc;border-bottom:1px solid #ccc;height:22px;empty-cells:show;line-height:21px;padding:0 4px;background-color:#fff;vertical-align:top;overflow:hidden;outline-width:0;white-space:pre-wrap}[dir=rtl].handsontable td,[dir=rtl].handsontable th{border-right-width:0;border-left:1px solid #ccc}.handsontable th:last-child{border-left:none;border-right:1px solid #ccc;border-bottom:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-right:none;border-left:1px solid #ccc}.handsontable td:first-of-type,.handsontable th:first-child,.handsontable th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child,[dir=rtl].handsontable th:nth-child(2){border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-right-width:0;border-left:1px solid #ccc}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th{border-right-width:0;border-left:1px solid #ccc}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;text-align:center;font-weight:400;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{position:absolute;font-size:0}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{font-size:0;cursor:crosshair}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_inline_start,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_inline_start thead,.handsontable .ht_master thead,.handsontable .ht_master tr th{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{touch-action:manipulation;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;color:#373737}.handsontable a{color:#104acc}.handsontable.htAutoSize{visibility:hidden;left:-99000px;position:absolute;top:-99000px}.handsontable td.htInvalid{background-color:#ff4c42!important}.handsontable td.htNoWrap{white-space:nowrap}#hot-display-license-info{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;color:#373737;padding:5px 0 3px;text-align:left}#hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .manualColumnResizer{position:absolute;top:0;cursor:col-resize;z-index:210;width:5px;height:25px}.handsontable .manualRowResizer{position:absolute;left:0;cursor:row-resize;z-index:210;height:5px;width:50px}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{position:absolute;right:unset;top:0;background-color:#34a9db;display:none;width:0;border-right:1px dashed #777;border-left:none;margin-left:5px;margin-right:unset}[dir=rtl].handsontable .manualColumnResizerGuide{left:unset;border-left:1px dashed #777;border-right:none;margin-right:5px;margin-left:unset}.handsontable .manualRowResizerGuide{position:absolute;left:0;bottom:0;background-color:#34a9db;display:none;height:0;border-bottom:1px dashed #777;margin-top:5px}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable .columnSorting{position:relative}.handsontable .columnSorting.sortAction:hover{text-decoration:underline;cursor:pointer}.handsontable span.colHeader.columnSorting:before{top:50%;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;left:unset;content:"";height:10px;width:5px;background-size:contain;background-repeat:no-repeat;background-position-x:right}[dir=rtl].handsontable span.colHeader.columnSorting:before{padding-right:8px;padding-left:0;left:-9px;right:unset;background-position-x:left}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC")}.handsontable span.colHeader.columnSorting.descending:before{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=")}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):after{content:"*";display:inline-block;position:relative;padding-right:20px}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;bottom:-100%\9;background:#005eff}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{bottom:-100%}}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{border:none;outline-width:0;margin:0;padding:1px 5px 0;font-family:inherit;line-height:21px;font-size:inherit;box-shadow:inset 0 0 0 2px #5292f7;resize:none;display:block;color:#000;border-radius:0;background-color:#fff}.handsontableInput:focus{outline:none}.handsontableInputHolder{position:absolute;top:0;left:0}.htSelectEditor{-webkit-appearance:menulist-button!important;position:absolute;width:auto}.htSelectEditor:focus{outline:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{content:"▶";color:#777;position:absolute;right:5px;font-size:9px}[dir=rtl].handsontable .htSubmenu :after{content:""}[dir=rtl].handsontable .htSubmenu :before{content:"◀";color:#777;position:absolute;left:5px;font-size:9px}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{border:1px solid #ccc;border-collapse:separate;background:#fff}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent!important}.handsontable.listbox td,.handsontable.listbox th{white-space:nowrap;text-overflow:ellipsis}.handsontable.listbox td.htDimmed{cursor:default;color:inherit;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr:hover td,.handsontable.listbox tr td.current{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable .collapsibleIndicator{position:absolute;top:50%;transform:translateY(-50%);left:unset;right:5px;border:1px solid #a6a6a6;line-height:8px;color:#222;border-radius:10px;font-size:10px;width:10px;height:10px;cursor:pointer;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 6px #eee;background:#eee;text-align:center}[dir=rtl].handsontable .collapsibleIndicator{right:unset;left:5px}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.handsontable.mobile .handsontableInput:focus{-webkit-box-shadow:0 0 0 2px #5292f7 inset;-moz-box-shadow:0 0 0 2px #5292f7 inset;box-shadow:inset 0 0 0 2px #5292f7;-webkit-appearance:none}.topSelectionHandle-HitArea:not(.ht_master .topSelectionHandle-HitArea),.topSelectionHandle:not(.ht_master .topSelectionHandle){z-index:9999}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px}[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea,[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea{right:-10000px;left:unset}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable .htAutocompleteArrow{float:right;font-size:10px;color:#eee;cursor:default;width:16px;text-align:center}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{font-size:inherit;vertical-align:middle;cursor:pointer;display:inline-block}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{content:"";position:absolute;top:0;right:0;left:unset;border-left:6px solid transparent;border-right:none;border-top:6px solid #000}[dir=rtl].handsontable .htCommentCell:after{left:0;right:unset;border-right:6px solid transparent;border-left:none}.htCommentsContainer .htComments{display:none;z-index:1059;position:absolute}.htCommentsContainer .htCommentTextArea{box-shadow:0 1px 3px rgba(0,0,0,.117647),0 1px 2px rgba(0,0,0,.239216);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;border-left:3px solid #ccc;background-color:#fff;width:215px;height:90px;font-size:12px;padding:5px;outline:0!important;-webkit-appearance:none}[dir=rtl].htCommentsContainer .htCommentTextArea{border-right:3px solid #ccc;border-left:none}.htCommentsContainer .htCommentTextArea:focus{box-shadow:0 1px 3px rgba(0,0,0,.117647),0 1px 2px rgba(0,0,0,.239216),inset 0 0 0 1px #5292f7;border-left:3px solid #5292f7;border-right:none}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-right:3px solid #5292f7;border-left:none}
32
32
  /*!
33
33
  * Handsontable ContextMenu