handsontable 0.0.0-next-a77544c-20231123 → 0.0.0-next-a417c2b-20231124

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

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-a77544c-20231123
29
- * Release date: 31/08/2023 (built at 23/11/2023 13:45:49)
28
+ * Version: 0.0.0-next-a417c2b-20231124
29
+ * Release date: 31/08/2023 (built at 24/11/2023 11:00:21)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -105,8 +105,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
105
105
  Handsontable.CellCoords = _src.CellCoords;
106
106
  Handsontable.CellRange = _src.CellRange;
107
107
  Handsontable.packageName = 'handsontable';
108
- Handsontable.buildDate = "23/11/2023 13:45:49";
109
- Handsontable.version = "0.0.0-next-a77544c-20231123";
108
+ Handsontable.buildDate = "24/11/2023 11:00:21";
109
+ Handsontable.version = "0.0.0-next-a417c2b-20231124";
110
110
  Handsontable.languages = {
111
111
  dictionaryKeys: _registry.dictionaryKeys,
112
112
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -8514,7 +8514,7 @@ const domMessages = {
8514
8514
  function _injectProductInfo(key, element) {
8515
8515
  const hasValidType = !isEmpty(key);
8516
8516
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
8517
- const hotVersion = "0.0.0-next-a77544c-20231123";
8517
+ const hotVersion = "0.0.0-next-a417c2b-20231124";
8518
8518
  let keyValidityDate;
8519
8519
  let consoleMessageState = 'invalid';
8520
8520
  let domMessageState = 'invalid';
@@ -16595,8 +16595,10 @@ class TableView {
16595
16595
  const span = rootDocument.createElement('span');
16596
16596
  div.className = 'relative';
16597
16597
  span.className = 'colHeader';
16598
- (0, _element.setAttribute)(div, ...(0, _a11y.A11Y_PRESENTATION)());
16599
- (0, _element.setAttribute)(span, ...(0, _a11y.A11Y_PRESENTATION)());
16598
+ if (this.settings.ariaTags) {
16599
+ (0, _element.setAttribute)(div, ...(0, _a11y.A11Y_PRESENTATION)());
16600
+ (0, _element.setAttribute)(span, ...(0, _a11y.A11Y_PRESENTATION)());
16601
+ }
16600
16602
  this.updateCellHeader(span, visualColumnIndex, label, headerLevel);
16601
16603
  div.appendChild(span);
16602
16604
  TH.appendChild(div);
@@ -22426,7 +22428,7 @@ class ColumnHeadersRenderer extends _base.default {
22426
22428
  // Remove all accessibility-related attributes for the header to start fresh.
22427
22429
  (0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
22428
22430
  if (this.table.isAriaEnabled()) {
22429
- (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1), ...(renderedColumnIndex < 0 ? [(0, _a11y.A11Y_PRESENTATION)()] : [(0, _a11y.A11Y_COLUMNHEADER)(), (0, _a11y.A11Y_SCOPE_COL)()])]);
22431
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1), (0, _a11y.A11Y_COLUMNHEADER)(), ...(renderedColumnIndex >= 0 ? [(0, _a11y.A11Y_SCOPE_COL)()] : [])]);
22430
22432
  }
22431
22433
  columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
22432
22434
  }
@@ -25994,12 +25996,12 @@ class SelectionManager {
25994
25996
  }
25995
25997
  const selections = Array.from((0, _classPrivateFieldGet7.default)(this, _selections));
25996
25998
  const classNamesMap = new Map();
