handsontable 0.0.0-next-44acfea-20231127 → 0.0.0-next-28e0541-20231128

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-44acfea-20231127
29
- * Release date: 31/08/2023 (built at 27/11/2023 10:22:39)
28
+ * Version: 0.0.0-next-28e0541-20231128
29
+ * Release date: 31/08/2023 (built at 28/11/2023 12:40:40)
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 = "27/11/2023 10:22:39";
109
- Handsontable.version = "0.0.0-next-44acfea-20231127";
108
+ Handsontable.buildDate = "28/11/2023 12:40:40";
109
+ Handsontable.version = "0.0.0-next-28e0541-20231128";
110
110
  Handsontable.languages = {
111
111
  dictionaryKeys: _registry.dictionaryKeys,
112
112
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -8514,7 +8514,7 @@ const domMessages = {
8514
8514
  function _injectProductInfo(key, element) {
8515
8515
  const hasValidType = !isEmpty(key);
8516
8516
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
8517
- const hotVersion = "0.0.0-next-44acfea-20231127";
8517
+ const hotVersion = "0.0.0-next-28e0541-20231128";
8518
8518
  let keyValidityDate;
8519
8519
  let consoleMessageState = 'invalid';
8520
8520
  let domMessageState = 'invalid';
@@ -14189,10 +14189,11 @@ function getListenersCounter() {
14189
14189
  __webpack_require__(78);
14190
14190
  var _interopRequireDefault = __webpack_require__(1);
14191
14191
  exports.__esModule = true;
14192
- var _classPrivateFieldGet5 = _interopRequireDefault(__webpack_require__(133));
14192
+ var _classPrivateFieldGet7 = _interopRequireDefault(__webpack_require__(133));
14193
14193
  var _classPrivateFieldSet2 = _interopRequireDefault(__webpack_require__(136));
14194
14194
  var _console = __webpack_require__(129);
14195
14195
  var _element = __webpack_require__(107);
14196
+ var _function = __webpack_require__(115);
14196
14197
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
14197
14198
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
14198
14199
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
@@ -14217,9 +14218,10 @@ var _hot = /*#__PURE__*/new WeakMap();
14217
14218
  var _focusMode = /*#__PURE__*/new WeakMap();
14218
14219
  var _refocusDelay = /*#__PURE__*/new WeakMap();
14219
14220
  var _refocusElementGetter = /*#__PURE__*/new WeakMap();
14220
- var _getCurrentHighlightCoords = /*#__PURE__*/new WeakSet();
14221
+ var _debouncedSelect = /*#__PURE__*/new WeakMap();
14221
14222
  var _getSelectedCell = /*#__PURE__*/new WeakSet();
14222
- var _manageFocus = /*#__PURE__*/new WeakSet();
14223
+ var _focusCell = /*#__PURE__*/new WeakSet();
14224
+ var _focusEditorElement = /*#__PURE__*/new WeakSet();
14223
14225
  var _onUpdateSettings = /*#__PURE__*/new WeakSet();
14224
14226
  class FocusManager {
14225
14227
  constructor(hotInstance) {
@@ -14227,29 +14229,23 @@ class FocusManager {
14227
14229
  /**
14228
14230
  * Update the manager configuration after calling `updateSettings`.
14229
14231
  *
14230
- * @private
14231
14232
  * @param {object} newSettings The new settings passed to the `updateSettings` method.
14232
14233
  */
14233
14234
  _classPrivateMethodInitSpec(this, _onUpdateSettings);
14234
14235
  /**
14235
- * Manage the browser's focus after cell selection.
14236
- *
14237
- * @private
14236
+ * Manage the browser's focus after cell selection end.
14238
14237
  */
14239
- _classPrivateMethodInitSpec(this, _manageFocus);
14238
+ _classPrivateMethodInitSpec(this, _focusEditorElement);
14240
14239
  /**
14241
- * Get and return the currently selected and highlighted cell/header element.
14242
- *
14243
- * @private
14244
- * @returns {HTMLTableCellElement}
14240
+ * Manage the browser's focus after each cell selection change.
14245
14241
  */
14246
- _classPrivateMethodInitSpec(this, _getSelectedCell);
14242
+ _classPrivateMethodInitSpec(this, _focusCell);
14247
14243
  /**
14248
- * Get the coordinates of the highlight of the currently selected cell/header.
14244
+ * Get and return the currently selected and highlighted cell/header element.
14249
14245
  *
14250
- * @returns {CellCoords}
14246
+ * @param {Function} callback Callback function to be called after the cell element is retrieved.
14251
14247
  */
14252
- _classPrivateMethodInitSpec(this, _getCurrentHighlightCoords);
14248
+ _classPrivateMethodInitSpec(this, _getSelectedCell);
14253
14249
  /**
14254
14250
  * The Handsontable instance.
14255
14251
  */
@@ -14265,7 +14261,7 @@ class FocusManager {
14265
14261
  * - 'mixed' - The browser's focus switches from the lastly selected cell element to the currently active editor's
14266
14262
  * `TEXTAREA` element after a delay defined in the manager.
14267
14263
  *
14268
- * @type {string}
14264
+ * @type {'cell' | 'mixed'}
14269
14265
  */
14270
14266
  _classPrivateFieldInitSpec(this, _focusMode, {
14271
14267
  writable: true,
@@ -14291,20 +14287,35 @@ class FocusManager {
14291
14287
  writable: true,
14292
14288
  value: null
14293
14289
  });
14290
+ /**
14291
+ * Map of the debounced `select` functions.
14292
+ *
14293
+ * @type {Map<number, Function>}
14294
+ */
14295
+ _classPrivateFieldInitSpec(this, _debouncedSelect, {
14296
+ writable: true,
14297
+ value: new Map()
14298
+ });
14294
14299
  const hotSettings = hotInstance.getSettings();
14295
14300
  (0, _classPrivateFieldSet2.default)(this, _hot, hotInstance);
14296
14301
  (0, _classPrivateFieldSet2.default)(this, _focusMode, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
14297
- (0, _classPrivateFieldGet5.default)(this, _hot).addHook('afterUpdateSettings', function () {
14302
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHook('afterUpdateSettings', function () {
14298
14303
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
14299
14304
  args[_key] = arguments[_key];
14300
14305
  }
14301
14306
  return _classPrivateMethodGet(_this, _onUpdateSettings, _onUpdateSettings2).call(_this, ...args);
14302
14307
  });
14303
- (0, _classPrivateFieldGet5.default)(this, _hot).addHook('afterSelection', function () {
14308
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHook('afterSelection', function () {
14304
14309
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
14305
14310
  args[_key2] = arguments[_key2];
14306
14311
  }
14307
- return _classPrivateMethodGet(_this, _manageFocus, _manageFocus2).call(_this, ...args);
14312
+ return _classPrivateMethodGet(_this, _focusCell, _focusCell2).call(_this, ...args);
14313
+ });
14314
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHook('afterSelectionEnd', function () {
14315
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
14316
+ args[_key3] = arguments[_key3];
14317
+ }
14318
+ return _classPrivateMethodGet(_this, _focusEditorElement, _focusEditorElement2).call(_this, ...args);
14308
14319
  });
14309
14320
  }
14310
14321
 
@@ -14314,7 +14325,7 @@ class FocusManager {
14314
14325
  * @returns {'cell' | 'mixed'}
14315
14326
  */
14316
14327
  getFocusMode() {
14317
- return (0, _classPrivateFieldGet5.default)(this, _focusMode);
14328
+ return (0, _classPrivateFieldGet7.default)(this, _focusMode);
14318
14329
  }
14319
14330
 
14320
14331
  /**
@@ -14337,7 +14348,7 @@ class FocusManager {
14337
14348
  * @returns {number} Delay in milliseconds.
14338
14349
  */
14339
14350
  getRefocusDelay() {
14340
- return (0, _classPrivateFieldGet5.default)(this, _refocusDelay);
14351
+ return (0, _classPrivateFieldGet7.default)(this, _refocusDelay);
14341
14352
  }
14342
14353
 
14343
14354
  /**
@@ -14365,11 +14376,11 @@ class FocusManager {
14365
14376
  * @returns {HTMLTextAreaElement|HTMLElement|undefined}
14366
14377
  */
14367
14378
  getRefocusElement() {
14368
- if (typeof (0, _classPrivateFieldGet5.default)(this, _refocusElementGetter) === 'function') {
14369
- return (0, _classPrivateFieldGet5.default)(this, _refocusElementGetter).call(this);
14379
+ if (typeof (0, _classPrivateFieldGet7.default)(this, _refocusElementGetter) === 'function') {
14380
+ return (0, _classPrivateFieldGet7.default)(this, _refocusElementGetter).call(this);
14370
14381
  } else {
14371
14382
  var _classPrivateFieldGet2;
14372
- return (_classPrivateFieldGet2 = (0, _classPrivateFieldGet5.default)(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
14383
+ return (_classPrivateFieldGet2 = (0, _classPrivateFieldGet7.default)(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
14373
14384
  }
14374
14385
  }
14375
14386
 
@@ -14379,17 +14390,26 @@ class FocusManager {
14379
14390
  * @param {HTMLTableCellElement} [selectedCell] The highlighted cell/header element.
14380
14391
  */
14381
14392
  focusOnHighlightedCell(selectedCell) {
14382
- var _classPrivateFieldGet3;
14383
- const currentHighlightCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
14384
- const currentlySelectedHighlight = selectedCell || _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
14385
- let elementToBeFocused = (0, _classPrivateFieldGet5.default)(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, currentlySelectedHighlight);
14386
- if (!(elementToBeFocused instanceof HTMLElement)) {
14387
- elementToBeFocused = currentlySelectedHighlight;
14388
- }
14389
- if (elementToBeFocused && !((_classPrivateFieldGet3 = (0, _classPrivateFieldGet5.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet3 !== void 0 && _classPrivateFieldGet3.isOpened())) {
14390
- elementToBeFocused.focus({
14391
- preventScroll: true
14392
- });
14393
+ const focusElement = element => {
14394
+ var _classPrivateFieldGet3, _classPrivateFieldGet4;
14395
+ const currentHighlightCoords = (_classPrivateFieldGet3 = (0, _classPrivateFieldGet7.default)(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.highlight;
14396
+ if (!currentHighlightCoords || !element) {
14397
+ return;
14398
+ }
14399
+ let elementToBeFocused = (0, _classPrivateFieldGet7.default)(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
14400
+ if (!(elementToBeFocused instanceof HTMLElement)) {
14401
+ elementToBeFocused = element;
14402
+ }
14403
+ if (elementToBeFocused && !((_classPrivateFieldGet4 = (0, _classPrivateFieldGet7.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened())) {
14404
+ elementToBeFocused.focus({
14405
+ preventScroll: true
14406
+ });
14407
+ }
14408
+ };
14409
+ if (selectedCell) {
14410
+ focusElement(selectedCell);
14411
+ } else {
14412
+ _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, element => focusElement(element));
14393
14413
  }
14394
14414
  }
14395
14415
 
@@ -14397,49 +14417,63 @@ class FocusManager {
14397
14417
  * Set the focus to the active editor's `TEXTAREA` element after the provided delay. If no delay is provided, it
14398
14418
  * will be taken from the manager's configuration.
14399
14419
  *
14400
- * @param {number} delay Delay in milliseconds.
14420
+ * @param {number} [delay] Delay in milliseconds.
14401
14421
  */
14402
14422
  refocusToEditorTextarea() {
14403
- var _classPrivateFieldGet4;
14404
- let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _classPrivateFieldGet5.default)(this, _refocusDelay);
14423
+ var _classPrivateFieldGet5;
14424
+ let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _classPrivateFieldGet7.default)(this, _refocusDelay);
14405
14425
  const refocusElement = this.getRefocusElement();
14406
14426
 
14407
14427
  // Re-focus on the editor's `TEXTAREA` element (or a predefined element) if the `imeFastEdit` option is enabled.
14408
- if ((0, _classPrivateFieldGet5.default)(this, _hot).getSettings().imeFastEdit && !((_classPrivateFieldGet4 = (0, _classPrivateFieldGet5.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened()) && !!refocusElement) {
14409
- (0, _classPrivateFieldGet5.default)(this, _hot)._registerTimeout(() => {
14410
- refocusElement.select();
14411
- }, delay);
14428
+ if ((0, _classPrivateFieldGet7.default)(this, _hot).getSettings().imeFastEdit && !((_classPrivateFieldGet5 = (0, _classPrivateFieldGet7.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet5 !== void 0 && _classPrivateFieldGet5.isOpened()) && !!refocusElement) {
14429
+ if (!(0, _classPrivateFieldGet7.default)(this, _debouncedSelect).has(delay)) {
14430
+ (0, _classPrivateFieldGet7.default)(this, _debouncedSelect).set(delay, (0, _function.debounce)(() => {
14431
+ refocusElement.select();
14432
+ }, delay));
14433
+ }
14434
+ (0, _classPrivateFieldGet7.default)(this, _debouncedSelect).get(delay)();
14412
14435
  }
14413
14436
  }
14414
14437
  }
14415
14438
  exports.FocusManager = FocusManager;
14416
- function _getCurrentHighlightCoords2() {
14417
- const lastSelectedRange = (0, _classPrivateFieldGet5.default)(this, _hot).getSelectedRangeLast();
14418
- return lastSelectedRange.highlight;
14439
+ function _getSelectedCell2(callback) {
14440
+ var _classPrivateFieldGet6;
14441
+ const highlight = (_classPrivateFieldGet6 = (0, _classPrivateFieldGet7.default)(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.highlight;
14442
+ if (!highlight) {
14443
+ callback(null);
14444
+ return;
14445
+ }
14446
+ const cell = (0, _classPrivateFieldGet7.default)(this, _hot).getCell(highlight.row, highlight.col, true);
14447
+ if (cell === null) {
14448
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHookOnce('afterScroll', () => {
14449
+ callback((0, _classPrivateFieldGet7.default)(this, _hot).getCell(highlight.row, highlight.col, true));
14450
+ });
14451
+ } else {
14452
+ callback(cell);
14453
+ }
14419
14454
  }
14420
- function _getSelectedCell2() {
14421
- const selectedCellCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
14422
- return (0, _classPrivateFieldGet5.default)(this, _hot).getCell(selectedCellCoords.row, selectedCellCoords.col, true);
14455
+ function _focusCell2() {
14456
+ _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
14457
+ const {
14458
+ activeElement
14459
+ } = (0, _classPrivateFieldGet7.default)(this, _hot).rootDocument;
14460
+
14461
+ // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
14462
+ // and resets the `document.activeElement` property. The blurring should happen only when the
14463
+ // previously selected input element has not belonged to the Handsontable editor. If blurring is
14464
+ // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
14465
+ if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
14466
+ activeElement.blur();
14467
+ }
14468
+ this.focusOnHighlightedCell(selectedCell);
14469
+ });
14423
14470
  }
14424
- function _manageFocus2() {
14425
- const selectedCell = _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
14426
- const {
14427
- activeElement
14428
- } = (0, _classPrivateFieldGet5.default)(this, _hot).rootDocument;
14429
-
14430
- // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
14431
- // and resets the `document.activeElement` property. The blurring should happen only when the
14432
- // previously selected input element has not belonged to the Handsontable editor. If blurring is
14433
- // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
14434
- if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
14435
- activeElement.blur();
14436
- }
14437
- this.focusOnHighlightedCell(selectedCell);
14438
- if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
14439
- (0, _classPrivateFieldGet5.default)(this, _hot).addHookOnce('afterSelectionEnd', () => {
14471
+ function _focusEditorElement2() {
14472
+ _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
14473
+ if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
14440
14474
  this.refocusToEditorTextarea();
14441
- });
14442
- }
14475
+ }
14476
+ });
14443
14477
  }
14444
14478
  function _onUpdateSettings2(newSettings) {
14445
14479
  if (newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.MIXED) {
@@ -22459,7 +22493,10 @@ class ColumnHeadersRenderer extends _base.default {
22459
22493
  // Remove all accessibility-related attributes for the header to start fresh.
22460
22494
  (0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
22461
22495
  if (this.table.isAriaEnabled()) {
22462
- (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1), (0, _a11y.A11Y_COLUMNHEADER)(), ...(renderedColumnIndex >= 0 ? [(0, _a11y.A11Y_SCOPE_COL)()] : [])]);
22496
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_COLINDEX)(renderedColumnIndex + 1 + this.table.rowHeadersCount), (0, _a11y.A11Y_TABINDEX)(-1), (0, _a11y.A11Y_COLUMNHEADER)(), ...(renderedColumnIndex >= 0 ? [(0, _a11y.A11Y_SCOPE_COL)()] : [
22497
+ // Adding `role=row` to the corner headers to prevent
22498
+ // https://github.com/handsontable/dev-handsontable/issues/1574
22499
+ (0, _a11y.A11Y_ROW)()])]);
22463
22500
  }
22464
22501
  columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
22465
22502
  }
@@ -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-44acfea-20231127
29
- * Release date: 31/08/2023 (built at 27/11/2023 10:22:57)
28
+ * Version: 0.0.0-next-28e0541-20231128
29
+ * Release date: 31/08/2023 (built at 28/11/2023 12:40:57)
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