handsontable 0.0.0-next-c8116f8-20240920 → 0.0.0-next-ffdf116-20240926

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (33) hide show
  1. package/3rdparty/walkontable/src/selection/border/border.js +1 -1
  2. package/3rdparty/walkontable/src/selection/border/border.mjs +2 -2
  3. package/3rdparty/walkontable/src/table/master.js +1 -1
  4. package/3rdparty/walkontable/src/table/master.mjs +2 -2
  5. package/base.js +2 -2
  6. package/base.mjs +2 -2
  7. package/dist/handsontable.css +2 -2
  8. package/dist/handsontable.full.css +2 -2
  9. package/dist/handsontable.full.js +110 -44
  10. package/dist/handsontable.full.min.css +2 -2
  11. package/dist/handsontable.full.min.js +5 -5
  12. package/dist/handsontable.js +110 -44
  13. package/dist/handsontable.min.css +2 -2
  14. package/dist/handsontable.min.js +5 -5
  15. package/editors/autocompleteEditor/autocompleteEditor.js +31 -14
  16. package/editors/autocompleteEditor/autocompleteEditor.mjs +31 -14
  17. package/editors/baseEditor/baseEditor.js +1 -1
  18. package/editors/baseEditor/baseEditor.mjs +2 -2
  19. package/editors/handsontableEditor/handsontableEditor.js +24 -0
  20. package/editors/handsontableEditor/handsontableEditor.mjs +24 -0
  21. package/editors/textEditor/textEditor.js +2 -2
  22. package/editors/textEditor/textEditor.mjs +3 -3
  23. package/helpers/dom/element.js +4 -17
  24. package/helpers/dom/element.mjs +4 -16
  25. package/helpers/mixed.js +1 -1
  26. package/helpers/mixed.mjs +1 -1
  27. package/package.json +1 -1
  28. package/plugins/contextMenu/menu/menu.js +1 -1
  29. package/plugins/contextMenu/menu/menu.mjs +2 -2
  30. package/plugins/contextMenu/menu/positioner.js +4 -2
  31. package/plugins/contextMenu/menu/positioner.mjs +4 -2
  32. package/tableView.js +36 -0
  33. package/tableView.mjs +36 -0
