handsontable 0.0.0-next-30767dd-20250207 → 0.0.0-next-8951d31-20250210

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (47) hide show
  1. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -5
  2. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +1 -5
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -5
  4. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +1 -5
  5. package/3rdparty/walkontable/src/overlay/inlineStart.js +1 -8
  6. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +1 -8
  7. package/3rdparty/walkontable/src/overlay/top.js +1 -9
  8. package/3rdparty/walkontable/src/overlay/top.mjs +1 -9
  9. package/3rdparty/walkontable/src/renderer/cells.js +4 -1
  10. package/3rdparty/walkontable/src/renderer/cells.mjs +4 -1
  11. package/3rdparty/walkontable/src/renderer/columnHeaders.js +4 -1
  12. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +4 -1
  13. package/3rdparty/walkontable/src/renderer/rowHeaders.js +3 -0
  14. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +3 -0
  15. package/3rdparty/walkontable/src/table.js +5 -146
  16. package/3rdparty/walkontable/src/table.mjs +5 -146
  17. package/3rdparty/walkontable/src/utils/column.js +4 -25
  18. package/3rdparty/walkontable/src/utils/column.mjs +4 -25
  19. package/3rdparty/walkontable/src/utils/row.js +2 -12
  20. package/3rdparty/walkontable/src/utils/row.mjs +2 -12
  21. package/3rdparty/walkontable/src/viewport.js +2 -36
  22. package/3rdparty/walkontable/src/viewport.mjs +2 -36
  23. package/base.js +2 -2
  24. package/base.mjs +2 -2
  25. package/core.js +4 -54
  26. package/core.mjs +4 -54
  27. package/dist/handsontable.css +2 -2
  28. package/dist/handsontable.full.css +2 -2
  29. package/dist/handsontable.full.js +56 -333
  30. package/dist/handsontable.full.min.css +2 -2
  31. package/dist/handsontable.full.min.js +9 -9
  32. package/dist/handsontable.js +51 -322
  33. package/dist/handsontable.min.css +2 -2
  34. package/dist/handsontable.min.js +15 -15
  35. package/helpers/mixed.js +1 -1
  36. package/helpers/mixed.mjs +1 -1
  37. package/package.json +1 -1
  38. package/plugins/copyPaste/copyPaste.js +6 -12
  39. package/plugins/copyPaste/copyPaste.mjs +6 -12
  40. package/renderers/textRenderer/textRenderer.js +8 -3
  41. package/renderers/textRenderer/textRenderer.mjs +8 -3
  42. package/styles/handsontable.css +2 -2
  43. package/styles/handsontable.min.css +2 -2
  44. package/styles/ht-theme-horizon.css +2 -2
  45. package/styles/ht-theme-horizon.min.css +2 -2
  46. package/styles/ht-theme-main.css +2 -2
  47. 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-30767dd-20250207
29
- * Release date: 16/12/2024 (built at 07/02/2025 16:03:46)
28
+ * Version: 0.0.0-next-8951d31-20250210
29
+ * Release date: 16/12/2024 (built at 10/02/2025 11:00:22)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -104,8 +104,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
104
104
  Handsontable.CellCoords = _src.CellCoords;
105
105
  Handsontable.CellRange = _src.CellRange;
106
106
  Handsontable.packageName = 'handsontable';
