handsontable 0.0.0-next-1c936db-20240912 → 0.0.0-next-108000e-20240912

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-1c936db-20240912
29
- * Release date: 30/07/2024 (built at 12/09/2024 12:38:53)
28
+ * Version: 0.0.0-next-108000e-20240912
29
+ * Release date: 30/07/2024 (built at 12/09/2024 19:04:08)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -107,8 +107,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
107
107
  Handsontable.CellCoords = _src.CellCoords;
108
108
  Handsontable.CellRange = _src.CellRange;
109
109
  Handsontable.packageName = 'handsontable';
110
- Handsontable.buildDate = "12/09/2024 12:38:53";
111
- Handsontable.version = "0.0.0-next-1c936db-20240912";
110
+ Handsontable.buildDate = "12/09/2024 19:04:08";
111
+ Handsontable.version = "0.0.0-next-108000e-20240912";
112
112
  Handsontable.languages = {
113
113
  dictionaryKeys: _registry.dictionaryKeys,
114
114
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -4402,6 +4402,158 @@ function Core(rootElement, userSettings) {
4402
4402
  return editorManager.getActiveEditor();
4403
4403
  };
4404
4404
 
4405
+ /**
4406
+ * Returns the first rendered row in the DOM (usually, it is not visible in the table's viewport).
4407
+ *
4408
+ * @since 14.6.0
4409
+ * @memberof Core#
4410
+ * @function getFirstRenderedVisibleRow
4411
+ * @returns {number | null}
4412
+ */
4413
+ this.getFirstRenderedVisibleRow = function () {
4414
+ return instance.view.getFirstRenderedVisibleRow();
4415
+ };
4416
+
4417
+ /**
4418
+ * Returns the last rendered row in the DOM (usually, it is not visible in the table's viewport).
4419
+ *
4420
+ * @since 14.6.0
4421
+ * @memberof Core#
4422
+ * @function getLastRenderedVisibleRow
4423
+ * @returns {number | null}
4424
+ */
4425
+ this.getLastRenderedVisibleRow = function () {
4426
+ return instance.view.getLastRenderedVisibleRow();
4427
+ };
4428
+
4429
+ /**
4430
+ * Returns the first rendered column in the DOM (usually, it is not visible in the table's viewport).
4431
+ *
4432
+ * @since 14.6.0
4433
+ * @memberof Core#
4434
+ * @function getFirstRenderedVisibleColumn
4435
+ * @returns {number | null}
4436
+ */
4437
+ this.getFirstRenderedVisibleColumn = function () {
4438
+ return instance.view.getFirstRenderedVisibleColumn();
4439
+ };
4440
+
4441
+ /**
4442
+ * Returns the last rendered column in the DOM (usually, it is not visible in the table's viewport).
4443
+ *
4444
+ * @since 14.6.0
4445
+ * @memberof Core#
4446
+ * @function getLastRenderedVisibleColumn
4447
+ * @returns {number | null}
4448
+ */
4449
+ this.getLastRenderedVisibleColumn = function () {
4450
+ return instance.view.getLastRenderedVisibleColumn();
4451
+ };
4452
+
4453
+ /**
4454
+ * Returns the first fully visible row in the table viewport. When the table has overlays the method returns
4455
+ * the first row of the main table that is not overlapped by overlay.
4456
+ *
4457
+ * @since 14.6.0
4458
+ * @memberof Core#
4459
+ * @function getFirstFullyVisibleRow
4460
+ * @returns {number | null}
4461
+ */
4462
+ this.getFirstFullyVisibleRow = function () {
4463
+ return instance.view.getFirstFullyVisibleRow();
4464
+ };
4465
+
4466
+ /**
4467
+ * Returns the last fully visible row in the table viewport. When the table has overlays the method returns
4468
+ * the first row of the main table that is not overlapped by overlay.
4469
+ *
4470
+ * @since 14.6.0
4471
+ * @memberof Core#
4472
+ * @function getLastFullyVisibleRow
4473
+ * @returns {number | null}
4474
+ */
4475
+ this.getLastFullyVisibleRow = function () {
4476
+ return instance.view.getLastFullyVisibleRow();
4477
+ };
4478
+
4479
+ /**
4480
+ * Returns the first fully visible column in the table viewport. When the table has overlays the method returns
4481
+ * the first row of the main table that is not overlapped by overlay.
4482
+ *
4483
+ * @since 14.6.0
4484
+ * @memberof Core#
4485
+ * @function getFirstFullyVisibleColumn
4486
+ * @returns {number | null}
4487
+ */
4488
+ this.getFirstFullyVisibleColumn = function () {
4489
+ return instance.view.getFirstFullyVisibleColumn();
4490
+ };
4491
+
4492
+ /**
4493
+ * Returns the last fully visible column in the table viewport. When the table has overlays the method returns
4494
+ * the first row of the main table that is not overlapped by overlay.
4495
+ *
4496
+ * @since 14.6.0
4497
+ * @memberof Core#
4498
+ * @function getLastFullyVisibleColumn
4499
+ * @returns {number | null}
4500
+ */
4501
+ this.getLastFullyVisibleColumn = function () {
4502
+ return instance.view.getLastFullyVisibleColumn();
4503
+ };
4504
+
4505
+ /**
4506
+ * Returns the first partially visible row in the table viewport. When the table has overlays the method returns
4507
+ * the first row of the main table that is not overlapped by overlay.
4508
+ *
4509
+ * @since 14.6.0
4510
+ * @memberof Core#
4511
+ * @function getFirstPartiallyVisibleRow
4512
+ * @returns {number | null}
4513
+ */
4514
+ this.getFirstPartiallyVisibleRow = function () {
4515
+ return instance.view.getFirstPartiallyVisibleRow();
4516
+ };
4517
+
4518
+ /**
4519
+ * Returns the last partially visible row in the table viewport. When the table has overlays the method returns
4520
+ * the first row of the main table that is not overlapped by overlay.
4521
+ *
4522
+ * @since 14.6.0
4523
+ * @memberof Core#
4524
+ * @function getLastPartiallyVisibleRow
4525
+ * @returns {number | null}
4526
+ */
4527
+ this.getLastPartiallyVisibleRow = function () {
4528
+ return instance.view.getLastPartiallyVisibleRow();
4529
+ };
4530
+
4531
+ /**
4532
+ * Returns the first partially visible column in the table viewport. When the table has overlays the method returns
4533
+ * the first row of the main table that is not overlapped by overlay.
4534
+ *
4535
+ * @since 14.6.0
4536
+ * @memberof Core#
4537
+ * @function getFirstPartiallyVisibleColumn
4538
+ * @returns {number | null}
4539
+ */
4540
+ this.getFirstPartiallyVisibleColumn = function () {
4541
+ return instance.view.getFirstPartiallyVisibleColumn();
4542
+ };
4543
+
4544
+ /**
4545
+ * Returns the last partially visible column in the table viewport. When the table has overlays the method returns
4546
+ * the first row of the main table that is not overlapped by overlay.
4547
+ *
4548
+ * @since 14.6.0
4549
+ * @memberof Core#
4550
+ * @function getLastPartiallyVisibleColumn
4551
+ * @returns {number | null}
4552
+ */
4553
+ this.getLastPartiallyVisibleColumn = function () {
4554
+ return instance.view.getLastPartiallyVisibleColumn();
4555
+ };
4556
+
4405
4557
  /**
4406
4558
  * Returns plugin instance by provided its name.
4407
4559
  *
@@ -9134,7 +9286,7 @@ const domMessages = {
9134
9286
  function _injectProductInfo(key, element) {
9135
9287
  const hasValidType = !isEmpty(key);
9136
9288
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
9137
- const hotVersion = "0.0.0-next-1c936db-20240912";
9289
+ const hotVersion = "0.0.0-next-108000e-20240912";
9138
9290
  let keyValidityDate;
9139
9291
  let consoleMessageState = 'invalid';
9140
9292
  let domMessageState = 'invalid';
@@ -61962,6 +62114,13 @@ class ContextMenu extends _base.BasePlugin {
61962
62114
  }
61963
62115
  this.prepareMenuItems();
61964
62116
  this.menu.open();
62117
+ const themeHasTableBorder = this.menu.tableBorderWidth > 0;
62118
+ if (!themeHasTableBorder) {
62119
+ offset.below += 1;
62120
+ offset.right += 1;
62121
+ offset.above -= 1;
62122
+ offset.left -= 1;
62123
+ }
61965
62124
  (0, _object.objectEach)(offset, (value, key) => {
61966
62125
  this.menu.setOffset(key, value);
61967
62126
  });
@@ -62498,7 +62657,21 @@ const MIN_WIDTH = 215;
62498
62657
  */
62499
62658
  var _navigator = /*#__PURE__*/new WeakMap();
62500
62659
  var _shortcutsCtrl = /*#__PURE__*/new WeakMap();
62660
+ var _tableBorderWidth = /*#__PURE__*/new WeakMap();
62501
62661
  class Menu {
62662
+ /**
62663
+ * Getter for the table border width.
62664
+ * This getter retrieves the border width of the table used in the menu.
62665
+ *
62666
+ * @returns {number} The border width of the table in pixels.
62667
+ */
62668
+ get tableBorderWidth() {
62669
+ if (_classPrivateFieldGet(_tableBorderWidth, this) === undefined && this.hotMenu) {
62670
+ _classPrivateFieldSet(_tableBorderWidth, this, parseInt((0, _element.getComputedStyle)(this.hotMenu.view._wt.wtTable.TABLE).borderWidth, 10));
62671
+ }
62672
+ return _classPrivateFieldGet(_tableBorderWidth, this);
62673
+ }
62674
+
62502
62675
  /**
62503
62676
  * @param {Core} hotInstance Handsontable instance.
62504
62677
  * @param {MenuOptions} [options] Menu options.
@@ -62571,6 +62744,12 @@ class Menu {
62571
62744
  * @type {KeyboardShortcutsMenuController}
62572
62745
  */
62573
62746
  _classPrivateFieldInitSpec(this, _shortcutsCtrl, void 0);
62747
+ /**
62748
+ * The border width of the table used in the menu.
62749
+ *
62750
+ * @type {number}
62751
+ */
62752
+ _classPrivateFieldInitSpec(this, _tableBorderWidth, void 0);
62574
62753
  this.hot = hotInstance;
62575
62754
  this.options = options || {
62576
62755
  parent: null,
@@ -62727,7 +62906,7 @@ class Menu {
62727
62906
  this.openSubMenu(coords.row);
62728
62907
  }
62729
62908
  },
62730
- rowHeights: row => filteredItems[row].name === _predefinedItems.SEPARATOR ? 1 : 23,
62909
+ rowHeights: row => filteredItems[row].name === _predefinedItems.SEPARATOR ? 1 : undefined,
62731
62910
  afterOnCellContextMenu: event => {
62732
62911
  event.preventDefault();
62733
62912
 
@@ -62992,6 +63171,31 @@ class Menu {
62992
63171
  this.positioner.setElement(this.container).updatePosition(coords);
62993
63172
  }
62994
63173
 
63174
+ /**
63175
+ * Updates the dimensions of the menu based on its content.
63176
+ * This method calculates the real height of the menu by summing up the heights of its items,
63177
+ * and adjusts the width and height of the menu's holder and hider elements accordingly.
63178
+ */
63179
+ updateMenuDimensions() {
63180
+ const {
63181
+ wtTable
63182
+ } = this.hotMenu.view._wt;
63183
+ const data = this.hotMenu.getSettings().data;
63184
+ const hiderStyle = wtTable.hider.style;
63185
+ const holderStyle = wtTable.holder.style;
63186
+ const currentHiderWidth = parseInt(hiderStyle.width, 10);
63187
+ const realHeight = (0, _array.arrayReduce)(data, (accumulator, value, index) => {
63188
+ const itemCell = this.hotMenu.getCell(index, 0);
63189
+ const currentRowHeight = itemCell ? (0, _element.outerHeight)(this.hotMenu.getCell(index, 0)) : 0;
63190
+ return accumulator + (value.name === _predefinedItems.SEPARATOR ? 1 : currentRowHeight);
63191
+ }, 0);
63192
+
63193
+ // Additional 3px to menu's size because of additional border around its `table.htCore`.
63194
+ holderStyle.width = `${currentHiderWidth + 3}px`;
63195
+ holderStyle.height = `${realHeight + 3}px`;
63196
+ hiderStyle.height = holderStyle.height;
63197
+ }
63198
+
62995
63199
  /**
62996
63200
  * Create container/wrapper for handsontable.
62997
63201
  *
@@ -63034,19 +63238,7 @@ class Menu {
63034
63238
  * @private
63035
63239
  */
63036
63240
  onAfterInit() {
63037
- const {
63038
- wtTable
63039
- } = this.hotMenu.view._wt;
63040
- const data = this.hotMenu.getSettings().data;
63041
- const hiderStyle = wtTable.hider.style;
63042
- const holderStyle = wtTable.holder.style;
63043
- const currentHiderWidth = parseInt(hiderStyle.width, 10);
63044
- const realHeight = (0, _array.arrayReduce)(data, (accumulator, value) => accumulator + (value.name === _predefinedItems.SEPARATOR ? 1 : 26), 0);
63045
-
63046
- // Additional 3px to menu's size because of additional border around its `table.htCore`.
63047
- holderStyle.width = `${currentHiderWidth + 3}px`;
63048
- holderStyle.height = `${realHeight + 3}px`;
63049
- hiderStyle.height = holderStyle.height;
63241
+ this.updateMenuDimensions();
63050
63242
 
63051
63243
  // Replace the default accessibility tags with the context menu's
63052
63244
  if (this.hot.getSettings().ariaTags) {
@@ -68958,7 +69150,9 @@ function _onAfterChange(changes) {
68958
69150
  }
68959
69151
  }
68960
69152
  function _onAfterDropdownMenuShow() {
69153
+ const menu = this.dropdownMenuPlugin.menu;
68961
69154
  this.restoreComponents(Array.from(this.components.values()));
69155
+ menu.updateMenuDimensions();
68962
69156
  }
68963
69157
  /**
68964
69158
  * After dropdown menu hide listener.
@@ -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-1c936db-20240912
29
- * Release date: 30/07/2024 (built at 12/09/2024 12:39:10)
28
+ * Version: 0.0.0-next-108000e-20240912
29
+ * Release date: 30/07/2024 (built at 12/09/2024 19:04:25)
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{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;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;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;border:2px solid #4b89ff;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.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{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 .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 .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