handsontable 0.0.0-next-092f69c-20240806 → 0.0.0-next-bda8d59-20240809

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-092f69c-20240806
29
- * Release date: 30/07/2024 (built at 06/08/2024 05:35:40)
28
+ * Version: 0.0.0-next-bda8d59-20240809
29
+ * Release date: 30/07/2024 (built at 09/08/2024 06:40:11)
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 = "06/08/2024 05:35:40";
111
- Handsontable.version = "0.0.0-next-092f69c-20240806";
110
+ Handsontable.buildDate = "09/08/2024 06:40:11";
111
+ Handsontable.version = "0.0.0-next-bda8d59-20240809";
112
112
  Handsontable.languages = {
113
113
  dictionaryKeys: _registry.dictionaryKeys,
114
114
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -9134,7 +9134,7 @@ const domMessages = {
9134
9134
  function _injectProductInfo(key, element) {
9135
9135
  const hasValidType = !isEmpty(key);
9136
9136
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
9137
- const hotVersion = "0.0.0-next-092f69c-20240806";
9137
+ const hotVersion = "0.0.0-next-bda8d59-20240809";
9138
9138
  let keyValidityDate;
9139
9139
  let consoleMessageState = 'invalid';
9140
9140
  let domMessageState = 'invalid';
@@ -9609,6 +9609,8 @@ const A11Y_MENU = () => ['role', 'menu'];
9609
9609
  exports.A11Y_MENU = A11Y_MENU;
9610
9610
  const A11Y_MENU_ITEM = () => ['role', 'menuitem'];
9611
9611
  exports.A11Y_MENU_ITEM = A11Y_MENU_ITEM;
9612
+ const A11Y_MENU_ITEM_CHECKBOX = () => ['role', 'menuitemcheckbox'];
9613
+ exports.A11Y_MENU_ITEM_CHECKBOX = A11Y_MENU_ITEM_CHECKBOX;
9612
9614
  const A11Y_COMBOBOX = () => ['role', 'combobox'];
9613
9615
  exports.A11Y_COMBOBOX = A11Y_COMBOBOX;
9614
9616
  const A11Y_LISTBOX = () => ['role', 'listbox'];
@@ -60558,6 +60560,17 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
60558
60560
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
60559
60561
  const KEY = exports.KEY = 'alignment';
60560
60562
 
60563
+ /**
60564
+ * @param {object} hot The current Handsontable instance.
60565
+ * @param {string} rawName The raw name of the menu item.
60566
+ * @param {string} htClassName The class name to check.
60567
+ * @returns {string} The value of aria-label parameter.
60568
+ */
60569
+ function ariaLabel(hot, rawName, htClassName) {
60570
+ const checkboxState = (0, _utils.hasSelectionAClass)(hot, htClassName) ? hot.getTranslatedPhrase(C.CHECKBOX_CHECKED) : hot.getTranslatedPhrase(C.CHECKBOX_UNCHECKED);
60571
+ return `${rawName} ${checkboxState.toLowerCase()}`;
60572
+ }
60573
+
60561
60574
  /**
60562
60575
  * @returns {object}
60563
60576
  */
@@ -60583,15 +60596,16 @@ function alignmentItem() {
60583
60596
  submenu: {
60584
60597
  items: [{
60585
60598
  key: `${KEY}:left`,
60599
+ checkable: true,
60600
+ ariaLabel() {
60601
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_LEFT), 'htLeft');
60602
+ },
60603
+ ariaChecked() {
60604
+ return (0, _utils.hasSelectionAClass)(this, 'htLeft');
60605
+ },
60586
60606
  name() {
60587
60607
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_LEFT);
60588
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
60589
- const className = this.getCellMeta(row, col).className;
60590
- if (className && className.indexOf('htLeft') !== -1) {
60591
- return true;
60592
- }
60593
- });
60594
- if (hasClass) {
60608
+ if ((0, _utils.hasSelectionAClass)(this, 'htLeft')) {
60595
60609
  label = (0, _utils.markLabelAsSelected)(label);
60596
60610
  }
60597
60611
  return label;
@@ -60608,15 +60622,16 @@ function alignmentItem() {
60608
60622
  disabled: false
60609
60623
  }, {
60610
60624
  key: `${KEY}:center`,
60625
+ checkable: true,
60626
+ ariaLabel() {
60627
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_CENTER), 'htCenter');
60628
+ },
60629
+ ariaChecked() {
60630
+ return (0, _utils.hasSelectionAClass)(this, 'htCenter');
60631
+ },
60611
60632
  name() {
60612
60633
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_CENTER);
60613
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
60614
- const className = this.getCellMeta(row, col).className;
60615
- if (className && className.indexOf('htCenter') !== -1) {
60616
- return true;
60617
- }
60618
- });
60619
- if (hasClass) {
60634
+ if ((0, _utils.hasSelectionAClass)(this, 'htCenter')) {
60620
60635
  label = (0, _utils.markLabelAsSelected)(label);
60621
60636
  }
60622
60637
  return label;
@@ -60633,15 +60648,16 @@ function alignmentItem() {
60633
60648
  disabled: false
60634
60649
  }, {
60635
60650
  key: `${KEY}:right`,
60651
+ checkable: true,
60652
+ ariaLabel() {
60653
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT), 'htRight');
60654
+ },
60655
+ ariaChecked() {
60656
+ return (0, _utils.hasSelectionAClass)(this, 'htRight');
60657
+ },
60636
60658
  name() {
60637
60659
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT);
60638
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
60639
- const className = this.getCellMeta(row, col).className;
60640
- if (className && className.indexOf('htRight') !== -1) {
60641
- return true;
60642
- }
60643
- });
60644
- if (hasClass) {
60660
+ if ((0, _utils.hasSelectionAClass)(this, 'htRight')) {
60645
60661
  label = (0, _utils.markLabelAsSelected)(label);
60646
60662
  }
60647
60663
  return label;
@@ -60658,15 +60674,16 @@ function alignmentItem() {
60658
60674
  disabled: false
60659
60675
  }, {
60660
60676
  key: `${KEY}:justify`,
60677
+ checkable: true,
60678
+ ariaLabel() {
60679
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY), 'htJustify');
60680
+ },
60681
+ ariaChecked() {
60682
+ return (0, _utils.hasSelectionAClass)(this, 'htJustify');
60683
+ },
60661
60684
  name() {
60662
60685
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY);
60663
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
60664
- const className = this.getCellMeta(row, col).className;
60665
- if (className && className.indexOf('htJustify') !== -1) {
60666
- return true;
60667
- }
60668
- });
60669
- if (hasClass) {
60686
+ if ((0, _utils.hasSelectionAClass)(this, 'htJustify')) {
60670
60687
  label = (0, _utils.markLabelAsSelected)(label);
60671
60688
  }
60672
60689
  return label;
@@ -60685,15 +60702,16 @@ function alignmentItem() {
60685
60702
  name: _separator.KEY
60686
60703
  }, {
60687
60704
  key: `${KEY}:top`,
60705
+ checkable: true,
60706
+ ariaLabel() {
60707
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_TOP), 'htTop');
60708
+ },
60709
+ ariaChecked() {
60710
+ return (0, _utils.hasSelectionAClass)(this, 'htTop');
60711
+ },
60688
60712
  name() {
60689
60713
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_TOP);
60690
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
60691
- const className = this.getCellMeta(row, col).className;
60692
- if (className && className.indexOf('htTop') !== -1) {
60693
- return true;
60694
- }
60695
- });
60696
- if (hasClass) {
60714
+ if ((0, _utils.hasSelectionAClass)(this, 'htTop')) {
60697
60715
  label = (0, _utils.markLabelAsSelected)(label);
60698
60716
  }
60699
60717
  return label;
@@ -60710,15 +60728,16 @@ function alignmentItem() {
60710
60728
  disabled: false
60711
60729
  }, {
60712
60730
  key: `${KEY}:middle`,
60731
+ checkable: true,
60732
+ ariaLabel() {
60733
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE), 'htMiddle');
60734
+ },
60735
+ ariaChecked() {
60736
+ return (0, _utils.hasSelectionAClass)(this, 'htMiddle');
60737
+ },
60713
60738
  name() {
60714
60739
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE);
60715
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
60716
- const className = this.getCellMeta(row, col).className;
60717
- if (className && className.indexOf('htMiddle') !== -1) {
60718
- return true;
60719
- }
60720
- });
60721
- if (hasClass) {
60740
+ if ((0, _utils.hasSelectionAClass)(this, 'htMiddle')) {
60722
60741
  label = (0, _utils.markLabelAsSelected)(label);
60723
60742
  }
60724
60743
  return label;
@@ -60735,15 +60754,16 @@ function alignmentItem() {
60735
60754
  disabled: false
60736
60755
  }, {
60737
60756
  key: `${KEY}:bottom`,
60757
+ checkable: true,
60758
+ ariaLabel() {
60759
+ return ariaLabel(this, this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM), 'htBottom');
60760
+ },
60761
+ ariaChecked() {
60762
+ return (0, _utils.hasSelectionAClass)(this, 'htBottom');
60763
+ },
60738
60764
  name() {
60739
60765
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM);
60740
- const hasClass = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
60741
- const className = this.getCellMeta(row, col).className;
60742
- if (className && className.indexOf('htBottom') !== -1) {
60743
- return true;
60744
- }
60745
- });
60746
- if (hasClass) {
60766
+ if ((0, _utils.hasSelectionAClass)(this, 'htBottom')) {
60747
60767
  label = (0, _utils.markLabelAsSelected)(label);
60748
60768
  }
60749
60769
  return label;
@@ -60774,7 +60794,9 @@ exports.__esModule = true;
60774
60794
  exports.align = align;
60775
60795
  exports.checkSelectionConsistency = checkSelectionConsistency;
60776
60796
  exports.getAlignmentClasses = getAlignmentClasses;
60797
+ exports.getAlignmentComparatorByClass = getAlignmentComparatorByClass;
60777
60798
  exports.getDocumentOffsetByElement = getDocumentOffsetByElement;
60799
+ exports.hasSelectionAClass = hasSelectionAClass;
60778
60800
  exports.markLabelAsSelected = markLabelAsSelected;
60779
60801
  exports.prepareHorizontalAlignClass = prepareHorizontalAlignClass;
60780
60802
  exports.prepareVerticalAlignClass = prepareVerticalAlignClass;
@@ -60923,6 +60945,30 @@ function getDocumentOffsetByElement(elementToCheck, baseDocument) {
60923
60945
  return offset;
60924
60946
  }
60925
60947
 
60948
+ /**
60949
+ * Prepares comparator function consumable by checkSelectionConsistency
60950
+ * Comparator function checks if the cell has the provided class name.
60951
+ *
60952
+ * @param {string} htClassName The class name to check.
60953
+ * @returns {Function} Returns the comparator function.
60954
+ * Use with .bind, .call or .apply to pass the Handsontable instance.
60955
+ */
60956
+ function getAlignmentComparatorByClass(htClassName) {
60957
+ return function (row, col) {
60958
+ const className = this.getCellMeta(row, col).className;
60959
+ return className && className.indexOf(htClassName) !== -1;
60960
+ };
60961
+ }
60962
+
60963
+ /**
60964
+ * @param {object} hot Handsontable instance.
60965
+ * @param {string} htClassName The class name to check.
60966
+ * @returns {boolean} Returns true if at least one cell has the provided class name.
60967
+ */
60968
+ function hasSelectionAClass(hot, htClassName) {
60969
+ return checkSelectionConsistency(hot.getSelectedRange(), getAlignmentComparatorByClass(htClassName).bind(hot));
60970
+ }
60971
+
60926
60972
  /***/ }),
