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.

@@ -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')
@@ -104,8 +104,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
104
104
  Handsontable.CellCoords = _src.CellCoords;
105
105
  Handsontable.CellRange = _src.CellRange;
106
106
  Handsontable.packageName = 'handsontable';
107
- Handsontable.buildDate = "07/03/2025 16:16:00";
108
- Handsontable.version = "0.0.0-next-a4bd0c0-20250307";
107
+ Handsontable.buildDate = "10/03/2025 12:40:00";
108
+ Handsontable.version = "0.0.0-next-b209352-20250310";
109
109
  Handsontable.languages = {
110
110
  dictionaryKeys: _registry.dictionaryKeys,
111
111
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -10090,7 +10090,7 @@ const domMessages = {
10090
10090
  function _injectProductInfo(key, element) {
10091
10091
  const hasValidType = !isEmpty(key);
10092
10092
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
10093
- const hotVersion = "0.0.0-next-a4bd0c0-20250307";
10093
+ const hotVersion = "0.0.0-next-b209352-20250310";
10094
10094
  let keyValidityDate;
10095
10095
  let consoleMessageState = 'invalid';
10096
10096
  let domMessageState = 'invalid';
@@ -70290,6 +70290,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
70290
70290
  */
70291
70291
  var _menuFocusNavigator = /*#__PURE__*/new WeakMap();
70292
70292
  var _dropdownMenuTraces = /*#__PURE__*/new WeakMap();
70293
+ var _previousConditionStack = /*#__PURE__*/new WeakMap();
70293
70294
  var _Filters_brand = /*#__PURE__*/new WeakSet();
70294
70295
  class Filters extends _base.BasePlugin {
70295
70296
  static get PLUGIN_KEY() {
@@ -70361,6 +70362,13 @@ class Filters extends _base.BasePlugin {
70361
70362
  * @type {WeakSet<Menu>}
70362
70363
  */
70363
70364
  _classPrivateFieldInitSpec(this, _dropdownMenuTraces, new WeakSet());
70365
+ /**
70366
+ * Stores the previous state of the condition stack before the latest filter operation.
70367
+ * This is used in the `beforeFilter` plugin to allow performing the undo operation.
70368
+ *
70369
+ * @type {Array}
70370
+ */
70371
+ _classPrivateFieldInitSpec(this, _previousConditionStack, []);
70364
70372
  this.hot.addHook('afterGetColHeader', function () {
70365
70373
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
70366
70374
  args[_key] = arguments[_key];
@@ -70703,6 +70711,51 @@ class Filters extends _base.BasePlugin {
70703
70711
  }
70704
70712
  }
70705
70713
 
70714
+ /**
70715
+ * Imports filter conditions to all columns to the plugin. The method accepts
70716
+ * the array of conditions with the same structure as the {@link Filters#exportConditions} method returns.
70717
+ * Importing conditions will replace the current conditions. Once replaced, the state of the condition
70718
+ * will be reflected in the UI. To apply the changes and filter the table, call
70719
+ * the {@link Filters#filter} method eventually.
70720
+ *
70721
+ * @param {Array} conditions Array of conditions.
70722
+ */
70723
+ importConditions(conditions) {
70724
+ this.conditionCollection.importAllConditions(conditions);
70725
+ }
70726
+
70727
+ /* eslint-disable jsdoc/require-description-complete-sentence */
70728
+ /**
70729
+ * Exports filter conditions for all columns from the plugin.
70730
+ * The array represents the filter state for each column. For example:
70731
+ *
70732
+ * ```js
70733
+ * [
70734
+ * {
70735
+ * column: 1,
70736
+ * operation: 'conjunction',
70737
+ * conditions: [
70738
+ * { name: 'gt', args: [95] },
70739
+ * ]
70740
+ * },
70741
+ * {
70742
+ * column: 7,
70743
+ * operation: 'conjunction',
70744
+ * conditions: [
70745
+ * { name: 'contains', args: ['mike'] },
70746
+ * { name: 'begins_with', args: ['m'] },
70747
+ * ]
70748
+ * },
70749
+ * ]
70750
+ * ```
70751
+ *
70752
+ * @returns {Array}
70753
+ */
70754
+ /* eslint-enable jsdoc/require-description-complete-sentence */
70755
+ exportConditions() {
70756
+ return this.conditionCollection.exportAllConditions();
70757
+ }
70758
+
70706
70759
  /**
70707
70760
  * Filters data based on added filter conditions.
70708
70761
  *
@@ -70716,8 +70769,8 @@ class Filters extends _base.BasePlugin {
70716
70769
  const dataFilter = this._createDataFilter();
70717
70770
  const needToFilter = !this.conditionCollection.isEmpty();
70718
70771
  let visibleVisualRows = [];
70719
- const conditions = this.conditionCollection.exportAllConditions();
70720
- const allowFiltering = this.hot.runHooks('beforeFilter', conditions, this.conditionCollection.previousConditionStack);
70772
+ const conditions = this.exportConditions();
70773
+ const allowFiltering = this.hot.runHooks('beforeFilter', conditions, _classPrivateFieldGet(_previousConditionStack, this));
70721
70774
  if (allowFiltering !== false) {
70722
70775
  if (needToFilter) {
70723
70776
  const trimmedRows = [];
@@ -70740,11 +70793,13 @@ class Filters extends _base.BasePlugin {
70740
70793
  } else {
70741
70794
  this.filtersRowsMap.clear();
70742
70795
  }
70796
+ _classPrivateFieldSet(_previousConditionStack, this, this.exportConditions());
70797
+ this.hot.runHooks('afterFilter', conditions);
70798
+ this.hot.view.adjustElementsSize();
70799
+ this.hot.render();
70800
+ } else {
70801
+ this.importConditions(_classPrivateFieldGet(_previousConditionStack, this));
70743
70802
  }
70744
- this.hot.runHooks('afterFilter', conditions);
70745
- this.conditionCollection.setPreviousConditionStack(null);
70746
- this.hot.view.adjustElementsSize();
70747
- this.hot.render();
70748
70803
  if (this.hot.selection.isSelected()) {
70749
70804
  this.hot.selectCell(navigableHeaders ? -1 : 0, this.hot.getSelectedRangeLast().highlight.col);
70750
70805
  }
@@ -71107,7 +71162,6 @@ function _onActionBarSubmit(submitType) {
71107
71162
  }
71108
71163
  this.conditionUpdateObserver.flush();
71109
71164
  this.components.forEach(component => component.saveState(physicalIndex));
71110
- this.filtersRowsMap.clear();
71111
71165
  this.filter();
71112
71166
  }
71113
71167
  (_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 || _this$dropdownMenuPlu3.close();
@@ -71149,8 +71203,23 @@ function _updateComponents(conditionsState) {
71149
71203
  editedConditionStack: {
71150
71204
  conditions,
71151
71205
  column
71152
- }
71206
+ },
71207
+ conditionArgsChange
71153
71208
  } = conditionsState;
71209
+ if (Array.isArray(conditionArgsChange)) {
71210
+ // update the previous condition stack (only for 'by_value' condition) on each dataset
71211
+ // change to make the undo/redo work properly
71212
+ _classPrivateFieldSet(_previousConditionStack, this, _classPrivateFieldGet(_previousConditionStack, this).map(stack => {
71213
+ if (stack.column === column && conditions.length > 0) {
71214
+ stack.conditions.forEach(condition => {
71215
+ if (condition.name === 'by_value') {
71216
+ condition.args = [[...conditionArgsChange]];
71217
+ }
71218
+ });
71219
+ }
71220
+ return stack;
71221
+ }));
71222
+ }
71154
71223
  const conditionsByValue = conditions.filter(condition => condition.name === _constants2.CONDITION_BY_VALUE);
71155
71224
  const conditionsWithoutByValue = conditions.filter(condition => condition.name !== _constants2.CONDITION_BY_VALUE);
71156
71225
  if (conditionsByValue.length >= 2 || conditionsWithoutByValue.length >= 3) {
@@ -74594,13 +74663,6 @@ class ConditionCollection {
74594
74663
  * @type {LinkedPhysicalIndexToValueMap}
74595
74664
  */
74596
74665
  (0, _defineProperty2.default)(this, "filteringStates", new _translations.LinkedPhysicalIndexToValueMap());
74597
- /**
74598
- * Stores the previous state of the condition stack before the latest filter operation.
74599
- * This is used in the `beforeFilter` plugin to allow performing the undo operation.
74600
- *
74601
- * @type {null|Array}
74602
- */
74603
- (0, _defineProperty2.default)(this, "previousConditionStack", null);
74604
74666
  this.hot = hot;
74605
74667
  this.isMapRegistrable = isMapRegistrable;
74606
74668
  if (this.isMapRegistrable === true) {
@@ -74669,13 +74731,6 @@ class ConditionCollection {
74669
74731
  const localeForColumn = this.hot.getCellMeta(0, column).locale;
74670
74732
  const args = conditionDefinition.args.map(v => typeof v === 'string' ? v.toLocaleLowerCase(localeForColumn) : v);
74671
74733
  const name = conditionDefinition.name || conditionDefinition.command.key;
74672
-
74673
- // If there's no previous condition stack defined (which means the condition stack was not cleared after the
74674
- // previous filter operation or that there was no filter operation performed yet), store the current conditions as
74675
- // the previous condition stack.
74676
- if (this.previousConditionStack === null) {
74677
- this.setPreviousConditionStack(this.exportAllConditions());
74678
- }
74679
74734
  this.runLocalHooks('beforeAdd', column);
74680
74735
  const columnType = this.getOperation(column);
74681
74736
  if (columnType) {
@@ -74804,8 +74859,6 @@ class ConditionCollection {
74804
74859
  * @fires ConditionCollection#afterRemove
74805
74860
  */
74806
74861
  removeConditions(column) {
74807
- // Store the current conditions as the previous condition stack before it's cleared.
74808
- this.setPreviousConditionStack(this.exportAllConditions());
74809
74862
  this.runLocalHooks('beforeRemove', column);
74810
74863
  this.filteringStates.clearValue(column);
74811
74864
  this.runLocalHooks('afterRemove', column);
@@ -74839,16 +74892,6 @@ class ConditionCollection {
74839
74892
  return conditions.length > 0;
74840
74893
  }
74841
74894
 
74842
- /**
74843
- * Updates the `previousConditionStack` property with the provided stack.
74844
- * It is used to store the current conditions before they are modified, allowing for undo operations.
74845
- *
74846
- * @param {Array|null} previousConditionStack The stack of previous conditions.
74847
- */
74848
- setPreviousConditionStack(previousConditionStack) {
74849
- this.previousConditionStack = previousConditionStack;
74850
- }
74851
-
74852
74895
  /**
74853
74896
  * Destroy object.
74854
74897
  */
@@ -84001,12 +84044,11 @@ function _sumCellsHeights(row, rowspan) {
84001
84044
  } = this.hot;
84002
84045
  const stylesHandler = view.getStylesHandler();
84003
84046
  const defaultHeight = view.getDefaultRowHeight();
84004
- const autoRowSizePlugin = this.hot.getPlugin('autoRowSize');
84005
84047
  let height = 0;
84006
84048
  for (let i = row; i < row + rowspan; i++) {
84007
84049
  if (!rowIndexMapper.isHidden(i)) {
84008
- var _autoRowSizePlugin$ge;
84009
- height += (_autoRowSizePlugin$ge = autoRowSizePlugin === null || autoRowSizePlugin === void 0 ? void 0 : autoRowSizePlugin.getRowHeight(i)) !== null && _autoRowSizePlugin$ge !== void 0 ? _autoRowSizePlugin$ge : defaultHeight;
84050
+ var _this$hot$getRowHeigh;
84051
+ height += (_this$hot$getRowHeigh = this.hot.getRowHeight(i)) !== null && _this$hot$getRowHeigh !== void 0 ? _this$hot$getRowHeigh : defaultHeight;
84010
84052
  if (i === 0 && !stylesHandler.isClassicTheme()) {
84011
84053
  height += 1; // border-top-width
84012
84054
  }
@@ -95367,7 +95409,7 @@ class FiltersAction extends _base.BaseAction {
95367
95409
  undo(hot, undoneCallback) {
95368
95410
  const filters = hot.getPlugin('filters');
95369
95411
  hot.addHookOnce('afterViewRender', undoneCallback);
95370
- filters.conditionCollection.importAllConditions(this.previousConditionsStack);
95412
+ filters.importConditions(this.previousConditionsStack);
95371
95413
  filters.filter();
95372
95414
  }
95373
95415
 
@@ -95378,7 +95420,7 @@ class FiltersAction extends _base.BaseAction {
95378
95420
  redo(hot, redoneCallback) {
95379
95421
  const filters = hot.getPlugin('filters');
95380
95422
  hot.addHookOnce('afterViewRender', redoneCallback);
95381
- filters.conditionCollection.importAllConditions(this.conditionsStack);
95423
+ filters.importConditions(this.conditionsStack);
95382
95424
  filters.filter();
95383
95425
  }
95384
95426
  }
@@ -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