handsontable 0.0.0-next-cecf979-20231026 → 0.0.0-next-50e428d-20231026

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-cecf979-20231026
29
- * Release date: 31/08/2023 (built at 26/10/2023 11:29:36)
28
+ * Version: 0.0.0-next-50e428d-20231026
29
+ * Release date: 31/08/2023 (built at 26/10/2023 13:13:24)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -105,8 +105,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
105
105
  Handsontable.CellCoords = _src.CellCoords;
106
106
  Handsontable.CellRange = _src.CellRange;
107
107
  Handsontable.packageName = 'handsontable';
108
- Handsontable.buildDate = "26/10/2023 11:29:36";
109
- Handsontable.version = "0.0.0-next-cecf979-20231026";
108
+ Handsontable.buildDate = "26/10/2023 13:13:24";
109
+ Handsontable.version = "0.0.0-next-50e428d-20231026";
110
110
  Handsontable.languages = {
111
111
  dictionaryKeys: _registry.dictionaryKeys,
112
112
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -464,18 +464,6 @@ function Core(rootElement, userSettings) {
464
464
  };
465
465
  this.columnIndexMapper.addLocalHook('cacheUpdated', onIndexMapperCacheUpdate);
466
466
  this.rowIndexMapper.addLocalHook('cacheUpdated', onIndexMapperCacheUpdate);
467
- this.selection.addLocalHook('beforeHighlightSet', () => {
468
- this.runHooks('beforeSelectionHighlightSet');
469
- });
470
- this.selection.addLocalHook('beforeSetRangeStart', cellCoords => {
471
- this.runHooks('beforeSetRangeStart', cellCoords);
472
- });
473
- this.selection.addLocalHook('beforeSetRangeStartOnly', cellCoords => {
474
- this.runHooks('beforeSetRangeStartOnly', cellCoords);
475
- });
476
- this.selection.addLocalHook('beforeSetRangeEnd', cellCoords => {
477
- this.runHooks('beforeSetRangeEnd', cellCoords);
478
- });
479
467
  this.selection.addLocalHook('afterSetRangeEnd', cellCoords => {
480
468
  const preventScrolling = (0, _object.createObjectPropListener)(false);
481
469
  const selectionRange = this.selection.getSelectedRange();
@@ -564,54 +552,78 @@ function Core(rootElement, userSettings) {
564
552
  isMultiple.value = changedIsMultiple;
565
553
  }
566
554
  });
567
- this.selection.addLocalHook('beforeSelectColumns', function () {
555
+ this.selection.addLocalHook('afterDeselect', () => {
556
+ editorManager.destroyEditor();
557
+ this._refreshBorders();
558
+ (0, _element.removeClass)(this.rootElement, ['ht__selection--rows', 'ht__selection--columns']);
559
+ this.runHooks('afterDeselect');
560
+ });
561
+ this.selection.addLocalHook('beforeHighlightSet', () => this.runHooks('beforeSelectionHighlightSet')).addLocalHook('beforeSetRangeStart', function () {
568
562
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
569
563
  args[_key] = arguments[_key];
570
564
  }
571
- return _this.runHooks('beforeSelectColumns', ...args);
572
- });
573
- this.selection.addLocalHook('afterSelectColumns', function () {
565
+ return _this.runHooks('beforeSetRangeStart', ...args);
566
+ }).addLocalHook('beforeSetRangeStartOnly', function () {
574
567
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
575
568
  args[_key2] = arguments[_key2];
576
569
  }
577
- return _this.runHooks('afterSelectColumns', ...args);
578
- });
579
- this.selection.addLocalHook('beforeSelectRows', function () {
570
+ return _this.runHooks('beforeSetRangeStartOnly', ...args);
571
+ }).addLocalHook('beforeSetRangeEnd', function () {
580
572
  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
581
573
  args[_key3] = arguments[_key3];
582
574
  }
583
- return _this.runHooks('beforeSelectRows', ...args);
584
- });
585
- this.selection.addLocalHook('afterSelectRows', function () {
575
+ return _this.runHooks('beforeSetRangeEnd', ...args);
576
+ }).addLocalHook('beforeSelectColumns', function () {
586
577
  for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
587
578
  args[_key4] = arguments[_key4];
588
579
  }
580
+ return _this.runHooks('beforeSelectColumns', ...args);
581
+ }).addLocalHook('afterSelectColumns', function () {
582
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
583
+ args[_key5] = arguments[_key5];
584
+ }
585
+ return _this.runHooks('afterSelectColumns', ...args);
586
+ }).addLocalHook('beforeSelectRows', function () {
587
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
588
+ args[_key6] = arguments[_key6];
589
+ }
590
+ return _this.runHooks('beforeSelectRows', ...args);
591
+ }).addLocalHook('afterSelectRows', function () {
592
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
593
+ args[_key7] = arguments[_key7];
594
+ }
589
595
  return _this.runHooks('afterSelectRows', ...args);
590
- });
591
- this.selection.addLocalHook('beforeModifyTransformStart', cellCoordsDelta => {
592
- this.runHooks('modifyTransformStart', cellCoordsDelta);
593
- });
594
- this.selection.addLocalHook('afterModifyTransformStart', (coords, rowTransformDir, colTransformDir) => {
595
- this.runHooks('afterModifyTransformStart', coords, rowTransformDir, colTransformDir);
596
- });
597
- this.selection.addLocalHook('beforeModifyTransformEnd', cellCoordsDelta => {
598
- this.runHooks('modifyTransformEnd', cellCoordsDelta);
599
- });
600
- this.selection.addLocalHook('afterModifyTransformEnd', (coords, rowTransformDir, colTransformDir) => {
601
- this.runHooks('afterModifyTransformEnd', coords, rowTransformDir, colTransformDir);
602
- });
603
- this.selection.addLocalHook('afterDeselect', () => {
604
- editorManager.destroyEditor();
605
- this._refreshBorders();
606
- (0, _element.removeClass)(this.rootElement, ['ht__selection--rows', 'ht__selection--columns']);
607
- this.runHooks('afterDeselect');
608
- });
609
- this.selection.addLocalHook('insertRowRequire', totalRows => {
610
- this.alter('insert_row_above', totalRows, 1, 'auto');
611
- });
612
- this.selection.addLocalHook('insertColRequire', totalCols => {
613
- this.alter('insert_col_start', totalCols, 1, 'auto');
614
- });
596
+ }).addLocalHook('beforeModifyTransformStart', function () {
597
+ for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
598
+ args[_key8] = arguments[_key8];
599
+ }
600
+ return _this.runHooks('modifyTransformStart', ...args);
601
+ }).addLocalHook('afterModifyTransformStart', function () {
602
+ for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
603
+ args[_key9] = arguments[_key9];
604
+ }
605
+ return _this.runHooks('afterModifyTransformStart', ...args);
606
+ }).addLocalHook('beforeModifyTransformEnd', function () {
607
+ for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
608
+ args[_key10] = arguments[_key10];
609
+ }
610
+ return _this.runHooks('modifyTransformEnd', ...args);
611
+ }).addLocalHook('afterModifyTransformEnd', function () {
612
+ for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
613
+ args[_key11] = arguments[_key11];
614
+ }
615
+ return _this.runHooks('afterModifyTransformEnd', ...args);
616
+ }).addLocalHook('beforeRowWrap', function () {
617
+ for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
618
+ args[_key12] = arguments[_key12];
619
+ }
620
+ return _this.runHooks('beforeRowWrap', ...args);
621
+ }).addLocalHook('beforeColumnWrap', function () {
622
+ for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
623
+ args[_key13] = arguments[_key13];
624
+ }
625
+ return _this.runHooks('beforeColumnWrap', ...args);
626
+ }).addLocalHook('insertRowRequire', totalRows => this.alter('insert_row_above', totalRows, 1, 'auto')).addLocalHook('insertColRequire', totalCols => this.alter('insert_col_start', totalCols, 1, 'auto'));
615
627
  grid = {
616
628
  /**
617
629
  * Inserts or removes rows and columns.
@@ -1747,8 +1759,8 @@ function Core(rootElement, userSettings) {
1747
1759
  * @returns {Array} Returns removed portion of columns.
1748
1760
  */
1749
1761
  this.spliceCol = function (column, index, amount) {
1750
- for (var _len5 = arguments.length, elements = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
1751
- elements[_key5 - 3] = arguments[_key5];
1762
+ for (var _len14 = arguments.length, elements = new Array(_len14 > 3 ? _len14 - 3 : 0), _key14 = 3; _key14 < _len14; _key14++) {
1763
+ elements[_key14 - 3] = arguments[_key14];
1752
1764
  }
1753
1765
  return datamap.spliceCol(column, index, amount, ...elements);
1754
1766
  };
@@ -1765,8 +1777,8 @@ function Core(rootElement, userSettings) {
1765
1777
  * @returns {Array} Returns removed portion of rows.
1766
1778
  */
1767
1779
  this.spliceRow = function (row, index, amount) {
1768
- for (var _len6 = arguments.length, elements = new Array(_len6 > 3 ? _len6 - 3 : 0), _key6 = 3; _key6 < _len6; _key6++) {
1769
- elements[_key6 - 3] = arguments[_key6];
1780
+ for (var _len15 = arguments.length, elements = new Array(_len15 > 3 ? _len15 - 3 : 0), _key15 = 3; _key15 < _len15; _key15++) {
1781
+ elements[_key15 - 3] = arguments[_key15];
1770
1782
  }
1771
1783
  return datamap.spliceRow(row, index, amount, ...elements);
1772
1784
  };
@@ -3163,8 +3175,8 @@ function Core(rootElement, userSettings) {
3163
3175
  */
3164
3176
  this.spliceCellsMeta = function (visualIndex) {
3165
3177
  let deleteAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
3166
- for (var _len7 = arguments.length, cellMetaRows = new Array(_len7 > 2 ? _len7 - 2 : 0), _key7 = 2; _key7 < _len7; _key7++) {
3167
- cellMetaRows[_key7 - 2] = arguments[_key7];
3178
+ for (var _len16 = arguments.length, cellMetaRows = new Array(_len16 > 2 ? _len16 - 2 : 0), _key16 = 2; _key16 < _len16; _key16++) {
3179
+ cellMetaRows[_key16 - 2] = arguments[_key16];
3168
3180
  }
3169
3181
  if (cellMetaRows.length > 0 && !Array.isArray(cellMetaRows[0])) {
3170
3182
  throw new Error('The 3rd argument (cellMetaRows) has to be passed as an array of cell meta objects array.');
@@ -8482,7 +8494,7 @@ const domMessages = {
8482
8494
  function _injectProductInfo(key, element) {
8483
8495
  const hasValidType = !isEmpty(key);
8484
8496
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
8485
- const hotVersion = "0.0.0-next-cecf979-20231026";
8497
+ const hotVersion = "0.0.0-next-50e428d-20231026";
8486
8498
  let keyValidityDate;
8487
8499
  let consoleMessageState = 'invalid';
8488
8500
  let domMessageState = 'invalid';
@@ -11950,6 +11962,38 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
11950
11962
  * If set to `false`, the rendering gets triggered by scrolling or moving the selection.
11951
11963
  */
11952
11964
  'afterRender',
11965
+ /**
11966
+ * When the focus position is moved to the next or previous row caused by the {@link Options#autoWrapRow} option
11967
+ * the hook is triggered.
11968
+ *
11969
+ * @since 14.0.0
11970
+ * @event Hooks#beforeRowWrap
11971
+ * @param {boolean} isWrapEnabled Tells whether the row wrapping is going to happen.
11972
+ * There may be situations where the option does not work even though it is enabled.
11973
+ * This is due to the priority of other options that may block the feature.
11974
+ * For example, when the {@link Options#minSpareCols} is defined, the {@link Options#autoWrapRow} option is not checked.
11975
+ * Thus, row wrapping is off.
11976
+ * @param {CellCoords} newCoords The new focus position.
11977
+ * @param {boolean} isFlipped `true` if the row index was flipped, `false` otherwise.
11978
+ * Flipped index means that the user reached the last row and the focus is moved to the first row or vice versa.
11979
+ */
11980
+ 'beforeRowWrap',
11981
+ /**
11982
+ * When the focus position is moved to the next or previous column caused by the {@link Options#autoWrapCol} option
11983
+ * the hook is triggered.
11984
+ *
11985
+ * @since 14.0.0
11986
+ * @event Hooks#beforeColumnWrap
11987
+ * @param {boolean} isWrapEnabled Tells whether the column wrapping is going to happen.
11988
+ * There may be situations where the option does not work even though it is enabled.
11989
+ * This is due to the priority of other options that may block the feature.
11990
+ * For example, when the {@link Options#minSpareRows} is defined, the {@link Options#autoWrapCol} option is not checked.
11991
+ * Thus, column wrapping is off.
11992
+ * @param {CellCoords} newCoords The new focus position.
11993
+ * @param {boolean} isFlipped `true` if the column index was flipped, `false` otherwise.
11994
+ * Flipped index means that the user reached the last column and the focus is moved to the first column or vice versa.
11995
+ */
11996
+ 'beforeColumnWrap',
11953
11997
  /**
11954
11998
  * Fired before cell meta is changed.
11955
11999
  *
@@ -17549,6 +17593,15 @@ class CellCoords {
17549
17593
  return this.row >= 0 && this.col >= 0;
17550
17594
  }
17551
17595
 
17596
+ /**
17597
+ * Checks if the coordinates runs in RTL mode.
17598
+ *
17599
+ * @returns {boolean}
17600
+ */
17601
+ isRtl() {
17602
+ return (0, _classPrivateFieldGet2.default)(this, _isRtl);
17603
+ }
17604
+
17552
17605
  /**
17553
17606
  * Checks if another set of coordinates (`testedCoords`)
17554
17607
  * is south-east of the coordinates in your `CellCoords` instance.
@@ -17606,6 +17659,26 @@ class CellCoords {
17606
17659
  return this;
17607
17660
  }
17608
17661
 
17662
+ /**
17663
+ * Assigns the coordinates from another `CellCoords` instance (or compatible literal object)
17664
+ * to your `CellCoords` instance.
17665
+ *
17666
+ * @param {CellCoords | { row?: number, col?: number }} coords The CellCoords instance or compatible literal object.
17667
+ * @returns {CellCoords}
17668
+ */
17669
+ assign(coords) {
17670
+ if (Number.isInteger(coords === null || coords === void 0 ? void 0 : coords.row)) {
17671
+ this.row = coords.row;
17672
+ }
17673
+ if (Number.isInteger(coords === null || coords === void 0 ? void 0 : coords.col)) {
17674
+ this.col = coords.col;
17675
+ }
17676
+ if (coords instanceof CellCoords) {
17677
+ (0, _classPrivateFieldSet2.default)(this, _isRtl, coords.isRtl());
17678
+ }
17679
+ return this;
17680
+ }
17681
+
17609
17682
  /**
17610
17683
  * Clones your `CellCoords` instance.
17611
17684
  *
@@ -31814,6 +31887,18 @@ class Selection {
31814
31887
  }
31815
31888
  return _this.runLocalHooks('insertColRequire', ...args);
31816
31889
  });
31890
+ this.transformation.addLocalHook('beforeRowWrap', function () {
31891
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
31892
+ args[_key7] = arguments[_key7];
31893
+ }
31894
+ return _this.runLocalHooks('beforeRowWrap', ...args);
31895
+ });
31896
+ this.transformation.addLocalHook('beforeColumnWrap', function () {
31897
+ for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
31898
+ args[_key8] = arguments[_key8];
31899
+ }
31900
+ return _this.runLocalHooks('beforeColumnWrap', ...args);
31901
+ });
31817
31902
  }
31818
31903
 
31819
31904
  /**
@@ -33666,7 +33751,7 @@ class Transformation {
33666
33751
  * Translates the visual coordinates to zero-based ones.
33667
33752
  *
33668
33753
  * @param {CellCoords} visualCoords The visual coords to process.
33669
- * @returns {{x: number, y: number}}
33754
+ * @returns {CellCoords}
33670
33755
  */
33671
33756
  _classPrivateMethodInitSpec(this, _visualToZeroBasedCoords);
33672
33757
  /**
@@ -33753,56 +33838,60 @@ class Transformation {
33753
33838
  height
33754
33839
  } = _classPrivateMethodGet(this, _getTableSize, _getTableSize2).call(this);
33755
33840
  const {
33756
- x,
33757
- y
33841
+ row,
33842
+ col
33758
33843
  } = _classPrivateMethodGet(this, _visualToZeroBasedCoords, _visualToZeroBasedCoords2).call(this, visualCoords);
33759
33844
  const fixedRowsBottom = (0, _classPrivateFieldGet2.default)(this, _options).fixedRowsBottom();
33760
33845
  const minSpareRows = (0, _classPrivateFieldGet2.default)(this, _options).minSpareRows();
33761
33846
  const minSpareCols = (0, _classPrivateFieldGet2.default)(this, _options).minSpareCols();
33762
33847
  const autoWrapRow = (0, _classPrivateFieldGet2.default)(this, _options).autoWrapRow();
33763
33848
  const autoWrapCol = (0, _classPrivateFieldGet2.default)(this, _options).autoWrapCol();
33764
- const rawCoords = {
33765
- row: y + delta.row,
33766
- col: x + delta.col
33767
- };
33768
- if (rawCoords.row >= height) {
33769
- if (createMissingRecords && minSpareRows > 0 && fixedRowsBottom === 0) {
33849
+ const zeroBasedCoords = (0, _classPrivateFieldGet2.default)(this, _options).createCellCoords(row + delta.row, col + delta.col);
33850
+ if (zeroBasedCoords.row >= height) {
33851
+ const autoInsertingMode = createMissingRecords && minSpareRows > 0 && fixedRowsBottom === 0;
33852
+ const isWrapEnabled = !autoInsertingMode && autoWrapCol;
33853
+ const nextColumn = zeroBasedCoords.col + 1;
33854
+ const newCoords = (0, _classPrivateFieldGet2.default)(this, _options).createCellCoords(zeroBasedCoords.row - height, nextColumn >= width ? nextColumn - width : nextColumn);
33855
+ this.runLocalHooks('beforeColumnWrap', isWrapEnabled, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), nextColumn >= width);
33856
+ if (autoInsertingMode) {
33770
33857
  this.runLocalHooks('insertRowRequire', (0, _classPrivateFieldGet2.default)(this, _options).countRenderableRows());
33771
- } else if (autoWrapCol) {
33772
- const nextColumn = rawCoords.col + 1;
33773
- rawCoords.row = rawCoords.row - height;
33774
- rawCoords.col = nextColumn >= width ? nextColumn - width : nextColumn;
33858
+ } else if (isWrapEnabled) {
33859
+ zeroBasedCoords.assign(newCoords);
33775
33860
  }
33776
- } else if (rawCoords.row < 0) {
33861
+ } else if (zeroBasedCoords.row < 0) {
33862
+ const previousColumn = zeroBasedCoords.col - 1;
33863
+ const newCoords = (0, _classPrivateFieldGet2.default)(this, _options).createCellCoords(height + zeroBasedCoords.row, previousColumn < 0 ? width + previousColumn : previousColumn);
33864
+ this.runLocalHooks('beforeColumnWrap', autoWrapCol, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), previousColumn < 0);
33777
33865
  if (autoWrapCol) {
33778
- const previousColumn = rawCoords.col - 1;
33779
- rawCoords.row = height + rawCoords.row;
33780
- rawCoords.col = previousColumn < 0 ? width + previousColumn : previousColumn;
33866
+ zeroBasedCoords.assign(newCoords);
33781
33867
  }
33782
33868
  }
33783
- if (rawCoords.col >= width) {
33784
- if (createMissingRecords && minSpareCols > 0) {
33869
+ if (zeroBasedCoords.col >= width) {
33870
+ const autoInsertingMode = createMissingRecords && minSpareCols > 0;
33871
+ const isWrapEnabled = !autoInsertingMode && autoWrapRow;
33872
+ const nextRow = zeroBasedCoords.row + 1;
33873
+ const newCoords = (0, _classPrivateFieldGet2.default)(this, _options).createCellCoords(nextRow >= height ? nextRow - height : nextRow, zeroBasedCoords.col - width);
33874
+ this.runLocalHooks('beforeRowWrap', isWrapEnabled, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), nextRow >= height);
33875
+ if (autoInsertingMode) {
33785
33876
  this.runLocalHooks('insertColRequire', (0, _classPrivateFieldGet2.default)(this, _options).countRenderableColumns());
33786
- } else if (autoWrapRow) {
33787
- const nextRow = rawCoords.row + 1;
33788
- rawCoords.row = nextRow >= height ? nextRow - height : nextRow;
33789
- rawCoords.col = rawCoords.col - width;
33877
+ } else if (isWrapEnabled) {
33878
+ zeroBasedCoords.assign(newCoords);
33790
33879
  }
33791
- } else if (rawCoords.col < 0) {
33880
+ } else if (zeroBasedCoords.col < 0) {
33881
+ const previousRow = zeroBasedCoords.row - 1;
33882
+ const newCoords = (0, _classPrivateFieldGet2.default)(this, _options).createCellCoords(previousRow < 0 ? height + previousRow : previousRow, width + zeroBasedCoords.col);
33883
+ this.runLocalHooks('beforeRowWrap', autoWrapRow, _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, newCoords), previousRow < 0);
33792
33884
  if (autoWrapRow) {
33793
- const previousRow = rawCoords.row - 1;
33794
- rawCoords.row = previousRow < 0 ? height + previousRow : previousRow;
33795
- rawCoords.col = width + rawCoords.col;
33885
+ zeroBasedCoords.assign(newCoords);
33796
33886
  }
33797
33887
  }
33798
- const coords = (0, _classPrivateFieldGet2.default)(this, _options).createCellCoords(rawCoords.row, rawCoords.col);
33799
33888
  const {
33800
33889
  rowDir,
33801
33890
  colDir
33802
- } = _classPrivateMethodGet(this, _clampCoords, _clampCoords2).call(this, coords);
33891
+ } = _classPrivateMethodGet(this, _clampCoords, _clampCoords2).call(this, zeroBasedCoords);
33803
33892
  rowTransformDir = rowDir;
33804
33893
  colTransformDir = colDir;
33805
- visualCoords = _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, coords);
33894
+ visualCoords = _classPrivateMethodGet(this, _zeroBasedToVisualCoords, _zeroBasedToVisualCoords2).call(this, zeroBasedCoords);
33806
33895
  }
33807
33896
  this.runLocalHooks('afterTransformStart', visualCoords, rowTransformDir, colTransformDir);
33808
33897
  return visualCoords;
@@ -33829,14 +33918,10 @@ class Transformation {
33829
33918
  this.runLocalHooks('beforeTransformEnd', delta);
33830
33919
  if (highlightRenderableCoords.row !== null && highlightRenderableCoords.col !== null) {
33831
33920
  const {
33832
- x,
33833
- y
33921
+ row,
33922
+ col
33834
33923
  } = _classPrivateMethodGet(this, _visualToZeroBasedCoords, _visualToZeroBasedCoords2).call(this, cellRange.to);
33835
- const rawCoords = {
33836
- row: y + delta.row,
33837
- col: x + delta.col
33838
- };
33839
- const coords = (0, _classPrivateFieldGet2.default)(this, _options).createCellCoords(rawCoords.row, rawCoords.col);
33924
+ const coords = (0, _classPrivateFieldGet2.default)(this, _options).createCellCoords(row + delta.row, col + delta.col);
33840
33925
  const {
33841
33926
  rowDir,
33842
33927
  colDir
@@ -33904,15 +33989,13 @@ function _visualToZeroBasedCoords2(visualCoords) {
33904
33989
  row,
33905
33990
  col
33906
33991
  } = (0, _classPrivateFieldGet2.default)(this, _options).visualToRenderableCoords(visualCoords);
33907
- return {
33908
- x: (0, _classPrivateFieldGet2.default)(this, _offset).x + col,
33909
- y: (0, _classPrivateFieldGet2.default)(this, _offset).y + row
33910
- };
33992
+ return (0, _classPrivateFieldGet2.default)(this, _options).createCellCoords((0, _classPrivateFieldGet2.default)(this, _offset).y + row, (0, _classPrivateFieldGet2.default)(this, _offset).x + col);
33911
33993
  }
33912
33994
  function _zeroBasedToVisualCoords2(zeroBasedCoords) {
33913
- zeroBasedCoords.col = zeroBasedCoords.col - (0, _classPrivateFieldGet2.default)(this, _offset).x;
33914
- zeroBasedCoords.row = zeroBasedCoords.row - (0, _classPrivateFieldGet2.default)(this, _offset).y;
33915
- return (0, _classPrivateFieldGet2.default)(this, _options).renderableToVisualCoords(zeroBasedCoords);
33995
+ const coords = zeroBasedCoords.clone();
33996
+ coords.col = zeroBasedCoords.col - (0, _classPrivateFieldGet2.default)(this, _offset).x;
33997
+ coords.row = zeroBasedCoords.row - (0, _classPrivateFieldGet2.default)(this, _offset).y;
33998
+ return (0, _classPrivateFieldGet2.default)(this, _options).renderableToVisualCoords(coords);
33916
33999
  }
33917
34000
  (0, _object.mixin)(Transformation, _localHooks.default);
33918
34001
  var _default = Transformation;
@@ -41653,46 +41736,52 @@ function installFocusCatcher(hot) {
41653
41736
  hot.listen();
41654
41737
  }
41655
41738
  });
41739
+ const rowWrapState = {
41740
+ wrapped: false,
41741
+ flipped: false
41742
+ };
41656
41743
  hot.addHook('afterListen', () => deactivate());
41657
41744
  hot.addHook('afterUnlisten', () => activate());
41658
41745
  hot.addHook('afterSelection', () => {
41659
41746
  var _hot$getSelectedRange;
41660
41747
  recentlyAddedFocusCoords = (_hot$getSelectedRange = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange === void 0 ? void 0 : _hot$getSelectedRange.highlight;
41661
41748
  });
41749
+ hot.addHook('beforeRowWrap', (isWrapEnabled, newCoords, isFlipped) => {
41750
+ rowWrapState.wrapped = true;
41751
+ rowWrapState.flipped = isFlipped;
41752
+ });
41753
+
41754
+ /**
41755
+ * Unselects the cell and deactivates the table.
41756
+ */
41757
+ function deactivateTable() {
41758
+ rowWrapState.wrapped = false;
41759
+ rowWrapState.flipped = false;
41760
+ hot.deselectCell();
41761
+ hot.unlisten();
41762
+ }
41662
41763
  hot.getShortcutManager().getContext('grid').addShortcut({
41663
41764
  keys: [['Tab'], ['Shift', 'Tab']],
41664
41765
  callback: event => {
41665
- var _hot$getSelectedRange2;
41666
41766
  const {
41667
41767
  disableTabNavigation,
41668
41768
  autoWrapRow
41669
41769
  } = hot.getSettings();
41670
- if (disableTabNavigation) {
41671
- hot.deselectCell();
41672
- hot.unlisten();
41770
+ if (disableTabNavigation || !hot.selection.isSelected() || autoWrapRow && rowWrapState.wrapped && rowWrapState.flipped || !autoWrapRow && rowWrapState.wrapped) {
41771
+ if (autoWrapRow && rowWrapState.wrapped && rowWrapState.flipped) {
41772
+ recentlyAddedFocusCoords = event.shiftKey ? getMostTopStartPosition(hot) : getMostBottomEndPosition(hot);
41773
+ }
41774
+ deactivateTable();
41673
41775
  return false;
41674
41776
  }
41675
- const isSelected = hot.selection.isSelected();
41676
- const highlight = (_hot$getSelectedRange2 = hot.getSelectedRangeLast()) === null || _hot$getSelectedRange2 === void 0 ? void 0 : _hot$getSelectedRange2.highlight;
41677
- const mostTopStartCoords = getMostTopStartPosition(hot);
41678
- const mostBottomEndCoords = getMostBottomEndPosition(hot);
41679
41777
 
41680
- // For disabled `autoWrapRow` option set the row to the same position as the currently selected row.
41681
- if (!autoWrapRow) {
41682
- mostTopStartCoords.row = highlight.row;
41683
- mostBottomEndCoords.row = highlight.row;
41684
- }
41685
- if (event.shiftKey && (!isSelected || highlight.isEqual(mostTopStartCoords)) || !event.shiftKey && (!isSelected || highlight.isEqual(mostBottomEndCoords))) {
41686
- hot.deselectCell();
41687
- hot.unlisten();
41688
- return false;
41689
- }
41690
- return true;
41778
+ // if the selection is still within the table's range then prevent default action
41779
+ event.preventDefault();
41691
41780
  },
41692
41781
  runOnlyIf: () => !hot.getSettings().minSpareCols,
41693
41782
  preventDefault: false,
41694
41783
  stopPropagation: false,
41695
- position: 'before',
41784
+ position: 'after',
41696
41785
  relativeToGroup: _shortcutContexts.GRID_GROUP,
41697
41786
  group: 'focusCatcher'
41698
41787
  });
@@ -43088,9 +43177,13 @@ function shortcutsGridContext(hot) {
43088
43177
  callback: () => commandsPool.extendCellsSelectionDownByViewportHeight()
43089
43178
  }, {
43090
43179
  keys: [['Tab']],
43180
+ // The property value is controlled by focusCatcher module (https://github.com/handsontable/handsontable/blob/master/handsontable/src/core/focusCatcher/index.js)
43181
+ preventDefault: false,
43091
43182
  callback: () => commandsPool.moveCellSelectionInlineStart()
43092
43183
  }, {
43093
43184
  keys: [['Shift', 'Tab']],
43185
+ // The property value is controlled by focusCatcher module (https://github.com/handsontable/handsontable/blob/master/handsontable/src/core/focusCatcher/index.js)
43186
+ preventDefault: false,
43094
43187
  callback: () => commandsPool.moveCellSelectionInlineEnd()
43095
43188
  }, {
43096
43189
  keys: [['Control/Meta', 'Backspace']],
@@ -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-cecf979-20231026
29
- * Release date: 31/08/2023 (built at 26/10/2023 11:30:04)
28
+ * Version: 0.0.0-next-50e428d-20231026
29
+ * Release date: 31/08/2023 (built at 26/10/2023 13:13:59)
30
30
  */.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{width:0}.handsontable .wtSpreader{height:auto;position:relative;width:0}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:auto}.handsontable table.htCore{border-collapse:separate;border-spacing:0;border-width:0;cursor:default;margin:0;max-height:none;max-width:none;outline-width:0;table-layout:fixed;width:0}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{background-color:#fff;border-bottom:1px solid #ccc;border-left-width:0;border-right:1px solid #ccc;border-top-width:0;empty-cells:show;height:22px;line-height:21px;outline:none;outline-width:0;overflow:hidden;padding:0 4px;vertical-align:top;white-space:pre-wrap}[dir=rtl].handsontable td,[dir=rtl].handsontable th{border-left:1px solid #ccc;border-right-width:0}.handsontable th:last-child{border-bottom:1px solid #ccc;border-left:none;border-right:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-left:1px solid #ccc;border-right:none}.handsontable td:first-of-type,.handsontable th:first-child,.handsontable th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child,[dir=rtl].handsontable th:nth-child(2){border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-left:1px solid #ccc;border-right-width:0}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;font-weight:400;text-align:center;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{font-size:0;position:absolute}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{cursor:crosshair;font-size:0}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_inline_start,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_inline_start thead,.handsontable .ht_master thead,.handsontable .ht_master tr th{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:hsla(0,0%,100%,0)}.hot-display-license-info{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .manualColumnResizer{cursor:col-resize;height:25px;position:absolute;top:0;width:5px;z-index:210}.handsontable .manualRowResizer{cursor:row-resize;height:5px;left:0;position:absolute;width:50px;z-index:210}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{background-color:#34a9db;border-left:none;border-right:1px dashed #777;display:none;margin-left:5px;margin-right:unset;position:absolute;right:unset;top:0;width:0}[dir=rtl].handsontable .manualColumnResizerGuide{border-left:1px dashed #777;border-right:none;left:unset;margin-left:unset;margin-right:5px}.handsontable .manualRowResizerGuide{background-color:#34a9db;border-bottom:1px dashed #777;bottom:0;display:none;height:0;left:0;margin-top:5px;position:absolute}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable .columnSorting{position:relative}.handsontable .columnSorting.sortAction:hover{cursor:pointer;text-decoration:underline}.handsontable span.colHeader.columnSorting:before{background-position-x:right;background-repeat:no-repeat;background-size:contain;content:"";height:10px;left:unset;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;top:50%;width:5px}[dir=rtl].handsontable span.colHeader.columnSorting:before{background-position-x:left;left:-9px;padding-left:0;padding-right:8px;right:unset}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC)}.handsontable span.colHeader.columnSorting.descending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=)}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):after{content:"*";display:inline-block;padding-right:20px;position:relative}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{background:#005eff;bottom:0;bottom:-100%\9;content:"";left:0;position:absolute;right:0;top:0}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{bottom:-100%}}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{background-color:#fff;border:none;border-radius:0;box-shadow:inset 0 0 0 2px #5292f7;color:#000;display:block;font-family:inherit;font-size:inherit;line-height:21px;margin:0;outline-width:0;padding:1px 5px 0;resize:none}.handsontableInput:focus{outline:none}.handsontableInputHolder{left:0;position:absolute;top:0}.htSelectEditor{-webkit-appearance:menulist-button!important;position:absolute;width:auto}.htSelectEditor:focus{outline:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{color:#777;content:"▶";font-size:9px;position:absolute;right:5px}[dir=rtl].handsontable .htSubmenu :after{content:""}[dir=rtl].handsontable .htSubmenu :before{color:#777;content:"◀";font-size:9px;left:5px;position:absolute}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{background:#fff;border:1px solid #ccc;border-collapse:separate}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent!important}.handsontable.listbox td,.handsontable.listbox th{text-overflow:ellipsis;white-space:nowrap}.handsontable.listbox td.htDimmed{color:inherit;cursor:default;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable .collapsibleIndicator{background:#eee;border:1px solid #a6a6a6;border-radius:10px;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 3px #eee;color:#222;cursor:pointer;font-size:10px;height:10px;left:unset;line-height:8px;position:absolute;right:5px;text-align:center;top:50%;transform:translateY(-50%);width:10px}[dir=rtl].handsontable .collapsibleIndicator{left:5px;right:unset}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.handsontable.mobile .handsontableInput:focus{-webkit-appearance:none;-webkit-box-shadow:inset 0 0 0 2px #5292f7;-moz-box-shadow:inset 0 0 0 2px #5292f7;box-shadow:inset 0 0 0 2px #5292f7}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea,[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea{left:unset;right:-10000px}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable .htAutocompleteArrow{color:#bbb;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;font-size:inherit;vertical-align:middle}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{border-left:6px solid transparent;border-right:none;border-top:6px solid #000;content:"";left:unset;position:absolute;right:0;top:0}[dir=rtl].handsontable .htCommentCell:after{border-left:none;border-right:6px solid transparent;left:0;right:unset}.htCommentsContainer .htComments{display:none;position:absolute;z-index:1059}.htCommentsContainer .htCommentTextArea{-webkit-appearance:none;background-color:#fff;border:none;border-left:3px solid #ccc;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:12px;height:90px;outline:0!important;padding:5px;width:215px}[dir=rtl].htCommentsContainer .htCommentTextArea{border-left:none;border-right:3px solid #ccc}.htCommentsContainer .htCommentTextArea:focus{border-left:3px solid #5292f7;border-right:none;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239),inset 0 0 0 1px #5292f7}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-left:none;border-right:3px solid #5292f7}
31
31
  /*!
32
32
  * Handsontable ContextMenu