60927
60973
  /* 522 */
60928
60974
  /***/ ((__unused_webpack_module, exports) => {
@@ -61112,6 +61158,17 @@ const KEY = exports.KEY = 'make_read_only';
61112
61158
  function readOnlyItem() {
61113
61159
  return {
61114
61160
  key: KEY,
61161
+ checkable: true,
61162
+ ariaChecked() {
61163
+ const atLeastOneReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => this.getCellMeta(row, col).readOnly);
61164
+ return atLeastOneReadOnly;
61165
+ },
61166
+ ariaLabel() {
61167
+ const rawName = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY);
61168
+ const atLeastOneReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => this.getCellMeta(row, col).readOnly);
61169
+ const checkboxState = atLeastOneReadOnly ? this.getTranslatedPhrase(C.CHECKBOX_CHECKED) : this.getTranslatedPhrase(C.CHECKBOX_UNCHECKED);
61170
+ return `${rawName} ${checkboxState.toLowerCase()}`;
61171
+ },
61115
61172
  name() {
61116
61173
  let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY);
61117
61174
  const atLeastOneReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => this.getCellMeta(row, col).readOnly);
@@ -63551,6 +63608,7 @@ exports.__esModule = true;
63551
63608
  exports.filterSeparators = filterSeparators;
