handsontable 0.0.0-next-14118b6-20240131 → 0.0.0-next-817afa4-20240202

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-14118b6-20240131
29
- * Release date: 16/01/2024 (built at 31/01/2024 11:08:02)
28
+ * Version: 0.0.0-next-817afa4-20240202
29
+ * Release date: 16/01/2024 (built at 02/02/2024 12:20:05)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -107,8 +107,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
107
107
  Handsontable.CellCoords = _src.CellCoords;
108
108
  Handsontable.CellRange = _src.CellRange;
109
109
  Handsontable.packageName = 'handsontable';
110
- Handsontable.buildDate = "31/01/2024 11:08:02";
111
- Handsontable.version = "0.0.0-next-14118b6-20240131";
110
+ Handsontable.buildDate = "02/02/2024 12:20:05";
111
+ Handsontable.version = "0.0.0-next-817afa4-20240202";
112
112
  Handsontable.languages = {
113
113
  dictionaryKeys: _registry.dictionaryKeys,
114
114
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -7118,6 +7118,7 @@ exports.removeClass = removeClass;
7118
7118
  exports.removeContentEditableFromElementAndDeselect = removeContentEditableFromElementAndDeselect;
7119
7119
  exports.removeEvent = removeEvent;
7120
7120
  exports.removeTextNodes = removeTextNodes;
7121
+ exports.renderMockCell = renderMockCell;
7121
7122
  exports.resetCssTransform = resetCssTransform;
7122
7123
  exports.runWithSelectedContendEditableElement = runWithSelectedContendEditableElement;
7123
7124
  exports.selectElementIfAllowed = selectElementIfAllowed;
@@ -8205,6 +8206,21 @@ function runWithSelectedContendEditableElement(element, callback) {
8205
8206
  removeContentEditableFromElementAndDeselect(element, invisibleSelection);
8206
8207
  }
8207
8208
 
8209
+ /**
8210
+ * Return a `td` element rendered outside of the table with the provided renderer function.
8211
+ *
8212
+ * @param {Document} rootDocument Root document element.
8213
+ * @param {Function} renderFunction The renderer function.
8214
+ * @param {Array} renderArgs The renderer arguments.
8215
+ * @returns {HTMLElement} The rendered `td` element.
8216
+ */
8217
+ function renderMockCell(rootDocument, renderFunction, renderArgs) {
8218
+ const cell = rootDocument.createElement('td');
8219
+ renderArgs.splice(1, 0, cell);
8220
+ renderFunction.call(renderArgs.instance, ...renderArgs);
8221
+ return cell;
8222
+ }
8223
+
8208
8224
  /***/ }),
8209
8225
  /* 108 */
