handsontable 0.0.0-next-a4bd0c0-20250307 → 0.0.0-next-b209352-20250310

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.

package/base.js CHANGED
@@ -45,8 +45,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
45
45
  Handsontable.CellCoords = _src.CellCoords;
46
46
  Handsontable.CellRange = _src.CellRange;
47
47
  Handsontable.packageName = 'handsontable';
48
- Handsontable.buildDate = "07/03/2025 16:15:50";
49
- Handsontable.version = "0.0.0-next-a4bd0c0-20250307";
48
+ Handsontable.buildDate = "10/03/2025 12:39:49";
49
+ Handsontable.version = "0.0.0-next-b209352-20250310";
50
50
  Handsontable.languages = {
51
51
  dictionaryKeys: _registry.dictionaryKeys,
52
52
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "07/03/2025 16:15:56";
39
- Handsontable.version = "0.0.0-next-a4bd0c0-20250307";
38
+ Handsontable.buildDate = "10/03/2025 12:39:55";
39
+ Handsontable.version = "0.0.0-next-b209352-20250310";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -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-a4bd0c0-20250307
29
- * Release date: 20/02/2025 (built at 07/03/2025 16:16:17)
28
+ * Version: 0.0.0-next-b209352-20250310
29
+ * Release date: 20/02/2025 (built at 10/03/2025 12:40:17)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -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-a4bd0c0-20250307
29
- * Release date: 20/02/2025 (built at 07/03/2025 16:16:17)
28
+ * Version: 0.0.0-next-b209352-20250310
29
+ * Release date: 20/02/2025 (built at 10/03/2025 12:40:17)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -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-a4bd0c0-20250307
29
- * Release date: 20/02/2025 (built at 07/03/2025 16:16:00)
28
+ * Version: 0.0.0-next-b209352-20250310
29
+ * Release date: 20/02/2025 (built at 10/03/2025 12:40:00)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -42855,8 +42855,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
42855
42855
  Handsontable.CellCoords = _src.CellCoords;
42856
42856
  Handsontable.CellRange = _src.CellRange;
42857
42857
  Handsontable.packageName = 'handsontable';
42858
- Handsontable.buildDate = "07/03/2025 16:16:00";
42859
- Handsontable.version = "0.0.0-next-a4bd0c0-20250307";
42858
+ Handsontable.buildDate = "10/03/2025 12:40:00";
42859
+ Handsontable.version = "0.0.0-next-b209352-20250310";
42860
42860
  Handsontable.languages = {
42861
42861
  dictionaryKeys: _registry.dictionaryKeys,
42862
42862
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -54181,7 +54181,7 @@ const domMessages = {
54181
54181
  function _injectProductInfo(key, element) {
54182
54182
  const hasValidType = !isEmpty(key);
54183
54183
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
54184
- const hotVersion = "0.0.0-next-a4bd0c0-20250307";
54184
+ const hotVersion = "0.0.0-next-b209352-20250310";
54185
54185
  let keyValidityDate;
54186
54186
  let consoleMessageState = 'invalid';
54187
54187
  let domMessageState = 'invalid';
@@ -127600,6 +127600,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
127600
127600
  */
127601
127601
  var _menuFocusNavigator = /*#__PURE__*/new WeakMap();
127602
127602
  var _dropdownMenuTraces = /*#__PURE__*/new WeakMap();
127603
+ var _previousConditionStack = /*#__PURE__*/new WeakMap();
127603
127604
  var _Filters_brand = /*#__PURE__*/new WeakSet();
127604
127605
  class Filters extends _base.BasePlugin {
127605
127606
  static get PLUGIN_KEY() {
@@ -127671,6 +127672,13 @@ class Filters extends _base.BasePlugin {
127671
127672
  * @type {WeakSet<Menu>}
127672
127673
  */
127673
127674
  _classPrivateFieldInitSpec(this, _dropdownMenuTraces, new WeakSet());
127675
+ /**
127676
+ * Stores the previous state of the condition stack before the latest filter operation.
127677
+ * This is used in the `beforeFilter` plugin to allow performing the undo operation.
127678
+ *
127679
+ * @type {Array}
127680
+ */
127681
+ _classPrivateFieldInitSpec(this, _previousConditionStack, []);
127674
127682
  this.hot.addHook('afterGetColHeader', function () {
127675
127683
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
127676
127684
  args[_key] = arguments[_key];
@@ -128013,6 +128021,51 @@ class Filters extends _base.BasePlugin {
128013
128021
  }
128014
128022
  }
128015
128023
 
128024
+ /**
128025
+ * Imports filter conditions to all columns to the plugin. The method accepts
128026
+ * the array of conditions with the same structure as the {@link Filters#exportConditions} method returns.
128027
+ * Importing conditions will replace the current conditions. Once replaced, the state of the condition
128028
+ * will be reflected in the UI. To apply the changes and filter the table, call
128029
+ * the {@link Filters#filter} method eventually.
128030
+ *
128031
+ * @param {Array} conditions Array of conditions.
128032
+ */
128033
+ importConditions(conditions) {
128034
+ this.conditionCollection.importAllConditions(conditions);
128035
+ }
128036
+
128037
+ /* eslint-disable jsdoc/require-description-complete-sentence */
128038
+ /**
128039
+ * Exports filter conditions for all columns from the plugin.
128040
+ * The array represents the filter state for each column. For example:
128041
+ *
128042
+ * ```js
128043
+ * [
128044
+ * {
128045
+ * column: 1,
128046
+ * operation: 'conjunction',
128047
+ * conditions: [
128048
+ * { name: 'gt', args: [95] },
128049
+ * ]
128050
+ * },
128051
+ * {
128052
+ * column: 7,
128053
+ * operation: 'conjunction',
128054
+ * conditions: [
128055
+ * { name: 'contains', args: ['mike'] },
128056
+ * { name: 'begins_with', args: ['m'] },
128057
+ * ]
128058
+ * },
128059
+ * ]
128060
+ * ```
128061
+ *
128062
+ * @returns {Array}
128063
+ */
128064
+ /* eslint-enable jsdoc/require-description-complete-sentence */
128065
+ exportConditions() {
128066
+ return this.conditionCollection.exportAllConditions();
128067
+ }
128068
+
128016
128069
  /**
128017
128070
  * Filters data based on added filter conditions.
128018
128071
  *
@@ -128026,8 +128079,8 @@ class Filters extends _base.BasePlugin {
128026
128079
  const dataFilter = this._createDataFilter();
128027
128080
  const needToFilter = !this.conditionCollection.isEmpty();
128028
128081
  let visibleVisualRows = [];
128029
- const conditions = this.conditionCollection.exportAllConditions();
128030
- const allowFiltering = this.hot.runHooks('beforeFilter', conditions, this.conditionCollection.previousConditionStack);
128082
+ const conditions = this.exportConditions();
128083
+ const allowFiltering = this.hot.runHooks('beforeFilter', conditions, _classPrivateFieldGet(_previousConditionStack, this));
128031
128084
  if (allowFiltering !== false) {
128032
128085
  if (needToFilter) {
128033
128086
  const trimmedRows = [];
@@ -128050,11 +128103,13 @@ class Filters extends _base.BasePlugin {
128050
128103
  } else {
128051
128104
  this.filtersRowsMap.clear();
128052
128105
  }
128106
+ _classPrivateFieldSet(_previousConditionStack, this, this.exportConditions());
128107
+ this.hot.runHooks('afterFilter', conditions);
128108
+ this.hot.view.adjustElementsSize();
128109
+ this.hot.render();
128110
+ } else {
128111
+ this.importConditions(_classPrivateFieldGet(_previousConditionStack, this));
128053
128112
  }
128054
- this.hot.runHooks('afterFilter', conditions);
128055
- this.conditionCollection.setPreviousConditionStack(null);
128056
- this.hot.view.adjustElementsSize();
128057
- this.hot.render();
128058
128113
  if (this.hot.selection.isSelected()) {
128059
128114
  this.hot.selectCell(navigableHeaders ? -1 : 0, this.hot.getSelectedRangeLast().highlight.col);
128060
128115
  }
@@ -128417,7 +128472,6 @@ function _onActionBarSubmit(submitType) {
128417
128472
  }
128418
128473
  this.conditionUpdateObserver.flush();
128419
128474
  this.components.forEach(component => component.saveState(physicalIndex));
128420
- this.filtersRowsMap.clear();
128421
128475
  this.filter();
128422
128476
  }
128423
128477
  (_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 || _this$dropdownMenuPlu3.close();
@@ -128459,8 +128513,23 @@ function _updateComponents(conditionsState) {
128459
128513
  editedConditionStack: {
128460
128514
  conditions,
128461
128515
  column
128462
- }
128516
+ },
128517
+ conditionArgsChange
128463
128518
  } = conditionsState;
128519
+ if (Array.isArray(conditionArgsChange)) {
128520
+ // update the previous condition stack (only for 'by_value' condition) on each dataset
128521
+ // change to make the undo/redo work properly
128522
+ _classPrivateFieldSet(_previousConditionStack, this, _classPrivateFieldGet(_previousConditionStack, this).map(stack => {
128523
+ if (stack.column === column && conditions.length > 0) {
128524
+ stack.conditions.forEach(condition => {
128525
+ if (condition.name === 'by_value') {
128526
+ condition.args = [[...conditionArgsChange]];
128527
+ }
128528
+ });
128529
+ }
128530
+ return stack;
128531
+ }));
128532
+ }
128464
128533
  const conditionsByValue = conditions.filter(condition => condition.name === _constants2.CONDITION_BY_VALUE);
128465
128534
  const conditionsWithoutByValue = conditions.filter(condition => condition.name !== _constants2.CONDITION_BY_VALUE);
128466
128535
  if (conditionsByValue.length >= 2 || conditionsWithoutByValue.length >= 3) {
@@ -131904,13 +131973,6 @@ class ConditionCollection {
131904
131973
  * @type {LinkedPhysicalIndexToValueMap}
131905
131974
  */
131906
131975
  (0, _defineProperty2.default)(this, "filteringStates", new _translations.LinkedPhysicalIndexToValueMap());
131907
- /**
131908
- * Stores the previous state of the condition stack before the latest filter operation.
131909
- * This is used in the `beforeFilter` plugin to allow performing the undo operation.
131910
- *
131911
- * @type {null|Array}
131912
- */
131913
- (0, _defineProperty2.default)(this, "previousConditionStack", null);
131914
131976
  this.hot = hot;
131915
131977
  this.isMapRegistrable = isMapRegistrable;
131916
131978
  if (this.isMapRegistrable === true) {
@@ -131979,13 +132041,6 @@ class ConditionCollection {
131979
132041
  const localeForColumn = this.hot.getCellMeta(0, column).locale;
131980
132042
  const args = conditionDefinition.args.map(v => typeof v === 'string' ? v.toLocaleLowerCase(localeForColumn) : v);
131981
132043
  const name = conditionDefinition.name || conditionDefinition.command.key;
131982
-
131983
- // If there's no previous condition stack defined (which means the condition stack was not cleared after the
131984
- // previous filter operation or that there was no filter operation performed yet), store the current conditions as
131985
- // the previous condition stack.
131986
- if (this.previousConditionStack === null) {
131987
- this.setPreviousConditionStack(this.exportAllConditions());
131988
- }
131989
132044
  this.runLocalHooks('beforeAdd', column);
131990
132045
  const columnType = this.getOperation(column);
131991
132046
  if (columnType) {
@@ -132114,8 +132169,6 @@ class ConditionCollection {
132114
132169
  * @fires ConditionCollection#afterRemove
132115
132170
  */
132116
132171
  removeConditions(column) {
132117
- // Store the current conditions as the previous condition stack before it's cleared.
132118
- this.setPreviousConditionStack(this.exportAllConditions());
132119
132172
  this.runLocalHooks('beforeRemove', column);
132120
132173
  this.filteringStates.clearValue(column);
132121
132174
  this.runLocalHooks('afterRemove', column);
@@ -132149,16 +132202,6 @@ class ConditionCollection {
132149
132202
  return conditions.length > 0;
132150
132203
  }
132151
132204
 
132152
- /**
132153
- * Updates the `previousConditionStack` property with the provided stack.
132154
- * It is used to store the current conditions before they are modified, allowing for undo operations.
132155
- *
132156
- * @param {Array|null} previousConditionStack The stack of previous conditions.
132157
- */
132158
- setPreviousConditionStack(previousConditionStack) {
132159
- this.previousConditionStack = previousConditionStack;
132160
- }
132161
-
132162
132205
  /**
132163
132206
  * Destroy object.
132164
132207
  */
@@ -141311,12 +141354,11 @@ function _sumCellsHeights(row, rowspan) {
141311
141354
  } = this.hot;
141312
141355
  const stylesHandler = view.getStylesHandler();
141313
141356
  const defaultHeight = view.getDefaultRowHeight();
141314
- const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
141315
141357
  let height = 0;
141316
141358
  for (let i = row; i < row + rowspan; i++) {
141317
141359
  if (!rowIndexMapper.isHidden(i)) {
141318
- var _autoRowSizePlugin$ge;
141319
- height += (_autoRowSizePlugin$ge = autoRowSizePlugin === null || autoRowSizePlugin === void 0 ? void 0 : autoRowSizePlugin.getRowHeight(i)) !== null && _autoRowSizePlugin$ge !== void 0 ? _autoRowSizePlugin$ge : defaultHeight;
141360
+ var _this$hot$getRowHeigh;
141361
+ height += (_this$hot$getRowHeigh = this.hot.getRowHeight(i)) !== null && _this$hot$getRowHeigh !== void 0 ? _this$hot$getRowHeigh : defaultHeight;
141320
141362
  if (i === 0 && !stylesHandler.isClassicTheme()) {
141321
141363
  height += 1; // border-top-width
141322
141364
  }
@@ -152677,7 +152719,7 @@ class FiltersAction extends _base.BaseAction {
152677
152719
  undo(hot, undoneCallback) {
152678
152720
  const filters = hot.getPlugin('filters');
152679
152721
  hot.addHookOnce('afterViewRender', undoneCallback);
152680
- filters.conditionCollection.importAllConditions(this.previousConditionsStack);
152722
+ filters.importConditions(this.previousConditionsStack);
152681
152723
  filters.filter();
152682
152724
  }
152683
152725
 
@@ -152688,7 +152730,7 @@ class FiltersAction extends _base.BaseAction {
152688
152730
  redo(hot, redoneCallback) {
152689
152731
  const filters = hot.getPlugin('filters');
152690
152732
  hot.addHookOnce('afterViewRender', redoneCallback);
152691
- filters.conditionCollection.importAllConditions(this.conditionsStack);
152733
+ filters.importConditions(this.conditionsStack);
152692
152734
  filters.filter();
152693
152735
  }
152694
152736
  }
@@ -26,8 +26,8 @@
26
26
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
27
27
  * USE OR INABILITY TO USE THIS SOFTWARE.
28
28
  *
29
- * Version: 0.0.0-next-a4bd0c0-20250307
30
- * Release date: 20/02/2025 (built at 07/03/2025 16:16:51)
29
+ * Version: 0.0.0-next-b209352-20250310
30
+ * Release date: 20/02/2025 (built at 10/03/2025 12:40:52)
31
31
  */.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 .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{position:relative;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;position:relative;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;box-sizing:border-box!important;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{position:absolute;select{-webkit-appearance:menulist-button!important;border:2px solid #4b89ff;box-sizing:border-box!important;height:100%;width:100%}}.htSelectEditor select:focus{outline:none}.htSelectEditor .htAutocompleteArrow{display: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.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.htGhostTable table thead th{border-bottom-width:0}.handsontable.htGhostTable table tbody tr td,.handsontable.htGhostTable table tbody tr th{border-top-width:0}.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}
32
32
  /*!
33
33
  * Handsontable ContextMenu