handsontable 0.0.0-next-71bce98-20241210 → 0.0.0-next-2580147-20241212

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.

Files changed (37) hide show
  1. package/base.js +2 -2
  2. package/base.mjs +2 -2
  3. package/core.js +4 -6
  4. package/core.mjs +4 -6
  5. package/dist/handsontable.css +2 -2
  6. package/dist/handsontable.full.css +2 -2
  7. package/dist/handsontable.full.js +123 -112
  8. package/dist/handsontable.full.min.css +2 -2
  9. package/dist/handsontable.full.min.js +61 -61
  10. package/dist/handsontable.js +123 -112
  11. package/dist/handsontable.min.css +2 -2
  12. package/dist/handsontable.min.js +12 -12
  13. package/helpers/mixed.js +1 -1
  14. package/helpers/mixed.mjs +1 -1
  15. package/package.json +1 -1
  16. package/plugins/filters/conditionCollection.js +8 -7
  17. package/plugins/filters/conditionCollection.mjs +8 -7
  18. package/plugins/filters/utils.js +7 -24
  19. package/plugins/filters/utils.mjs +7 -24
  20. package/plugins/mergeCells/calculations/autofill.js +60 -44
  21. package/plugins/mergeCells/calculations/autofill.mjs +60 -44
  22. package/plugins/mergeCells/cellsCollection.js +25 -8
  23. package/plugins/mergeCells/cellsCollection.mjs +25 -8
  24. package/plugins/mergeCells/mergeCells.js +10 -14
  25. package/plugins/mergeCells/mergeCells.mjs +10 -14
  26. package/plugins/undoRedo/actions/filters.js +1 -3
  27. package/plugins/undoRedo/actions/filters.mjs +1 -3
  28. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +1 -0
  29. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +1 -0
  30. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +2 -1
  31. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +2 -1
  32. package/styles/handsontable.css +2 -2
  33. package/styles/handsontable.min.css +2 -2
  34. package/styles/ht-theme-horizon.css +2 -2
  35. package/styles/ht-theme-horizon.min.css +2 -2
  36. package/styles/ht-theme-main.css +2 -2
  37. package/styles/ht-theme-main.min.css +2 -2
@@ -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-71bce98-20241210
29
- * Release date: 17/10/2024 (built at 10/12/2024 16:44:31)
28
+ * Version: 0.0.0-next-2580147-20241212
29
+ * Release date: 17/10/2024 (built at 12/12/2024 09:18:43)
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 = "10/12/2024 16:44:31";
108
- Handsontable.version = "0.0.0-next-71bce98-20241210";
107
+ Handsontable.buildDate = "12/12/2024 09:18:43";
108
+ Handsontable.version = "0.0.0-next-2580147-20241212";
109
109
  Handsontable.languages = {
110
110
  dictionaryKeys: _registry.dictionaryKeys,
111
111
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -842,10 +842,11 @@ function Core(rootElement, userSettings) {
842
842
  default:
843
843
  throw new Error(`There is no such action "${action}"`);
844
844
  }
845
- instance.view.render();
846
845
  if (!keepEmptyRows) {
847
846
  grid.adjustRowsAndCols(); // makes sure that we did not add rows that will be removed in next refresh
848
847
  }
848
+ instance.view.render();
849
+ instance.view.adjustElementsSize();
849
850
  },