107
- Handsontable.buildDate = "07/02/2025 16:03:46";
108
- Handsontable.version = "0.0.0-next-30767dd-20250207";
107
+ Handsontable.buildDate = "10/02/2025 11:00:22";
108
+ Handsontable.version = "0.0.0-next-8951d31-20250210";
109
109
  Handsontable.languages = {
110
110
  dictionaryKeys: _registry.dictionaryKeys,
111
111
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -3626,33 +3626,7 @@ function Core(rootElement, userSettings) {
3626
3626
  * @returns {number}
3627
3627
  */
3628
3628
  this._getColWidthFromSettings = function (col) {
3629
- let width;
3630
-
3631
- // We currently don't support cell meta objects for headers (negative values)
3632
- if (col >= 0) {
3633
- const cellProperties = instance.getCellMeta(0, col);
3634
- width = cellProperties.width;
3635
- }
3636
- if (width === undefined || width === tableMeta.width) {
3637
- width = tableMeta.colWidths;
3638
- }
3639
- if (width !== undefined && width !== null) {
3640
- switch (typeof width) {
3641
- case 'object':
3642
- // array
3643
- width = width[col];
3644
- break;
3645
- case 'function':
3646
- width = width(col);
3647
- break;
3648
- default:
3649
- break;
3650
- }
3651
- if (typeof width === 'string') {
3652
- width = parseInt(width, 10);
3653
- }
3654
- }
3655
- return width;
3629
+ return tableMeta.colWidths[col];
3656
3630
  };
3657
3631
 
3658
3632
  /**
@@ -3666,12 +3640,7 @@ function Core(rootElement, userSettings) {
3666
3640
  * @fires Hooks#modifyColWidth
3667
3641
  */
3668
3642
  this.getColWidth = function (column, source) {
3669
- let width = instance._getColWidthFromSettings(column);
3670
- width = instance.runHooks('modifyColWidth', width, column, source);
3671
- if (width === undefined) {
3672
- width = _src.DEFAULT_COLUMN_WIDTH;
3673
- }
3674
- return width;
3643
+ return instance._getColWidthFromSettings(column);
3675
3644
  };
3676
3645
 
3677
3646
  /**
@@ -3684,24 +3653,7 @@ function Core(rootElement, userSettings) {
3684
3653
  * @returns {number}
3685
3654
  */
3686
3655
  this._getRowHeightFromSettings = function (row) {
3687
- let height = tableMeta.rowHeights;
3688
- if (height !== undefined && height !== null) {
3689
- switch (typeof height) {
3690
- case 'object':
3691
- // array
3692
- height = height[row];
3693
- break;
3694
- case 'function':
3695
- height = height(row);
3696
- break;
3697
- default:
3698
- break;
3699
- }
3700
- if (typeof height === 'string') {
3701
- height = parseInt(height, 10);
3702
- }
3703
- }
3704
- return height;
3656
+ return tableMeta.rowHeights;
3705
3657
  };
3706
3658
 
3707
3659
  /**
@@ -3732,9 +3684,7 @@ function Core(rootElement, userSettings) {
3732
3684
  * @fires Hooks#modifyRowHeight
3733
3685
  */
3734
3686
  this.getRowHeight = function (row, source) {
3735
- let height = instance._getRowHeightFromSettings(row);
3736
- height = instance.runHooks('modifyRowHeight', height, row, source);
3737
- return height;
3687
+ return instance._getRowHeightFromSettings(row);
3738
3688
  };
3739
3689
 
3740
3690
  /**
@@ -10104,7 +10054,7 @@ const domMessages = {
10104
10054
  function _injectProductInfo(key, element) {
10105
10055
  const hasValidType = !isEmpty(key);
10106
10056
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
10107
- const hotVersion = "0.0.0-next-30767dd-20250207";
10057
+ const hotVersion = "0.0.0-next-8951d31-20250210";
10108
10058
  let keyValidityDate;
10109
10059
  let consoleMessageState = 'invalid';
10110
10060
  let domMessageState = 'invalid';
@@ -20423,11 +20373,7 @@ class ViewportColumnsCalculator extends _viewportBase.ViewportBaseCalculator {
20423
20373
  * @returns {number}
20424
20374
  */
20425
20375
  getColumnWidth(column) {
20426
- const width = this.columnWidthFn(column);
20427
- if (isNaN(width)) {
20428
- return DEFAULT_WIDTH;
20429
- }
20430
- return width;
20376
+ return this.columnWidthFn(column);
20431
20377
  }
20432
20378
  }
20433
20379
  exports.ViewportColumnsCalculator = ViewportColumnsCalculator;
@@ -20622,11 +20568,7 @@ class ViewportRowsCalculator extends _viewportBase.ViewportBaseCalculator {
20622
20568
  * @returns {number}
20623
20569
  */
20624
20570
  getRowHeight(row) {
20625
- const rowHeight = this.rowHeightFn(row);
20626
- if (isNaN(rowHeight)) {
20627
- return this.defaultHeight;
20628
- }
20629
- return rowHeight;
20571
+ return this.rowHeightFn(row);
20630
20572
  }
20631
20573
  }
20632
20574
  exports.ViewportRowsCalculator = ViewportRowsCalculator;
@@ -23612,16 +23554,6 @@ class Table {
23612
23554
  this.resetOversizedRows();
23613
23555
  this.tableRenderer.setActiveOverlayName(this.name).setViewportSize(this.getRenderedRowsCount(), this.getRenderedColumnsCount()).setFilters(this.rowFilter, this.columnFilter).render();
23614
23556
  if (this.isMaster) {
23615
- this.markOversizedColumnHeaders();
23616
- }
23617
- this.adjustColumnHeaderHeights();
23618
- if (this.isMaster || this.is(_overlay.CLONE_BOTTOM)) {
23619
- this.markOversizedRows();
23620
- }
23621
- if (this.isMaster) {
23622
- if (!this.wtSettings.getSetting('externalRowCalculator')) {
23623
- wtViewport.createVisibleCalculators();
23624
- }
23625
23557
  wtOverlays.refresh(false);
23626
23558
  wtOverlays.applyToDOM();
23627
23559
  this.wtSettings.getSetting('onDraw', true);
@@ -23663,85 +23595,18 @@ class Table {
23663
23595
  /**
23664
23596
  * @param {number} col The visual column index.
23665
23597
  */
23666
- markIfOversizedColumnHeader(col) {
23667
- const sourceColIndex = this.columnFilter.renderedToSource(col);
23668
- let level = this.wtSettings.getSetting('columnHeaders').length;
23669
- const defaultRowHeight = this.dataAccessObject.stylesHandler.getDefaultRowHeight();
23670
- let previousColHeaderHeight;
23671
- let currentHeader;
23672
- let currentHeaderHeight;
23673
- const columnHeaderHeightSetting = this.wtSettings.getSetting('columnHeaderHeight') || [];
23674
- while (level) {
23675
- level -= 1;
23676
- previousColHeaderHeight = this.getColumnHeaderHeight(level);
23677
- currentHeader = this.getColumnHeader(sourceColIndex, level);
23678
- if (!currentHeader) {
23679
- /* eslint-disable no-continue */
23680
- continue;
23681
- }
23682
- currentHeaderHeight = (0, _element.innerHeight)(currentHeader);
23683
- if (!previousColHeaderHeight && defaultRowHeight < currentHeaderHeight || previousColHeaderHeight < currentHeaderHeight) {
23684
- this.dataAccessObject.wtViewport.oversizedColumnHeaders[level] = currentHeaderHeight;
23685
- }
23686
- if (Array.isArray(columnHeaderHeightSetting)) {
23687
- if (columnHeaderHeightSetting[level] !== null && columnHeaderHeightSetting[level] !== undefined) {
23688
- this.dataAccessObject.wtViewport.oversizedColumnHeaders[level] = columnHeaderHeightSetting[level];
23689
- }
23690
- } else if (!isNaN(columnHeaderHeightSetting)) {
23691
- this.dataAccessObject.wtViewport.oversizedColumnHeaders[level] = columnHeaderHeightSetting;
23692
- }
23693
- if (this.dataAccessObject.wtViewport.oversizedColumnHeaders[level] < (columnHeaderHeightSetting[level] || columnHeaderHeightSetting)) {
23694
- this.dataAccessObject.wtViewport.oversizedColumnHeaders[level] = columnHeaderHeightSetting[level] || columnHeaderHeightSetting; // eslint-disable-line max-len
23695
- }
23696
- }
23697
- }
23598
+ markIfOversizedColumnHeader(col) {}
23698
23599
 
23699
23600
  /**
23700
23601
  *
23701
23602
  */
23702
- adjustColumnHeaderHeights() {
23703
- const {
23704
- wtSettings
23705
- } = this;
23706
- const children = this.THEAD.childNodes;
23707
- const oversizedColumnHeaders = this.dataAccessObject.wtViewport.oversizedColumnHeaders;
23708
- const columnHeaders = wtSettings.getSetting('columnHeaders');
23709
- for (let i = 0, len = columnHeaders.length; i < len; i++) {
23710
- if (oversizedColumnHeaders[i]) {
23711
- if (!children[i] || children[i].childNodes.length === 0) {
23712
- return;
23713
- }
23714
- children[i].childNodes[0].style.height = `${oversizedColumnHeaders[i]}px`;
23715
- }
23716
- }
23717
- }
23603
+ adjustColumnHeaderHeights() {}
23718
23604
 
23719
23605
  /**
23720
23606
  * Resets cache of row heights. The cache should be cached for each render cycle in a case
23721
23607
  * when new cell values have content which increases/decreases cell height.
23722
23608
  */
23723
- resetOversizedRows() {
23724
- const {
23725
- wtSettings
23726
- } = this;
23727
- const {
23728
- wtViewport
23729
- } = this.dataAccessObject;
23730
- if (!this.isMaster && !this.is(_overlay.CLONE_BOTTOM)) {
23731
- return;
23732
- }
23733
- if (!wtSettings.getSetting('externalRowCalculator')) {
23734
- const rowsToRender = this.getRenderedRowsCount();
23735
-
23736
- // Reset the oversized row cache for rendered rows
23737
- for (let visibleRowIndex = 0; visibleRowIndex < rowsToRender; visibleRowIndex++) {
23738
- const sourceRow = this.rowFilter.renderedToSource(visibleRowIndex);
23739
- if (wtViewport.oversizedRows && wtViewport.oversizedRows[sourceRow]) {
23740
- wtViewport.oversizedRows[sourceRow] = undefined;
23741
- }
23742
- }
23743
- }
23744
- }
23609
+ resetOversizedRows() {}
23745
23610
 
23746
23611
  /**
23747
23612
  * Get cell element at coords.
@@ -23939,46 +23804,7 @@ class Table {
23939
23804
  /**
23940
23805
  * Check if any of the rendered rows is higher than expected, and if so, cache them.
23941
23806
  */
23942
- markOversizedRows() {
23943
- if (this.wtSettings.getSetting('externalRowCalculator')) {
23944
- return;
23945
- }
23946
- let rowCount = this.TBODY.childNodes.length;
23947
- const expectedTableHeight = rowCount * this.dataAccessObject.stylesHandler.getDefaultRowHeight();
23948
- const actualTableHeight = (0, _element.innerHeight)(this.TBODY) - 1;
23949
- const borderBoxSizing = this.wot.stylesHandler.areCellsBorderBox();
23950
- const rowHeightFn = borderBoxSizing ? _element.outerHeight : _element.innerHeight;
23951
- const borderCompensation = borderBoxSizing ? 0 : 1;
23952
- const firstRowBorderCompensation = borderBoxSizing ? 1 : 0;
23953
- let previousRowHeight;
23954
- let rowCurrentHeight;
23955
- let sourceRowIndex;
23956
- let currentTr;
23957
- let rowHeader;
23958
- if (expectedTableHeight === actualTableHeight && !this.wtSettings.getSetting('fixedRowsBottom')) {
23959
- // If the actual table height equals rowCount * default single row height, no row is oversized -> no need to iterate over them
23960
- return;
23961
- }
23962
- while (rowCount) {
23963
- rowCount -= 1;
23964
- sourceRowIndex = this.rowFilter.renderedToSource(rowCount);
23965
- previousRowHeight = this.getRowHeight(sourceRowIndex);
23966
- currentTr = this.getTrForRow(sourceRowIndex);
23967
- rowHeader = currentTr.querySelector('th');
23968
- const topBorderCompensation = sourceRowIndex === 0 ? firstRowBorderCompensation : 0;
23969
- if (rowHeader) {
23970
- rowCurrentHeight = rowHeightFn(rowHeader);
23971
- } else {
23972
- rowCurrentHeight = rowHeightFn(currentTr) - borderCompensation;
23973
- }
23974
- if (!previousRowHeight && this.dataAccessObject.stylesHandler.getDefaultRowHeight() < rowCurrentHeight - topBorderCompensation || previousRowHeight < rowCurrentHeight) {
23975
- if (!borderBoxSizing) {
23976
- rowCurrentHeight += 1;
23977
- }
23978
- this.dataAccessObject.wtViewport.oversizedRows[sourceRowIndex] = rowCurrentHeight;
23979
- }
23980
- }
23981
- }
23807
+ markOversizedRows() {}
23982
23808
 
23983
23809
  /**
23984
23810
  * @param {number} row The visual row index.
@@ -24293,32 +24119,7 @@ class Table {
24293
24119
  * @returns {number}
24294
24120
  */
24295
24121
  _modifyRowHeaderWidth(rowHeaderWidthFactory) {
24296
- let widths = (0, _function.isFunction)(rowHeaderWidthFactory) ? rowHeaderWidthFactory() : null;
24297
- if (Array.isArray(widths)) {
24298
- widths = [...widths];
24299
- widths[widths.length - 1] = this._correctRowHeaderWidth(widths[widths.length - 1]);
24300
- } else {
24301
- widths = this._correctRowHeaderWidth(widths);
24302
- }
24303
- return widths;
24304
- }
24305
-
24306
- /**
24307
- * Correct row header width if necessary.
24308
- *
24309
- * @private
24310
- * @param {number} width The width to process.
24311
- * @returns {number}
24312
- */
24313
- _correctRowHeaderWidth(width) {
24314
- let rowHeaderWidth = width;
24315
- if (typeof width !== 'number') {
24316
- rowHeaderWidth = this.wtSettings.getSetting('defaultColumnWidth');
24317
- }
24318
- if (this.correctHeaderWidth) {
24319
- rowHeaderWidth += 1;
24320
- }
24321
- return rowHeaderWidth;
24122
+ return 50;
24322
24123
  }
24323
24124
  }
24324
24125
  var _default = exports["default"] = Table;
@@ -24731,6 +24532,9 @@ class RowHeadersRenderer extends _base.BaseRenderer {
24731
24532
  for (let visibleColumnIndex = 0; visibleColumnIndex < rowHeadersCount; visibleColumnIndex++) {
24732
24533
  orderView.render();
24733
24534
  const TH = orderView.getCurrentNode();
24535
+ if (TH.innerHTML !== '') {
24536
+ continue;
24537
+ }
24734
24538
  TH.className = '';
24735
24539
  TH.removeAttribute('style');
24736
24540
 
@@ -25676,7 +25480,7 @@ var _a11y = __webpack_require__(162);
25676
25480
  */
25677
25481
  class ColumnHeadersRenderer extends _base.BaseRenderer {
25678
25482
  constructor(rootNode) {
25679
- super(null, rootNode); // NodePool is not implemented for this renderer yet
25483
+ super('TR', rootNode); // NodePool is not implemented for this renderer yet
25680
25484
  }
25681
25485
 
25682
25486
  /**
@@ -25744,6 +25548,9 @@ class ColumnHeadersRenderer extends _base.BaseRenderer {
25744
25548
  // eslint-disable-line max-len
25745
25549
  const sourceColumnIndex = this.table.renderedColumnToSource(renderedColumnIndex);
25746
25550
  const TH = TR.childNodes[renderedColumnIndex + rowHeadersCount];
25551
+ if (TH.innerHTML !== '') {
25552
+ continue;
25553
+ }
25747
25554
  TH.className = '';
25748
25555
  TH.removeAttribute('style');
25749
25556
 
@@ -26034,11 +25841,14 @@ class CellsRenderer extends _base.BaseRenderer {
26034
25841
  this.sourceRowIndex = sourceRowIndex;
26035
25842
  const orderView = this.obtainOrderView(TR);
26036
25843
  const rowHeadersView = rowHeaders.obtainOrderView(TR);
26037
- orderView.prependView(rowHeadersView).setSize(columnsToRender).setOffset(0).start();
25844
+ orderView.prependView(rowHeadersView).setSize(columnsToRender).setOffset(this.table.renderedColumnToSource(0)).start();
26038
25845
  for (let visibleColumnIndex = 0; visibleColumnIndex < columnsToRender; visibleColumnIndex++) {
26039
25846
  orderView.render();
26040
25847
  const sourceColumnIndex = this.table.renderedColumnToSource(visibleColumnIndex);
26041
25848
  const TD = orderView.getCurrentNode();
25849
+ if (TD.innerHTML !== '') {
25850
+ continue;
25851
+ }
26042
25852
  if (!(0, _element.hasClass)(TD, 'hide')) {
26043
25853
  // Workaround for hidden columns plugin
26044
25854
  TD.className = '';
@@ -26448,8 +26258,7 @@ class ColumnUtils {
26448
26258
  * @returns {number}
26449
26259
  */
26450
26260
  getWidth(sourceIndex) {
26451
- const width = this.wtSettings.getSetting('columnWidth', sourceIndex) || this.wtSettings.getSetting('defaultColumnWidth');
26452
- return width;
26261
+ return this.wtSettings.getSetting('columnWidth', sourceIndex);
26453
26262
  }
26454
26263
 
26455
26264
  /**
@@ -26459,12 +26268,7 @@ class ColumnUtils {
26459
26268
  * @returns {number}
26460
26269
  */
26461
26270
  getHeaderHeight(level) {
26462
- let height = this.dataAccessObject.stylesHandler.getDefaultRowHeight();
26463
- const oversizedHeight = this.dataAccessObject.wtViewport.oversizedColumnHeaders[level];
26464
- if (oversizedHeight !== undefined) {
26465
- height = height ? Math.max(height, oversizedHeight) : oversizedHeight;
26466
- }
26467
- return height;
26271
+ return this.dataAccessObject.stylesHandler.getDefaultRowHeight();
26468
26272
  }
26469
26273
 
26470
26274
  /**
@@ -26474,28 +26278,13 @@ class ColumnUtils {
26474
26278
  * @returns {number}
26475
26279
  */
26476
26280
  getHeaderWidth(sourceIndex) {
26477
- return this.headerWidths.get(this.dataAccessObject.wtTable.columnFilter.sourceToRendered(sourceIndex));
26281
+ return 50;
26478
26282
  }
26479
26283
 
26480
26284
  /**
26481
26285
  * Calculates column header widths that can be retrieved from the cache.
26482
26286
  */
26483
- calculateWidths() {
26484
- const {
26485
- wtSettings
26486
- } = this;
26487
- let rowHeaderWidthSetting = wtSettings.getSetting('rowHeaderWidth');
26488
- rowHeaderWidthSetting = wtSettings.getSetting('onModifyRowHeaderWidth', rowHeaderWidthSetting);
26489
- if (rowHeaderWidthSetting !== null && rowHeaderWidthSetting !== undefined) {
26490
- const rowHeadersCount = wtSettings.getSetting('rowHeaders').length;
26491
- const defaultColumnWidth = wtSettings.getSetting('defaultColumnWidth');
26492
- for (let visibleColumnIndex = 0; visibleColumnIndex < rowHeadersCount; visibleColumnIndex++) {
26493
- let width = Array.isArray(rowHeaderWidthSetting) ? rowHeaderWidthSetting[visibleColumnIndex] : rowHeaderWidthSetting;
26494
- width = width === null || width === undefined ? defaultColumnWidth : width;
26495
- this.headerWidths.set(visibleColumnIndex, width);
26496
- }
26497
- }
26498
- }
26287
+ calculateWidths() {}
26499
26288
  }
26500
26289
  exports["default"] = ColumnUtils;
26501
26290
 
@@ -26539,12 +26328,7 @@ class RowUtils {
26539
26328
  * @returns {number}
26540
26329
  */
26541
26330
  getHeight(sourceIndex) {
26542
- let height = this.wtSettings.getSetting('rowHeight', sourceIndex);
26543
- const oversizedHeight = this.dataAccessObject.wtViewport.oversizedRows[sourceIndex];
26544
- if (oversizedHeight !== undefined) {
26545
- height = height === undefined ? oversizedHeight : Math.max(height, oversizedHeight);
26546
- }
26547
- return height;
26331
+ return this.wtSettings.getSetting('rowHeight', sourceIndex);
26548
26332
  }
26549
26333
 
26550
26334
  /**
@@ -26555,12 +26339,7 @@ class RowUtils {
26555
26339
  * @returns {number}
26556
26340
  */
26557
26341
  getHeightByOverlayName(sourceIndex, overlayName) {
26558
- let height = this.wtSettings.getSetting('rowHeightByOverlayName', sourceIndex, overlayName);
26559
- const oversizedHeight = this.dataAccessObject.wtViewport.oversizedRows[sourceIndex];
26560
- if (oversizedHeight !== undefined) {
26561
- height = height === undefined ? oversizedHeight : Math.max(height, oversizedHeight);
26562
- }
26563
- return height;
26342
+ return this.wtSettings.getSetting('rowHeight', sourceIndex);
26564
26343
  }
26565
26344
  }
26566
26345
  exports["default"] = RowUtils;
@@ -28557,14 +28336,7 @@ class InlineStartOverlay extends _base.Overlay {
28557
28336
  * @returns {number} Width sum.
28558
28337
  */
28559
28338
  sumCellSizes(from, to) {
28560
- const defaultColumnWidth = this.wtSettings.getSetting('defaultColumnWidth');
28561
- let column = from;
28562
- let sum = 0;
28563
- while (column < to) {
28564
- sum += this.wot.wtTable.getColumnWidth(column) || defaultColumnWidth;
28565
- column += 1;
28566
- }
28567
- return sum;
28339
+ return (to - from) * 80;
28568
28340
  }
28569
28341
 
28570
28342
  /**
@@ -30947,15 +30719,7 @@ class TopOverlay extends _base.Overlay {
30947
30719
  * @returns {number} Height sum.
30948
30720
  */
30949
30721
  sumCellSizes(from, to) {
30950
- const defaultRowHeight = this.wot.stylesHandler.getDefaultRowHeight();
30951
- let row = from;
30952
- let sum = 0;
30953
- while (row < to) {
30954
- const height = this.wot.wtTable.getRowHeight(row);
30955
- sum += height === undefined ? defaultRowHeight : height;
30956
- row += 1;
30957
- }
30958
- return sum;
30722
+ return (to - from) * 29;
30959
30723
  }
30960
30724
 
30961
30725
  /**
@@ -31668,7 +31432,6 @@ class Viewport {
31668
31432
  this.domBindings = domBindings;
31669
31433
  this.wtSettings = wtSettings;
31670
31434
  this.wtTable = wtTable;
31671
- this.oversizedRows = [];
31672
31435
  this.oversizedColumnHeaders = [];
31673
31436
  this.hasOversizedColumnHeadersMarked = {};
31674
31437
  this.clientHeight = 0;
@@ -31823,47 +31586,14 @@ class Viewport {
31823
31586
  * @returns {number}
31824
31587
  */
31825
31588
  getColumnHeaderHeight() {
31826
- const columnHeaders = this.wtSettings.getSetting('columnHeaders');
31827
- if (!columnHeaders.length) {
31828
- this.columnHeaderHeight = 0;
31829
- } else if (isNaN(this.columnHeaderHeight)) {
31830
- this.columnHeaderHeight = (0, _element.outerHeight)(this.wtTable.THEAD);
31831
- }
31832
- return this.columnHeaderHeight;
31589
+ return 59;
31833
31590
  }
31834
31591
 
31835
31592
  /**
31836
31593
  * @returns {number}
31837
31594
  */
31838
31595
  getRowHeaderWidth() {
31839
- const rowHeadersWidthSetting = this.wtSettings.getSetting('rowHeaderWidth');
31840
- const rowHeaders = this.wtSettings.getSetting('rowHeaders');
31841
- if (rowHeadersWidthSetting) {
31842
- this.rowHeaderWidth = 0;
31843
- for (let i = 0, len = rowHeaders.length; i < len; i++) {
31844
- this.rowHeaderWidth += rowHeadersWidthSetting[i] || rowHeadersWidthSetting;
31845
- }
31846
- }
31847
- if (isNaN(this.rowHeaderWidth)) {
31848
- if (rowHeaders.length) {
31849
- let TH = this.wtTable.TABLE.querySelector('TH');
31850
- this.rowHeaderWidth = 0;
31851
- for (let i = 0, len = rowHeaders.length; i < len; i++) {
31852
- if (TH) {
31853
- this.rowHeaderWidth += (0, _element.outerWidth)(TH);
31854
- TH = TH.nextSibling;
31855
- } else {
31856
- // yes this is a cheat but it worked like that before, just taking assumption from CSS instead of measuring.
31857
- // TODO: proper fix
31858
- this.rowHeaderWidth += 50;
31859
- }
31860
- }
31861
- } else {
31862
- this.rowHeaderWidth = 0;
31863
- }
31864
- }
31865
- this.rowHeaderWidth = this.wtSettings.getSetting('onModifyRowHeaderWidth', this.rowHeaderWidth) || this.rowHeaderWidth;
31866
- return this.rowHeaderWidth;
31596
+ return 50;
31867
31597
  }
31868
31598
 
31869
31599
  /**
@@ -50823,9 +50553,14 @@ function textRenderer(hotInstance, TD, row, col, prop, value, cellProperties) {
50823
50553
  if (cellProperties.trimWhitespace) {
50824
50554
  escaped = escaped.trim();
50825
50555
  }
50826
-
50827
- // this is faster than innerHTML. See: https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips
50828
- (0, _element.fastInnerText)(TD, escaped);
50556
+ if (TD.firstChild) {
50557
+ (0, _element.fastInnerText)(TD.firstChild, escaped);
50558
+ } else {
50559
+ const div = hotInstance.rootDocument.createElement('div');
50560
+ div.style.height = '20px';
50561
+ TD.appendChild(div);
50562
+ (0, _element.fastInnerText)(div, escaped);
50563
+ }
50829
50564
  }
50830
50565
  textRenderer.RENDERER_TYPE = RENDERER_TYPE;
50831
50566
 
@@ -66683,12 +66418,10 @@ class CopyPaste extends _base.BasePlugin {
66683
66418
  * @private
66684
66419
  */
66685
66420
  onCopy(event) {
66686
- var _event$target, _this$hot$getSelected;
66421
+ var _event$target;
66687
66422
  const focusedElement = this.hot.getFocusManager().getRefocusElement();
66688
66423
  const isHotInput = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.hasAttribute('data-hot-input');
66689
- const selectedCell = (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight;
66690
- const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
66691
- if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || event.target instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
66424
+ if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCopy, this) || this.isEditorOpened() || event.target instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body)) {
66692
66425
  return;
66693
66426
  }
66694
66427
  event.preventDefault();
@@ -66718,12 +66451,10 @@ class CopyPaste extends _base.BasePlugin {
66718
66451
  * @private
66719
66452
  */
66720
66453
  onCut(event) {
66721
- var _event$target2, _this$hot$getSelected2;
66454
+ var _event$target2;
66722
66455
  const focusedElement = this.hot.getFocusManager().getRefocusElement();
66723
66456
  const isHotInput = (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.hasAttribute('data-hot-input');
66724
- const selectedCell = (_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight;
66725
- const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
66726
- if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || event.target instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
66457
+ if (!this.hot.isListening() && !_classPrivateFieldGet(_isTriggeredByCut, this) || this.isEditorOpened() || event.target instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body)) {
66727
66458
  return;
66728
66459
  }
66729
66460
  event.preventDefault();
@@ -66752,12 +66483,10 @@ class CopyPaste extends _base.BasePlugin {
66752
66483
  * @private
66753
66484
  */
66754
66485
  onPaste(event) {
66755
- var _event$target3, _this$hot$getSelected3;
66486
+ var _event$target3;
66756
66487
  const focusedElement = this.hot.getFocusManager().getRefocusElement();
66757
66488
  const isHotInput = (_event$target3 = event.target) === null || _event$target3 === void 0 ? void 0 : _event$target3.hasAttribute('data-hot-input');
66758
- const selectedCell = (_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight;
66759
- const TD = selectedCell ? this.hot.getCell(selectedCell.row, selectedCell.col, true) : null;
66760
- if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || event.target instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body && TD !== event.target)) {
66489
+ if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected() || event.target instanceof HTMLElement && (isHotInput && event.target !== focusedElement || !isHotInput && event.target !== this.hot.rootDocument.body)) {
66761
66490
  return;
66762
66491
  }
66763
66492
  event.preventDefault();
@@ -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-30767dd-20250207
30
- * Release date: 16/12/2024 (built at 07/02/2025 16:04:41)
29
+ * Version: 0.0.0-next-8951d31-20250210
30
+ * Release date: 16/12/2024 (built at 10/02/2025 11:01:13)
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