handsontable 16.1.0-next-91b8a0f-20250905 → 16.1.0-next-7cb4c1e-20250909

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.
@@ -348,12 +348,14 @@ class Viewport {
348
348
  const rowsCalculator = this.createRowsCalculator();
349
349
  const columnsCalculator = this.createColumnsCalculator();
350
350
  if (fastDraw && !wtSettings.getSetting('renderAllRows')) {
351
- const proposedRowsVisibleCalculator = rowsCalculator.getResultsFor('fullyVisible');
352
- fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator);
351
+ const proposedFullyVisibleRowsCalculator = rowsCalculator.getResultsFor('fullyVisible');
352
+ const proposedPartiallyVisibleRowsCalculator = rowsCalculator.getResultsFor('partiallyVisible');
353
+ fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedFullyVisibleRowsCalculator, proposedPartiallyVisibleRowsCalculator);
353
354
  }
354
355
  if (fastDraw && !wtSettings.getSetting('renderAllColumns')) {
355
- const proposedColumnsVisibleCalculator = columnsCalculator.getResultsFor('fullyVisible');
356
- fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator);
356
+ const proposedFullyVisibleColumnsCalculator = columnsCalculator.getResultsFor('fullyVisible');
357
+ const proposedPartiallyVisibleColumnsCalculator = columnsCalculator.getResultsFor('partiallyVisible');
358
+ fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedFullyVisibleColumnsCalculator, proposedPartiallyVisibleColumnsCalculator);
357
359
  }
