handsontable 0.0.0-next-bbc9650-20230220 → 0.0.0-next-ac3a342-20230222

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-bbc9650-20230220
29
- * Release date: 06/02/2023 (built at 20/02/2023 13:21:56)
28
+ * Version: 0.0.0-next-ac3a342-20230222
29
+ * Release date: 06/02/2023 (built at 22/02/2023 11:42:10)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -2904,7 +2904,7 @@ var domMessages = {
2904
2904
  function _injectProductInfo(key, element) {
2905
2905
  var hasValidType = !isEmpty(key);
2906
2906
  var isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
2907
- var hotVersion = "0.0.0-next-bbc9650-20230220";
2907
+ var hotVersion = "0.0.0-next-ac3a342-20230222";
2908
2908
  var keyValidityDate;
2909
2909
  var consoleMessageState = 'invalid';
2910
2910
  var domMessageState = 'invalid';
@@ -11199,7 +11199,8 @@ var Table = /*#__PURE__*/function () {
11199
11199
  *
11200
11200
  * @param {number} row Row index.
11201
11201
  * @param {number} [level=0] Header level (0 = most distant to the table).
11202
- * @returns {HTMLElement} HTMLElement on success or Number one of the exit codes on error: `null table doesn't have row headers`.
11202
+ * @returns {HTMLElement} HTMLElement on success or Number one of the exit codes on error: `null table doesn't have
11203
+ * row headers`.
11203
11204
  */
11204
11205
  }, {
11205
11206
  key: "getRowHeader",
@@ -11244,7 +11245,8 @@ var Table = /*#__PURE__*/function () {
11244
11245
  * Returns cell coords object for a given TD (or a child element of a TD element).
11245
11246
  *
11246
11247
  * @param {HTMLTableCellElement} TD A cell DOM element (or a child of one).
11247
- * @returns {CellCoords|null} The coordinates of the provided TD element (or the closest TD element) or null, if the provided element is not applicable.
11248
+ * @returns {CellCoords|null} The coordinates of the provided TD element (or the closest TD element) or null, if the
11249
+ * provided element is not applicable.
11248
11250
  */
11249
11251
  }, {
11250
11252
  key: "getCoords",
@@ -17779,6 +17781,9 @@ var CoreAbstract = /*#__PURE__*/function () {
17779
17781
  return wot.wtViewport; // TODO refactoring: move outside dao, use IOC
17780
17782
  },
17781
17783
 
17784
+ get wtSettings() {
17785
+ return wot.wtSettings;
17786
+ },
17782
17787
  get rootWindow() {
17783
17788
  return wot.domBindings.rootWindow; // TODO refactoring: move outside dao
17784
17789
  },
@@ -28216,8 +28221,10 @@ var ViewportColumnsCalculator = /*#__PURE__*/function () {
28216
28221
  * @param {number} options.scrollOffset Current horizontal scroll position of the viewport.
28217
28222
  * @param {number} options.totalItems Total number of columns.
28218
28223
  * @param {Function} options.itemSizeFn Function that returns the width of the column at a given index (in px).
28219
- * @param {Function} options.overrideFn Function that changes calculated this.startRow, this.endRow (used by MergeCells plugin).
28224
+ * @param {Function} options.overrideFn Function that changes calculated this.startRow, this.endRow (used by
28225
+ * MergeCells plugin).
28220
28226
  * @param {string} options.calculationType String which describes types of calculation which will be performed.
28227
+ * @param {string} options.inlineStartOffset Inline-start offset of the parent container.
28221
28228
  * @param {string} [options.stretchMode] Stretch mode 'all' or 'last'.
28222
28229
  * @param {Function} [options.stretchingItemWidthFn] Function that returns the new width of the stretched column.
28223
28230
  */
@@ -28233,7 +28240,8 @@ var ViewportColumnsCalculator = /*#__PURE__*/function () {
28233
28240
  _ref$stretchingItemWi = _ref.stretchingItemWidthFn,
28234
28241
  stretchingItemWidthFn = _ref$stretchingItemWi === void 0 ? function (width) {
28235
28242
  return width;
28236
- } : _ref$stretchingItemWi;
28243
+ } : _ref$stretchingItemWi,
28244
+ inlineStartOffset = _ref.inlineStartOffset;
28237
28245
  (0, _classCallCheck2.default)(this, ViewportColumnsCalculator);
28238
28246
  privatePool.set(this, {
28239
28247
  viewportWidth: viewportSize,
@@ -28242,7 +28250,8 @@ var ViewportColumnsCalculator = /*#__PURE__*/function () {
28242
28250
  columnWidthFn: itemSizeFn,
28243
28251
  overrideFn: overrideFn,
28244
28252
  calculationType: calculationType,
28245
- stretchingColumnWidthFn: stretchingItemWidthFn
28253
+ stretchingColumnWidthFn: stretchingItemWidthFn,
28254
+ inlineStartOffset: inlineStartOffset
28246
28255
  });
28247
28256
 
28248
28257
  /**
@@ -28272,6 +28281,7 @@ var ViewportColumnsCalculator = /*#__PURE__*/function () {
28272
28281
  * @type {number|null}
28273
28282
  */
28274
28283
  this.startPosition = null;
28284
+ this.isVisibleInTrimmingContainer = false;
28275
28285
  this.stretchAllRatio = 0;
28276
28286
  this.stretchLastWidth = 0;
28277
28287
  this.stretch = stretchMode;
@@ -28291,36 +28301,53 @@ var ViewportColumnsCalculator = /*#__PURE__*/function () {
28291
28301
  var needReverse = true;
28292
28302
  var startPositions = [];
28293
28303
  var columnWidth;
28304
+ var firstVisibleColumnWidth = 0;
28305
+ var lastVisibleColumnWidth = 0;
28294
28306
  var priv = privatePool.get(this);
28295
28307
  var calculationType = priv.calculationType;
28296
28308
  var overrideFn = priv.overrideFn;
28297
28309
  var scrollOffset = priv.scrollOffset;
28310
+ var zeroBasedScrollOffset = Math.max(priv.scrollOffset, 0);
28298
28311
  var totalColumns = priv.totalColumns;
28299
28312
  var viewportWidth = priv.viewportWidth;
28313
+ // +1 pixel for row header width compensation for horizontal scroll > 0
28314
+ var compensatedViewportWidth = zeroBasedScrollOffset > 0 ? viewportWidth + 1 : viewportWidth;
28300
28315
  for (var i = 0; i < totalColumns; i++) {
28301
28316
  columnWidth = this._getColumnWidth(i);
28302
- if (sum <= scrollOffset && calculationType !== _constants.FULLY_VISIBLE_TYPE) {
28317
+ if (sum <= zeroBasedScrollOffset && calculationType !== _constants.FULLY_VISIBLE_TYPE) {
28303
28318
  this.startColumn = i;
28319
+ firstVisibleColumnWidth = columnWidth;
28304
28320
  }
28305
-
28306
- // +1 pixel for row header width compensation for horizontal scroll > 0
28307
- var compensatedViewportWidth = scrollOffset > 0 ? viewportWidth + 1 : viewportWidth;
28308
- if (sum >= scrollOffset && sum + (calculationType === _constants.FULLY_VISIBLE_TYPE ? columnWidth : 0) <= scrollOffset + compensatedViewportWidth) {
28321
+ if (sum >= zeroBasedScrollOffset && sum + (calculationType === _constants.FULLY_VISIBLE_TYPE ? columnWidth : 0) <= zeroBasedScrollOffset + compensatedViewportWidth) {
28309
28322
  if (this.startColumn === null || this.startColumn === void 0) {
28310
28323
  this.startColumn = i;
28324
+ firstVisibleColumnWidth = columnWidth;
28311
28325
  }
28312
28326
  this.endColumn = i;
28313
28327
  }
28314
28328
  startPositions.push(sum);
28315
28329
  sum += columnWidth;
28330
+ lastVisibleColumnWidth = columnWidth;
28316
28331
  if (calculationType !== _constants.FULLY_VISIBLE_TYPE) {
28317
28332
  this.endColumn = i;
28318
28333
  }
28319
- if (sum >= scrollOffset + viewportWidth) {
28334
+ if (sum >= zeroBasedScrollOffset + viewportWidth) {
28320
28335
  needReverse = false;
28321
28336
  break;
28322
28337
  }
28323
28338
  }
28339
+ var mostRightScrollOffset = scrollOffset + viewportWidth - compensatedViewportWidth;
28340
+ var inlineEndColumnOffset = calculationType === _constants.FULLY_VISIBLE_TYPE ? 0 : lastVisibleColumnWidth;
28341
+ var inlineStartColumnOffset = calculationType === _constants.FULLY_VISIBLE_TYPE ? firstVisibleColumnWidth : 0;
28342
+ if (
28343
+ // The table is on the left of the viewport
28344
+ mostRightScrollOffset < -1 * priv.inlineStartOffset || scrollOffset > startPositions.at(-1) + inlineEndColumnOffset ||
28345
+ // The table is on the right of the viewport
28346
+ -1 * priv.scrollOffset - priv.viewportWidth > -1 * inlineStartColumnOffset) {
28347
+ this.isVisibleInTrimmingContainer = false;
28348
+ } else {
28349
+ this.isVisibleInTrimmingContainer = true;
28350
+ }
28324
28351
  if (this.endColumn === totalColumns - 1 && needReverse) {
28325
28352
  this.startColumn = this.endColumn;
28326
28353
  while (this.startColumn > 0) {
@@ -28570,6 +28597,7 @@ var ViewportRowsCalculator = /*#__PURE__*/function () {
28570
28597
  * @type {number|null}
28571
28598
  */
28572
28599
  this.startPosition = null;
28600
+ this.isVisibleInTrimmingContainer = false;
28573
28601
  this.calculate();
28574
28602
  }
28575
28603
 
@@ -28579,18 +28607,21 @@ var ViewportRowsCalculator = /*#__PURE__*/function () {
28579
28607
  (0, _createClass2.default)(ViewportRowsCalculator, [{
28580
28608
  key: "calculate",
28581
28609
  value: function calculate() {
28582
- var sum = 0;
28583
- var needReverse = true;
28584
- var startPositions = [];
28585
28610
  var priv = privatePool.get(this);
28586
28611
  var calculationType = priv.calculationType;
28587
28612
  var overrideFn = priv.overrideFn;
28588
28613
  var rowHeightFn = priv.rowHeightFn;
28589
28614
  var scrollOffset = priv.scrollOffset;
28615
+ var zeroBasedScrollOffset = Math.max(priv.scrollOffset, 0);
28590
28616
  var totalRows = priv.totalRows;
28591
28617
  var viewportHeight = priv.viewportHeight;
28592
28618
  var horizontalScrollbarHeight = priv.horizontalScrollbarHeight || 0;
28619
+ var sum = 0;
28620
+ var needReverse = true;
28621
+ var startPositions = [];
28593
28622
  var rowHeight;
28623
+ var firstVisibleRowHeight = 0;
28624
+ var lastVisibleRowHeight = 0;
28594
28625
 
28595
28626
  // Calculate the number (start and end index) of rows needed
28596
28627
  for (var i = 0; i < totalRows; i++) {
@@ -28598,26 +28629,37 @@ var ViewportRowsCalculator = /*#__PURE__*/function () {
28598
28629
  if (isNaN(rowHeight)) {
28599
28630
  rowHeight = ViewportRowsCalculator.DEFAULT_HEIGHT;
28600
28631
  }
28601
- if (sum <= scrollOffset && calculationType !== _constants.FULLY_VISIBLE_TYPE) {
28632
+ if (sum <= zeroBasedScrollOffset && calculationType !== _constants.FULLY_VISIBLE_TYPE) {
28602
28633
  this.startRow = i;
28634
+ firstVisibleRowHeight = rowHeight;
28603
28635
  }
28604
- if (sum >= scrollOffset && sum + (calculationType === _constants.FULLY_VISIBLE_TYPE ? rowHeight : 0) <= scrollOffset + viewportHeight - horizontalScrollbarHeight) {
28636
+ if (sum >= zeroBasedScrollOffset && sum + (calculationType === _constants.FULLY_VISIBLE_TYPE ? rowHeight : 0) <= zeroBasedScrollOffset + viewportHeight - horizontalScrollbarHeight) {
28605
28637
  // eslint-disable-line max-len
28606
28638
  if (this.startRow === null) {
28607
28639
  this.startRow = i;
28640
+ firstVisibleRowHeight = rowHeight;
28608
28641
  }
28609
28642
  this.endRow = i;
28610
28643
  }
28611
28644
  startPositions.push(sum);
28612
28645
  sum += rowHeight;
28646
+ lastVisibleRowHeight = rowHeight;
28613
28647
  if (calculationType !== _constants.FULLY_VISIBLE_TYPE) {
28614
28648
  this.endRow = i;
28615
28649
  }
28616
- if (sum >= scrollOffset + viewportHeight - horizontalScrollbarHeight) {
28650
+ if (sum >= zeroBasedScrollOffset + viewportHeight - horizontalScrollbarHeight) {
28617
28651
  needReverse = false;
28618
28652
  break;
28619
28653
  }
28620
28654
  }
28655
+ var mostBottomScrollOffset = scrollOffset + viewportHeight - horizontalScrollbarHeight;
28656
+ var topRowOffset = calculationType === _constants.FULLY_VISIBLE_TYPE ? firstVisibleRowHeight : 0;
28657
+ var bottomRowOffset = calculationType === _constants.FULLY_VISIBLE_TYPE ? 0 : lastVisibleRowHeight;
28658
+ if (mostBottomScrollOffset < topRowOffset || scrollOffset > startPositions.at(-1) + bottomRowOffset) {
28659
+ this.isVisibleInTrimmingContainer = false;
28660
+ } else {
28661
+ this.isVisibleInTrimmingContainer = true;
28662
+ }
28621
28663
 
28622
28664
  // If the estimation has reached the last row and there is still some space available in the viewport,
28623
28665
  // we need to render in reverse in order to fill the whole viewport with rows
@@ -41757,8 +41799,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
41757
41799
  Handsontable.CellCoords = _src.CellCoords;
41758
41800
  Handsontable.CellRange = _src.CellRange;
41759
41801
  Handsontable.packageName = 'handsontable';
41760
- Handsontable.buildDate = "20/02/2023 13:21:56";
41761
- Handsontable.version = "0.0.0-next-bbc9650-20230220";
41802
+ Handsontable.buildDate = "22/02/2023 11:42:10";
41803
+ Handsontable.version = "0.0.0-next-ac3a342-20230222";
41762
41804
  Handsontable.languages = {
41763
41805
  dictionaryKeys: _registry.dictionaryKeys,
41764
41806
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -47519,6 +47561,7 @@ var Scroll = /*#__PURE__*/function () {
47519
47561
  key: "getLastVisibleColumn",
47520
47562
  value: function getLastVisibleColumn() {
47521
47563
  var _this$dataAccessObjec8 = this.dataAccessObject,
47564
+ wtSettings = _this$dataAccessObjec8.wtSettings,
47522
47565
  inlineStartOverlay = _this$dataAccessObjec8.inlineStartOverlay,
47523
47566
  wtTable = _this$dataAccessObjec8.wtTable,
47524
47567
  wtViewport = _this$dataAccessObjec8.wtViewport,
@@ -47526,16 +47569,26 @@ var Scroll = /*#__PURE__*/function () {
47526
47569
  rootWindow = _this$dataAccessObjec8.rootWindow;
47527
47570
  var lastVisibleColumn = wtTable.getLastVisibleColumn();
47528
47571
  if (inlineStartOverlay.mainTableScrollableElement === rootWindow) {
47529
- var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement);
47572
+ var isRtl = wtSettings.getSetting('rtlMode');
47573
+ var inlineStartRootElementOffset = null;
47574
+ if (isRtl) {
47575
+ var tableRect = wtTable.TABLE.getBoundingClientRect();
47576
+ var rootDocument = this.dataAccessObject.rootWindow.document;
47577
+ var docOffsetWidth = rootDocument.documentElement.offsetWidth;
47578
+ inlineStartRootElementOffset = Math.abs(tableRect.right - docOffsetWidth);
47579
+ } else {
47580
+ var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement);
47581
+ inlineStartRootElementOffset = rootElementOffset.left;
47582
+ }
47530
47583
  var windowScrollLeft = Math.abs((0, _element.getScrollLeft)(rootWindow, rootWindow));
47531
47584
 
47532
47585
  // Only calculate lastVisibleColumn when table didn't filled (from right) whole viewport space
47533
- if (rootElementOffset.left > windowScrollLeft) {
47586
+ if (inlineStartRootElementOffset > windowScrollLeft) {
47534
47587
  var windowWidth = (0, _element.innerWidth)(rootWindow);
47535
47588
  var columnsWidth = wtViewport.getRowHeaderWidth();
47536
47589
  for (var column = 1; column <= totalColumns; column++) {
47537
47590
  columnsWidth += inlineStartOverlay.sumCellSizes(column - 1, column);
47538
- if (rootElementOffset.left + columnsWidth - windowScrollLeft >= windowWidth) {
47591
+ if (inlineStartRootElementOffset + columnsWidth - windowScrollLeft >= windowWidth) {
47539
47592
  // Return physical column - 1 (-2 because rangeEach gives column index + 1 - sumCellSizes requirements)
47540
47593
  lastVisibleColumn = column - 2;
47541
47594
  break;
@@ -49790,13 +49843,10 @@ var Viewport = /*#__PURE__*/function () {
49790
49843
  height = this.getViewportHeight();
49791
49844
  }
49792
49845
  var pos = this.dataAccessObject.topScrollPosition - this.dataAccessObject.topParentOffset;
49793
- if (pos < 0) {
49794
- pos = 0;
49795
- }
49796
49846
  var fixedRowsTop = wtSettings.getSetting('fixedRowsTop');
49797
49847
  var fixedRowsBottom = wtSettings.getSetting('fixedRowsBottom');
49798
49848
  var totalRows = wtSettings.getSetting('totalRows');
49799
- if (fixedRowsTop) {
49849
+ if (fixedRowsTop && pos >= 0) {
49800
49850
  fixedRowsHeight = this.dataAccessObject.topOverlay.sumCellSizes(0, fixedRowsTop);
49801
49851
  pos += fixedRowsHeight;
49802
49852
  height -= fixedRowsHeight;
@@ -49841,11 +49891,8 @@ var Viewport = /*#__PURE__*/function () {
49841
49891
  var width = this.getViewportWidth();
49842
49892
  var pos = Math.abs(this.dataAccessObject.inlineStartScrollPosition) - this.dataAccessObject.inlineStartParentOffset;
49843
49893
  this.columnHeaderHeight = NaN;
49844
- if (pos < 0) {
49845
- pos = 0;
49846
- }
49847
49894
  var fixedColumnsStart = wtSettings.getSetting('fixedColumnsStart');
49848
- if (fixedColumnsStart) {
49895
+ if (fixedColumnsStart && pos >= 0) {
49849
49896
  var fixedColumnsWidth = this.dataAccessObject.inlineStartOverlay.sumCellSizes(0, fixedColumnsStart);
49850
49897
  pos += fixedColumnsWidth;
49851
49898
  width -= fixedColumnsWidth;
@@ -49855,7 +49902,7 @@ var Viewport = /*#__PURE__*/function () {
49855
49902
  }
49856
49903
  return new _calculator.ViewportColumnsCalculator({
49857
49904
  viewportSize: width,
49858
- scrollOffset: Math.abs(pos),
49905
+ scrollOffset: pos,
49859
49906
  totalItems: wtSettings.getSetting('totalColumns'),
49860
49907
  itemSizeFn: function itemSizeFn(sourceCol) {
49861
49908
  return wtTable.getColumnWidth(sourceCol);
@@ -49865,7 +49912,8 @@ var Viewport = /*#__PURE__*/function () {
49865
49912
  stretchMode: wtSettings.getSetting('stretchH'),
49866
49913
  stretchingItemWidthFn: function stretchingItemWidthFn(stretchedWidth, column) {
49867
49914
  return wtSettings.getSetting('onBeforeStretchingColumnWidth', stretchedWidth, column);
49868
- }
49915
+ },
49916
+ inlineStartOffset: this.dataAccessObject.inlineStartParentOffset
49869
49917
  });
49870
49918
  }
49871
49919
 
@@ -49925,11 +49973,12 @@ var Viewport = /*#__PURE__*/function () {
49925
49973
  return false;
49926
49974
  }
49927
49975
  var startRow = proposedRowsVisibleCalculator.startRow,
49928
- endRow = proposedRowsVisibleCalculator.endRow;
49976
+ endRow = proposedRowsVisibleCalculator.endRow,
49977
+ isVisibleInTrimmingContainer = proposedRowsVisibleCalculator.isVisibleInTrimmingContainer;
49929
49978
 
49930
49979
  // if there are no fully visible rows at all, return false
49931
49980
  if (startRow === null && endRow === null) {
49932
- return false;
49981
+ return !isVisibleInTrimmingContainer;
49933
49982
  }
49934
49983
  var _this$rowsRenderCalcu = this.rowsRenderCalculator,
49935
49984
  renderedStartRow = _this$rowsRenderCalcu.startRow,
@@ -49957,11 +50006,12 @@ var Viewport = /*#__PURE__*/function () {
49957
50006
  return false;
49958
50007
  }
49959
50008
  var startColumn = proposedColumnsVisibleCalculator.startColumn,
49960
- endColumn = proposedColumnsVisibleCalculator.endColumn;
50009
+ endColumn = proposedColumnsVisibleCalculator.endColumn,
50010
+ isVisibleInTrimmingContainer = proposedColumnsVisibleCalculator.isVisibleInTrimmingContainer;
49961
50011
 
49962
50012
  // if there are no fully visible columns at all, return false
49963
50013
  if (startColumn === null && endColumn === null) {
49964
- return false;
50014
+ return !isVisibleInTrimmingContainer;
49965
50015
  }
49966
50016
  var _this$columnsRenderCa = this.columnsRenderCalculator,
49967
50017
  renderedStartColumn = _this$columnsRenderCa.startColumn,
@@ -75467,14 +75517,6 @@ var Filters = /*#__PURE__*/function (_BasePlugin) {
75467
75517
  * @type {Map}
75468
75518
  */
75469
75519
  _this.components = new Map([['filter_by_condition', null], ['filter_operators', null], ['filter_by_condition2', null], ['filter_by_value', null], ['filter_action_bar', null]]);
75470
- /**
75471
- * Object containing information about last selected column physical and visual index for added filter conditions.
75472
- *
75473
- * @private
75474
- * @type {object}
75475
- * @default null
75476
- */
75477
- _this.lastSelectedColumn = null;
75478
75520
  /**
75479
75521
  * Map of skipped rows by plugin.
75480
75522
  *
@@ -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-bbc9650-20230220
30
- * Release date: 06/02/2023 (built at 20/02/2023 13:22:34)
29
+ * Version: 0.0.0-next-ac3a342-20230222
30
+ * Release date: 06/02/2023 (built at 22/02/2023 11:42:56)
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-10.handsontable,.col-lg-11.handsontable,.col-lg-12.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-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.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-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-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-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-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{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{height:auto;position:relative;width:0}.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:auto}.handsontable table.htCore{border-collapse:separate;border-spacing:0;border-width:0;cursor:default;margin:0;max-height:none;max-width:none;outline-width:0;table-layout:fixed;width:0}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{background-color:#fff;border-bottom:1px solid #ccc;border-left-width:0;border-right:1px solid #ccc;border-top-width:0;empty-cells:show;height:22px;line-height:21px;outline-width:0;overflow:hidden;padding:0 4px;vertical-align:top;white-space:pre-wrap}[dir=rtl].handsontable td,[dir=rtl].handsontable th{border-left:1px solid #ccc;border-right-width:0}.handsontable th:last-child{border-bottom:1px solid #ccc;border-left:none;border-right:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-left:1px solid #ccc;border-right:none}.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-left:1px solid #ccc;border-right-width:0}.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 tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{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;font-weight:400;text-align:center;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{font-size:0;position:absolute}.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{cursor:crosshair;font-size:0}.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{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#ff4c42!important}.handsontable td.htNoWrap{white-space:nowrap}.hot-display-license-info{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .manualColumnResizer{cursor:col-resize;height:25px;position:absolute;top:0;width:5px;z-index:210}.handsontable .manualRowResizer{cursor:row-resize;height:5px;left:0;position:absolute;width:50px;z-index:210}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{background-color:#34a9db;border-left:none;border-right:1px dashed #777;display:none;margin-left:5px;margin-right:unset;position:absolute;right:unset;top:0;width:0}[dir=rtl].handsontable .manualColumnResizerGuide{border-left:1px dashed #777;border-right:none;left:unset;margin-left:unset;margin-right:5px}.handsontable .manualRowResizerGuide{background-color:#34a9db;border-bottom:1px dashed #777;bottom:0;display:none;height:0;left:0;margin-top:5px;position:absolute}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable .columnSorting{position:relative}.handsontable .columnSorting.sortAction:hover{cursor:pointer;text-decoration:underline}.handsontable span.colHeader.columnSorting:before{background-position-x:right;background-repeat:no-repeat;background-size:contain;content:"";height:10px;left:unset;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;top:50%;width:5px}[dir=rtl].handsontable span.colHeader.columnSorting:before{background-position-x:left;left:-9px;padding-left:0;padding-right:8px;right:unset}.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;padding-right:20px;position:relative}.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{background:#005eff;bottom:0;bottom:-100%\9;content:"";left:0;position:absolute;right:0;top:0}@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{background-color:#fff;border:none;border-radius:0;box-shadow:inset 0 0 0 2px #5292f7;color:#000;display:block;font-family:inherit;font-size:inherit;line-height:21px;margin:0;outline-width:0;padding:1px 5px 0;resize:none}.handsontableInput:focus{outline:none}.handsontableInputHolder{left:0;position:absolute;top: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{color:#777;content:"▶";font-size:9px;position:absolute;right:5px}[dir=rtl].handsontable .htSubmenu :after{content:""}[dir=rtl].handsontable .htSubmenu :before{color:#777;content:"◀";font-size:9px;left:5px;position:absolute}.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{background:#fff;border:1px solid #ccc;border-collapse:separate}.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{text-overflow:ellipsis;white-space:nowrap}.handsontable.listbox td.htDimmed{color:inherit;cursor:default;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable .collapsibleIndicator{background:#eee;border:1px solid #a6a6a6;border-radius:10px;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 6px #eee;color:#222;cursor:pointer;font-size:10px;height:10px;left:unset;line-height:8px;position:absolute;right:5px;text-align:center;top:50%;transform:translateY(-50%);width:10px}[dir=rtl].handsontable .collapsibleIndicator{left:5px;right:unset}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.handsontable.mobile .handsontableInput:focus{-webkit-appearance:none;-webkit-box-shadow:inset 0 0 0 2px #5292f7;-moz-box-shadow:inset 0 0 0 2px #5292f7;box-shadow:inset 0 0 0 2px #5292f7}.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{left:unset;right:-10000px}.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{color:#eee;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[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{cursor:pointer;display:inline-block;font-size:inherit;vertical-align:middle}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{border-left:6px solid transparent;border-right:none;border-top:6px solid #000;content:"";left:unset;position:absolute;right:0;top:0}[dir=rtl].handsontable .htCommentCell:after{border-left:none;border-right:6px solid transparent;left:0;right:unset}.htCommentsContainer .htComments{display:none;position:absolute;z-index:1059}.htCommentsContainer .htCommentTextArea{-webkit-appearance:none;background-color:#fff;border:none;border-left:3px solid #ccc;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:12px;height:90px;outline:0!important;padding:5px;width:215px}[dir=rtl].htCommentsContainer .htCommentTextArea{border-left:none;border-right:3px solid #ccc}.htCommentsContainer .htCommentTextArea:focus{border-left:3px solid #5292f7;border-right:none;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239),inset 0 0 0 1px #5292f7}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-left:none;border-right:3px solid #5292f7}
32
32
  /*!
33
33
  * Handsontable ContextMenu