8210
8226
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -8470,7 +8486,7 @@ const domMessages = {
8470
8486
  function _injectProductInfo(key, element) {
8471
8487
  const hasValidType = !isEmpty(key);
8472
8488
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
8473
- const hotVersion = "0.0.0-next-14118b6-20240131";
8489
+ const hotVersion = "0.0.0-next-817afa4-20240202";
8474
8490
  let keyValidityDate;
8475
8491
  let consoleMessageState = 'invalid';
8476
8492
  let domMessageState = 'invalid';
@@ -11310,7 +11326,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
11310
11326
  */
11311
11327
  'afterUpdateData',
11312
11328
  /**
11313
- * Fired after a scroll event, which is identified as a momentum scroll.
11329
+ * Fired after a scroll event, which is identified as a momentum scroll (e.g. On an iPad).
11314
11330
  *
11315
11331
  * @event Hooks#afterMomentumScroll
11316
11332
  */
@@ -36390,7 +36406,7 @@ class MetaManager {
36390
36406
 
36391
36407
  /**
36392
36408
  * Returns all cell meta objects that were created during the Handsontable operation but for
36393
- * specyfic row index.
36409
+ * specific row index.
36394
36410
  *
36395
36411
  * @param {number} physicalRow The physical row index.
36396
36412
  * @returns {object[]}
@@ -38471,6 +38487,23 @@ var _default = () => {
38471
38487
  * ```
38472
38488
  */
38473
38489
  disableVisualSelection: false,
38490
+ /**
38491
+ * @description
38492
+ * The `displayValue` cell meta property defines a string that will be used to display the cell's contents
38493
+ * in the Filters UI multi-selection module.
38494
+ *
38495
+ * For example, it can be utlized:
38496
+ * - When the cell's underlying value is not easily readable.
38497
+ * - With custom renderers.
38498
+ *
38499
+ * Currently used by default to display the numeric renderer's output.
38500
+ *
38501
+ * @memberof Options#
38502
+ * @type {string}
38503
+ * @default undefined
38504
+ * @category Core
38505
+ */
38506
+ displayValue: undefined,
38474
38507
  /**
38475
38508
  * @description
38476
38509
  * The `dragToScroll` option configures the [`DragToScroll`](@/api/dragToScroll.md) plugin.
@@ -49332,6 +49365,7 @@ function numericRenderer(hotInstance, TD, row, col, prop, value, cellProperties)
49332
49365
  cellProperties.className = classArr.join(' ');
49333
49366
  TD.dir = 'ltr';
49334
49367
  }
49368
+ cellProperties.displayValue = newValue;
49335
49369
  (0, _textRenderer.textRenderer)(hotInstance, TD, row, col, prop, newValue, cellProperties);
49336
49370
  }
49337
49371
  numericRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -67937,6 +67971,7 @@ exports.__esModule = true;
67937
67971
  exports.createArrayAssertion = createArrayAssertion;
67938
67972
  exports.intersectValues = intersectValues;
67939
67973
  exports.sortComparison = sortComparison;
67974
+ exports.syncDisplayValuesToUnifiedValues = syncDisplayValuesToUnifiedValues;
67940
67975
  exports.toEmptyString = toEmptyString;
67941
67976
  exports.toVisualValue = toVisualValue;
67942
67977
  exports.unifyColumnValues = unifyColumnValues;
@@ -67964,12 +67999,15 @@ function sortComparison(a, b) {
67964
67999
  *
67965
68000
  * @param {*} value The value to convert.
67966
68001
  * @param {string} defaultEmptyValue Default value for empty cells.
68002
+ * @param {string} [displayValue] The display value.
67967
68003
  * @returns {*}
67968
68004
  */
67969
- function toVisualValue(value, defaultEmptyValue) {
68005
+ function toVisualValue(value, defaultEmptyValue, displayValue) {
67970
68006
  let visualValue = value;
67971
68007
  if (visualValue === '') {
67972
68008
  visualValue = `(${defaultEmptyValue})`;
68009
+ } else if (displayValue) {
68010
+ visualValue = displayValue;
67973
68011
  }
67974
68012
  return visualValue;
67975
68013
  }
@@ -68010,7 +68048,7 @@ function toEmptyString(value) {
68010
68048
  }
68011
68049
 
68012
68050
  /**
68013
- * Unify column values (replace `null` and `undefined` values into empty string, unique values and sort them).
68051
+ * Unify column values (remove duplicated values and sort them).
68014
68052
  *
68015
68053
  * @param {Array} values An array of values.
68016
68054
  * @returns {Array}
@@ -68034,23 +68072,43 @@ function unifyColumnValues(values) {
68034
68072
  return unifiedValues;
68035
68073
  }
68036
68074
 
68075
+ /**
68076
+ * Synchronize display values with the provided unified values.
68077
+ *
68078
+ * @param {Array} displayValues An array of display values.
68079
+ * @param {Array} values An array of source values.
68080
+ * @param {Array} unifiedValues An array of unified values.
68081
+ *
68082
+ * @returns {Array} An array of synchronized display values.
68083
+ */
68084
+ function syncDisplayValuesToUnifiedValues(displayValues, values, unifiedValues) {
68085
+ const syncedDisplayValues = [];
68086
+ (0, _array.arrayEach)(unifiedValues, unifiedValue => {
68087
+ const index = values.indexOf(unifiedValue);
68088
+ const displayValue = displayValues[index];
68089
+ syncedDisplayValues.push(displayValue);
68090
+ });
68091
+ return syncedDisplayValues;
68092
+ }
68093
+
68037
68094
  /**
68038
68095
  * Intersect 'base' values with 'selected' values and return an array of object.
68039
68096
  *
68040
68097
  * @param {Array} base An array of base values.
68041
68098
  * @param {Array} selected An array of selected values.
68042
68099
  * @param {string} defaultEmptyValue Default value for empty cells.
68100
+ * @param {string[]} [displayValues] An array of display values.
68043
68101
  * @param {Function} [callback] A callback function which is invoked for every item in an array.
68044
68102
  * @returns {Array}
68045
68103
  */
68046
- function intersectValues(base, selected, defaultEmptyValue, callback) {
68104
+ function intersectValues(base, selected, defaultEmptyValue, displayValues, callback) {
68047
68105
  const result = [];
68048
68106
  const same = base === selected;
68049
68107
  let selectedItemsAssertion;
68050
68108
  if (!same) {
68051
68109
  selectedItemsAssertion = createArrayAssertion(selected);
68052
68110
  }
68053
- (0, _array.arrayEach)(base, value => {
68111
+ (0, _array.arrayEach)(base, (value, index) => {
68054
68112
  let checked = false;
68055
68113
  if (same || selectedItemsAssertion(value)) {
68056
68114
  checked = true;
@@ -68058,7 +68116,7 @@ function intersectValues(base, selected, defaultEmptyValue, callback) {
68058
68116
  const item = {
68059
68117
  checked,
68060
68118
  value,
68061
- visualValue: toVisualValue(value, defaultEmptyValue)
68119
+ visualValue: toVisualValue(value, defaultEmptyValue, displayValues[index])
68062
68120
  };
68063
68121
  if (callback) {
68064
68122
  callback(item);
@@ -69253,17 +69311,23 @@ class ValueComponent extends _base.BaseComponent {
69253
69311
  * `editedConditionStack`, `dependentConditionStacks`, `visibleDataFactory` and `conditionArgsChange`.
69254
69312
  */
69255
69313
  updateState(stateInfo) {
69314
+ const multipleSelectComponent = this.getMultipleSelectElement();
69256
69315
  const updateColumnState = (physicalColumn, conditions, conditionArgsChange, filteredRowsFactory, conditionsStack) => {
69257
69316
  const [firstByValueCondition] = (0, _array.arrayFilter)(conditions, condition => condition.name === _constants2.CONDITION_BY_VALUE);
69258
69317
  const state = {};
69259
69318
  const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
69260
69319
  if (firstByValueCondition) {
69261
- const rowValues = (0, _utils.unifyColumnValues)((0, _array.arrayMap)(filteredRowsFactory(physicalColumn, conditionsStack), row => row.value));
69320
+ const filteredRows = filteredRowsFactory(physicalColumn, conditionsStack);
69321
+ const rowValues = (0, _array.arrayMap)(filteredRows, row => row.value);
69322
+ const rowIndexes = (0, _array.arrayMap)(filteredRows, row => row.meta.visualRow);
69323
+ const unifiedRowValues = (0, _utils.unifyColumnValues)(rowValues);
69324
+ const displayValues = (multipleSelectComponent.getDisplayValuesAtCol(this.hot.toVisualColumn(physicalColumn)) || []).filter((value, index) => rowIndexes.includes(index));
69325
+ const displayValuesSyncedWithUnifiedValues = (0, _utils.syncDisplayValuesToUnifiedValues)(displayValues, rowValues, unifiedRowValues);
69262
69326
  if (conditionArgsChange) {
69263
69327
  firstByValueCondition.args[0] = conditionArgsChange;
69264
69328
  }
69265
69329
  const selectedValues = [];
69266
- const itemsSnapshot = (0, _utils.intersectValues)(rowValues, firstByValueCondition.args[0], defaultBlankCellValue, item => {
69330
+ const itemsSnapshot = (0, _utils.intersectValues)(unifiedRowValues, firstByValueCondition.args[0], defaultBlankCellValue, displayValuesSyncedWithUnifiedValues, item => {
69267
69331
  if (item.checked) {
69268
69332
  selectedValues.push(item.value);
69269
69333
  }
@@ -69326,13 +69390,17 @@ class ValueComponent extends _base.BaseComponent {
69326
69390
  * Reset elements to their initial state.
69327
69391
  */
69328
69392
  reset() {
69393
+ const multiSelectComponent = this.getMultipleSelectElement();
69394
+ const selectedColumn = this.hot.getPlugin('filters').getSelectedColumn();
69329
69395
  const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
69330
- const values = (0, _utils.unifyColumnValues)(this._getColumnVisibleValues());
69331
- const items = (0, _utils.intersectValues)(values, values, defaultBlankCellValue);
69396
+ const values = this._getColumnVisibleValues();
69397
+ const unifiedValues = (0, _utils.unifyColumnValues)(values);
69398
+ const displayValues = multiSelectComponent.getDisplayValuesAtCol(selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.visualIndex) || [];
69399
+ const displayValuesSyncedWithUnifiedValues = (0, _utils.syncDisplayValuesToUnifiedValues)(displayValues, values, unifiedValues);
69400
+ const items = (0, _utils.intersectValues)(unifiedValues, unifiedValues, defaultBlankCellValue, displayValuesSyncedWithUnifiedValues || []);
69332
69401
  this.getMultipleSelectElement().setItems(items);
69333
69402
  super.reset();
69334
- this.getMultipleSelectElement().setValue(values);
69335
- const selectedColumn = this.hot.getPlugin('filters').getSelectedColumn();
69403
+ this.getMultipleSelectElement().setValue(unifiedValues);
69336
69404
  if (selectedColumn !== null) {
69337
69405
  this.getMultipleSelectElement().setLocale(this.hot.getCellMeta(0, selectedColumn.visualIndex).locale);
69338
69406
  }
@@ -69744,6 +69812,44 @@ class MultipleSelectUI extends _base.BaseUI {
69744
69812
  (0, _classPrivateFieldSet2.default)(this, _items, null);
69745
69813
  super.destroy();
69746
69814
  }
69815
+
69816
+ /**
69817
+ * Returns the display values for all the cells at the given `column` visual index.
69818
+ * If no display values are defined, the `source data` values will be returned instead.
69819
+ *
69820
+ * If the provided column index is not a valid integer, the method will return `null`.
69821
+ *
69822
+ * @param {number} column From visual column index.
69823
+ * @returns {Array[]|null} Array containing the display values of all the cells in the column.
69824
+ */
69825
+ getDisplayValuesAtCol(column) {
69826
+ if (!Number.isInteger(column)) {
69827
+ return null;
69828
+ }
69829
+ const sourceRowCount = this.hot.countSourceRows();
69830
+ const columnData = [];
69831
+ let returnValue;
69832
+ for (let row = 0; row < sourceRowCount; row += 1) {
69833
+ const cellMeta = this.hot.getCellMeta(row, column);
69834
+ const {
69835
+ prop,
69836
+ displayValue
69837
+ } = cellMeta;
69838
+ const cellSourceData = this.hot.getSourceDataAtCell(row, column);
69839
+ if (displayValue) {
69840
+ returnValue = displayValue;
69841
+ } else {
69842
+ var _cellMeta$displayValu;
69843
+ // Render the cell in a mock element to try to get the display value (possibly applied in the renderer).
69844
+ (0, _element.renderMockCell)(this.hot.rootDocument, this.hot.getCellRenderer(row, column), [this.hot, row, column, prop, cellSourceData, cellMeta]);
69845
+
69846
+ // Retry getting the display value.
69847
+ returnValue = (_cellMeta$displayValu = cellMeta.displayValue) !== null && _cellMeta$displayValu !== void 0 ? _cellMeta$displayValu : cellSourceData;
69848
+ }
69849
+ columnData.push(returnValue);
69850
+ }
69851
+ return columnData;
69852
+ }
69747
69853
  }
69748
69854
  exports.MultipleSelectUI = MultipleSelectUI;
69749
69855
  function _onInput2(event) {
@@ -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-14118b6-20240131
29
- * Release date: 16/01/2024 (built at 31/01/2024 11:08:19)
28
+ * Version: 0.0.0-next-817afa4-20240202
29
+ * Release date: 16/01/2024 (built at 02/02/2024 12:20:23)
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 table.htCore>thead,.handsontable .ht_master table.htCore>tbody>tr>th,.handsontable .ht_master table.htCore>thead{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:hsla(0,0%,100%,0)}.hot-display-license-info{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .manualColumnResizer{cursor:col-resize;height:25px;position:absolute;top:0;width:5px;z-index:210}.handsontable .manualRowResizer{cursor:row-resize;height:5px;left:0;position:absolute;width:50px;z-index:210}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{background-color:#34a9db;border-left:none;border-right:1px dashed #777;display:none;margin-left:5px;margin-right:unset;position:absolute;right:unset;top:0;width:0}[dir=rtl].handsontable .manualColumnResizerGuide{border-left:1px dashed #777;border-right:none;left:unset;margin-left:unset;margin-right:5px}.handsontable .manualRowResizerGuide{background-color:#34a9db;border-bottom:1px dashed #777;bottom:0;display:none;height:0;left:0;margin-top:5px;position:absolute}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable .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-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.handsontable.mobile .handsontableInput:focus{-webkit-appearance:none;-webkit-box-shadow:inset 0 0 0 2px #5292f7;-moz-box-shadow:inset 0 0 0 2px #5292f7;box-shadow:inset 0 0 0 2px #5292f7}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea,[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea{left:unset;right:-10000px}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable .htAutocompleteArrow{color:#bbb;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;font-size:inherit;vertical-align:middle}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .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