handsontable 0.0.0-next-ffdf116-20240926 → 0.0.0-next-517ec9c-20240930

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-ffdf116-20240926
29
- * Release date: 30/07/2024 (built at 26/09/2024 10:52:57)
28
+ * Version: 0.0.0-next-517ec9c-20240930
29
+ * Release date: 30/07/2024 (built at 30/09/2024 11:07:23)
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 = "26/09/2024 10:52:57";
111
- Handsontable.version = "0.0.0-next-ffdf116-20240926";
110
+ Handsontable.buildDate = "30/09/2024 11:07:23";
111
+ Handsontable.version = "0.0.0-next-517ec9c-20240930";
112
112
  Handsontable.languages = {
113
113
  dictionaryKeys: _registry.dictionaryKeys,
114
114
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -9272,7 +9272,7 @@ const domMessages = {
9272
9272
  function _injectProductInfo(key, element) {
9273
9273
  const hasValidType = !isEmpty(key);
9274
9274
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
9275
- const hotVersion = "0.0.0-next-ffdf116-20240926";
9275
+ const hotVersion = "0.0.0-next-517ec9c-20240930";
9276
9276
  let keyValidityDate;
9277
9277
  let consoleMessageState = 'invalid';
9278
9278
  let domMessageState = 'invalid';
@@ -64182,7 +64182,7 @@ function createKeyboardShortcutsCtrl(menu) {
64182
64182
  /**
64183
64183
  * Makes the specified context active.
64184
64184
  *
64185
- * @param {string} contextName The context name.
64185
+ * @param {string} [contextName] The context name.
64186
64186
  */
64187
64187
  function listen(contextName) {
64188
64188
  menu.hotMenu.getShortcutManager().setActiveContextName(_getContextName(contextName));
@@ -68481,6 +68481,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
68481
68481
  * :::
68482
68482
  */
68483
68483
  var _menuFocusNavigator = /*#__PURE__*/new WeakMap();
68484
+ var _dropdownMenuTraces = /*#__PURE__*/new WeakMap();
68484
68485
  var _Filters_brand = /*#__PURE__*/new WeakSet();
68485
68486
  class Filters extends _base.BasePlugin {
68486
68487
  static get PLUGIN_KEY() {
@@ -68544,6 +68545,12 @@ class Filters extends _base.BasePlugin {
68544
68545
  * @type {MenuFocusNavigator|undefined}
68545
68546
  */
68546
68547
  _classPrivateFieldInitSpec(this, _menuFocusNavigator, void 0);
68548
+ /**
68549
+ * Traces the new menu instances to apply the focus navigation to the latest one.
68550
+ *
68551
+ * @type {WeakSet<Menu>}
68552
+ */
68553
+ _classPrivateFieldInitSpec(this, _dropdownMenuTraces, new WeakSet());
68547
68554
  this.hot.addHook('afterGetColHeader', (col, TH) => _assertClassBrand(_Filters_brand, this, _onAfterGetColHeader).call(this, col, TH));
68548
68555
  }
68549
68556
 
@@ -68562,6 +68569,7 @@ class Filters extends _base.BasePlugin {
68562
68569
  * Enables the plugin functionality for this Handsontable instance.
68563
68570
  */
68564
68571
  enablePlugin() {
68572
+ var _this = this;
68565
68573
  if (this.enabled) {
68566
68574
  return;
68567
68575
  }
@@ -68623,7 +68631,13 @@ class Filters extends _base.BasePlugin {
68623
68631
  this.conditionUpdateObserver.addLocalHook('update', conditionState => _assertClassBrand(_Filters_brand, this, _updateComponents).call(this, conditionState));
68624
68632
  }
68625
68633
  this.components.forEach(component => component.show());
68626
- this.addHook('afterDropdownMenuDefaultOptions', defaultOptions => _assertClassBrand(_Filters_brand, this, _onAfterDropdownMenuDefaultOptions).call(this, defaultOptions));
68634
+ this.addHook('afterDropdownMenuDefaultOptions', function () {
68635
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
68636
+ args[_key] = arguments[_key];
68637
+ }
68638
+ return _assertClassBrand(_Filters_brand, _this, _onAfterDropdownMenuDefaultOptions).call(_this, ...args);
68639
+ });
68640
+ this.addHook('beforeDropdownMenuShow', () => _assertClassBrand(_Filters_brand, this, _onBeforeDropdownMenuShow).call(this));
68627
68641
  this.addHook('afterDropdownMenuShow', () => _assertClassBrand(_Filters_brand, this, _onAfterDropdownMenuShow).call(this));
68628
68642
  this.addHook('afterDropdownMenuHide', () => _assertClassBrand(_Filters_brand, this, _onAfterDropdownMenuHide).call(this));
68629
68643
  this.addHook('afterChange', changes => _assertClassBrand(_Filters_brand, this, _onAfterChange).call(this, changes));
@@ -68634,15 +68648,15 @@ class Filters extends _base.BasePlugin {
68634
68648
  this.dropdownMenuPlugin.enablePlugin();
68635
68649
  }
68636
68650
  if (!_classPrivateFieldGet(_menuFocusNavigator, this) && this.dropdownMenuPlugin.enabled) {
68637
- const mainMenu = this.dropdownMenuPlugin.menu;
68638
68651
  const focusableItems = [
68639
68652
  // A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
68640
68653
  // to the menu navigation using arrow keys.
68641
68654
  {
68642
68655
  focus: () => {
68643
- const menuNavigator = mainMenu.getNavigator();
68656
+ const menu = _classPrivateFieldGet(_menuFocusNavigator, this).getMenu();
68657
+ const menuNavigator = menu.getNavigator();
68644
68658
  const lastSelectedMenuItem = _classPrivateFieldGet(_menuFocusNavigator, this).getLastMenuPage();
68645
- mainMenu.focus();
68659
+ menu.focus();
68646
68660
  if (lastSelectedMenuItem > 0) {
68647
68661
  menuNavigator.setCurrentPage(lastSelectedMenuItem);
68648
68662
  } else {
@@ -68653,7 +68667,7 @@ class Filters extends _base.BasePlugin {
68653
68667
  let [, component] = _ref;
68654
68668
  return component.getElements();
68655
68669
  }).flat()];
68656
- _classPrivateFieldSet(_menuFocusNavigator, this, (0, _focusController.createMenuFocusController)(mainMenu, focusableItems));
68670
+ _classPrivateFieldSet(_menuFocusNavigator, this, (0, _focusController.createMenuFocusController)(this.dropdownMenuPlugin.menu, focusableItems));
68657
68671
  const forwardToFocusNavigation = event => {
68658
68672
  _classPrivateFieldGet(_menuFocusNavigator, this).listen();
68659
68673
  event.preventDefault();
@@ -69111,8 +69125,8 @@ class Filters extends _base.BasePlugin {
69111
69125
  return indexes;
69112
69126
  }
69113
69127
  const menu = this.dropdownMenuPlugin.menu;
69114
- for (var _len = arguments.length, components = new Array(_len), _key = 0; _key < _len; _key++) {
69115
- components[_key] = arguments[_key];
69128
+ for (var _len2 = arguments.length, components = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
69129
+ components[_key2] = arguments[_key2];
69116
69130
  }
69117
69131
  (0, _array.arrayEach)(components, component => {
69118
69132
  (0, _array.arrayEach)(menu.menuItems, (item, index) => {
@@ -69139,8 +69153,8 @@ class Filters extends _base.BasePlugin {
69139
69153
  const menu = this.dropdownMenuPlugin.menu;
69140
69154
  const hotMenu = menu.hotMenu;
69141
69155
  const hiddenRows = hotMenu.getPlugin('hiddenRows');
69142
- for (var _len2 = arguments.length, components = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
69143
- components[_key2 - 1] = arguments[_key2];
69156
+ for (var _len3 = arguments.length, components = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
69157
+ components[_key3 - 1] = arguments[_key3];
69144
69158
  }
69145
69159
  const indexes = this.getIndexesOfComponents(...components);
69146
69160
  if (visible) {
@@ -69158,8 +69172,8 @@ class Filters extends _base.BasePlugin {
69158
69172
  * @param {...BaseComponent} components List of components.
69159
69173
  */
69160
69174
  hideComponents() {
69161
- for (var _len3 = arguments.length, components = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
69162
- components[_key3] = arguments[_key3];
69175
+ for (var _len4 = arguments.length, components = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
69176
+ components[_key4] = arguments[_key4];
69163
69177
  }
69164
69178
  this.changeComponentsVisibility(false, ...components);
69165
69179
  }
@@ -69171,8 +69185,8 @@ class Filters extends _base.BasePlugin {
69171
69185
  * @param {...BaseComponent} components List of components.
69172
69186
  */
69173
69187
  showComponents() {
69174
- for (var _len4 = arguments.length, components = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
69175
- components[_key4] = arguments[_key4];
69188
+ for (var _len5 = arguments.length, components = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
69189
+ components[_key5] = arguments[_key5];
69176
69190
  }
69177
69191
  this.changeComponentsVisibility(true, ...components);
69178
69192
  }
@@ -69219,6 +69233,16 @@ function _onAfterDropdownMenuHide() {
69219
69233
  this.components.get('filter_by_condition').getSelectElement().closeOptions();
69220
69234
  this.components.get('filter_by_condition2').getSelectElement().closeOptions();
69221
69235
  }
69236
+ /**
69237
+ * Hooks applies the new dropdown menu instance to the focus navigator.
69238
+ */
69239
+ function _onBeforeDropdownMenuShow() {
69240
+ const mainMenu = this.dropdownMenuPlugin.menu;
69241
+ if (!_classPrivateFieldGet(_dropdownMenuTraces, this).has(mainMenu)) {
69242
+ _classPrivateFieldGet(_menuFocusNavigator, this).setMenu(mainMenu);
69243
+ }
69244
+ _classPrivateFieldGet(_dropdownMenuTraces, this).add(mainMenu);
69245
+ }
69222
69246
  /**
69223
69247
  * After dropdown menu default options listener.
69224
69248
  *
@@ -73352,10 +73376,11 @@ function createMenuFocusController(mainMenu, menuItems) {
73352
73376
  * into the focus mode triggered by the TAB or SHIFT+TAB keys).
73353
73377
  */
73354
73378
  let lastSelectedMenuItem = -1;
73379
+ let menuInstance;
73355
73380
  const focusNavigator = (0, _focusNavigator.createFocusNavigator)(menuItems);
73356
73381
  const updateNavigatorPosition = element => () => {
73357
- if (mainMenu.isOpened()) {
73358
- mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
73382
+ if (menuInstance.isOpened()) {
73383
+ menuInstance.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
73359
73384
  }
73360
73385
  focusNavigator.setCurrentPage(menuItems.indexOf(element));
73361
73386
  };
@@ -73368,11 +73393,7 @@ function createMenuFocusController(mainMenu, menuItems) {
73368
73393
  element.addLocalHook('afterClose', updateNavigatorPosition(element));
73369
73394
  }
73370
73395
  });
73371
- mainMenu.addLocalHook('afterSelectionChange', selectedItem => {
73372
- if (!selectedItem.key.startsWith('filter_')) {
73373
- focusNavigator.clear();
73374
- }
73375
- });
73396
+ setMenu(mainMenu);
73376
73397
 
73377
73398
  /**
73378
73399
  * Extends the menu and submenus with new keyboard shortcuts.
@@ -73380,7 +73401,7 @@ function createMenuFocusController(mainMenu, menuItems) {
73380
73401
  * @param {*} menu The menu (as main menu or submenu) instance.
73381
73402
  */
73382
73403
  function addKeyboardShortcuts(menu) {
73383
- const mainMenuShortcutsCtrl = mainMenu.getKeyboardShortcutsCtrl();
73404
+ const mainMenuShortcutsCtrl = menuInstance.getKeyboardShortcutsCtrl();
73384
73405
  const currentMenuShortcutsCtrl = menu.getKeyboardShortcutsCtrl();
73385
73406
  focusNavigator.clear();
73386
73407
  currentMenuShortcutsCtrl.addCustomShortcuts([{
@@ -73399,7 +73420,7 @@ function createMenuFocusController(mainMenu, menuItems) {
73399
73420
  mainMenuShortcutsCtrl.addCustomShortcuts([{
73400
73421
  keys: [['Tab'], ['Shift', 'Tab']],
73401
73422
  callback: event => {
73402
- const menuNavigator = mainMenu.getNavigator();
73423
+ const menuNavigator = menuInstance.getNavigator();
73403
73424
  if (menuNavigator.getCurrentPage() > -1) {
73404
73425
  lastSelectedMenuItem = menuNavigator.getCurrentPage();
73405
73426
  }
@@ -73413,7 +73434,7 @@ function createMenuFocusController(mainMenu, menuItems) {
73413
73434
  }, {
73414
73435
  keys: [['Escape']],
73415
73436
  callback: () => {
73416
- mainMenu.close();
73437
+ menuInstance.close();
73417
73438
  }
73418
73439
  }, {
73419
73440
  keys: [['Enter'], ['Space']],
@@ -73434,16 +73455,39 @@ function createMenuFocusController(mainMenu, menuItems) {
73434
73455
  }
73435
73456
  }], SHORTCUTS_MENU_CONTEXT);
73436
73457
  }
73437
- mainMenu.addLocalHook('afterSubmenuOpen', addKeyboardShortcuts);
73438
- mainMenu.addLocalHook('afterOpen', addKeyboardShortcuts);
73439
73458
 
73440
73459
  /**
73441
73460
  * Focuses the menu and switches its shortcut context to that one which controls
73442
73461
  * the focus navigation.
73443
73462
  */
73444
73463
  function listen() {
73445
- mainMenu.focus();
73446
- mainMenu.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
73464
+ menuInstance.focus();
73465
+ menuInstance.getKeyboardShortcutsCtrl().listen(SHORTCUTS_MENU_CONTEXT);
73466
+ }
73467
+
73468
+ /**
73469
+ * Applies the focus controller to the new menu instance.
73470
+ *
73471
+ * @param {Menu} menu The new menu instance.
73472
+ */
73473
+ function setMenu(menu) {
73474
+ menu.addLocalHook('afterSelectionChange', selectedItem => {
73475
+ if (!selectedItem.key.startsWith('filter_')) {
73476
+ focusNavigator.clear();
73477
+ }
73478
+ });
73479
+ menu.addLocalHook('afterSubmenuOpen', addKeyboardShortcuts);
73480
+ menu.addLocalHook('afterOpen', addKeyboardShortcuts);
73481
+ menuInstance = menu;
73482
+ }
73483
+
73484
+ /**
73485
+ * Retrieves the current menu instance.
73486
+ *
73487
+ * @returns {Menu} The current menu instance.
73488
+ */
73489
+ function getMenu() {
73490
+ return menuInstance;
73447
73491
  }
73448
73492
 
73449
73493
  /**
@@ -73457,6 +73501,8 @@ function createMenuFocusController(mainMenu, menuItems) {
73457
73501
  return {
73458
73502
  ...focusNavigator,
73459
73503
  listen,
73504
+ setMenu,
73505
+ getMenu,
73460
73506
  getLastMenuPage
73461
73507
  };
73462
73508
  }
@@ -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-ffdf116-20240926
29
- * Release date: 30/07/2024 (built at 26/09/2024 10:53:15)
28
+ * Version: 0.0.0-next-517ec9c-20240930
29
+ * Release date: 30/07/2024 (built at 30/09/2024 11:07:42)
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