63552
63609
  exports.hasSubMenu = hasSubMenu;
63553
63610
  exports.isDisabled = isDisabled;
63611
+ exports.isItemCheckable = isItemCheckable;
63554
63612
  exports.isItemDisabled = isItemDisabled;
63555
63613
  exports.isItemHidden = isItemHidden;
63556
63614
  exports.isItemSelectionDisabled = isItemSelectionDisabled;
@@ -63723,6 +63781,16 @@ function filterSeparators(items) {
63723
63781
  return result;
63724
63782
  }
63725
63783
 
63784
+ /**
63785
+ * Check if the provided element presents the checkboxable menu item.
63786
+ *
63787
+ * @param {object} itemToTest Item element.
63788
+ * @returns {boolean}
63789
+ */
63790
+ function isItemCheckable(itemToTest) {
63791
+ return itemToTest.checkable === true;
63792
+ }
63793
+
63726
63794
  /***/ }),
63727
63795
  /* 551 */
63728
63796
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -63991,11 +64059,13 @@ function createMenuItemRenderer(mainTableHot) {
63991
64059
  const item = menuHot.getSourceDataAtRow(row);
63992
64060
  const wrapper = mainTableHot.rootDocument.createElement('div');
63993
64061
  const itemValue = typeof value === 'function' ? value.call(mainTableHot) : value;
64062
+ const ariaLabel = typeof item.ariaLabel === 'function' ? item.ariaLabel.call(mainTableHot) : item.ariaLabel;
64063
+ const ariaChecked = typeof item.ariaChecked === 'function' ? item.ariaChecked.call(mainTableHot) : item.ariaChecked;
63994
64064
  (0, _element.empty)(TD);
63995
64065
  (0, _element.addClass)(wrapper, 'htItemWrapper');
63996
64066
  if (mainTableHot.getSettings().ariaTags) {
63997
64067
  const isFocusable = !(0, _utils.isItemDisabled)(item, mainTableHot) && !(0, _utils.isItemSelectionDisabled)(item) && !(0, _utils.isItemSeparator)(item);
63998
- (0, _element.setAttribute)(TD, [(0, _a11y.A11Y_MENU_ITEM)(), (0, _a11y.A11Y_LABEL)(itemValue), ...(isFocusable ? [(0, _a11y.A11Y_TABINDEX)(-1)] : []), ...((0, _utils.isItemDisabled)(item, mainTableHot) ? [(0, _a11y.A11Y_DISABLED)()] : []), ...((0, _utils.isItemSubMenu)(item) ? [(0, _a11y.A11Y_EXPANDED)(false)] : [])]);
64068
+ (0, _element.setAttribute)(TD, [...((0, _utils.isItemCheckable)(item) ? [(0, _a11y.A11Y_MENU_ITEM_CHECKBOX)(), (0, _a11y.A11Y_LABEL)(ariaLabel), (0, _a11y.A11Y_CHECKED)(ariaChecked)] : [(0, _a11y.A11Y_MENU_ITEM)(), (0, _a11y.A11Y_LABEL)(itemValue)]), ...(isFocusable ? [(0, _a11y.A11Y_TABINDEX)(-1)] : []), ...((0, _utils.isItemDisabled)(item, mainTableHot) ? [(0, _a11y.A11Y_DISABLED)()] : []), ...((0, _utils.isItemSubMenu)(item) ? [(0, _a11y.A11Y_EXPANDED)(false)] : [])]);
63999
64069
  }
64000
64070
  TD.className = '';
64001
64071
  TD.appendChild(wrapper);
@@ -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-092f69c-20240806
29
- * Release date: 30/07/2024 (built at 06/08/2024 05:35:57)
28
+ * Version: 0.0.0-next-bda8d59-20240809
29
+ * Release date: 30/07/2024 (built at 09/08/2024 06:40:28)
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;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