25997
- const focusedHeaderAttributesMap = new Map();
25999
+ const headerAttributesMap = new Map();
25998
26000
  for (let i = 0; i < selections.length; i++) {
25999
26001
  const selection = selections[i];
26000
26002
  const {
26001
26003
  className,
26002
- focusedHeaderAttributes,
26004
+ headerAttributes,
26003
26005
  createLayers,
26004
26006
  selectionType
26005
26007
  } = selection.settings;
@@ -26026,12 +26028,12 @@ class SelectionManager {
26026
26028
  } else {
26027
26029
  classNamesMap.set(element, new Map([[className, 1]]));
26028
26030
  }
26029
- if (selectionType === 'focus' && focusedHeaderAttributes) {
26030
- if (!focusedHeaderAttributesMap.has(element)) {
26031
- focusedHeaderAttributesMap.set(element, []);
26031
+ if (headerAttributes) {
26032
+ if (!headerAttributesMap.has(element)) {
26033
+ headerAttributesMap.set(element, []);
26032
26034
  }
26033
26035
  if (element.nodeName === 'TH') {
26034
- focusedHeaderAttributesMap.get(element).push(...focusedHeaderAttributes);
26036
+ headerAttributesMap.get(element).push(...headerAttributes);
26035
26037
  }
26036
26038
  }
26037
26039
  });
@@ -26059,8 +26061,8 @@ class SelectionManager {
26059
26061
  });
26060
26062
 
26061
26063
  // Set the attributes for the headers if they're focused.
26062
- Array.from(focusedHeaderAttributesMap.keys()).forEach(element => {
26063
- (0, _element.setAttribute)(element, [...focusedHeaderAttributesMap.get(element)]);
26064
+ Array.from(headerAttributesMap.keys()).forEach(element => {
26065
+ (0, _element.setAttribute)(element, [...headerAttributesMap.get(element)]);
26064
26066
  });
26065
26067
  }
26066
26068
  }
