handsontable 14.0.0-next-88de277-20231127 → 14.0.0-next-477622d-20231128

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-88de277-20231127
29
- * Release date: 29/11/2023 (built at 27/11/2023 10:19:34)
28
+ * Version: 14.0.0-next-477622d-20231128
29
+ * Release date: 29/11/2023 (built at 28/11/2023 12:48:17)
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:19:34";
109
- Handsontable.version = "14.0.0-next-88de277-20231127";
108
+ Handsontable.buildDate = "28/11/2023 12:48:17";
109
+ Handsontable.version = "14.0.0-next-477622d-20231128";
110
110
  Handsontable.languages = {
111
111
  dictionaryKeys: _registry.dictionaryKeys,
112
112
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -8513,7 +8513,7 @@ const domMessages = {
8513
8513
  function _injectProductInfo(key, element) {
8514
8514
  const hasValidType = !isEmpty(key);
8515
8515
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
8516
- const hotVersion = "14.0.0-next-88de277-20231127";
8516
+ const hotVersion = "14.0.0-next-477622d-20231128";
8517
8517
  let keyValidityDate;
8518
8518
  let consoleMessageState = 'invalid';
8519
8519
  let domMessageState = 'invalid';
@@ -14182,10 +14182,11 @@ function getListenersCounter() {
14182
14182
  __webpack_require__(78);
14183
14183
  var _interopRequireDefault = __webpack_require__(1);
14184
14184
  exports.__esModule = true;
14185
- var _classPrivateFieldGet5 = _interopRequireDefault(__webpack_require__(133));
14185
+ var _classPrivateFieldGet7 = _interopRequireDefault(__webpack_require__(133));
14186
14186
  var _classPrivateFieldSet2 = _interopRequireDefault(__webpack_require__(136));
14187
14187
  var _console = __webpack_require__(129);
14188
14188
  var _element = __webpack_require__(107);
14189
+ var _function = __webpack_require__(115);
14189
14190
  function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
14190
14191
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
14191
14192
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
@@ -14210,9 +14211,10 @@ var _hot = /*#__PURE__*/new WeakMap();
14210
14211
  var _focusMode = /*#__PURE__*/new WeakMap();
14211
14212
  var _refocusDelay = /*#__PURE__*/new WeakMap();
14212
14213
  var _refocusElementGetter = /*#__PURE__*/new WeakMap();
14213
- var _getCurrentHighlightCoords = /*#__PURE__*/new WeakSet();
14214
+ var _debouncedSelect = /*#__PURE__*/new WeakMap();
14214
14215
  var _getSelectedCell = /*#__PURE__*/new WeakSet();
14215
- var _manageFocus = /*#__PURE__*/new WeakSet();
14216
+ var _focusCell = /*#__PURE__*/new WeakSet();
14217
+ var _focusEditorElement = /*#__PURE__*/new WeakSet();
14216
14218
  var _onUpdateSettings = /*#__PURE__*/new WeakSet();
14217
14219
  class FocusManager {
14218
14220
  constructor(hotInstance) {
@@ -14220,29 +14222,23 @@ class FocusManager {
14220
14222
  /**
14221
14223
  * Update the manager configuration after calling `updateSettings`.
14222
14224
  *
14223
- * @private
14224
14225
  * @param {object} newSettings The new settings passed to the `updateSettings` method.
14225
14226
  */
14226
14227
  _classPrivateMethodInitSpec(this, _onUpdateSettings);
14227
14228
  /**
14228
- * Manage the browser's focus after cell selection.
14229
- *
14230
- * @private
14229
+ * Manage the browser's focus after cell selection end.
14231
14230
  */
14232
- _classPrivateMethodInitSpec(this, _manageFocus);
14231
+ _classPrivateMethodInitSpec(this, _focusEditorElement);
14233
14232
  /**
14234
- * Get and return the currently selected and highlighted cell/header element.
14235
- *
14236
- * @private
14237
- * @returns {HTMLTableCellElement}
14233
+ * Manage the browser's focus after each cell selection change.
14238
14234
  */
14239
- _classPrivateMethodInitSpec(this, _getSelectedCell);
14235
+ _classPrivateMethodInitSpec(this, _focusCell);
14240
14236
  /**
14241
- * Get the coordinates of the highlight of the currently selected cell/header.
14237
+ * Get and return the currently selected and highlighted cell/header element.
14242
14238
  *
14243
- * @returns {CellCoords}
14239
+ * @param {Function} callback Callback function to be called after the cell element is retrieved.
14244
14240
  */
14245
- _classPrivateMethodInitSpec(this, _getCurrentHighlightCoords);
14241
+ _classPrivateMethodInitSpec(this, _getSelectedCell);
14246
14242
  /**
14247
14243
  * The Handsontable instance.
14248
14244
  */
@@ -14258,7 +14254,7 @@ class FocusManager {
14258
14254
  * - 'mixed' - The browser's focus switches from the lastly selected cell element to the currently active editor's
14259
14255
  * `TEXTAREA` element after a delay defined in the manager.
14260
14256
  *
14261
- * @type {string}
14257
+ * @type {'cell' | 'mixed'}
14262
14258
  */
14263
14259
  _classPrivateFieldInitSpec(this, _focusMode, {
14264
14260
  writable: true,
@@ -14284,20 +14280,35 @@ class FocusManager {
14284
14280
  writable: true,
14285
14281
  value: null
14286
14282
  });
14283
+ /**
14284
+ * Map of the debounced `select` functions.
14285
+ *
14286
+ * @type {Map<number, Function>}
14287
+ */
14288
+ _classPrivateFieldInitSpec(this, _debouncedSelect, {
14289
+ writable: true,
14290
+ value: new Map()
14291
+ });
14287
14292
  const hotSettings = hotInstance.getSettings();
14288
14293
  (0, _classPrivateFieldSet2.default)(this, _hot, hotInstance);
14289
14294
  (0, _classPrivateFieldSet2.default)(this, _focusMode, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
14290
- (0, _classPrivateFieldGet5.default)(this, _hot).addHook('afterUpdateSettings', function () {
14295
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHook('afterUpdateSettings', function () {
14291
14296
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
14292
14297
  args[_key] = arguments[_key];
14293
14298
  }
14294
14299
  return _classPrivateMethodGet(_this, _onUpdateSettings, _onUpdateSettings2).call(_this, ...args);
14295
14300
  });
14296
- (0, _classPrivateFieldGet5.default)(this, _hot).addHook('afterSelection', function () {
14301
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHook('afterSelection', function () {
14297
14302
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
14298
14303
  args[_key2] = arguments[_key2];
14299
14304
  }
14300
- return _classPrivateMethodGet(_this, _manageFocus, _manageFocus2).call(_this, ...args);
14305
+ return _classPrivateMethodGet(_this, _focusCell, _focusCell2).call(_this, ...args);
14306
+ });
14307
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHook('afterSelectionEnd', function () {
14308
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
14309
+ args[_key3] = arguments[_key3];
14310
+ }
14311
+ return _classPrivateMethodGet(_this, _focusEditorElement, _focusEditorElement2).call(_this, ...args);
14301
14312
  });
14302
14313
  }
14303
14314
 
@@ -14307,7 +14318,7 @@ class FocusManager {
14307
14318
  * @returns {'cell' | 'mixed'}
14308
14319
  */
14309
14320
  getFocusMode() {
14310
- return (0, _classPrivateFieldGet5.default)(this, _focusMode);
14321
+ return (0, _classPrivateFieldGet7.default)(this, _focusMode);
14311
14322
  }
14312
14323
 
14313
14324
  /**
@@ -14330,7 +14341,7 @@ class FocusManager {
14330
14341
  * @returns {number} Delay in milliseconds.
14331
14342
  */
14332
14343
  getRefocusDelay() {
14333
- return (0, _classPrivateFieldGet5.default)(this, _refocusDelay);
14344
+ return (0, _classPrivateFieldGet7.default)(this, _refocusDelay);
14334
14345
  }
14335
14346
 
14336
14347
  /**
@@ -14358,11 +14369,11 @@ class FocusManager {
14358
14369
  * @returns {HTMLTextAreaElement|HTMLElement|undefined}
14359
14370
  */
14360
14371
  getRefocusElement() {
14361
- if (typeof (0, _classPrivateFieldGet5.default)(this, _refocusElementGetter) === 'function') {
14362
- return (0, _classPrivateFieldGet5.default)(this, _refocusElementGetter).call(this);
14372
+ if (typeof (0, _classPrivateFieldGet7.default)(this, _refocusElementGetter) === 'function') {
14373
+ return (0, _classPrivateFieldGet7.default)(this, _refocusElementGetter).call(this);
14363
14374
  } else {
14364
14375
  var _classPrivateFieldGet2;
14365
- return (_classPrivateFieldGet2 = (0, _classPrivateFieldGet5.default)(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
14376
+ return (_classPrivateFieldGet2 = (0, _classPrivateFieldGet7.default)(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
14366
14377
  }
14367
14378
  }
14368
14379
 
@@ -14372,17 +14383,26 @@ class FocusManager {
14372
14383
  * @param {HTMLTableCellElement} [selectedCell] The highlighted cell/header element.
14373
14384
  */
14374
14385
  focusOnHighlightedCell(selectedCell) {
14375
- var _classPrivateFieldGet3;
14376
- const currentHighlightCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
14377
- const currentlySelectedHighlight = selectedCell || _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
14378
- let elementToBeFocused = (0, _classPrivateFieldGet5.default)(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, currentlySelectedHighlight);
14379
- if (!(elementToBeFocused instanceof HTMLElement)) {
14380
- elementToBeFocused = currentlySelectedHighlight;
14381
- }
14382
- if (elementToBeFocused && !((_classPrivateFieldGet3 = (0, _classPrivateFieldGet5.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet3 !== void 0 && _classPrivateFieldGet3.isOpened())) {
14383
- elementToBeFocused.focus({
14384
- preventScroll: true
14385
- });
14386
+ const focusElement = element => {
14387
+ var _classPrivateFieldGet3, _classPrivateFieldGet4;
14388
+ const currentHighlightCoords = (_classPrivateFieldGet3 = (0, _classPrivateFieldGet7.default)(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.highlight;
14389
+ if (!currentHighlightCoords || !element) {
14390
+ return;
14391
+ }
14392
+ let elementToBeFocused = (0, _classPrivateFieldGet7.default)(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, element);
14393
+ if (!(elementToBeFocused instanceof HTMLElement)) {
14394
+ elementToBeFocused = element;
14395
+ }
14396
+ if (elementToBeFocused && !((_classPrivateFieldGet4 = (0, _classPrivateFieldGet7.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened())) {
14397
+ elementToBeFocused.focus({
14398
+ preventScroll: true
14399
+ });
14400
+ }
14401
+ };
14402
+ if (selectedCell) {
14403
+ focusElement(selectedCell);
14404
+ } else {
14405
+ _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, element => focusElement(element));
14386
14406
  }
14387
14407
  }
14388
14408
 
@@ -14390,49 +14410,63 @@ class FocusManager {
14390
14410
  * Set the focus to the active editor's `TEXTAREA` element after the provided delay. If no delay is provided, it
14391
14411
  * will be taken from the manager's configuration.
14392
14412
  *
14393
- * @param {number} delay Delay in milliseconds.
14413
+ * @param {number} [delay] Delay in milliseconds.
14394
14414
  */
14395
14415
  refocusToEditorTextarea() {
14396
- var _classPrivateFieldGet4;
14397
- let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _classPrivateFieldGet5.default)(this, _refocusDelay);
14416
+ var _classPrivateFieldGet5;
14417
+ let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _classPrivateFieldGet7.default)(this, _refocusDelay);
14398
14418
  const refocusElement = this.getRefocusElement();
14399
14419
 
14400
14420
  // Re-focus on the editor's `TEXTAREA` element (or a predefined element) if the `imeFastEdit` option is enabled.
14401
- if ((0, _classPrivateFieldGet5.default)(this, _hot).getSettings().imeFastEdit && !((_classPrivateFieldGet4 = (0, _classPrivateFieldGet5.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet4 !== void 0 && _classPrivateFieldGet4.isOpened()) && !!refocusElement) {
14402
- (0, _classPrivateFieldGet5.default)(this, _hot)._registerTimeout(() => {
14403
- refocusElement.select();
14404
- }, delay);
14421
+ if ((0, _classPrivateFieldGet7.default)(this, _hot).getSettings().imeFastEdit && !((_classPrivateFieldGet5 = (0, _classPrivateFieldGet7.default)(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet5 !== void 0 && _classPrivateFieldGet5.isOpened()) && !!refocusElement) {
14422
+ if (!(0, _classPrivateFieldGet7.default)(this, _debouncedSelect).has(delay)) {
14423
+ (0, _classPrivateFieldGet7.default)(this, _debouncedSelect).set(delay, (0, _function.debounce)(() => {
14424
+ refocusElement.select();
14425
+ }, delay));
14426
+ }
14427
+ (0, _classPrivateFieldGet7.default)(this, _debouncedSelect).get(delay)();
14405
14428
  }
14406
14429
  }
14407
14430
  }
14408
14431
  exports.FocusManager = FocusManager;
14409
- function _getCurrentHighlightCoords2() {
14410
- const lastSelectedRange = (0, _classPrivateFieldGet5.default)(this, _hot).getSelectedRangeLast();
14411
- return lastSelectedRange.highlight;
14432
+ function _getSelectedCell2(callback) {
14433
+ var _classPrivateFieldGet6;
14434
+ const highlight = (_classPrivateFieldGet6 = (0, _classPrivateFieldGet7.default)(this, _hot).getSelectedRangeLast()) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.highlight;
14435
+ if (!highlight) {
14436
+ callback(null);
14437
+ return;
14438
+ }
14439
+ const cell = (0, _classPrivateFieldGet7.default)(this, _hot).getCell(highlight.row, highlight.col, true);
14440
+ if (cell === null) {
14441
+ (0, _classPrivateFieldGet7.default)(this, _hot).addHookOnce('afterScroll', () => {
14442
+ callback((0, _classPrivateFieldGet7.default)(this, _hot).getCell(highlight.row, highlight.col, true));
14443
+ });
14444
+ } else {
14445
+ callback(cell);
14446
+ }
14412
14447
  }
14413
- function _getSelectedCell2() {
14414
- const selectedCellCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
14415
- return (0, _classPrivateFieldGet5.default)(this, _hot).getCell(selectedCellCoords.row, selectedCellCoords.col, true);
14448
+ function _focusCell2() {
14449
+ _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
14450
+ const {
14451
+ activeElement
14452
+ } = (0, _classPrivateFieldGet7.default)(this, _hot).rootDocument;
14453
+
14454
+ // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
14455
+ // and resets the `document.activeElement` property. The blurring should happen only when the
14456
+ // previously selected input element has not belonged to the Handsontable editor. If blurring is
14457
+ // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
14458
+ if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
14459
+ activeElement.blur();
14460
+ }
14461
+ this.focusOnHighlightedCell(selectedCell);
14462
+ });
14416
14463
  }
14417
- function _manageFocus2() {
14418
- const selectedCell = _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
14419
- const {
14420
- activeElement
14421
- } = (0, _classPrivateFieldGet5.default)(this, _hot).rootDocument;
14422
-
14423
- // Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
14424
- // and resets the `document.activeElement` property. The blurring should happen only when the
14425
- // previously selected input element has not belonged to the Handsontable editor. If blurring is
14426
- // triggered for all elements, there is a problem with the disappearing IME editor (#9672).
14427
- if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
14428
- activeElement.blur();
14429
- }
14430
- this.focusOnHighlightedCell(selectedCell);
14431
- if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
14432
- (0, _classPrivateFieldGet5.default)(this, _hot).addHookOnce('afterSelectionEnd', () => {
14464
+ function _focusEditorElement2() {
14465
+ _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this, selectedCell => {
14466
+ if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
14433
14467
  this.refocusToEditorTextarea();
14434
- });
14435
- }
14468
+ }
14469
+ });
14436
14470
  }
14437
14471
  function _onUpdateSettings2(newSettings) {
14438
14472
  if (newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.MIXED) {
@@ -22433,7 +22467,10 @@ class ColumnHeadersRenderer extends _base.default {
22433
22467
  // Remove all accessibility-related attributes for the header to start fresh.
22434
22468
  (0, _element.removeAttribute)(TH, [new RegExp('aria-(.*)'), new RegExp('role')]);
22435
22469
  if (this.table.isAriaEnabled()) {
22436
- (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)()] : [])]);
22470
+ (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)()] : [
22471
+ // Adding `role=row` to the corner headers to prevent
22472
+ // https://github.com/handsontable/dev-handsontable/issues/1574
22473
+ (0, _a11y.A11Y_ROW)()])]);
22437
22474
  }
22438
22475
  columnHeaderFunctions[rowHeaderIndex](sourceColumnIndex, TH, rowHeaderIndex);
22439
22476
  }
@@ -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-88de277-20231127
29
- * Release date: 29/11/2023 (built at 27/11/2023 10:19:52)
28
+ * Version: 14.0.0-next-477622d-20231128
29
+ * Release date: 29/11/2023 (built at 28/11/2023 12:48:34)
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