850
851
  /**
851
852
  * Makes sure there are empty rows at the bottom of the table.
@@ -894,7 +895,7 @@ function Core(rootElement, userSettings) {
894
895
 
895
896
  // should I add empty cols to meet minCols?
896
897
  if (minCols && !tableMeta.columns && nrOfColumns < minCols) {
897
- // The synchronization with cell meta is not desired here. For `minSpareRows` option,
898
+ // The synchronization with cell meta is not desired here. For `minCols` option,
898
899
  // we don't want to touch/shift cell meta objects.
899
900
  const colsToCreate = minCols - nrOfColumns;
900
901
  emptyCols += colsToCreate;
@@ -908,16 +909,13 @@ function Core(rootElement, userSettings) {
908
909
  const emptyColsMissing = minSpareCols - emptyCols;
909
910
  const colsToCreate = Math.min(emptyColsMissing, tableMeta.maxCols - nrOfColumns);
910
911
 
911
- // The synchronization with cell meta is not desired here. For `minSpareRows` option,
912
+ // The synchronization with cell meta is not desired here. For `minSpareCols` option,
912
913
  // we don't want to touch/shift cell meta objects.
913
914
  datamap.createCol(nrOfColumns, colsToCreate, {
914
915
  source: 'auto'
915
916
  });
916
917
  }
917
918
  }
918
- if (instance.view) {
919
- instance.view.adjustElementsSize();
920
- }
921
919
  },
922
920
  /**
923
921
  * Populate the data from the provided 2d array from the given cell coordinates.
@@ -10053,7 +10051,7 @@ const domMessages = {
10053
10051
  function _injectProductInfo(key, element) {
10054
10052
  const hasValidType = !isEmpty(key);
10055
10053
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
10056
- const hotVersion = "0.0.0-next-71bce98-20241210";
10054
+ const hotVersion = "0.0.0-next-2580147-20241212";
10057
10055
  let keyValidityDate;
10058
10056
  let consoleMessageState = 'invalid';
10059
10057
  let domMessageState = 'invalid';
@@ -47892,6 +47890,7 @@ const command = exports.command = {
47892
47890
  row
47893
47891
  } = hot.getSelectedRangeLast().highlight;
47894
47892
  let rowsStep = hot.countVisibleRows() + columnHeadersCount;
47893
+ rowsStep = rowsStep === 0 ? 1 : rowsStep;
47895
47894
 
47896
47895
  // if the last row is currently selected move the focus to the first row (if autoWrap is enabled)
47897
47896
  if (row === hot.countRows() - 1) {
@@ -48203,7 +48202,8 @@ const command = exports.command = {
48203
48202
  const {
48204
48203
  row
48205
48204
  } = hot.getSelectedRangeLast().highlight;
48206
- let rowsStep = -(hot.countVisibleRows() + columnHeadersCount);
48205
+ let rowsStep = hot.countVisibleRows() + columnHeadersCount;
48206
+ rowsStep = rowsStep === 0 ? -1 : -rowsStep;
48207
48207
 
48208
48208
  // if the first row is currently selected move the focus to the last row (if autoWrap is enabled)
48209
48209
  if (row === -columnHeadersCount) {
@@ -72068,8 +72068,10 @@ __webpack_require__(107);
72068
72068
  __webpack_require__(109);
72069
72069
  __webpack_require__(111);
72070
72070
  __webpack_require__(113);
72071
+ __webpack_require__(115);
72072
+ __webpack_require__(133);
72073
+ __webpack_require__(142);
72071
72074
  var _feature = __webpack_require__(168);
72072
- var _array = __webpack_require__(161);
72073
72075
  const sortCompare = (0, _feature.getComparisonFunction)();
72074
72076
 
72075
72077
  /**
@@ -72100,8 +72102,6 @@ function toVisualValue(value, defaultEmptyValue) {
72100
72102
  }
72101
72103
  return visualValue;
72102
72104
  }
72103
- const SUPPORT_SET_CONSTRUCTOR = new Set([1]).has(1);
72104
- const SUPPORT_FAST_DEDUPE = SUPPORT_SET_CONSTRUCTOR && typeof Array.from === 'function';
72105
72105
 
72106
72106
  /**
72107
72107
  * Create an array assertion to compare if an element exists in that array (in a more efficient way than .indexOf).
@@ -72110,19 +72110,9 @@ const SUPPORT_FAST_DEDUPE = SUPPORT_SET_CONSTRUCTOR && typeof Array.from === 'fu
72110
72110
  * @returns {Function}
72111
72111
  */
72112
72112
  function createArrayAssertion(initialData) {
72113
- let dataset = initialData;
72114
- if (SUPPORT_SET_CONSTRUCTOR) {
72115
- dataset = new Set(dataset);
72116
- }
72113
+ const dataset = new Set(initialData);
72117
72114
  return function (value) {
72118
- let result;
72119
- if (SUPPORT_SET_CONSTRUCTOR) {
72120
- result = dataset.has(value);
72121
- } else {
72122
- /* eslint-disable no-bitwise */
72123
- result = !!~dataset.indexOf(value);
72124
- }
72125
- return result;
72115
+ return dataset.has(value);
72126
72116
  };
72127
72117
  }
