handsontable 0.0.0-next-5d8c97d-20231228 → 0.0.0-next-3388fcb-20240102

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-5d8c97d-20231228
29
- * Release date: 30/11/2023 (built at 28/12/2023 08:48:29)
28
+ * Version: 0.0.0-next-3388fcb-20240102
29
+ * Release date: 30/11/2023 (built at 02/01/2024 09:16:05)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -107,8 +107,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
107
107
  Handsontable.CellCoords = _src.CellCoords;
108
108
  Handsontable.CellRange = _src.CellRange;
109
109
  Handsontable.packageName = 'handsontable';
110
- Handsontable.buildDate = "28/12/2023 08:48:29";
111
- Handsontable.version = "0.0.0-next-5d8c97d-20231228";
110
+ Handsontable.buildDate = "02/01/2024 09:16:05";
111
+ Handsontable.version = "0.0.0-next-3388fcb-20240102";
112
112
  Handsontable.languages = {
113
113
  dictionaryKeys: _registry.dictionaryKeys,
114
114
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -8515,7 +8515,7 @@ const domMessages = {
8515
8515
  function _injectProductInfo(key, element) {
8516
8516
  const hasValidType = !isEmpty(key);
8517
8517
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
8518
- const hotVersion = "0.0.0-next-5d8c97d-20231228";
8518
+ const hotVersion = "0.0.0-next-3388fcb-20240102";
8519
8519
  let keyValidityDate;
8520
8520
  let consoleMessageState = 'invalid';
8521
8521
  let domMessageState = 'invalid';
@@ -11344,7 +11344,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
11344
11344
  */
11345
11345
  'afterUpdateData',
11346
11346
  /**
11347
- * Fired after a scroll event, which is identified as a momentum scroll (e.g. On an iPad).
11347
+ * Fired after a scroll event, which is identified as a momentum scroll.
11348
11348
  *
11349
11349
  * @event Hooks#afterMomentumScroll
11350
11350
  */
@@ -18205,23 +18205,23 @@ class CellRange {
18205
18205
  }
18206
18206
 
18207
18207
  /**
18208
- * Checks if another range (`cellRange`) is south-east of your range.
18208
+ * Checks if coordinates point is south-east of your range.
18209
18209
  *
18210
- * @param {CellRange} cellRange A range to check.
18210
+ * @param {CellCoords} cellCoords Coordinates to check.
18211
18211
  * @returns {boolean}
18212
18212
  */
18213
- isSouthEastOf(cellRange) {
18214
- return this.getOuterTopLeftCorner().isSouthEastOf(cellRange) || this.getOuterBottomRightCorner().isSouthEastOf(cellRange);
18213
+ isSouthEastOf(cellCoords) {
18214
+ return this.getOuterTopLeftCorner().isSouthEastOf(cellCoords) || this.getOuterBottomRightCorner().isSouthEastOf(cellCoords);
18215
18215
  }
18216
18216
 
18217
18217
  /**
18218
- * Checks if another range (`cellRange`) is north-west of your range.
18218
+ * Checks if coordinates point is north-west of your range.
18219
18219
  *
18220
- * @param {CellRange} cellRange A range to check.
18220
+ * @param {CellRange} cellCoords Coordinates to check.
18221
18221
  * @returns {boolean}
18222
18222
  */
18223
- isNorthWestOf(cellRange) {
18224
- return this.getOuterTopLeftCorner().isNorthWestOf(cellRange) || this.getOuterBottomRightCorner().isNorthWestOf(cellRange);
18223
+ isNorthWestOf(cellCoords) {
18224
+ return this.getOuterTopLeftCorner().isNorthWestOf(cellCoords) || this.getOuterBottomRightCorner().isNorthWestOf(cellCoords);
18225
18225
  }
18226
18226
 
18227
18227
  /**
@@ -18234,7 +18234,7 @@ class CellRange {
18234
18234
  * @returns {boolean}
18235
18235
  */
18236
18236
  isOverlappingHorizontally(cellRange) {
18237
- return this.getOuterTopRightCorner().col >= cellRange.getOuterTopLeftCorner().col && this.getOuterTopRightCorner().col <= cellRange.getOuterTopRightCorner().col || this.getOuterTopLeftCorner().col <= cellRange.getOuterTopRightCorner().col && this.getOuterTopLeftCorner().col >= cellRange.getOuterTopLeftCorner().col;
18237
+ return this.getOuterTopEndCorner().col >= cellRange.getOuterTopStartCorner().col && this.getOuterTopEndCorner().col <= cellRange.getOuterTopEndCorner().col || this.getOuterTopStartCorner().col <= cellRange.getOuterTopEndCorner().col && this.getOuterTopStartCorner().col >= cellRange.getOuterTopStartCorner().col;
18238
18238
  }
18239
18239
 
18240
18240
  /**
@@ -18247,7 +18247,7 @@ class CellRange {
18247
18247
  * @returns {boolean}
18248
18248
  */
18249
18249
  isOverlappingVertically(cellRange) {
18250
- return this.getOuterBottomRightCorner().row >= cellRange.getOuterTopRightCorner().row && this.getOuterBottomRightCorner().row <= cellRange.getOuterBottomRightCorner().row || this.getOuterTopRightCorner().row <= cellRange.getOuterBottomRightCorner().row && this.getOuterTopRightCorner().row >= cellRange.getOuterTopRightCorner().row;
18250
+ return this.getOuterBottomStartCorner().row >= cellRange.getOuterTopRightCorner().row && this.getOuterBottomStartCorner().row <= cellRange.getOuterBottomStartCorner().row || this.getOuterTopEndCorner().row <= cellRange.getOuterBottomStartCorner().row && this.getOuterTopEndCorner().row >= cellRange.getOuterTopRightCorner().row;
18251
18251
  }
18252
18252
 
18253
18253
  /**
@@ -18615,13 +18615,9 @@ class CellRange {
18615
18615
  * Checks if a set of coordinates (`coords`) matches one of the 4 corners of your range.
18616
18616
  *
18617
18617
  * @param {CellCoords} coords Coordinates to check.
18618
- * @param {CellRange} [expandedRange] A range to compare with.
18619
18618
  * @returns {boolean}
18620
18619
  */
18621
- isCorner(coords, expandedRange) {
18622
- if (expandedRange && expandedRange.includes(coords) && (this.getOuterTopLeftCorner().isEqual(this._createCellCoords(expandedRange.from.row, expandedRange.from.col)) || this.getOuterTopRightCorner().isEqual(this._createCellCoords(expandedRange.from.row, expandedRange.to.col)) || this.getOuterBottomLeftCorner().isEqual(this._createCellCoords(expandedRange.to.row, expandedRange.from.col)) || this.getOuterBottomRightCorner().isEqual(this._createCellCoords(expandedRange.to.row, expandedRange.to.col)))) {
18623
- return true;
18624
- }
18620
+ isCorner(coords) {
18625
18621
  return coords.isEqual(this.getOuterTopLeftCorner()) || coords.isEqual(this.getOuterTopRightCorner()) || coords.isEqual(this.getOuterBottomLeftCorner()) || coords.isEqual(this.getOuterBottomRightCorner());
18626
18622
  }
18627
18623
 
@@ -18632,33 +18628,12 @@ class CellRange {
18632
18628
  * the coordinates of the top-left corner of your range are returned.
18633
18629
  *
18634
18630
  * @param {CellCoords} coords Coordinates to check.
18635
- * @param {CellRange} [expandedRange] A range to compare with.
18636
18631
  * @returns {CellCoords}
18637
18632
  */
18638
- getOppositeCorner(coords, expandedRange) {
18633
+ getOppositeCorner(coords) {
18639
18634
  if (!(coords instanceof _coords.default)) {
18640
18635
  return false;
18641
18636
  }
18642
- if (expandedRange) {
18643
- const {
18644
- from,
18645
- to
18646
- } = expandedRange;
18647
- if (expandedRange.includes(coords)) {
18648
- if (this.getOuterTopStartCorner().isEqual(this._createCellCoords(from.row, from.col))) {
18649
- return this.getOuterBottomEndCorner();
18650
- }
18651
- if (this.getOuterTopEndCorner().isEqual(this._createCellCoords(from.row, to.col))) {
18652
- return this.getOuterBottomStartCorner();
18653
- }
18654
- if (this.getOuterBottomStartCorner().isEqual(this._createCellCoords(to.row, from.col))) {
18655
- return this.getOuterTopEndCorner();
18656
- }
18657
- if (this.getOuterBottomEndCorner().isEqual(this._createCellCoords(to.row, to.col))) {
18658
- return this.getOuterTopStartCorner();
18659
- }
18660
- }
18661
- }
18662
18637
  if (coords.isEqual(this.getOuterBottomEndCorner())) {
18663
18638
  return this.getOuterTopStartCorner();
18664
18639
  } else if (coords.isEqual(this.getOuterTopStartCorner())) {
@@ -18698,13 +18673,13 @@ class CellRange {
18698
18673
  result.push('top');
18699
18674
  }
18700
18675
  if (thisBorders.right === rangeBorders.right) {
18701
- result.push('right');
18676
+ result.push((0, _classPrivateFieldGet2.default)(this, _isRtl) ? 'left' : 'right');
18702
18677
  }
18703
18678
  if (thisBorders.bottom === rangeBorders.bottom) {
18704
18679
  result.push('bottom');
18705
18680
  }
18706
18681
  if (thisBorders.left === rangeBorders.left) {
18707
- result.push('left');
18682
+ result.push((0, _classPrivateFieldGet2.default)(this, _isRtl) ? 'right' : 'left');
18708
18683
  }
18709
18684
  return result;
18710
18685
  }
@@ -24650,36 +24625,7 @@ class Scroll {
24650
24625
  * @returns {number}
24651
24626
  */
24652
24627
  getFirstVisibleRow() {
24653
- const {
24654
- topOverlay,
24655
- wtTable,
24656
- wtViewport,
24657
- totalRows,
24658
- fixedRowsTop,
24659
- rootWindow
24660
- } = this.dataAccessObject;
24661
- let firstVisibleRow = wtTable.getFirstVisibleRow();
24662
- if (topOverlay.mainTableScrollableElement === rootWindow) {
24663
- const rootElementOffset = (0, _element.offset)(wtTable.wtRootElement);
24664
- const totalTableHeight = (0, _element.innerHeight)(wtTable.hider);
24665
- const windowHeight = (0, _element.innerHeight)(rootWindow);
24666
- const windowScrollTop = (0, _element.getScrollTop)(rootWindow, rootWindow);
24667
-
24668
- // Only calculate firstVisibleRow when table didn't filled (from up) whole viewport space
24669
- if (rootElementOffset.top + totalTableHeight - windowHeight <= windowScrollTop) {
24670
- let rowsHeight = wtViewport.getColumnHeaderHeight();
24671
- rowsHeight += topOverlay.sumCellSizes(0, fixedRowsTop);
24672
- for (let row = totalRows; row > 0; row--) {
24673
- rowsHeight += topOverlay.sumCellSizes(row - 1, row);
24674
- if (rootElementOffset.top + totalTableHeight - rowsHeight <= windowScrollTop) {
24675
- // Return physical row + 1
24676
- firstVisibleRow = row;
24677
- break;
24678
- }
24679
- }
24680
- }
24681
- }
24682
- return firstVisibleRow;
24628
+ return this.dataAccessObject.wtTable.getFirstVisibleRow();
24683
24629
  }
24684
24630
 
24685
24631
  /**
@@ -24723,34 +24669,7 @@ class Scroll {
24723
24669
  * @returns {number}
24724
24670
  */
24725
24671
  getFirstVisibleColumn() {
24726
- const {
24727
- inlineStartOverlay,
24728
- wtTable,
24729
- wtViewport,
24730
- totalColumns,
24731
- rootWindow
24732
- } = this.dataAccessObject;
24733
- let firstVisibleColumn = wtTable.getFirstVisibleColumn();
24734
- if (inlineStartOverlay.mainTableScrollableElement === rootWindow) {
24735
- const rootElementOffset = (0, _element.offset)(wtTable.wtRootElement);
24736
- const totalTableWidth = (0, _element.innerWidth)(wtTable.hider);
24737
- const windowWidth = (0, _element.innerWidth)(rootWindow);
24738
- const windowScrollLeft = Math.abs((0, _element.getScrollLeft)(rootWindow, rootWindow));
24739
-
24740
- // Only calculate firstVisibleColumn when table didn't filled (from left) whole viewport space
24741
- if (rootElementOffset.left + totalTableWidth - windowWidth <= windowScrollLeft) {
24742
- let columnsWidth = wtViewport.getRowHeaderWidth();
24743
- for (let column = totalColumns; column > 0; column--) {
24744
- columnsWidth += inlineStartOverlay.sumCellSizes(column - 1, column);
24745
- if (rootElementOffset.left + totalTableWidth - columnsWidth <= windowScrollLeft) {
24746
- // Return physical column + 1
24747
- firstVisibleColumn = column;
24748
- break;
24749
- }
24750
- }
24751
- }
24752
- }
24753
- return firstVisibleColumn;
24672
+ return this.dataAccessObject.wtTable.getFirstVisibleColumn();
24754
24673
  }
24755
24674
 
24756
24675
  /**
@@ -63557,9 +63476,16 @@ class DragToScroll extends _base.BasePlugin {
63557
63476
  /**
63558
63477
  * Sets the value of the visible element.
63559
63478
  *
63560
- * @param {DOMRect} boundaries An object with coordinates compatible with DOMRect.
63479
+ * @param {DOMRect|{left: number, right: number, top: number, bottom: number}} [boundaries] An object with
63480
+ * coordinates. Contains the window boundaries by default. The object is compatible with DOMRect.
63561
63481
  */
63562
- setBoundaries(boundaries) {
63482
+ setBoundaries() {
63483
+ let boundaries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
63484
+ left: 0,
63485
+ right: this.hot.rootWindow.innerWidth,
63486
+ top: 0,
63487
+ bottom: this.hot.rootWindow.innerHeight
63488
+ };
63563
63489
  this.boundaries = boundaries;
63564
63490
  }
63565
63491
 
@@ -63573,7 +63499,7 @@ class DragToScroll extends _base.BasePlugin {
63573
63499
  }
63574
63500
 
63575
63501
  /**
63576
- * Checks if the mouse position (X, Y) is outside of the viewport and fires a callback with calculated X an Y diffs
63502
+ * Checks if the mouse position (X, Y) is outside the viewport and fires a callback with calculated X an Y diffs
63577
63503
  * between passed boundaries.
63578
63504
  *
63579
63505
  * @param {number} x Mouse X coordinate to check.
@@ -63678,24 +63604,13 @@ function _setupListening2(event) {
63678
63604
  if ((0, _event.isRightClick)(event)) {
63679
63605
  return;
63680
63606
  }
63681
- const scrollHandler = this.hot.view._wt.wtTable.holder; // native scroll
63682
-
63683
- if (scrollHandler === this.hot.rootWindow) {
63684
- // not much we can do currently
63685
- return;
63686
- }
63687
- this.setBoundaries(scrollHandler.getBoundingClientRect());
63607
+ const scrollHandler = this.hot.view._wt.wtOverlays.topOverlay.mainTableScrollableElement;
63608
+ this.setBoundaries(scrollHandler !== this.hot.rootWindow ? scrollHandler.getBoundingClientRect() : undefined);
63688
63609
  this.setCallback((scrollX, scrollY) => {
63689
- if (scrollX < 0) {
63690
- scrollHandler.scrollLeft -= 50;
63691
- } else if (scrollX > 0) {
63692
- scrollHandler.scrollLeft += 50;
63693
- }
63694
- if (scrollY < 0) {
63695
- scrollHandler.scrollTop -= 20;
63696
- } else if (scrollY > 0) {
63697
- scrollHandler.scrollTop += 20;
63698
- }
63610
+ var _scrollHandler$scroll, _scrollHandler$scroll2;
63611
+ const horizontalScrollValue = (_scrollHandler$scroll = scrollHandler.scrollLeft) !== null && _scrollHandler$scroll !== void 0 ? _scrollHandler$scroll : scrollHandler.scrollX;
63612
+ const verticalScrollValue = (_scrollHandler$scroll2 = scrollHandler.scrollTop) !== null && _scrollHandler$scroll2 !== void 0 ? _scrollHandler$scroll2 : scrollHandler.scrollY;
63613
+ scrollHandler.scroll(horizontalScrollValue + Math.sign(scrollX) * 50, verticalScrollValue + Math.sign(scrollY) * 20);
63699
63614
  });
63700
63615
  this.listen();
63701
63616
  }
@@ -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-5d8c97d-20231228
29
- * Release date: 30/11/2023 (built at 28/12/2023 08:48:47)
28
+ * Version: 0.0.0-next-3388fcb-20240102
29
+ * Release date: 30/11/2023 (built at 02/01/2024 09:16:22)
30
30
  */.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:none;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 table.htCore>thead,.handsontable .ht_master table.htCore>tbody>tr>th,.handsontable .ht_master table.htCore>thead{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:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:hsla(0,0%,100%,0)}.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 .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.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):before{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.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.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 3px #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}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[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:#bbb;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.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}
31
31
  /*!
32
32
  * Handsontable ContextMenu