358
360
  if (!fastDraw) {
359
361
  this.rowsRenderCalculator = rowsCalculator.getResultsFor('rendered');
@@ -380,30 +382,35 @@ class Viewport {
380
382
  }
381
383
 
382
384
  /**
383
- * Returns information whether proposedRowsVisibleCalculator viewport
385
+ * Returns information whether proposedFullyVisibleRowsCalculator viewport
384
386
  * is contained inside rows rendered in previous draw (cached in rowsRenderCalculator).
385
387
  *
386
- * @param {ViewportRowsCalculator} proposedRowsVisibleCalculator The instance of the viewport calculator to compare with.
388
+ * @param {ViewportRowsCalculator} proposedFullyVisibleRowsCalculator The instance of the fully visible rows viewport calculator to compare with.
389
+ * @param {ViewportRowsCalculator} proposedPartiallyVisibleRowsCalculator The instance of the partially visible rows viewport calculator to compare with.
387
390
  * @returns {boolean} Returns `true` if all proposed visible rows are already rendered (meaning: redraw is not needed).
388
391
  * Returns `false` if at least one proposed visible row is not already rendered (meaning: redraw is needed).
389
392
  */
390
- areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) {
393
+ areAllProposedVisibleRowsAlreadyRendered(proposedFullyVisibleRowsCalculator, proposedPartiallyVisibleRowsCalculator) {
391
394
  if (!this.rowsVisibleCalculator) {
392
395
  return false;
393
396
  }
394
397
  let {
395
398
  startRow,
396
399
  endRow
397
- } = proposedRowsVisibleCalculator;
400
+ } = proposedFullyVisibleRowsCalculator;
401
+ const {
402
+ startRow: partiallyVisibleStartRow,
403
+ endRow: partiallyVisibleEndRow
404
+ } = proposedPartiallyVisibleRowsCalculator;
398
405
 
399
406
  // if there are no fully visible rows at all...
400
407
  if (startRow === null && endRow === null) {
401
- if (!proposedRowsVisibleCalculator.isVisibleInTrimmingContainer) {
408
+ if (!proposedFullyVisibleRowsCalculator.isVisibleInTrimmingContainer && !this.wtTable.isRowBeforeRenderedRows(partiallyVisibleStartRow) && !this.wtTable.isRowAfterRenderedRows(partiallyVisibleEndRow)) {
402
409
  return true;
403
410
  }
404
411
  // ...use partially visible rows calculator to determine what render type is needed
405
- startRow = this.rowsPartiallyVisibleCalculator.startRow;
406
- endRow = this.rowsPartiallyVisibleCalculator.endRow;
412
+ startRow = partiallyVisibleStartRow;
413
+ endRow = partiallyVisibleEndRow;
407
414
  }
408
415
  const {
409
416
  startRow: renderedStartRow,
@@ -429,30 +436,35 @@ class Viewport {
429
436
  }
430
437
 
431
438
  /**
432
- * Returns information whether proposedColumnsVisibleCalculator viewport
439
+ * Returns information whether proposedFullyVisibleColumnsCalculator viewport
433
440
  * is contained inside column rendered in previous draw (cached in columnsRenderCalculator).
434
441
  *
435
- * @param {ViewportRowsCalculator} proposedColumnsVisibleCalculator The instance of the viewport calculator to compare with.
442
+ * @param {ViewportRowsCalculator} proposedFullyVisibleColumnsCalculator The instance of the fully visible columns viewport calculator to compare with.
443
+ * @param {ViewportRowsCalculator} proposedPartiallyVisibleColumnsCalculator The instance of the partially visible columns viewport calculator to compare with.
436
444
  * @returns {boolean} Returns `true` if all proposed visible columns are already rendered (meaning: redraw is not needed).
437
445
  * Returns `false` if at least one proposed visible column is not already rendered (meaning: redraw is needed).
438
446
  */
439
- areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator) {
447
+ areAllProposedVisibleColumnsAlreadyRendered(proposedFullyVisibleColumnsCalculator, proposedPartiallyVisibleColumnsCalculator) {
440
448
  if (!this.columnsVisibleCalculator) {
441
449
  return false;
442
450
  }
443
451
  let {
444
452
  startColumn,
445
453
  endColumn
446
- } = proposedColumnsVisibleCalculator;
454
+ } = proposedFullyVisibleColumnsCalculator;
455
+ const {
456
+ startColumn: partiallyVisibleStartColumn,
457
+ endColumn: partiallyVisibleEndColumn
458
+ } = proposedPartiallyVisibleColumnsCalculator;
447
459
 
448
460
  // if there are no fully visible columns at all...
449
461
  if (startColumn === null && endColumn === null) {
450
- if (!proposedColumnsVisibleCalculator.isVisibleInTrimmingContainer) {
462
+ if (!proposedFullyVisibleColumnsCalculator.isVisibleInTrimmingContainer && !this.wtTable.isColumnBeforeRenderedColumns(partiallyVisibleStartColumn) && !this.wtTable.isColumnAfterRenderedColumns(partiallyVisibleEndColumn)) {
451
463
  return true;
452
464
  }
453
465
  // ...use partially visible columns calculator to determine what render type is needed
454
- startColumn = this.columnsPartiallyVisibleCalculator.startColumn;
455
- endColumn = this.columnsPartiallyVisibleCalculator.endColumn;
466
+ startColumn = partiallyVisibleStartColumn;
467
+ endColumn = partiallyVisibleEndColumn;
456
468
  }
457
469
  const {
458
470
  startColumn: renderedStartColumn,
@@ -345,12 +345,14 @@ class Viewport {
345
345
  const rowsCalculator = this.createRowsCalculator();
346
346
  const columnsCalculator = this.createColumnsCalculator();
347
347
  if (fastDraw && !wtSettings.getSetting('renderAllRows')) {
348
- const proposedRowsVisibleCalculator = rowsCalculator.getResultsFor('fullyVisible');
349
- fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator);
348
+ const proposedFullyVisibleRowsCalculator = rowsCalculator.getResultsFor('fullyVisible');
349
+ const proposedPartiallyVisibleRowsCalculator = rowsCalculator.getResultsFor('partiallyVisible');
350
+ fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedFullyVisibleRowsCalculator, proposedPartiallyVisibleRowsCalculator);
350
351
  }
351
352
  if (fastDraw && !wtSettings.getSetting('renderAllColumns')) {
352
- const proposedColumnsVisibleCalculator = columnsCalculator.getResultsFor('fullyVisible');
353
- fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator);
353
+ const proposedFullyVisibleColumnsCalculator = columnsCalculator.getResultsFor('fullyVisible');
354
+ const proposedPartiallyVisibleColumnsCalculator = columnsCalculator.getResultsFor('partiallyVisible');
355
+ fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedFullyVisibleColumnsCalculator, proposedPartiallyVisibleColumnsCalculator);
354
356
  }
355
357
  if (!fastDraw) {
356
358
  this.rowsRenderCalculator = rowsCalculator.getResultsFor('rendered');
@@ -377,30 +379,35 @@ class Viewport {
377
379
  }
378
380
 
379
381
  /**
380
- * Returns information whether proposedRowsVisibleCalculator viewport
382
+ * Returns information whether proposedFullyVisibleRowsCalculator viewport
381
383
  * is contained inside rows rendered in previous draw (cached in rowsRenderCalculator).
382
384
  *
383
- * @param {ViewportRowsCalculator} proposedRowsVisibleCalculator The instance of the viewport calculator to compare with.
385
+ * @param {ViewportRowsCalculator} proposedFullyVisibleRowsCalculator The instance of the fully visible rows viewport calculator to compare with.
386
+ * @param {ViewportRowsCalculator} proposedPartiallyVisibleRowsCalculator The instance of the partially visible rows viewport calculator to compare with.
384
387
  * @returns {boolean} Returns `true` if all proposed visible rows are already rendered (meaning: redraw is not needed).
385
388
  * Returns `false` if at least one proposed visible row is not already rendered (meaning: redraw is needed).
386
389
  */
387
- areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) {
390
+ areAllProposedVisibleRowsAlreadyRendered(proposedFullyVisibleRowsCalculator, proposedPartiallyVisibleRowsCalculator) {
388
391
  if (!this.rowsVisibleCalculator) {
389
392
  return false;
390
393
  }
391
394
  let {
392
395
  startRow,
393
396
  endRow
394
- } = proposedRowsVisibleCalculator;
397
+ } = proposedFullyVisibleRowsCalculator;
398
+ const {
399
+ startRow: partiallyVisibleStartRow,
400
+ endRow: partiallyVisibleEndRow
401
+ } = proposedPartiallyVisibleRowsCalculator;
395
402
 
396
403
  // if there are no fully visible rows at all...
397
404
  if (startRow === null && endRow === null) {
398
- if (!proposedRowsVisibleCalculator.isVisibleInTrimmingContainer) {
405
+ if (!proposedFullyVisibleRowsCalculator.isVisibleInTrimmingContainer && !this.wtTable.isRowBeforeRenderedRows(partiallyVisibleStartRow) && !this.wtTable.isRowAfterRenderedRows(partiallyVisibleEndRow)) {
399
406
  return true;
400
407
  }
401
408
  // ...use partially visible rows calculator to determine what render type is needed
402
- startRow = this.rowsPartiallyVisibleCalculator.startRow;
403
- endRow = this.rowsPartiallyVisibleCalculator.endRow;
409
+ startRow = partiallyVisibleStartRow;
410
+ endRow = partiallyVisibleEndRow;
404
411
  }
405
412
  const {
406
413
  startRow: renderedStartRow,
@@ -426,30 +433,35 @@ class Viewport {
426
433
  }
427
434
 
428
435
  /**
429
- * Returns information whether proposedColumnsVisibleCalculator viewport
436
+ * Returns information whether proposedFullyVisibleColumnsCalculator viewport
430
437
  * is contained inside column rendered in previous draw (cached in columnsRenderCalculator).
431
438
  *
432
- * @param {ViewportRowsCalculator} proposedColumnsVisibleCalculator The instance of the viewport calculator to compare with.
439
+ * @param {ViewportRowsCalculator} proposedFullyVisibleColumnsCalculator The instance of the fully visible columns viewport calculator to compare with.
440
+ * @param {ViewportRowsCalculator} proposedPartiallyVisibleColumnsCalculator The instance of the partially visible columns viewport calculator to compare with.
433
441
  * @returns {boolean} Returns `true` if all proposed visible columns are already rendered (meaning: redraw is not needed).
434
442
  * Returns `false` if at least one proposed visible column is not already rendered (meaning: redraw is needed).
435
443
  */
436
- areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator) {
444
+ areAllProposedVisibleColumnsAlreadyRendered(proposedFullyVisibleColumnsCalculator, proposedPartiallyVisibleColumnsCalculator) {
437
445
  if (!this.columnsVisibleCalculator) {
438
446
  return false;
439
447
  }
440
448
  let {
441
449
  startColumn,
442
450
  endColumn
443
- } = proposedColumnsVisibleCalculator;
451
+ } = proposedFullyVisibleColumnsCalculator;
452
+ const {
453
+ startColumn: partiallyVisibleStartColumn,
454
+ endColumn: partiallyVisibleEndColumn
455
+ } = proposedPartiallyVisibleColumnsCalculator;
444
456
 
445
457
  // if there are no fully visible columns at all...
446
458
  if (startColumn === null && endColumn === null) {
447
- if (!proposedColumnsVisibleCalculator.isVisibleInTrimmingContainer) {
459
+ if (!proposedFullyVisibleColumnsCalculator.isVisibleInTrimmingContainer && !this.wtTable.isColumnBeforeRenderedColumns(partiallyVisibleStartColumn) && !this.wtTable.isColumnAfterRenderedColumns(partiallyVisibleEndColumn)) {
448
460
  return true;
449
461
  }
450
462
  // ...use partially visible columns calculator to determine what render type is needed
451
- startColumn = this.columnsPartiallyVisibleCalculator.startColumn;
452
- endColumn = this.columnsPartiallyVisibleCalculator.endColumn;
463
+ startColumn = partiallyVisibleStartColumn;
464
+ endColumn = partiallyVisibleEndColumn;
453
465
  }
454
466
  const {
455
467
  startColumn: renderedStartColumn,
package/base.js CHANGED
@@ -45,8 +45,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
45
45
  Handsontable.CellCoords = _src.CellCoords;
46
46
  Handsontable.CellRange = _src.CellRange;
47
47
  Handsontable.packageName = 'handsontable';
48
- Handsontable.buildDate = "05/09/2025 09:35:20";
49
- Handsontable.version = "16.1.0-next-91b8a0f-20250905";
48
+ Handsontable.buildDate = "09/09/2025 09:27:27";
49
+ Handsontable.version = "16.1.0-next-7cb4c1e-20250909";
50
50
  Handsontable.languages = {
51
51
  dictionaryKeys: _registry.dictionaryKeys,
52
52
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "05/09/2025 09:35:26";
39
- Handsontable.version = "16.1.0-next-91b8a0f-20250905";
38
+ Handsontable.buildDate = "09/09/2025 09:27:33";
39
+ Handsontable.version = "16.1.0-next-7cb4c1e-20250909";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -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: 16.1.0-next-91b8a0f-20250905
30
- * Release date: 11/09/2025 (built at 05/09/2025 09:35:49)
29
+ * Version: 16.1.0-next-7cb4c1e-20250909
30
+ * Release date: 11/09/2025 (built at 09/09/2025 09:27:55)
31
31
  */
32
32
  /**
33
33
  * Fix for bootstrap styles
@@ -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: 16.1.0-next-91b8a0f-20250905
30
- * Release date: 11/09/2025 (built at 05/09/2025 09:35:49)
29
+ * Version: 16.1.0-next-7cb4c1e-20250909
30
+ * Release date: 11/09/2025 (built at 09/09/2025 09:27:55)
31
31
  */
32
32
  /**
33
33
  * Fix for bootstrap styles
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 16.1.0-next-91b8a0f-20250905
29
- * Release date: 11/09/2025 (built at 05/09/2025 09:35:31)
28
+ * Version: 16.1.0-next-7cb4c1e-20250909
29
+ * Release date: 11/09/2025 (built at 09/09/2025 09:27:37)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -42877,8 +42877,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
42877
42877
  Handsontable.CellCoords = _src.CellCoords;
42878
42878
  Handsontable.CellRange = _src.CellRange;
42879
42879
  Handsontable.packageName = 'handsontable';
42880
- Handsontable.buildDate = "05/09/2025 09:35:31";
42881
- Handsontable.version = "16.1.0-next-91b8a0f-20250905";
42880
+ Handsontable.buildDate = "09/09/2025 09:27:37";
42881
+ Handsontable.version = "16.1.0-next-7cb4c1e-20250909";
42882
42882
  Handsontable.languages = {
42883
42883
  dictionaryKeys: _registry.dictionaryKeys,
42884
42884
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -54777,7 +54777,7 @@ const domMessages = {
54777
54777
  function _injectProductInfo(key, element) {
54778
54778
  const hasValidType = !isEmpty(key);
54779
54779
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
54780
- const hotVersion = "16.1.0-next-91b8a0f-20250905";
54780
+ const hotVersion = "16.1.0-next-7cb4c1e-20250909";
54781
54781
  let keyValidityDate;
54782
54782
  let consoleMessageState = 'invalid';
54783
54783
  let domMessageState = 'invalid';
@@ -84436,12 +84436,14 @@ class Viewport {
84436
84436
  const rowsCalculator = this.createRowsCalculator();
84437
84437
  const columnsCalculator = this.createColumnsCalculator();
84438
84438
  if (fastDraw && !wtSettings.getSetting('renderAllRows')) {
84439
- const proposedRowsVisibleCalculator = rowsCalculator.getResultsFor('fullyVisible');
84440
- fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator);
84439
+ const proposedFullyVisibleRowsCalculator = rowsCalculator.getResultsFor('fullyVisible');
84440
+ const proposedPartiallyVisibleRowsCalculator = rowsCalculator.getResultsFor('partiallyVisible');
84441
+ fastDraw = this.areAllProposedVisibleRowsAlreadyRendered(proposedFullyVisibleRowsCalculator, proposedPartiallyVisibleRowsCalculator);
84441
84442
  }
84442
84443
  if (fastDraw && !wtSettings.getSetting('renderAllColumns')) {
84443
- const proposedColumnsVisibleCalculator = columnsCalculator.getResultsFor('fullyVisible');
84444
- fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator);
84444
+ const proposedFullyVisibleColumnsCalculator = columnsCalculator.getResultsFor('fullyVisible');
84445
+ const proposedPartiallyVisibleColumnsCalculator = columnsCalculator.getResultsFor('partiallyVisible');
84446
+ fastDraw = this.areAllProposedVisibleColumnsAlreadyRendered(proposedFullyVisibleColumnsCalculator, proposedPartiallyVisibleColumnsCalculator);
84445
84447
  }
84446
84448
  if (!fastDraw) {
84447
84449
  this.rowsRenderCalculator = rowsCalculator.getResultsFor('rendered');
@@ -84468,30 +84470,35 @@ class Viewport {
84468
84470
  }
84469
84471
 
84470
84472
  /**
84471
- * Returns information whether proposedRowsVisibleCalculator viewport
84473
+ * Returns information whether proposedFullyVisibleRowsCalculator viewport
84472
84474
  * is contained inside rows rendered in previous draw (cached in rowsRenderCalculator).
84473
84475
  *
84474
- * @param {ViewportRowsCalculator} proposedRowsVisibleCalculator The instance of the viewport calculator to compare with.
84476
+ * @param {ViewportRowsCalculator} proposedFullyVisibleRowsCalculator The instance of the fully visible rows viewport calculator to compare with.
84477
+ * @param {ViewportRowsCalculator} proposedPartiallyVisibleRowsCalculator The instance of the partially visible rows viewport calculator to compare with.
84475
84478
  * @returns {boolean} Returns `true` if all proposed visible rows are already rendered (meaning: redraw is not needed).
84476
84479
  * Returns `false` if at least one proposed visible row is not already rendered (meaning: redraw is needed).
84477
84480
  */
84478
- areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) {
84481
+ areAllProposedVisibleRowsAlreadyRendered(proposedFullyVisibleRowsCalculator, proposedPartiallyVisibleRowsCalculator) {
84479
84482
  if (!this.rowsVisibleCalculator) {
84480
84483
  return false;
84481
84484
  }
84482
84485
  let {
84483
84486
  startRow,
84484
84487
  endRow
84485
- } = proposedRowsVisibleCalculator;
84488
+ } = proposedFullyVisibleRowsCalculator;
84489
+ const {
84490
+ startRow: partiallyVisibleStartRow,
84491
+ endRow: partiallyVisibleEndRow
84492
+ } = proposedPartiallyVisibleRowsCalculator;
84486
84493
 
84487
84494
  // if there are no fully visible rows at all...
84488
84495
  if (startRow === null && endRow === null) {
84489
- if (!proposedRowsVisibleCalculator.isVisibleInTrimmingContainer) {
84496
+ if (!proposedFullyVisibleRowsCalculator.isVisibleInTrimmingContainer && !this.wtTable.isRowBeforeRenderedRows(partiallyVisibleStartRow) && !this.wtTable.isRowAfterRenderedRows(partiallyVisibleEndRow)) {
84490
84497
  return true;
84491
84498
  }
84492
84499
  // ...use partially visible rows calculator to determine what render type is needed
84493
- startRow = this.rowsPartiallyVisibleCalculator.startRow;
84494
- endRow = this.rowsPartiallyVisibleCalculator.endRow;
84500
+ startRow = partiallyVisibleStartRow;
84501
+ endRow = partiallyVisibleEndRow;
84495
84502
  }
84496
84503
  const {
84497
84504
  startRow: renderedStartRow,
@@ -84517,30 +84524,35 @@ class Viewport {
84517
84524
  }
84518
84525
 
84519
84526
  /**
84520
- * Returns information whether proposedColumnsVisibleCalculator viewport
84527
+ * Returns information whether proposedFullyVisibleColumnsCalculator viewport
84521
84528
  * is contained inside column rendered in previous draw (cached in columnsRenderCalculator).
84522
84529
  *
84523
- * @param {ViewportRowsCalculator} proposedColumnsVisibleCalculator The instance of the viewport calculator to compare with.
84530
+ * @param {ViewportRowsCalculator} proposedFullyVisibleColumnsCalculator The instance of the fully visible columns viewport calculator to compare with.
84531
+ * @param {ViewportRowsCalculator} proposedPartiallyVisibleColumnsCalculator The instance of the partially visible columns viewport calculator to compare with.
84524
84532
  * @returns {boolean} Returns `true` if all proposed visible columns are already rendered (meaning: redraw is not needed).
84525
84533
  * Returns `false` if at least one proposed visible column is not already rendered (meaning: redraw is needed).
84526
84534
  */
84527
- areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator) {
84535
+ areAllProposedVisibleColumnsAlreadyRendered(proposedFullyVisibleColumnsCalculator, proposedPartiallyVisibleColumnsCalculator) {
84528
84536
  if (!this.columnsVisibleCalculator) {
84529
84537
  return false;
84530
84538
  }
84531
84539
  let {
84532
84540
  startColumn,
84533
84541
  endColumn
84534
- } = proposedColumnsVisibleCalculator;
84542
+ } = proposedFullyVisibleColumnsCalculator;
84543
+ const {
84544
+ startColumn: partiallyVisibleStartColumn,
84545
+ endColumn: partiallyVisibleEndColumn
84546
+ } = proposedPartiallyVisibleColumnsCalculator;
84535
84547
 
84536
84548
  // if there are no fully visible columns at all...
84537
84549
  if (startColumn === null && endColumn === null) {
84538
- if (!proposedColumnsVisibleCalculator.isVisibleInTrimmingContainer) {
84550
+ if (!proposedFullyVisibleColumnsCalculator.isVisibleInTrimmingContainer && !this.wtTable.isColumnBeforeRenderedColumns(partiallyVisibleStartColumn) && !this.wtTable.isColumnAfterRenderedColumns(partiallyVisibleEndColumn)) {
84539
84551
  return true;
84540
84552
  }
84541
84553
  // ...use partially visible columns calculator to determine what render type is needed
84542
- startColumn = this.columnsPartiallyVisibleCalculator.startColumn;
84543
- endColumn = this.columnsPartiallyVisibleCalculator.endColumn;
84554
+ startColumn = partiallyVisibleStartColumn;
84555
+ endColumn = partiallyVisibleEndColumn;
84544
84556
  }
84545
84557
  const {
84546
84558
  startColumn: renderedStartColumn,
@@ -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: 16.1.0-next-91b8a0f-20250905
30
- * Release date: 11/09/2025 (built at 05/09/2025 09:36:26)
29
+ * Version: 16.1.0-next-7cb4c1e-20250909
30
+ * Release date: 11/09/2025 (built at 09/09/2025 09:28:32)
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 .ht_clone_bottom_inline_start_corner td:first-of-type,.handsontable .ht_clone_inline_start td:first-of-type,.handsontable .ht_clone_top_inline_start_corner td:first-of-type,.handsontable th:first-child,.handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type{border-left:1px solid #ccc}[dir=rtl].handsontable th:first-child,[dir=rtl].handsontable.ht-wrapper:not(.htFirstDatasetColumnNotRendered) td:first-of-type{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:first-child,.handsontable .wtBorder:nth-child(3){z-index:2}.handsontable .wtBorder:nth-child(2),.handsontable .wtBorder:nth-child(4){z-index:1}.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}.ht-root-wrapper .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .htTextEllipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.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{border:1px solid #ccc;margin:0}.handsontable.listbox.autocompleteEditor,.handsontable.listbox.dropdownEditor{border-width:0}.handsontable.listbox .ht_master table{background:#fff;border-collapse:separate}.handsontable.listbox.autocompleteEditor .ht_master table,.handsontable.listbox.dropdownEditor .ht_master table{border:1px solid #ccc}.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