@@ -32050,7 +32052,6 @@ class Selection {
32050
32052
  this.tableProps = tableProps;
32051
32053
  this.highlight = new _highlight.default({
32052
32054
  headerClassName: settings.currentHeaderClassName,
32053
- headerAttributes: [(0, _a11y.A11Y_SELECTED)()],
32054
32055
  activeHeaderClassName: settings.activeHeaderClassName,
32055
32056
  rowClassName: settings.currentRowClassName,
32056
32057
  columnClassName: settings.currentColClassName,
@@ -33649,27 +33650,23 @@ exports.__esModule = true;
33649
33650
  exports.createHighlight = createHighlight;
33650
33651
  var _src = __webpack_require__(147);
33651
33652
  var _visualSelection = _interopRequireDefault(__webpack_require__(250));
33653
+ var _a11y = __webpack_require__(114);
33652
33654
  /**
33653
33655
  * Creates the new instance of Selection responsible for highlighting currently selected cell. This type of selection
33654
33656
  * can present on the table only one at the time.
33655
33657
  *
33656
33658
  * @param {object} highlightParams A configuration object to create a highlight.
33657
33659
  * @param {Function} highlightParams.cellCornerVisible Function to determine if cell's corner should be visible.
33658
- * @param {Function} highlightParams.cellAttributes Array of cell attributes.
33659
- * @param {Function} highlightParams.headerAttributes Array of header attributes.
33660
33660
  * @returns {Selection}
33661
33661
  */
33662
33662
  function createHighlight(_ref) {
33663
33663
  let {
33664
33664
  cellCornerVisible,
33665
- cellAttributes,
33666
- headerAttributes,
33667
33665
  ...restOptions
33668
33666
  } = _ref;
33669
33667
  return new _visualSelection.default({
33670
33668
  className: 'current',
33671
- cellAttributes,
33672
- focusedHeaderAttributes: headerAttributes,
33669
+ headerAttributes: [(0, _a11y.A11Y_SELECTED)()],
33673
33670
  border: {
33674
33671
  width: 2,
33675
33672
  color: '#4b89ff',
@@ -43582,7 +43579,7 @@ function createInputElement(hot) {
43582
43579
  input.type = 'text';
43583
43580
  input.classList.add('htFocusCatcher');
43584
43581
  if (hot.getSettings().ariaTags) {
43585
- (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)()]);
43582
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_PRESENTATION)(), (0, _a11y.A11Y_HIDDEN)()]);
43586
43583
  }
43587
43584
  return input;
43588
43585
  }
@@ -65055,7 +65052,16 @@ class Filters extends _base.BasePlugin {
65055
65052
  // A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
65056
65053
  // to the menu navigation using arrow keys.
65057
65054
  {
65058
- focus: () => mainMenu.focus()
65055
+ focus: () => {
65056
+ const menuNavigator = mainMenu.getNavigator();
65057
+ const lastSelectedMenuItem = (0, _classPrivateFieldGet2.default)(this, _menuFocusNavigator).getLastMenuPage();
65058
+ mainMenu.focus();
65059
+ if (lastSelectedMenuItem > 0) {
65060
+ menuNavigator.setCurrentPage(lastSelectedMenuItem);
65061
+ } else {
65062
+ menuNavigator.toFirstItem();
65063
+ }
65064
+ }
65059
65065
  }, ...Array.from(this.components).map(_ref => {
65060
65066
  let [, component] = _ref;
65061
65067
  return component.getElements();
@@ -67655,9 +67661,11 @@ var _classPrivateFieldGet2 = _interopRequireDefault(__webpack_require__(133));
67655
67661
  var _menu2 = __webpack_require__(483);
67656
67662
  var _object = __webpack_require__(117);
67657
67663
  var _array = __webpack_require__(113);
67664
+ var _element = __webpack_require__(107);
67658
67665
  var C = _interopRequireWildcard(__webpack_require__(245));
67659
67666
  var _predefinedItems = __webpack_require__(458);
67660
67667
  var _base = __webpack_require__(560);
67668
+ var _a11y = __webpack_require__(114);
67661
67669
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
67662
67670
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
67663
67671
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
@@ -67814,6 +67822,10 @@ class SelectUI extends _base.BaseUI {
67814
67822
  (0, _classPrivateFieldSet2.default)(this, _caption, caption);
67815
67823
  (0, _classPrivateFieldSet2.default)(this, _captionElement, caption.element);
67816
67824
  (0, _classPrivateFieldSet2.default)(this, _dropdown, dropdown);
67825
+ if (this.hot.getSettings().ariaTags) {
67826
+ (0, _element.setAttribute)(dropdown.element, [(0, _a11y.A11Y_HIDDEN)()]);
67827
+ (0, _element.setAttribute)(this._element, [(0, _a11y.A11Y_LISTBOX)()]);
67828
+ }
67817
67829
  (0, _array.arrayEach)([caption, dropdown], element => this._element.appendChild(element.element));
67818
67830
  (0, _classPrivateFieldGet2.default)(this, _menu).addLocalHook('select', command => _classPrivateMethodGet(this, _onMenuSelect, _onMenuSelect2).call(this, command));
67819
67831
  (0, _classPrivateFieldGet2.default)(this, _menu).addLocalHook('afterClose', () => _classPrivateMethodGet(this, _onMenuClosed, _onMenuClosed2).call(this));
@@ -69718,12 +69730,17 @@ const SHORTCUTS_MENU_CONTEXT = 'filters';
69718
69730
  * @returns {Paginator}
69719
69731
  */
69720
69732
  function createMenuFocusController(mainMenu, menuItems) {
69721
- const navigator = (0, _focusNavigator.createFocusNavigator)(menuItems);
69733
+ /**
69734
+ * @type {number} The last selected menu item (before clearing the the menu state after going
69735
+ * into the focus mode triggered by the TAB or SHIFT+TAB keys).
69736
+ */
69737
+ let lastSelectedMenuItem = -1;
69738
+ const focusNavigator = (0, _focusNavigator.createFocusNavigator)(menuItems);
69722
69739
  const updateNavigatorPosition = element => () => {
69723
69740
  if (mainMenu.isOpened()) {
69724
69741
  mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
69725
69742
  }
69726
- navigator.setCurrentPage(menuItems.indexOf(element));
69743
+ focusNavigator.setCurrentPage(menuItems.indexOf(element));
69727
69744
  };
69728
69745
 
69729
69746
  // update navigator position (internal state) to element that was recently clicked or focused
@@ -69736,7 +69753,7 @@ function createMenuFocusController(mainMenu, menuItems) {
69736
69753
  });
69737
69754
  mainMenu.addLocalHook('afterSelectionChange', selectedItem => {
69738
69755
  if (!selectedItem.key.startsWith('filter_')) {
69739
- navigator.clear();
69756
+ focusNavigator.clear();
69740
69757
  }
69741
69758
  });
69742
69759
 
@@ -69748,7 +69765,7 @@ function createMenuFocusController(mainMenu, menuItems) {
69748
69765
  function addKeyboardShortcuts(menu) {
69749
69766
  const mainMenuShortcutsCtrl = mainMenu.getKeyboardShortcutsCtrl();
69750
69767
  const currentMenuShortcutsCtrl = menu.getKeyboardShortcutsCtrl();
69751
- navigator.clear();
69768
+ focusNavigator.clear();
69752
69769
  currentMenuShortcutsCtrl.addCustomShortcuts([{
69753
69770
  keys: [['Tab'], ['Shift', 'Tab']],
69754
69771
  forwardToContext: mainMenuShortcutsCtrl.getContext(SHORTCUTS_MENU_CONTEXT),
@@ -69765,11 +69782,15 @@ function createMenuFocusController(mainMenu, menuItems) {
69765
69782
  mainMenuShortcutsCtrl.addCustomShortcuts([{
69766
69783
  keys: [['Tab'], ['Shift', 'Tab']],
69767
69784
  callback: event => {
69768
- mainMenu.getNavigator().clear();
69785
+ const menuNavigator = mainMenu.getNavigator();
69786
+ if (menuNavigator.getCurrentPage() > -1) {
69787
+ lastSelectedMenuItem = menuNavigator.getCurrentPage();
69788
+ }
69789
+ menuNavigator.clear();
69769
69790
  if (event.shiftKey) {
69770
- navigator.toPreviousItem();
69791
+ focusNavigator.toPreviousItem();
69771
69792
  } else {
69772
- navigator.toNextItem();
69793
+ focusNavigator.toNextItem();
69773
69794
  }
69774
69795
  }
69775
69796
  }, {
@@ -69781,7 +69802,7 @@ function createMenuFocusController(mainMenu, menuItems) {
69781
69802
  keys: [['Enter'], ['Space']],
69782
69803
  preventDefault: false,
69783
69804
  callback: event => {
69784
- const element = menuItems[navigator.getCurrentPage()];
69805
+ const element = menuItems[focusNavigator.getCurrentPage()];
69785
69806
  if (element instanceof _select.SelectUI) {
69786
69807
  element.openOptions();
69787
69808
  event.preventDefault();
@@ -69807,9 +69828,19 @@ function createMenuFocusController(mainMenu, menuItems) {
69807
69828
  mainMenu.focus();
69808
69829
  mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
69809
69830
  }
69831
+
69832
+ /**
69833
+ * Retrieves the last selected menu item (before clearing the state after going into the focus mode).
69834
+ *
69835
+ * @returns {number} The last selected menu item.
69836
+ */
69837
+ function getLastMenuPage() {
69838
+ return lastSelectedMenuItem;
69839
+ }
69810
69840
  return {
69811
- ...navigator,
69812
- listen
69841
+ ...focusNavigator,
69842
+ listen,
69843
+ getLastMenuPage
69813
69844
  };
69814
69845
  }
69815
69846
 
@@ -84244,6 +84275,7 @@ class NestedRows extends _base.BasePlugin {
84244
84275
  /**
84245
84276
  * The modifyRowData hook callback.
84246
84277
  *
84278
+ * @private
84247
84279
  * @param {number} row Visual row index.
84248
84280
  * @returns {boolean}
84249
84281
  */
@@ -84257,6 +84289,7 @@ class NestedRows extends _base.BasePlugin {
84257
84289
  /**
84258
84290
  * Modify the source data length to match the length of the nested structure.
84259
84291
  *
84292
+ * @private
84260
84293
  * @returns {number}
84261
84294
  */
84262
84295
  onModifySourceLength() {
@@ -84267,6 +84300,7 @@ class NestedRows extends _base.BasePlugin {
84267
84300
  }
84268
84301
 
84269
84302
  /**
84303
+ * @private
84270
84304
  * @param {number} index The index where the data was spliced.
84271
84305
  * @param {number} amount An amount of items to remove.
84272
84306
  * @param {object} element An element to add.
@@ -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-a77544c-20231123
29
- * Release date: 31/08/2023 (built at 23/11/2023 13:46:07)
28
+ * Version: 0.0.0-next-a417c2b-20231124
29
+ * Release date: 31/08/2023 (built at 24/11/2023 11:00:38)
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 thead,.handsontable .ht_master thead,.handsontable .ht_master tr th{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#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