72128
72118
 
@@ -72143,13 +72133,7 @@ function toEmptyString(value) {
72143
72133
  * @returns {Array}
72144
72134
  */
72145
72135
  function unifyColumnValues(values) {
72146
- let unifiedValues = values;
72147
- if (SUPPORT_FAST_DEDUPE) {
72148
- unifiedValues = Array.from(new Set(unifiedValues));
72149
- } else {
72150
- unifiedValues = (0, _array.arrayUnique)(unifiedValues);
72151
- }
72152
- unifiedValues = unifiedValues.sort((a, b) => {
72136
+ return Array.from(new Set(values)).map(value => toEmptyString(value)).sort((a, b) => {
72153
72137
  if (typeof a === 'number' && typeof b === 'number') {
72154
72138
  return a - b;
72155
72139
  }
@@ -72158,7 +72142,6 @@ function unifyColumnValues(values) {
72158
72142
  }
72159
72143
  return a > b ? 1 : -1;
72160
72144
  });
72161
- return unifiedValues;
72162
72145
  }
72163
72146
 
72164
72147
  /**
@@ -72177,7 +72160,7 @@ function intersectValues(base, selected, defaultEmptyValue, callback) {
72177
72160
  if (!same) {
72178
72161
  selectedItemsAssertion = createArrayAssertion(selected);
72179
72162
  }
72180
- (0, _array.arrayEach)(base, value => {
72163
+ base.forEach(value => {
72181
72164
  let checked = false;
72182
72165
  if (same || selectedItemsAssertion(value)) {
72183
72166
  checked = true;
@@ -74166,10 +74149,11 @@ exports.__esModule = true;
74166
74149
  __webpack_require__(5);
74167
74150
  __webpack_require__(87);
74168
74151
  __webpack_require__(115);
74152
+ __webpack_require__(133);
74169
74153
  __webpack_require__(142);
74154
+ __webpack_require__(196);
74170
74155
  __webpack_require__(289);
74171
74156
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
74172
- var _array = __webpack_require__(161);
74173
74157
  var _object = __webpack_require__(165);
74174
74158
  var _templateLiteralTag = __webpack_require__(160);
74175
74159
  var _localHooks = _interopRequireDefault(__webpack_require__(265));
@@ -74280,7 +74264,7 @@ class ConditionCollection {
74280
74264
  let operation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _conjunction.OPERATION_ID;
74281
74265
  let position = arguments.length > 3 ? arguments[3] : undefined;
74282
74266
  const localeForColumn = this.hot.getCellMeta(0, column).locale;
74283
- const args = (0, _array.arrayMap)(conditionDefinition.args, v => typeof v === 'string' ? v.toLocaleLowerCase(localeForColumn) : v);
74267
+ const args = conditionDefinition.args.map(v => typeof v === 'string' ? v.toLocaleLowerCase(localeForColumn) : v);
74284
74268
  const name = conditionDefinition.name || conditionDefinition.command.key;
74285
74269
 
74286
74270
  // If there's no previous condition stack defined (which means the condition stack was not cleared after the
@@ -74374,7 +74358,7 @@ class ConditionCollection {
74374
74358
  * @returns {Array}
74375
74359
  */
74376
74360
  exportAllConditions() {
74377
- return (0, _array.arrayReduce)(this.filteringStates.getEntries(), (allConditions, _ref2) => {
74361
+ return this.filteringStates.getEntries().reduce((allConditions, _ref2) => {
74378
74362
  let [column, {
74379
74363
  operation,
74380
74364
  conditions
@@ -74382,14 +74366,14 @@ class ConditionCollection {
74382
74366
  allConditions.push({
74383
74367
  column,
74384
74368
  operation,
74385
- conditions: (0, _array.arrayMap)(conditions, _ref3 => {
74369
+ conditions: conditions.map(_ref3 => {
74386
74370
  let {
74387
74371
  name,
74388
74372
  args
74389
74373
  } = _ref3;
74390
74374
  return {
74391
74375
  name,
74392
- args
74376
+ args: [...args]
74393
74377
  };
74394
74378
  })
74395
74379
  });
@@ -74404,8 +74388,8 @@ class ConditionCollection {
74404
74388
  */
74405
74389
  importAllConditions(conditions) {
74406
74390
  this.clean();
74407
- (0, _array.arrayEach)(conditions, stack => {
74408
- (0, _array.arrayEach)(stack.conditions, condition => this.addCondition(stack.column, condition));
74391
+ conditions.forEach(stack => {
74392
+ stack.conditions.forEach(condition => this.addCondition(stack.column, condition));
74409
74393
  });
74410
74394
  }
74411
74395
 
@@ -83030,8 +83014,8 @@ class MergeCells extends _base.BasePlugin {
83030
83014
  /**
83031
83015
  * The `modifyAutofillRange` hook callback.
83032
83016
  *
83033
- * @param {Array} drag The drag area coordinates.
83034
- * @param {Array} select The selection information.
83017
+ * @param {Array} fullArea The drag + base area coordinates.
83018
+ * @param {Array} baseArea The selection information.
83035
83019
  * @returns {Array} The new drag area.
83036
83020
  */
83037
83021
  }
@@ -83415,23 +83399,19 @@ function _onAfterViewportColumnCalculatorOverride(calc) {
83415
83399
  this.modifyViewportColumnStart(calc, nrOfRows);
83416
83400
  this.modifyViewportColumnEnd(calc, nrOfRows);
83417
83401
  }
83418
- function _onModifyAutofillRange(drag, select) {
83419
- this.autofillCalculations.correctSelectionAreaSize(select);
83420
- const dragDirection = this.autofillCalculations.getDirection(select, drag);
83421
- let dragArea = drag;
83422
- if (this.autofillCalculations.dragAreaOverlapsCollections(select, dragArea, dragDirection)) {
83423
- dragArea = select;
83424
- return dragArea;
83402
+ function _onModifyAutofillRange(fullArea, baseArea) {
83403
+ const dragDirection = this.autofillCalculations.getDirection(baseArea, fullArea);
83404
+ if (this.autofillCalculations.dragAreaOverlapsCollections(baseArea, fullArea, dragDirection)) {
83405
+ return baseArea;
83425
83406
  }
83426
- const from = this.hot._createCellCoords(select[0], select[1]);
83427
- const to = this.hot._createCellCoords(select[2], select[3]);
83407
+ const from = this.hot._createCellCoords(baseArea[0], baseArea[1]);
83408
+ const to = this.hot._createCellCoords(baseArea[2], baseArea[3]);
83428
83409
  const range = this.hot._createCellRange(from, from, to);
83429
83410
  const mergedCellsWithinSelectionArea = this.mergedCellsCollection.getWithinRange(range);
83430
83411
  if (mergedCellsWithinSelectionArea.length === 0) {
83431
- return dragArea;
83412
+ return fullArea;
83432
83413
  }
83433
- dragArea = this.autofillCalculations.snapDragArea(select, dragArea, dragDirection, mergedCellsWithinSelectionArea);
83434
- return dragArea;
83414
+ return this.autofillCalculations.snapDragArea(baseArea, fullArea, dragDirection, mergedCellsWithinSelectionArea);
83435
83415
  }
83436
83416
  /**
83437
83417
  * `afterCreateCol` hook callback.
@@ -83743,18 +83723,33 @@ class MergedCellsCollection {
83743
83723
  /**
83744
83724
  * Get the first-found merged cell containing the provided range.
83745
83725
  *
83746
- * @param {CellRange|object} range The range to search merged cells for.
83747
- * @returns {MergedCellCoords|boolean}
83726
+ * @param {CellRange} range The range to search merged cells for.
83727
+ * @returns {MergedCellCoords | false}
83748
83728
  */
83749
83729
  getByRange(range) {
83730
+ const {
83731
+ row: rowStart,
83732
+ col: columnStart
83733
+ } = range.getTopStartCorner();
83734
+ const {
83735
+ row: rowEnd,
83736
+ col: columnEnd
83737
+ } = range.getBottomEndCorner();
83738
+ const mergedCellsLength = this.mergedCells.length;
83750
83739
  let result = false;
83751
- (0, _array.arrayEach)(this.mergedCells, mergedCell => {
83752
- if (mergedCell.row <= range.from.row && mergedCell.row + mergedCell.rowspan - 1 >= range.to.row && mergedCell.col <= range.from.col && mergedCell.col + mergedCell.colspan - 1 >= range.to.col) {
83740
+ for (let i = 0; i < mergedCellsLength; i++) {
83741
+ const mergedCell = this.mergedCells[i];
83742
+ const {
83743
+ row,
83744
+ col,
83745
+ rowspan,
83746
+ colspan
83747
+ } = mergedCell;
83748
+ if (row >= rowStart && row + rowspan - 1 <= rowEnd && col >= columnStart && col + colspan - 1 <= columnEnd) {
83753
83749
  result = mergedCell;
83754
- return result;
83750
+ break;
83755
83751
  }
83756
- return true;
83757
- });
83752
+ }
83758
83753
  return result;
83759
83754
  }
83760
83755
 
@@ -83864,7 +83859,9 @@ class MergedCellsCollection {
83864
83859
  _assertClassBrand(_MergedCellsCollection_brand, this, _addMergedCellToMatrix).call(this, newMergedCell);
83865
83860
  return newMergedCell;
83866
83861
  }
83867
- (0, _console.warn)(MergedCellsCollection.IS_OVERLAPPING_WARNING(newMergedCell));
83862
+ if (isOverlapping) {
83863
+ (0, _console.warn)(MergedCellsCollection.IS_OVERLAPPING_WARNING(newMergedCell));
83864
+ }
83868
83865
  return false;
83869
83866
  }
83870
83867
 
@@ -84628,6 +84625,8 @@ var _default = exports["default"] = MergedCellCoords;
84628
84625
 
84629
84626
  var _interopRequireDefault = __webpack_require__(1);
84630
84627
  exports.__esModule = true;
84628
+ __webpack_require__(115);
84629
+ __webpack_require__(285);
84631
84630
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(170));
84632
84631
  var _object = __webpack_require__(165);
84633
84632
  var _array = __webpack_require__(161);
@@ -84662,35 +84661,20 @@ class AutofillCalculations {
84662
84661
  this.mergedCellsCollection = this.plugin.mergedCellsCollection;
84663
84662
  }
84664
84663
 
84665
- /**
84666
- * Correct the provided selection area, so it's not selecting only a part of a merged cell.
84667
- *
84668
- * @param {Array} selectionArea The selection to correct.
84669
- */
84670
- correctSelectionAreaSize(selectionArea) {
84671
- if (selectionArea[0] === selectionArea[2] && selectionArea[1] === selectionArea[3]) {
84672
- const mergedCell = this.mergedCellsCollection.get(selectionArea[0], selectionArea[1]);
84673
- if (mergedCell) {
84674
- selectionArea[2] = selectionArea[0] + mergedCell.rowspan - 1;
84675
- selectionArea[3] = selectionArea[1] + mergedCell.colspan - 1;
84676
- }
84677
- }
84678
- }
84679
-
84680
84664
  /**
84681
84665
  * Get the direction of the autofill process.
84682
84666
  *
84683
- * @param {Array} selectionArea The selection area.
84684
- * @param {Array} finalArea The final area (base + drag).
84667
+ * @param {Array} baseArea The selection area.
84668
+ * @param {Array} fullArea The final area (base + drag).
84685
84669
  * @returns {string} `up`, `down`, `left` or `right`.
84686
84670
  */
84687
- getDirection(selectionArea, finalArea) {
84671
+ getDirection(baseArea, fullArea) {
84688
84672
  let direction = null;
84689
- if (finalArea[0] === selectionArea[0] && finalArea[1] === selectionArea[1] && finalArea[3] === selectionArea[3]) {
84673
+ if (fullArea[0] === baseArea[0] && fullArea[1] === baseArea[1] && fullArea[3] === baseArea[3]) {
84690
84674
  direction = 'down';
84691
- } else if (finalArea[2] === selectionArea[2] && finalArea[1] === selectionArea[1] && finalArea[3] === selectionArea[3]) {
84675
+ } else if (fullArea[2] === baseArea[2] && fullArea[1] === baseArea[1] && fullArea[3] === baseArea[3]) {
84692
84676
  direction = 'up';
84693
- } else if (finalArea[1] === selectionArea[1] && finalArea[2] === selectionArea[2]) {
84677
+ } else if (fullArea[1] === baseArea[1] && fullArea[2] === baseArea[2]) {
84694
84678
  direction = 'right';
84695
84679
  } else {
84696
84680
  direction = 'left';
@@ -84702,20 +84686,20 @@ class AutofillCalculations {
84702
84686
  * Snap the drag area to the farthest merged cell, so it won't clip any of the merged cells.
84703
84687
  *
84704
84688
  * @param {Array} baseArea The base selected area.
84705
- * @param {Array} dragArea The drag area.
84689
+ * @param {Array} fullArea The drag area.
84706
84690
  * @param {string} dragDirection The autofill drag direction.
84707
84691
  * @param {Array} foundMergedCells MergeCellCoords found in the base selection area.
84708
84692
  * @returns {Array} The new drag area.
84709
84693
  */
84710
- snapDragArea(baseArea, dragArea, dragDirection, foundMergedCells) {
84711
- const newDragArea = dragArea.slice(0);
84712
- const fillSize = this.getAutofillSize(baseArea, dragArea, dragDirection);
84694
+ snapDragArea(baseArea, fullArea, dragDirection, foundMergedCells) {
84695
+ const newDragArea = fullArea.slice(0);
84696
+ const fillSize = this.getAutofillSize(baseArea, fullArea, dragDirection);
84713
84697
  const [baseAreaStartRow, baseAreaStartColumn, baseAreaEndRow, baseAreaEndColumn] = baseArea;
84714
84698
  const verticalDirection = ['up', 'down'].indexOf(dragDirection) > -1;
84715
84699
  const fullCycle = verticalDirection ? baseAreaEndRow - baseAreaStartRow + 1 : baseAreaEndColumn - baseAreaStartColumn + 1;
84716
84700
  const fulls = Math.floor(fillSize / fullCycle) * fullCycle;
84717
84701
  const partials = fillSize - fulls;
84718
- const farthestCollection = this.getFarthestCollection(baseArea, dragArea, dragDirection, foundMergedCells);
84702
+ const farthestCollection = this.getFarthestCollection(baseArea, fullArea, dragDirection, foundMergedCells);
84719
84703
  if (farthestCollection) {
84720
84704
  if (dragDirection === 'down') {
84721
84705
  const fill = farthestCollection.row + farthestCollection.rowspan - baseAreaStartRow - partials;
@@ -84780,13 +84764,13 @@ class AutofillCalculations {
84780
84764
  *
84781
84765
  * @private
84782
84766
  * @param {Array} baseArea The base selection area.
84783
- * @param {Array} dragArea The drag area (containing the base area).
84767
+ * @param {Array} fullArea The drag area (containing the base area).
84784
84768
  * @param {string} direction The drag direction.
84785
84769
  * @returns {number|null} The "length" (height or width, depending on the direction) of the drag.
84786
84770
  */
84787
- getAutofillSize(baseArea, dragArea, direction) {
84771
+ getAutofillSize(baseArea, fullArea, direction) {
84788
84772
  const [baseAreaStartRow, baseAreaStartColumn, baseAreaEndRow, baseAreaEndColumn] = baseArea;
84789
- const [dragAreaStartRow, dragAreaStartColumn, dragAreaEndRow, dragAreaEndColumn] = dragArea;
84773
+ const [dragAreaStartRow, dragAreaStartColumn, dragAreaEndRow, dragAreaEndColumn] = fullArea;
84790
84774
  switch (direction) {
84791
84775
  case 'up':
84792
84776
  return baseAreaStartRow - dragAreaStartRow;
@@ -84806,22 +84790,30 @@ class AutofillCalculations {
84806
84790
  *
84807
84791
  * @private
84808
84792
  * @param {Array} baseArea The base selection area.
84809
- * @param {Array} dragArea The base selection area extended by the drag area.
84793
+ * @param {Array} fullArea The base selection area extended by the drag area.
84810
84794
  * @param {string} direction Drag direction.
84811
84795
  * @returns {Array|null} Array representing the drag area coordinates.
84812
84796
  */
84813
- getDragArea(baseArea, dragArea, direction) {
84797
+ getDragArea(baseArea, fullArea, direction) {
84814
84798
  const [baseAreaStartRow, baseAreaStartColumn, baseAreaEndRow, baseAreaEndColumn] = baseArea;
84815
- const [dragAreaStartRow, dragAreaStartColumn, dragAreaEndRow, dragAreaEndColumn] = dragArea;
84799
+ const [fullAreaStartRow, fullAreaStartColumn, fullAreaEndRow, fullAreaEndColumn] = fullArea;
84816
84800
  switch (direction) {
84817
84801
  case 'up':
84818
- return [dragAreaStartRow, dragAreaStartColumn, baseAreaStartRow - 1, baseAreaEndColumn];
84802
+ return [fullAreaStartRow, fullAreaStartColumn, baseAreaStartRow - 1, baseAreaEndColumn];
84819
84803
  case 'down':
84820
- return [baseAreaEndRow + 1, baseAreaStartColumn, dragAreaEndRow, baseAreaEndColumn];
84804
+ {
84805
+ const mergedCell = this.mergedCellsCollection.get(fullAreaEndRow, baseAreaEndColumn);
84806
+ const rowShift = mergedCell ? mergedCell.rowspan - 1 : 0;
84807
+ return [baseAreaEndRow + 1, baseAreaStartColumn, fullAreaEndRow + rowShift, baseAreaEndColumn];
84808
+ }
84821
84809
  case 'left':
84822
- return [dragAreaStartRow, dragAreaStartColumn, baseAreaEndRow, baseAreaStartColumn - 1];
84810
+ return [fullAreaStartRow, fullAreaStartColumn, baseAreaEndRow, baseAreaStartColumn - 1];
84823
84811
  case 'right':
84824
- return [baseAreaStartRow, baseAreaEndColumn + 1, dragAreaEndRow, dragAreaEndColumn];
84812
+ {
84813
+ const mergedCell = this.mergedCellsCollection.get(fullAreaEndRow, baseAreaEndColumn);
84814
+ const columnShift = mergedCell ? mergedCell.colspan - 1 : 0;
84815
+ return [baseAreaStartRow, baseAreaEndColumn + columnShift, fullAreaEndRow, fullAreaEndColumn];
84816
+ }
84825
84817
  default:
84826
84818
  return null;
84827
84819
  }
@@ -84832,17 +84824,17 @@ class AutofillCalculations {
84832
84824
  *
84833
84825
  * @private
84834
84826
  * @param {Array} baseArea The base selection area.
84835
- * @param {Array} dragArea The drag area (containing the base area).
84827
+ * @param {Array} fullArea The drag area (containing the base area).
84836
84828
  * @param {string} direction The drag direction.
84837
84829
  * @param {Array} mergedCellArray Array of the merged cells found in the base area.
84838
84830
  * @returns {MergedCellCoords|null}
84839
84831
  */
84840
- getFarthestCollection(baseArea, dragArea, direction, mergedCellArray) {
84832
+ getFarthestCollection(baseArea, fullArea, direction, mergedCellArray) {
84841
84833
  const [baseAreaStartRow, baseAreaStartColumn, baseAreaEndRow, baseAreaEndColumn] = baseArea;
84842
84834
  const verticalDirection = ['up', 'down'].indexOf(direction) > -1;
84843
84835
  const baseEnd = verticalDirection ? baseAreaEndRow : baseAreaEndColumn;
84844
84836
  const baseStart = verticalDirection ? baseAreaStartRow : baseAreaStartColumn;
84845
- const fillSize = this.getAutofillSize(baseArea, dragArea, direction);
84837
+ const fillSize = this.getAutofillSize(baseArea, fullArea, direction);
84846
84838
  const fullCycle = verticalDirection ? baseAreaEndRow - baseAreaStartRow + 1 : baseAreaEndColumn - baseAreaStartColumn + 1;
84847
84839
  const fulls = Math.floor(fillSize / fullCycle) * fullCycle;
84848
84840
  const partials = fillSize - fulls;
@@ -84917,7 +84909,7 @@ class AutofillCalculations {
84917
84909
  rowspan: current.rowspan,
84918
84910
  col: current.col,
84919
84911
  colspan: current.colspan
84920
- });
84912
+ }, true);
84921
84913
  break;
84922
84914
  case 'down':
84923
84915
  this.plugin.mergedCellsCollection.add({
@@ -84925,7 +84917,7 @@ class AutofillCalculations {
84925
84917
  rowspan: current.rowspan,
84926
84918
  col: current.col,
84927
84919
  colspan: current.colspan
84928
- });
84920
+ }, true);
84929
84921
  break;
84930
84922
  case 'left':
84931
84923
  this.plugin.mergedCellsCollection.add({
@@ -84933,7 +84925,7 @@ class AutofillCalculations {
84933
84925
  rowspan: current.rowspan,
84934
84926
  col: current.col - fillOffset,
84935
84927
  colspan: current.colspan
84936
- });
84928
+ }, true);
84937
84929
  break;
84938
84930
  case 'right':
84939
84931
  this.plugin.mergedCellsCollection.add({
@@ -84941,7 +84933,7 @@ class AutofillCalculations {
84941
84933
  rowspan: current.rowspan,
84942
84934
  col: current.col + fillOffset,
84943
84935
  colspan: current.colspan
84944
- });
84936
+ }, true);
84945
84937
  break;
84946
84938
  default:
84947
84939
  }
@@ -85016,7 +85008,28 @@ class AutofillCalculations {
85016
85008
  const topLeft = this.plugin.hot._createCellCoords(dragAreaStartRow, dragAreaStartColumn);
85017
85009
  const bottomRight = this.plugin.hot._createCellCoords(dragAreaEndRow, dragAreaEndColumn);
85018
85010
  const dragRange = this.plugin.hot._createCellRange(topLeft, topLeft, bottomRight);
85019
- return this.mergedCellsCollection.getWithinRange(dragRange, true).length > 0;
85011
+ const mergedCellsWithPartials = this.mergedCellsCollection.getWithinRange(dragRange, true);
85012
+ if (mergedCellsWithPartials.length === 0) {
85013
+ return false;
85014
+ }
85015
+ const mergedCellsWithoutPartials = this.mergedCellsCollection.getWithinRange(dragRange, false);
85016
+ if (mergedCellsWithoutPartials.length === 0) {
85017
+ return true;
85018
+ }
85019
+ if (direction === 'up' || direction === 'down') {
85020
+ return !mergedCellsWithoutPartials.every(_ref => {
85021
+ let {
85022
+ colspan
85023
+ } = _ref;
85024
+ return colspan === dragRange.getWidth();
85025
+ });
85026
+ }
85027
+ return !mergedCellsWithoutPartials.every(_ref2 => {
85028
+ let {
85029
+ rowspan
85030
+ } = _ref2;
85031
+ return rowspan === dragRange.getHeight();
85032
+ });
85020
85033
  }
85021
85034
  }
85022
85035
  var _default = exports["default"] = AutofillCalculations;
@@ -94933,9 +94946,7 @@ class FiltersAction extends _base.BaseAction {
94933
94946
  undo(hot, undoneCallback) {
94934
94947
  const filters = hot.getPlugin('filters');
94935
94948
  hot.addHookOnce('afterViewRender', undoneCallback);
94936
- if (this.previousConditionsStack) {
94937
- filters.conditionCollection.importAllConditions(this.previousConditionsStack);
94938
- }
94949
+ filters.conditionCollection.importAllConditions(this.previousConditionsStack);
94939
94950
  filters.filter();
94940
94951
  }
94941
94952
 
@@ -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-71bce98-20241210
30
- * Release date: 17/10/2024 (built at 10/12/2024 16:45:21)
29
+ * Version: 0.0.0-next-2580147-20241212
30
+ * Release date: 17/10/2024 (built at 12/12/2024 09:19:33)
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