@@ -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-c8116f8-20240920
29
- * Release date: 30/07/2024 (built at 20/09/2024 09:23:52)
28
+ * Version: 0.0.0-next-ffdf116-20240926
29
+ * Release date: 30/07/2024 (built at 26/09/2024 10:52:57)
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 = "20/09/2024 09:23:52";
111
- Handsontable.version = "0.0.0-next-c8116f8-20240920";
110
+ Handsontable.buildDate = "26/09/2024 10:52:57";
111
+ Handsontable.version = "0.0.0-next-ffdf116-20240926";
112
112
  Handsontable.languages = {
113
113
  dictionaryKeys: _registry.dictionaryKeys,
114
114
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -7871,7 +7871,6 @@ exports.empty = empty;
7871
7871
  exports.fastInnerHTML = fastInnerHTML;
7872
7872
  exports.fastInnerText = fastInnerText;
7873
7873
  exports.getCaretPosition = getCaretPosition;
7874
- exports.getComputedStyle = getComputedStyle;
7875
7874
  exports.getCssTransform = getCssTransform;
7876
7875
  exports.getFrameElement = getFrameElement;
7877
7876
  exports.getMaximumScrollLeft = getMaximumScrollLeft;
@@ -8349,6 +8348,7 @@ function fastInnerText(element, content) {
8349
8348
  */
8350
8349
  function isVisible(element) {
8351
8350
  const documentElement = element.ownerDocument.documentElement;
8351
+ const windowElement = element.ownerDocument.defaultView;
8352
8352
  let next = element;
8353
8353
  while (next !== documentElement) {
8354
8354
  // until <html> reached
@@ -8371,7 +8371,7 @@ function isVisible(element) {
8371
8371
  } else {
8372
8372
  return false; // this is a node detached from document in IE8
8373
8373
  }
8374
- } else if (getComputedStyle(next).display === 'none') {
8374
+ } else if (windowElement.getComputedStyle(next).display === 'none') {
8375
8375
  return false;
8376
8376
  }
8377
8377
  next = next.parentNode;
@@ -8561,7 +8561,7 @@ function getTrimmingContainer(base) {
8561
8561
  if (el.style.overflow !== 'visible' && el.style.overflow !== '') {
8562
8562
  return el;
8563
8563
  }
8564
- const computedStyle = getComputedStyle(el, rootWindow);
8564
+ const computedStyle = rootWindow.getComputedStyle(el);
8565
8565
  const allowedProperties = ['scroll', 'hidden', 'auto'];
8566
8566
  const property = computedStyle.getPropertyValue('overflow');
8567
8567
  const propertyY = computedStyle.getPropertyValue('overflow-y');
@@ -8599,7 +8599,7 @@ function getStyle(element, prop) {
8599
8599
  if (styleProp !== '' && styleProp !== undefined) {
8600
8600
  return styleProp;
8601
8601
  }
8602
- const computedStyle = getComputedStyle(element, rootWindow);
8602
+ const computedStyle = rootWindow.getComputedStyle(element);
8603
8603
  if (computedStyle[prop] !== '' && computedStyle[prop] !== undefined) {
8604
8604
  return computedStyle[prop];
8605
8605
  }
@@ -8627,19 +8627,6 @@ function matchesCSSRules(element, rule) {
8627
8627
  return result;
8628
8628
  }
8629
8629
 
8630
- /**
8631
- * Returns a computed style object for the provided element. (Needed if style is declared in external stylesheet).
8632
- *
8633
- * @param {HTMLElement} element An element to get style from.
8634
- * @param {Window} [rootWindow] The document window owner.
8635
- * @returns {IEElementStyle|CssStyle} Elements computed style object.
8636
- */
8637
- // eslint-disable-next-line no-restricted-globals
8638
- function getComputedStyle(element) {
8639
- let rootWindow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;
8640
- return element.currentStyle || rootWindow.getComputedStyle(element);
8641
- }
8642
-
8643
8630
  /**
8644
8631
  * Returns the element's outer width.
8645
8632
  *
@@ -9285,7 +9272,7 @@ const domMessages = {
9285
9272
  function _injectProductInfo(key, element) {
9286
9273
  const hasValidType = !isEmpty(key);
9287
9274
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
9288
- const hotVersion = "0.0.0-next-c8116f8-20240920";
9275
+ const hotVersion = "0.0.0-next-ffdf116-20240926";
9289
9276
  let keyValidityDate;
9290
9277
  let consoleMessageState = 'invalid';
9291
9278
  let domMessageState = 'invalid';
@@ -18244,6 +18231,42 @@ class TableView {
18244
18231
  isVisible() {
18245
18232
  return this._wt.wtTable.isVisible();
18246
18233
  }
18234
+
18235
+ /**
18236
+ * Checks if the table has a horizontal scrollbar.
18237
+ *
18238
+ * @returns {boolean}
18239
+ */
18240
+ hasVerticalScroll() {
18241
+ return this._wt.wtViewport.hasVerticalScroll();
18242
+ }
18243
+
18244
+ /**
18245
+ * Checks if the table has a vertical scrollbar.
18246
+ *
18247
+ * @returns {boolean}
18248
+ */
18249
+ hasHorizontalScroll() {
18250
+ return this._wt.wtViewport.hasHorizontalScroll();
18251
+ }
18252
+
18253
+ /**
18254
+ * Gets the table's width.
18255
+ *
18256
+ * @returns {boolean}
18257
+ */
18258
+ getTableWidth() {
18259
+ return this._wt.wtTable.getWidth();
18260
+ }
18261
+
18262
+ /**
18263
+ * Gets the table's height.
18264
+ *
18265
+ * @returns {boolean}
18266
+ */
18267
+ getTableHeight() {
18268
+ return this._wt.wtTable.getHeight();
18269
+ }
18247
18270
  /**
18248
18271
  * Destroys internal WalkOnTable's instance. Detaches all of the bonded listeners.
18249
18272
  *
@@ -29022,7 +29045,7 @@ class Border {
29022
29045
  fromTD = fromTH;
29023
29046
  }
29024
29047
  }
29025
- const style = (0, _element.getComputedStyle)(fromTD, rootWindow);
29048
+ const style = rootWindow.getComputedStyle(fromTD);
29026
29049
  if (parseInt(style.borderTopWidth, 10) > 0) {
29027
29050
  top += 1;
29028
29051
  height = height > 0 ? height - 1 : 0;
@@ -30321,7 +30344,7 @@ class MasterTable extends _table.default {
30321
30344
  } else {
30322
30345
  trimmingElementParent.appendChild(cloneNode);
30323
30346
  }
30324
- const cloneHeight = parseInt((0, _element.getComputedStyle)(cloneNode, rootWindow).height, 10);
30347
+ const cloneHeight = parseInt(rootWindow.getComputedStyle(cloneNode).height, 10);
30325
30348
  trimmingElementParent.removeChild(cloneNode);
30326
30349
  if (cloneHeight === 0) {
30327
30350
  height = 0;
@@ -45696,7 +45719,7 @@ class BaseEditor {
45696
45719
  } else if (['top', 'master', 'bottom'].includes(overlayName)) {
45697
45720
  cellStartOffset += firstColumnOffset - horizontalScrollPosition;
45698
45721
  }
45699
- const cellComputedStyle = (0, _element.getComputedStyle)(this.TD, this.hot.rootWindow);
45722
+ const cellComputedStyle = rootWindow.getComputedStyle(this.TD);
45700
45723
  const borderPhysicalWidthProp = this.hot.isRtl() ? 'borderRightWidth' : 'borderLeftWidth';
45701
45724
  const inlineStartBorderCompensation = parseInt(cellComputedStyle[borderPhysicalWidthProp], 10) > 0 ? 0 : 1;
45702
45725
  const topBorderCompensation = parseInt(cellComputedStyle.borderTopWidth, 10) > 0 ? 0 : 1;
@@ -48546,11 +48569,11 @@ class TextEditor extends _baseEditor.BaseEditor {
48546
48569
  this.textareaParentStyle.top = `${top}px`;
48547
48570
  this.textareaParentStyle[this.hot.isRtl() ? 'right' : 'left'] = `${start}px`;
48548
48571
  this.showEditableElement();
48549
- const cellComputedStyle = (0, _element.getComputedStyle)(this.TD, this.hot.rootWindow);
48572
+ const cellComputedStyle = this.hot.rootWindow.getComputedStyle(this.TD);
48550
48573
  this.TEXTAREA.style.fontSize = cellComputedStyle.fontSize;
48551
48574
  this.TEXTAREA.style.fontFamily = cellComputedStyle.fontFamily;
48552
48575
  this.TEXTAREA.style.backgroundColor = this.TD.style.backgroundColor;
48553
- const textareaComputedStyle = (0, _element.getComputedStyle)(this.TEXTAREA);
48576
+ const textareaComputedStyle = this.hot.rootWindow.getComputedStyle(this.TEXTAREA);
48554
48577
  const horizontalPadding = parseInt(textareaComputedStyle.paddingLeft, 10) + parseInt(textareaComputedStyle.paddingRight, 10);
48555
48578
  const verticalPadding = parseInt(textareaComputedStyle.paddingTop, 10) + parseInt(textareaComputedStyle.paddingBottom, 10);
48556
48579
  const finalWidth = width - horizontalPadding;
@@ -49209,7 +49232,6 @@ var _element = __webpack_require__(138);
49209
49232
  var _mixed = __webpack_require__(141);
49210
49233
  var _string = __webpack_require__(139);
49211
49234
  var _unicode = __webpack_require__(157);
49212
- var _browser = __webpack_require__(147);
49213
49235
  var _textRenderer = __webpack_require__(395);
49214
49236
  var _a11y = __webpack_require__(145);
49215
49237
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
@@ -49380,15 +49402,11 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
49380
49402
  } = this;
49381
49403
  this.showEditableElement();
49382
49404
  this.focus();
49383
- let scrollbarWidth = (0, _element.getScrollbarWidth)();
49384
- if (scrollbarWidth === 0 && (0, _browser.isMacOS)()) {
49385
- scrollbarWidth += 15; // default scroll bar width if scroll bars are visible only when scrolling
49386
- }
49387
49405
  this.addHook('beforeKeyDown', event => this.onBeforeKeyDown(event));
49388
49406
  this.htEditor.updateSettings({
49389
49407
  colWidths: trimDropdown ? [(0, _element.outerWidth)(this.TEXTAREA) - 2] : undefined,
49390
- width: trimDropdown ? (0, _element.outerWidth)(this.TEXTAREA) + scrollbarWidth : undefined,
49391
49408
  autoColumnSize: true,
49409
+ autoRowSize: true,
49392
49410
  renderer: (hotInstance, TD, row, col, prop, value, cellProperties) => {
49393
49411
  (0, _textRenderer.textRenderer)(hotInstance, TD, row, col, prop, value, cellProperties);
49394
49412
  const {
@@ -49547,7 +49565,7 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
49547
49565
  }
49548
49566
  const textareaOffset = (0, _element.offset)(this.TEXTAREA);
49549
49567
  const textareaHeight = (0, _element.outerHeight)(this.TEXTAREA);
49550
- const dropdownHeight = this.getDropdownHeight();
49568
+ const dropdownHeight = this.getHeight();
49551
49569
  const trimmingContainerScrollTop = trimmingContainer.scrollTop;
49552
49570
  const headersHeight = (0, _element.outerHeight)(this.hot.view._wt.wtTable.THEAD);
49553
49571
  const containerOffset = (0, _element.offset)(trimmingContainer);
@@ -49620,12 +49638,18 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
49620
49638
  * @private
49621
49639
  */
49622
49640
  updateDropdownDimensions() {
49623
- const currentDropdownWidth = this.htEditor.getColWidth(0) + (0, _element.getScrollbarWidth)(this.hot.rootDocument) + 2;
49624
49641
  const trimDropdown = this.cellProperties.trimDropdown;
49642
+ const width = trimDropdown ? this.getWidth() : undefined;
49643
+ const height = this.getHeight();
49625
49644
  this.htEditor.updateSettings({
49626
- height: this.getDropdownHeight(),
49627
- width: trimDropdown ? undefined : currentDropdownWidth
49645
+ width,
49646
+ height
49628
49647
  });
49648
+ if (trimDropdown && this.htEditor.view.hasVerticalScroll()) {
49649
+ this.htEditor.updateSettings({
49650
+ width: width + (0, _element.getScrollbarWidth)(this.hot.rootDocument)
49651
+ });
49652
+ }
49629
49653
  this.htEditor.view._wt.wtTable.alignOverlaysWithTrimmingContainer();
49630
49654
  }
49631
49655
 
@@ -49661,10 +49685,26 @@ class AutocompleteEditor extends _handsontableEditor.HandsontableEditor {
49661
49685
  * @private
49662
49686
  * @returns {number}
49663
49687
  */
49664
- getDropdownHeight() {
49665
- const firstRowHeight = this.htEditor.getRowHeight(0) || 23;
49666
- const visibleRows = this.cellProperties.visibleRows;
49667
- return this.strippedChoices.length >= visibleRows ? visibleRows * firstRowHeight : this.strippedChoices.length * firstRowHeight + 8; // eslint-disable-line max-len
49688
+ getHeight() {
49689
+ const containerStyle = this.hot.rootWindow.getComputedStyle(this.htContainer.querySelector('.htCore'));
49690
+ const borderVerticalCompensation = parseInt(containerStyle.borderTopWidth, 10) + parseInt(containerStyle.borderBottomWidth, 10);
49691
+ const maxItems = Math.min(this.cellProperties.visibleRows, this.strippedChoices.length);
49692
+ const height = Array.from({
49693
+ length: maxItems
49694
+ }, (_, i) => i).reduce((h, index) => h + this.htEditor.getRowHeight(index), 0);
49695
+ return height + borderVerticalCompensation + 1;
49696
+ }
49697
+
49698
+ /**
49699
+ * Calculates and return the internal Handsontable's width.
49700
+ *
49701
+ * @private
49702
+ * @returns {number}
49703
+ */
49704
+ getWidth() {
49705
+ const containerStyle = this.hot.rootWindow.getComputedStyle(this.htContainer.querySelector('.htCore'));
49706
+ const borderHorizontalCompensation = parseInt(containerStyle.borderInlineStartWidth, 10) + parseInt(containerStyle.borderInlineEndWidth, 10);
49707
+ return this.htEditor.getColWidth(0) + borderHorizontalCompensation;
49668
49708
  }
49669
49709
 
49670
49710
  /**
@@ -49807,6 +49847,10 @@ class HandsontableEditor extends _textEditor.TextEditor {
49807
49847
  }
49808
49848
  (0, _element.setCaretPosition)(this.TEXTAREA, 0, this.TEXTAREA.value.length);
49809
49849
  this.refreshDimensions();
49850
+ this.htEditor.updateSettings({
49851
+ width: this.getWidth(),
49852
+ height: this.getHeight()
49853
+ });
49810
49854
  }
49811
49855
 
49812
49856
  /**
@@ -49913,6 +49957,26 @@ class HandsontableEditor extends _textEditor.TextEditor {
49913
49957
  super.finishEditing(restoreOriginalValue, ctrlDown, callback);
49914
49958
  }
49915
49959
 
49960
+ /**
49961
+ * Calculates and return the internal Handsontable's height.
49962
+ *
49963
+ * @private
49964
+ * @returns {number}
49965
+ */
49966
+ getHeight() {
49967
+ return this.htEditor.view.getTableHeight();
49968
+ }
49969
+
49970
+ /**
49971
+ * Calculates and return the internal Handsontable's width.
49972
+ *
49973
+ * @private
49974
+ * @returns {number}
49975
+ */
49976
+ getWidth() {
49977
+ return this.htEditor.view.getTableWidth();
49978
+ }
49979
+
49916
49980
  /**
49917
49981
  * Assigns afterDestroy callback to prevent memory leaks.
49918
49982
  *
@@ -62659,7 +62723,7 @@ class Menu {
62659
62723
  */
62660
62724
  get tableBorderWidth() {
62661
62725
  if (_classPrivateFieldGet(_tableBorderWidth, this) === undefined && this.hotMenu) {
62662
- _classPrivateFieldSet(_tableBorderWidth, this, parseInt((0, _element.getComputedStyle)(this.hotMenu.view._wt.wtTable.TABLE).borderWidth, 10));
62726
+ _classPrivateFieldSet(_tableBorderWidth, this, parseInt(this.hotMenu.rootWindow.getComputedStyle(this.hotMenu.view._wt.wtTable.TABLE).borderWidth, 10));
62663
62727
  }
62664
62728
  return _classPrivateFieldGet(_tableBorderWidth, this);
62665
62729
  }
@@ -63449,7 +63513,8 @@ class Positioner {
63449
63513
  setPositionOnRightOfCursor() {
63450
63514
  let left = _classPrivateFieldGet(_cursor, this).left;
63451
63515
  if (_classPrivateFieldGet(_parentContainer, this)) {
63452
- const borderRightWidth = Number.parseInt(getComputedStyle(_classPrivateFieldGet(_parentContainer, this).querySelector('.htCore')).borderRightWidth, 10);
63516
+ const rootWindow = _classPrivateFieldGet(_parentContainer, this).ownerDocument.defaultView;
63517
+ const borderRightWidth = Number.parseInt(rootWindow.getComputedStyle(_classPrivateFieldGet(_parentContainer, this).querySelector('.htCore')).borderRightWidth, 10);
63453
63518
  left += _classPrivateFieldGet(_cursor, this).cellWidth + borderRightWidth;
63454
63519
  } else {
63455
63520
  left += _classPrivateFieldGet(_offset, this).right;
@@ -63463,7 +63528,8 @@ class Positioner {
63463
63528
  setPositionOnLeftOfCursor() {
63464
63529
  let left = _classPrivateFieldGet(_offset, this).left + _classPrivateFieldGet(_cursor, this).left - _classPrivateFieldGet(_container, this).offsetWidth;
63465
63530
  if (_classPrivateFieldGet(_parentContainer, this)) {
63466
- const borderLeftWidth = Number.parseInt(getComputedStyle(_classPrivateFieldGet(_parentContainer, this).querySelector('.htCore')).borderLeftWidth, 10);
63531
+ const rootWindow = _classPrivateFieldGet(_parentContainer, this).ownerDocument.defaultView;
63532
+ const borderLeftWidth = Number.parseInt(rootWindow.getComputedStyle(_classPrivateFieldGet(_parentContainer, this).querySelector('.htCore')).borderLeftWidth, 10);
63467
63533
  left -= borderLeftWidth;
63468
63534
  }
63469
63535
  _classPrivateFieldGet(_container, this).style.left = `${left}px`;
@@ -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-c8116f8-20240920
29
- * Release date: 30/07/2024 (built at 20/09/2024 09:24:10)
28
+ * Version: 0.0.0-next-ffdf116-20240926
29
+ * Release date: 30/07/2024 (built at 26/09/2024 10:53:15)
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{border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child{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) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) 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 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;content:"";left:0;position:absolute;right:0;top:0}.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;border:2px solid #4b89ff;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.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-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 .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[dir=ltr] thead th:has(.collapsibleIndicator) div.htRight span.colHeader{margin-right:20px}.handsontable[dir=rtl] thead th:has(.collapsibleIndicator) div.htLeft span.colHeader{margin-left:20px}.handsontable .columnSorting{position:relative}.handsontable[dir=ltr] div.htRight span[class*=ascending],.handsontable[dir=ltr] div.htRight span[class*=descending]{margin-left:-10px;margin-right:10px}.handsontable[dir=rtl] div.htLeft span[class*=ascending],.handsontable[dir=rtl] div.htLeft span[class*=descending]{margin-left:10px;margin-right:-10px}.handsontable[dir=ltr] div.htRight span[class*=ascending]:only-child,.handsontable[dir=ltr] div.htRight span[class*=descending]:only-child{margin-left:-15px;margin-right:15px}.handsontable[dir=rtl] div.htLeft span[class*=ascending]:only-child,.handsontable[dir=rtl] div.htLeft span[class*=descending]:only-child{margin-left:15px;margin-right:-15px}.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 .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