handsontable 14.0.0-next-b112557-20231129 → 14.0.0-next-ecaa005-20231130

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.
@@ -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: 14.0.0-next-b112557-20231129
29
- * Release date: 30/11/2023 (built at 29/11/2023 10:37:42)
28
+ * Version: 14.0.0-next-ecaa005-20231130
29
+ * Release date: 30/11/2023 (built at 30/11/2023 08:40:53)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -105,8 +105,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
105
105
  Handsontable.CellCoords = _src.CellCoords;
106
106
  Handsontable.CellRange = _src.CellRange;
107
107
  Handsontable.packageName = 'handsontable';
108
- Handsontable.buildDate = "29/11/2023 10:37:42";
109
- Handsontable.version = "14.0.0-next-b112557-20231129";
108
+ Handsontable.buildDate = "30/11/2023 08:40:53";
109
+ Handsontable.version = "14.0.0-next-ecaa005-20231130";
110
110
  Handsontable.languages = {
111
111
  dictionaryKeys: _registry.dictionaryKeys,
112
112
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -4167,22 +4167,23 @@ function Core(rootElement, userSettings) {
4167
4167
  };
4168
4168
 
4169
4169
  /**
4170
- * Select the whole table.
4170
+ * Select all cells in the table excluding headers and corner elements.
4171
4171
  *
4172
4172
  * The previous selection is overwritten.
4173
4173
  *
4174
4174
  * ```js
4175
- * // select all cells in the table, including all headers and the corner cell
4175
+ * // Select all cells in the table along with row headers, including all headers and the corner cell.
4176
+ * // Doesn't select column headers and corner elements.
4176
4177
  * hot.selectAll();
4177
4178
  *
4178
- * // select all cells in the table, including row headers but excluding the corner cell
4179
+ * // Select all cells in the table, including row headers but excluding the corner cell.
4179
4180
  * hot.selectAll(true, false);
4180
4181
  *
4181
- * // select all cells in the table, including all headers and the corner cell, but move the focus
4182
- * // highlight to position -2, -1
4183
- * hot.selectAll(-2, -1);
4182
+ * // Select all cells in the table, including all headers and the corner cell, but move the focus.
4183
+ * // highlight to position 2, 1
4184
+ * hot.selectAll(-2, -1); focusPosition { row: 2, col: 1 });
4184
4185
  *
4185
- * // select all cells in the table, without headers
4186
+ * // Select all cells in the table, without headers and corner elements.
4186
4187
  * hot.selectAll(false);
4187
4188
  * ```
4188
4189
  *
@@ -4194,11 +4195,18 @@ function Core(rootElement, userSettings) {
4194
4195
  * @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column
4195
4196
  * headers, `false` otherwise.
4196
4197
  *
4197
- * @param {object} [options] Additional object with options.
4198
+ * @param {object} [options] Additional object with options. Since 14.0.0
4198
4199
  * @param {{row: number, col: number} | boolean} [options.focusPosition] The argument allows changing the cell/header
4199
4200
  * focus position. The value takes an object with a `row` and `col` properties from -N to N, where
4200
4201
  * negative values point to the headers and positive values point to the cell range. If `false`, the focus
4201
- * position won't be changed.
4202
+ * position won't be changed. Example:
4203
+ * ```js
4204
+ * hot.selectAll(0, 0, {
4205
+ * focusPosition: { row: 0, col: 1 },
4206
+ * disableHeadersHighlight: true
4207
+ * })
4208
+ * ```
4209
+ *
4202
4210
  * @param {boolean} [options.disableHeadersHighlight] If `true`, disables highlighting the headers even when
4203
4211
  * the logical coordinates points on them.
4204
4212
  */
@@ -8513,7 +8521,7 @@ const domMessages = {
8513
8521
  function _injectProductInfo(key, element) {
8514
8522
  const hasValidType = !isEmpty(key);
8515
8523
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
8516
- const hotVersion = "14.0.0-next-b112557-20231129";
8524
+ const hotVersion = "14.0.0-next-ecaa005-20231130";
8517
8525
  let keyValidityDate;
8518
8526
  let consoleMessageState = 'invalid';
8519
8527
  let domMessageState = 'invalid';
@@ -12066,7 +12074,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
12066
12074
  * This is due to the priority of other options that may block the feature.
12067
12075
  * For example, when the {@link Options#minSpareCols} is defined, the {@link Options#autoWrapRow} option is not checked.
12068
12076
  * Thus, row wrapping is off.
12069
- * @param {CellCoords} newCoords The new focus position.
12077
+ * @param {CellCoords} newCoords The new focus position. It is an object with keys `row` and `col`, where a value of `-1` indicates a header.
12070
12078
  * @param {boolean} isFlipped `true` if the row index was flipped, `false` otherwise.
12071
12079
  * Flipped index means that the user reached the last row and the focus is moved to the first row or vice versa.
12072
12080
  */
@@ -12082,7 +12090,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
12082
12090
  * This is due to the priority of other options that may block the feature.
12083
12091
  * For example, when the {@link Options#minSpareRows} is defined, the {@link Options#autoWrapCol} option is not checked.
12084
12092
  * Thus, column wrapping is off.
12085
- * @param {CellCoords} newCoords The new focus position.
12093
+ * @param {CellCoords} newCoords The new focus position. It is an object with keys `row` and `col`, where a value of `-1` indicates a header.
12086
12094
  * @param {boolean} isFlipped `true` if the column index was flipped, `false` otherwise.
12087
12095
  * Flipped index means that the user reached the last column and the focus is moved to the first column or vice versa.
12088
12096
  */
@@ -12122,6 +12130,8 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
12122
12130
  'beforeSetRangeEnd',
12123
12131
  /**
12124
12132
  * Fired before applying selection coordinates to the renderable coordinates for Walkontable (rendering engine).
12133
+ * It occurs even when cell coordinates remain unchanged and activates during cell selection and drag selection.
12134
+ * The behavior of Shift+Tab differs from Arrow Left when there's no further movement possible.
12125
12135
  *
12126
12136
  * @since 14.0.0
12127
12137
  * @event Hooks#beforeSelectionHighlightSet
@@ -12191,7 +12201,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
12191
12201
  * @event Hooks#modifyFocusedElement
12192
12202
  * @param {number} row Row index.
12193
12203
  * @param {number} column Column index.
12194
- * @param {HTMLElement|undefined} focusedElement The element to be focused.
12204
+ * @param {HTMLElement|undefined} focusedElement The element to be focused. `null` for focusedElement is intended when focused cell is hidden.
12195
12205
  */
12196
12206
  'modifyFocusedElement',
12197
12207
  /**
@@ -14386,7 +14396,7 @@ class FocusManager {
14386
14396
  const focusElement = element => {
14387
14397
  var _classPrivateFieldGet3, _classPrivateFieldGet4;
14388
14398
  const currentHighlightCoords = (_classPrivateFieldGet3 = (0, _classPrivateFieldGet7.default)(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.highlight;
14389
- if (!currentHighlightCoords || !element) {
14399
+ if (!currentHighlightCoords) {
14390
14400
  return;
14391
14401
  }
14392
14402
  let elementToBeFocused = (0, _classPrivateFieldGet7.default)(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
@@ -14432,7 +14442,7 @@ exports.FocusManager = FocusManager;
14432
14442
  function _getSelectedCell2(callback) {
14433
14443
  var _classPrivateFieldGet6;
14434
14444
  const highlight = (_classPrivateFieldGet6 = (0, _classPrivateFieldGet7.default)(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.highlight;
14435
- if (!highlight) {
14445
+ if (!highlight || !(0, _classPrivateFieldGet7.default)(this, _hot).selection.isCellVisible(highlight)) {
14436
14446
  callback(null);
14437
14447
  return;
14438
14448
  }
@@ -37257,8 +37267,8 @@ var _default = () => {
37257
37267
  *
37258
37268
  * | Setting | Description |
37259
37269
  * | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
37260
- * | `true` (default) | - On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>, add the cell's value to the clipboard |
37261
- * | `false`<br>(default for the [`password`](@/guides/cell-types/password-cell-type.md) [cell type](#type)) | - On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd> + <kbd>**C**</kbd>, add an empty string (`""`) to the clipboard |
37270
+ * | `true` (default) | - On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd>+<kbd>**C**</kbd>, add the cell's value to the clipboard |
37271
+ * | `false`<br>(default for the [`password`](@/guides/cell-types/password-cell-type.md) [cell type](#type)) | - On pressing <kbd>**Ctrl**</kbd>/<kbd>**Cmd**</kbd>+<kbd>**C**</kbd>, add an empty string (`""`) to the clipboard |
37262
37272
  *
37263
37273
  * Read more:
37264
37274
  * - [Clipboard](@/guides/cell-features/clipboard.md)
@@ -38008,8 +38018,8 @@ var _default = () => {
38008
38018
  *
38009
38019
  * | Property | Type | Description |
38010
38020
  * | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
38011
- * | `col` | Number | - On pressing <kbd>**Enter**</kbd>, move selection `col` columns right<br>- On pressing <kbd>**Shift**</kbd> + <kbd>**Enter**</kbd>, move selection `col` columns left |
38012
- * | `row` | Number | - On pressing <kbd>**Enter**</kbd>, move selection `row` rows down<br>- On pressing <kbd>**Shift**</kbd> + <kbd>**Enter**</kbd>, move selection `row` rows up |
38021
+ * | `col` | Number | - On pressing <kbd>**Enter**</kbd>, move selection `col` columns right<br>- On pressing <kbd>**Shift**</kbd>+<kbd>**Enter**</kbd>, move selection `col` columns left |
38022
+ * | `row` | Number | - On pressing <kbd>**Enter**</kbd>, move selection `row` rows down<br>- On pressing <kbd>**Shift**</kbd>+<kbd>**Enter**</kbd>, move selection `row` rows up |
38013
38023
  *
38014
38024
  * Read more:
38015
38025
  * - [`enterBeginsEditing`](#enterBeginsEditing)
@@ -39876,13 +39886,13 @@ var _default = () => {
39876
39886
  * | Option | Possible settings | Description |
39877
39887
  * | ------------------- | ----------------- | ---------------------------------------------------------------------------------------------------- |
39878
39888
  * | `searchResultClass` | A string | Add a custom CSS class name to search results |
39879
- * | `queryMethod` | A function | Add a [custom query method](@/guides/accessories-and-menus/searching-values.md#custom-query-method) |
39880
- * | `callback` | A function | Add a [custom callback function](@/guides/accessories-and-menus/searching-values.md#custom-callback) |
39889
+ * | `queryMethod` | A function | Add a [custom query method](@/guides/navigation/searching-values.md#custom-query-method) |
39890
+ * | `callback` | A function | Add a [custom callback function](@/guides/navigation/searching-values.md#custom-callback) |
39881
39891
  *
39882
39892
  * Read more:
39883
- * - [Searching values](@/guides/accessories-and-menus/searching-values.md)
39884
- * - [Searching values: Custom query method](@/guides/accessories-and-menus/searching-values.md#custom-query-method)
39885
- * - [Searching values: Custom callback](@/guides/accessories-and-menus/searching-values.md#custom-callback)
39893
+ * - [Searching values](@/guides/navigation/searching-values.md)
39894
+ * - [Searching values: Custom query method](@/guides/navigation/searching-values.md#custom-query-method)
39895
+ * - [Searching values: Custom callback](@/guides/navigation/searching-values.md#custom-callback)
39886
39896
  *
39887
39897
  * @memberof Options#
39888
39898
  * @type {boolean|object}
@@ -40295,8 +40305,8 @@ var _default = () => {
40295
40305
  *
40296
40306
  * | Property | Type | Description |
40297
40307
  * | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
40298
- * | `row` | Number | - On pressing <kbd>**Tab**</kbd>, move selection `row` rows down<br>- On pressing <kbd>**Shift**</kbd> + <kbd>**Tab**</kbd>, move selection `row` rows up |
40299
- * | `col` | Number | - On pressing <kbd>**Tab**</kbd>, move selection `col` columns right<br>- On pressing <kbd>**Shift**</kbd> + <kbd>**Tab**</kbd>, move selection `col` columns left |
40308
+ * | `row` | Number | - On pressing <kbd>**Tab**</kbd>, move selection `row` rows down<br>- On pressing <kbd>**Shift**</kbd>+<kbd>**Tab**</kbd>, move selection `row` rows up |
40309
+ * | `col` | Number | - On pressing <kbd>**Tab**</kbd>, move selection `col` columns right<br>- On pressing <kbd>**Shift**</kbd>+<kbd>**Tab**</kbd>, move selection `col` columns left |
40300
40310
  *
40301
40311
  * @memberof Options#
40302
40312
  * @type {object|Function}
@@ -43510,7 +43520,7 @@ var _recorder = __webpack_require__(332);
43510
43520
  var _templateLiteralTag = __webpack_require__(112);
43511
43521
  /* eslint-disable jsdoc/require-description-complete-sentence */
43512
43522
  /**
43513
- * The `ShortcutManager` API lets you store and manage [keyboard shortcut contexts](@/guides/accessories-and-menus/keyboard-shortcuts.md#keyboard-shortcut-contexts) ([`ShortcutContext`](@/api/shortcutContext.md)).
43523
+ * The `ShortcutManager` API lets you store and manage [keyboard shortcut contexts](@/guides/navigation/keyboard-shortcuts.md#keyboard-shortcut-contexts) ([`ShortcutContext`](@/api/shortcutContext.md)).
43514
43524
  *
43515
43525
  * Each `ShortcutManager` object:
43516
43526
  * - Stores and manages its own set of keyboard shortcut contexts.
@@ -43521,7 +43531,7 @@ var _templateLiteralTag = __webpack_require__(112);
43521
43531
  * @param {object} options The manager's options
43522
43532
  * @param {EventTarget} options.ownerWindow A starting `window` element
43523
43533
  * @param {Function} options.handleEvent A condition on which `event` is handled.
43524
- * @param {Function} options.beforeKeyDown A hook fired before the `keydown` event is handled. You can use it to [block a keyboard shortcut's actions](@/guides/accessories-and-menus/keyboard-shortcuts.md#block-a-keyboard-shortcut-s-actions).
43534
+ * @param {Function} options.beforeKeyDown A hook fired before the `keydown` event is handled. You can use it to [block a keyboard shortcut's actions](@/guides/navigation/keyboard-shortcuts.md#block-a-keyboard-shortcut-s-actions).
43525
43535
  * @param {Function} options.afterKeyDown A hook fired after the `keydown` event is handled
43526
43536
  */
43527
43537
  const createShortcutManager = _ref => {
@@ -43723,7 +43733,7 @@ function isContextObject(objectToCheck) {
43723
43733
 
43724
43734
  /* eslint-disable jsdoc/require-description-complete-sentence */
43725
43735
  /**
43726
- * The `ShortcutContext` API lets you store and manage [keyboard shortcuts](@/guides/accessories-and-menus/keyboard-shortcuts.md) in a given [context](@/guides/accessories-and-menus/keyboard-shortcuts.md#keyboard-shortcut-contexts).
43736
+ * The `ShortcutContext` API lets you store and manage [keyboard shortcuts](@/guides/navigation/keyboard-shortcuts.md) in a given [context](@/guides/navigation/keyboard-shortcuts.md#keyboard-shortcut-contexts).
43727
43737
  *
43728
43738
  * Each `ShortcutContext` object stores and manages its own set of keyboard shortcuts.
43729
43739
  *
@@ -58299,6 +58309,9 @@ class ContextMenu extends _base.BasePlugin {
58299
58309
  left: rect.width,
58300
58310
  above: -rect.height
58301
58311
  });
58312
+ // Make sure the first item is selected (role=menuitem). Otherwise, screen readers
58313
+ // will block the Esc key for the whole menu.
58314
+ this.menu.getNavigator().toFirstItem();
58302
58315
  },
58303
58316
  runOnlyIf: () => {
58304
58317
  var _this$hot$getSelected;
@@ -63674,6 +63687,9 @@ class DropdownMenu extends _base.BasePlugin {
63674
63687
  }, {
63675
63688
  left: rect.width
63676
63689
  });
63690
+ // Make sure the first item is selected (role=menuitem). Otherwise, screen readers
63691
+ // will block the Esc key for the whole menu.
63692
+ this.menu.getNavigator().toFirstItem();
63677
63693
  }
63678
63694
  };
63679
63695
  gridContext.addShortcuts([{
@@ -77127,7 +77143,7 @@ class MergeCells extends _base.BasePlugin {
77127
77143
  _classPrivateMethodInitSpec(this, _onAfterDrawSelection);
77128
77144
  /**
77129
77145
  * `afterModifyTransformStart` hook callback. Fixes a problem with navigating through merged cells at the edges of
77130
- * the table with the ENTER/SHIFT+ENTER/TAB/SHIFT+TAB keys.
77146
+ * the table with the <kbd>**Enter**</kbd>/<kbd>**Shift**</kbd>+<kbd>**Enter**</kbd>/<kbd>**Tab**</kbd>/<kbd>**Shift**</kbd>+<kbd>**Tab**</kbd> keys.
77131
77147
  *
77132
77148
  * @param {CellCoords} coords Coordinates of the to-be-selected cell.
77133
77149
  * @param {number} rowTransformDir Row transformation direction (negative value = up, 0 = none, positive value =
@@ -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: 14.0.0-next-b112557-20231129
29
- * Release date: 30/11/2023 (built at 29/11/2023 10:38:00)
28
+ * Version: 14.0.0-next-ecaa005-20231130
29
+ * Release date: 30/11/2023 (built at 30/11/2023 08:41:10)
30
30
  */.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{width:0}.handsontable .wtSpreader{height:auto;position:relative;width:0}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:auto}.handsontable table.htCore{border-collapse:separate;border-spacing:0;border-width:0;cursor:default;margin:0;max-height:none;max-width:none;outline-width:0;table-layout:fixed;width:0}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{background-color:#fff;border-bottom:1px solid #ccc;border-left-width:0;border-right:1px solid #ccc;border-top-width:0;empty-cells:show;height:22px;line-height:21px;outline:none;outline-width:0;overflow:hidden;padding:0 4px;vertical-align:top;white-space:pre-wrap}[dir=rtl].handsontable td,[dir=rtl].handsontable th{border-left:1px solid #ccc;border-right-width:0}.handsontable th:last-child{border-bottom:1px solid #ccc;border-left:none;border-right:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-left:1px solid #ccc;border-right:none}.handsontable td:first-of-type,.handsontable th:first-child,.handsontable th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child,[dir=rtl].handsontable th:nth-child(2){border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-left:1px solid #ccc;border-right-width:0}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;font-weight:400;text-align:center;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{font-size:0;position:absolute}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{cursor:crosshair;font-size:0}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_inline_start,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_inline_start thead,.handsontable .ht_master thead,.handsontable .ht_master tr th{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:hsla(0,0%,100%,0)}.hot-display-license-info{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .manualColumnResizer{cursor:col-resize;height:25px;position:absolute;top:0;width:5px;z-index:210}.handsontable .manualRowResizer{cursor:row-resize;height:5px;left:0;position:absolute;width:50px;z-index:210}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{background-color:#34a9db;border-left:none;border-right:1px dashed #777;display:none;margin-left:5px;margin-right:unset;position:absolute;right:unset;top:0;width:0}[dir=rtl].handsontable .manualColumnResizerGuide{border-left:1px dashed #777;border-right:none;left:unset;margin-left:unset;margin-right:5px}.handsontable .manualRowResizerGuide{background-color:#34a9db;border-bottom:1px dashed #777;bottom:0;display:none;height:0;left:0;margin-top:5px;position:absolute}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable .columnSorting{position:relative}.handsontable .columnSorting.sortAction:hover{cursor:pointer;text-decoration:underline}.handsontable span.colHeader.columnSorting:before{background-position-x:right;background-repeat:no-repeat;background-size:contain;content:"";height:10px;left:unset;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;top:50%;width:5px}[dir=rtl].handsontable span.colHeader.columnSorting:before{background-position-x:left;left:-9px;padding-left:0;padding-right:8px;right:unset}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC)}.handsontable span.colHeader.columnSorting.descending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=)}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):before{content:"*";display:inline-block;padding-right:20px;position:relative}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{background:#005eff;bottom:0;bottom:-100%\9;content:"";left:0;position:absolute;right:0;top:0}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{bottom:-100%}}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{background-color:#fff;border:none;border-radius:0;box-shadow:inset 0 0 0 2px #5292f7;color:#000;display:block;font-family:inherit;font-size:inherit;line-height:21px;margin:0;outline-width:0;padding:1px 5px 0;resize:none}.handsontableInput:focus{outline:none}.handsontableInputHolder{left:0;position:absolute;top:0}.htSelectEditor{-webkit-appearance:menulist-button!important;position:absolute;width:auto}.htSelectEditor:focus{outline:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{color:#777;content:"▶";font-size:9px;position:absolute;right:5px}[dir=rtl].handsontable .htSubmenu :after{content:""}[dir=rtl].handsontable .htSubmenu :before{color:#777;content:"◀";font-size:9px;left:5px;position:absolute}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{background:#fff;border:1px solid #ccc;border-collapse:separate}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent!important}.handsontable.listbox td,.handsontable.listbox th{text-overflow:ellipsis;white-space:nowrap}.handsontable.listbox td.htDimmed{color:inherit;cursor:default;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable .collapsibleIndicator{background:#eee;border:1px solid #a6a6a6;border-radius:10px;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 3px #eee;color:#222;cursor:pointer;font-size:10px;height:10px;left:unset;line-height:8px;position:absolute;right:5px;text-align:center;top:50%;transform:translateY(-50%);width:10px}[dir=rtl].handsontable .collapsibleIndicator{left:5px;right:unset}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.handsontable.mobile .handsontableInput:focus{-webkit-appearance:none;-webkit-box-shadow:inset 0 0 0 2px #5292f7;-moz-box-shadow:inset 0 0 0 2px #5292f7;box-shadow:inset 0 0 0 2px #5292f7}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea,[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea{left:unset;right:-10000px}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable .htAutocompleteArrow{color:#bbb;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;font-size:inherit;vertical-align:middle}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{border-left:6px solid transparent;border-right:none;border-top:6px solid #000;content:"";left:unset;position:absolute;right:0;top:0}[dir=rtl].handsontable .htCommentCell:after{border-left:none;border-right:6px solid transparent;left:0;right:unset}.htCommentsContainer .htComments{display:none;position:absolute;z-index:1059}.htCommentsContainer .htCommentTextArea{-webkit-appearance:none;background-color:#fff;border:none;border-left:3px solid #ccc;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:12px;height:90px;outline:0!important;padding:5px;width:215px}[dir=rtl].htCommentsContainer .htCommentTextArea{border-left:none;border-right:3px solid #ccc}.htCommentsContainer .htCommentTextArea:focus{border-left:3px solid #5292f7;border-right:none;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239),inset 0 0 0 1px #5292f7}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-left:none;border-right:3px solid #5292f7}
31
31
  /*!
32
32
  * Handsontable ContextMenu