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.

package/base.js CHANGED
@@ -45,8 +45,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
45
45
  Handsontable.CellCoords = _src.CellCoords;
46
46
  Handsontable.CellRange = _src.CellRange;
47
47
  Handsontable.packageName = 'handsontable';
48
- Handsontable.buildDate = "31/01/2024 11:07:51";
49
- Handsontable.version = "0.0.0-next-14118b6-20240131";
48
+ Handsontable.buildDate = "02/02/2024 12:19:54";
49
+ Handsontable.version = "0.0.0-next-817afa4-20240202";
50
50
  Handsontable.languages = {
51
51
  dictionaryKeys: _registry.dictionaryKeys,
52
52
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "31/01/2024 11:07:57";
39
- Handsontable.version = "0.0.0-next-14118b6-20240131";
38
+ Handsontable.buildDate = "02/02/2024 12:20:00";
39
+ Handsontable.version = "0.0.0-next-817afa4-20240202";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -218,7 +218,7 @@ class MetaManager {
218
218
 
219
219
  /**
220
220
  * Returns all cell meta objects that were created during the Handsontable operation but for
221
- * specyfic row index.
221
+ * specific row index.
222
222
  *
223
223
  * @param {number} physicalRow The physical row index.
224
224
  * @returns {object[]}
@@ -214,7 +214,7 @@ export default class MetaManager {
214
214
 
215
215
  /**
216
216
  * Returns all cell meta objects that were created during the Handsontable operation but for
217
- * specyfic row index.
217
+ * specific row index.
218
218
  *
219
219
  * @param {number} physicalRow The physical row index.
220
220
  * @returns {object[]}
@@ -1704,6 +1704,23 @@ var _default = () => {
1704
1704
  * ```
1705
1705
  */
1706
1706
  disableVisualSelection: false,
1707
+ /**
1708
+ * @description
1709
+ * The `displayValue` cell meta property defines a string that will be used to display the cell's contents
1710
+ * in the Filters UI multi-selection module.
1711
+ *
1712
+ * For example, it can be utlized:
1713
+ * - When the cell's underlying value is not easily readable.
1714
+ * - With custom renderers.
1715
+ *
1716
+ * Currently used by default to display the numeric renderer's output.
1717
+ *
1718
+ * @memberof Options#
1719
+ * @type {string}
1720
+ * @default undefined
1721
+ * @category Core
1722
+ */
1723
+ displayValue: undefined,
1707
1724
  /**
1708
1725
  * @description
1709
1726
  * The `dragToScroll` option configures the [`DragToScroll`](@/api/dragToScroll.md) plugin.
@@ -1701,6 +1701,23 @@ export default (() => {
1701
1701
  * ```
1702
1702
  */
1703
1703
  disableVisualSelection: false,
1704
+ /**
1705
+ * @description
1706
+ * The `displayValue` cell meta property defines a string that will be used to display the cell's contents
1707
+ * in the Filters UI multi-selection module.
1708
+ *
1709
+ * For example, it can be utlized:
1710
+ * - When the cell's underlying value is not easily readable.
1711
+ * - With custom renderers.
1712
+ *
1713
+ * Currently used by default to display the numeric renderer's output.
1714
+ *
1715
+ * @memberof Options#
1716
+ * @type {string}
1717
+ * @default undefined
1718
+ * @category Core
1719
+ */
1720
+ displayValue: undefined,
1704
1721
  /**
1705
1722
  * @description
1706
1723
  * The `dragToScroll` option configures the [`DragToScroll`](@/api/dragToScroll.md) plugin.
@@ -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
  /**
32
32
  * Fix for bootstrap styles
@@ -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
  /**
32
32
  * Fix for bootstrap styles
@@ -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')
@@ -43097,8 +43097,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
43097
43097
  Handsontable.CellCoords = _src.CellCoords;
43098
43098
  Handsontable.CellRange = _src.CellRange;
43099
43099
  Handsontable.packageName = 'handsontable';
43100
- Handsontable.buildDate = "31/01/2024 11:08:02";
43101
- Handsontable.version = "0.0.0-next-14118b6-20240131";
43100
+ Handsontable.buildDate = "02/02/2024 12:20:05";
43101
+ Handsontable.version = "0.0.0-next-817afa4-20240202";
43102
43102
  Handsontable.languages = {
43103
43103
  dictionaryKeys: _registry.dictionaryKeys,
43104
43104
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -50108,6 +50108,7 @@ exports.removeClass = removeClass;
50108
50108
  exports.removeContentEditableFromElementAndDeselect = removeContentEditableFromElementAndDeselect;
50109
50109
  exports.removeEvent = removeEvent;
50110
50110
  exports.removeTextNodes = removeTextNodes;
50111
+ exports.renderMockCell = renderMockCell;
50111
50112
  exports.resetCssTransform = resetCssTransform;
50112
50113
  exports.runWithSelectedContendEditableElement = runWithSelectedContendEditableElement;
50113
50114
  exports.selectElementIfAllowed = selectElementIfAllowed;
@@ -51195,6 +51196,21 @@ function runWithSelectedContendEditableElement(element, callback) {
51195
51196
  removeContentEditableFromElementAndDeselect(element, invisibleSelection);
51196
51197
  }
51197
51198
 
51199
+ /**
51200
+ * Return a `td` element rendered outside of the table with the provided renderer function.
51201
+ *
51202
+ * @param {Document} rootDocument Root document element.
51203
+ * @param {Function} renderFunction The renderer function.
51204
+ * @param {Array} renderArgs The renderer arguments.
51205
+ * @returns {HTMLElement} The rendered `td` element.
51206
+ */
51207
+ function renderMockCell(rootDocument, renderFunction, renderArgs) {
51208
+ const cell = rootDocument.createElement('td');
51209
+ renderArgs.splice(1, 0, cell);
51210
+ renderFunction.call(renderArgs.instance, ...renderArgs);
51211
+ return cell;
51212
+ }
51213
+
51198
51214
  /***/ }),
51199
51215
  /* 305 */
51200
51216
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
@@ -53173,7 +53189,7 @@ const domMessages = {
53173
53189
  function _injectProductInfo(key, element) {
53174
53190
  const hasValidType = !isEmpty(key);
53175
53191
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
53176
- const hotVersion = "0.0.0-next-14118b6-20240131";
53192
+ const hotVersion = "0.0.0-next-817afa4-20240202";
53177
53193
  let keyValidityDate;
53178
53194
  let consoleMessageState = 'invalid';
53179
53195
  let domMessageState = 'invalid';
@@ -62807,7 +62823,7 @@ const REGISTERED_HOOKS = [/* eslint-disable jsdoc/require-description-complete-s
62807
62823
  */
62808
62824
  'afterUpdateData',
62809
62825
  /**
62810
- * Fired after a scroll event, which is identified as a momentum scroll.
62826
+ * Fired after a scroll event, which is identified as a momentum scroll (e.g. On an iPad).
62811
62827
  *
62812
62828
  * @event Hooks#afterMomentumScroll
62813
62829
  */
@@ -87887,7 +87903,7 @@ class MetaManager {
87887
87903
 
87888
87904
  /**
87889
87905
  * Returns all cell meta objects that were created during the Handsontable operation but for
87890
- * specyfic row index.
87906
+ * specific row index.
87891
87907
  *
87892
87908
  * @param {number} physicalRow The physical row index.
87893
87909
  * @returns {object[]}
@@ -89968,6 +89984,23 @@ var _default = () => {
89968
89984
  * ```
89969
89985
  */
89970
89986
  disableVisualSelection: false,
89987
+ /**
89988
+ * @description
89989
+ * The `displayValue` cell meta property defines a string that will be used to display the cell's contents
89990
+ * in the Filters UI multi-selection module.
89991
+ *
89992
+ * For example, it can be utlized:
89993
+ * - When the cell's underlying value is not easily readable.
89994
+ * - With custom renderers.
89995
+ *
89996
+ * Currently used by default to display the numeric renderer's output.
89997
+ *
89998
+ * @memberof Options#
89999
+ * @type {string}
90000
+ * @default undefined
90001
+ * @category Core
90002
+ */
90003
+ displayValue: undefined,
89971
90004
  /**
89972
90005
  * @description
89973
90006
  * The `dragToScroll` option configures the [`DragToScroll`](@/api/dragToScroll.md) plugin.
@@ -101767,6 +101800,7 @@ function numericRenderer(hotInstance, TD, row, col, prop, value, cellProperties)
101767
101800
  cellProperties.className = classArr.join(' ');
101768
101801
  TD.dir = 'ltr';
101769
101802
  }
101803
+ cellProperties.displayValue = newValue;
101770
101804
  (0, _textRenderer.textRenderer)(hotInstance, TD, row, col, prop, newValue, cellProperties);
101771
101805
  }
101772
101806
  numericRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -120376,6 +120410,7 @@ exports.__esModule = true;
120376
120410
  exports.createArrayAssertion = createArrayAssertion;
120377
120411
  exports.intersectValues = intersectValues;
120378
120412
  exports.sortComparison = sortComparison;
120413
+ exports.syncDisplayValuesToUnifiedValues = syncDisplayValuesToUnifiedValues;
120379
120414
  exports.toEmptyString = toEmptyString;
120380
120415
  exports.toVisualValue = toVisualValue;
120381
120416
  exports.unifyColumnValues = unifyColumnValues;
@@ -120403,12 +120438,15 @@ function sortComparison(a, b) {
120403
120438
  *
120404
120439
  * @param {*} value The value to convert.
120405
120440
  * @param {string} defaultEmptyValue Default value for empty cells.
120441
+ * @param {string} [displayValue] The display value.
120406
120442
  * @returns {*}
120407
120443
  */
120408
- function toVisualValue(value, defaultEmptyValue) {
120444
+ function toVisualValue(value, defaultEmptyValue, displayValue) {
120409
120445
  let visualValue = value;
120410
120446
  if (visualValue === '') {
120411
120447
  visualValue = `(${defaultEmptyValue})`;
120448
+ } else if (displayValue) {
120449
+ visualValue = displayValue;
120412
120450
  }
120413
120451
  return visualValue;
120414
120452
  }
@@ -120449,7 +120487,7 @@ function toEmptyString(value) {
120449
120487
  }
120450
120488
 
120451
120489
  /**
120452
- * Unify column values (replace `null` and `undefined` values into empty string, unique values and sort them).
120490
+ * Unify column values (remove duplicated values and sort them).
120453
120491
  *
120454
120492
  * @param {Array} values An array of values.
120455
120493
  * @returns {Array}
@@ -120473,23 +120511,43 @@ function unifyColumnValues(values) {
120473
120511
  return unifiedValues;
120474
120512
  }
120475
120513
 
120514
+ /**
120515
+ * Synchronize display values with the provided unified values.
120516
+ *
120517
+ * @param {Array} displayValues An array of display values.
120518
+ * @param {Array} values An array of source values.
120519
+ * @param {Array} unifiedValues An array of unified values.
120520
+ *
120521
+ * @returns {Array} An array of synchronized display values.
120522
+ */
120523
+ function syncDisplayValuesToUnifiedValues(displayValues, values, unifiedValues) {
120524
+ const syncedDisplayValues = [];
120525
+ (0, _array.arrayEach)(unifiedValues, unifiedValue => {
120526
+ const index = values.indexOf(unifiedValue);
120527
+ const displayValue = displayValues[index];
120528
+ syncedDisplayValues.push(displayValue);
120529
+ });
120530
+ return syncedDisplayValues;
120531
+ }
120532
+
120476
120533
  /**
120477
120534
  * Intersect 'base' values with 'selected' values and return an array of object.
120478
120535
  *
120479
120536
  * @param {Array} base An array of base values.
120480
120537
  * @param {Array} selected An array of selected values.
120481
120538
  * @param {string} defaultEmptyValue Default value for empty cells.
120539
+ * @param {string[]} [displayValues] An array of display values.
120482
120540
  * @param {Function} [callback] A callback function which is invoked for every item in an array.
120483
120541
  * @returns {Array}
120484
120542
  */
120485
- function intersectValues(base, selected, defaultEmptyValue, callback) {
120543
+ function intersectValues(base, selected, defaultEmptyValue, displayValues, callback) {
120486
120544
  const result = [];
120487
120545
  const same = base === selected;
120488
120546
  let selectedItemsAssertion;
120489
120547
  if (!same) {
120490
120548
  selectedItemsAssertion = createArrayAssertion(selected);
120491
120549
  }
120492
- (0, _array.arrayEach)(base, value => {
120550
+ (0, _array.arrayEach)(base, (value, index) => {
120493
120551
  let checked = false;
120494
120552
  if (same || selectedItemsAssertion(value)) {
120495
120553
  checked = true;
@@ -120497,7 +120555,7 @@ function intersectValues(base, selected, defaultEmptyValue, callback) {
120497
120555
  const item = {
120498
120556
  checked,
120499
120557
  value,
120500
- visualValue: toVisualValue(value, defaultEmptyValue)
120558
+ visualValue: toVisualValue(value, defaultEmptyValue, displayValues[index])
120501
120559
  };
120502
120560
  if (callback) {
120503
120561
  callback(item);
@@ -121692,17 +121750,23 @@ class ValueComponent extends _base.BaseComponent {
121692
121750
  * `editedConditionStack`, `dependentConditionStacks`, `visibleDataFactory` and `conditionArgsChange`.
121693
121751
  */
121694
121752
  updateState(stateInfo) {
121753
+ const multipleSelectComponent = this.getMultipleSelectElement();
121695
121754
  const updateColumnState = (physicalColumn, conditions, conditionArgsChange, filteredRowsFactory, conditionsStack) => {
121696
121755
  const [firstByValueCondition] = (0, _array.arrayFilter)(conditions, condition => condition.name === _constants2.CONDITION_BY_VALUE);
121697
121756
  const state = {};
121698
121757
  const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
121699
121758
  if (firstByValueCondition) {
121700
- const rowValues = (0, _utils.unifyColumnValues)((0, _array.arrayMap)(filteredRowsFactory(physicalColumn, conditionsStack), row => row.value));
121759
+ const filteredRows = filteredRowsFactory(physicalColumn, conditionsStack);
121760
+ const rowValues = (0, _array.arrayMap)(filteredRows, row => row.value);
121761
+ const rowIndexes = (0, _array.arrayMap)(filteredRows, row => row.meta.visualRow);
121762
+ const unifiedRowValues = (0, _utils.unifyColumnValues)(rowValues);
121763
+ const displayValues = (multipleSelectComponent.getDisplayValuesAtCol(this.hot.toVisualColumn(physicalColumn)) || []).filter((value, index) => rowIndexes.includes(index));
121764
+ const displayValuesSyncedWithUnifiedValues = (0, _utils.syncDisplayValuesToUnifiedValues)(displayValues, rowValues, unifiedRowValues);
121701
121765
  if (conditionArgsChange) {
121702
121766
  firstByValueCondition.args[0] = conditionArgsChange;
121703
121767
  }
121704
121768
  const selectedValues = [];
121705
- const itemsSnapshot = (0, _utils.intersectValues)(rowValues, firstByValueCondition.args[0], defaultBlankCellValue, item => {
121769
+ const itemsSnapshot = (0, _utils.intersectValues)(unifiedRowValues, firstByValueCondition.args[0], defaultBlankCellValue, displayValuesSyncedWithUnifiedValues, item => {
121706
121770
  if (item.checked) {
121707
121771
  selectedValues.push(item.value);
121708
121772
  }
@@ -121765,13 +121829,17 @@ class ValueComponent extends _base.BaseComponent {
121765
121829
  * Reset elements to their initial state.
121766
121830
  */
121767
121831
  reset() {
121832
+ const multiSelectComponent = this.getMultipleSelectElement();
121833
+ const selectedColumn = this.hot.getPlugin('filters').getSelectedColumn();
121768
121834
  const defaultBlankCellValue = this.hot.getTranslatedPhrase(C.FILTERS_VALUES_BLANK_CELLS);
121769
- const values = (0, _utils.unifyColumnValues)(this._getColumnVisibleValues());
121770
- const items = (0, _utils.intersectValues)(values, values, defaultBlankCellValue);
121835
+ const values = this._getColumnVisibleValues();
121836
+ const unifiedValues = (0, _utils.unifyColumnValues)(values);
121837
+ const displayValues = multiSelectComponent.getDisplayValuesAtCol(selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.visualIndex) || [];
121838
+ const displayValuesSyncedWithUnifiedValues = (0, _utils.syncDisplayValuesToUnifiedValues)(displayValues, values, unifiedValues);
121839
+ const items = (0, _utils.intersectValues)(unifiedValues, unifiedValues, defaultBlankCellValue, displayValuesSyncedWithUnifiedValues || []);
121771
121840
  this.getMultipleSelectElement().setItems(items);
121772
121841
  super.reset();
121773
- this.getMultipleSelectElement().setValue(values);
121774
- const selectedColumn = this.hot.getPlugin('filters').getSelectedColumn();
121842
+ this.getMultipleSelectElement().setValue(unifiedValues);
121775
121843
  if (selectedColumn !== null) {
121776
121844
  this.getMultipleSelectElement().setLocale(this.hot.getCellMeta(0, selectedColumn.visualIndex).locale);
121777
121845
  }
@@ -122183,6 +122251,44 @@ class MultipleSelectUI extends _base.BaseUI {
122183
122251
  (0, _classPrivateFieldSet2.default)(this, _items, null);
122184
122252
  super.destroy();
122185
122253
  }
122254
+
122255
+ /**
122256
+ * Returns the display values for all the cells at the given `column` visual index.
122257
+ * If no display values are defined, the `source data` values will be returned instead.
122258
+ *
122259
+ * If the provided column index is not a valid integer, the method will return `null`.
122260
+ *
122261
+ * @param {number} column From visual column index.
122262
+ * @returns {Array[]|null} Array containing the display values of all the cells in the column.
122263
+ */
122264
+ getDisplayValuesAtCol(column) {
122265
+ if (!Number.isInteger(column)) {
122266
+ return null;
122267
+ }
122268
+ const sourceRowCount = this.hot.countSourceRows();
122269
+ const columnData = [];
122270
+ let returnValue;
122271
+ for (let row = 0; row < sourceRowCount; row += 1) {
122272
+ const cellMeta = this.hot.getCellMeta(row, column);
122273
+ const {
122274
+ prop,
122275
+ displayValue
122276
+ } = cellMeta;
122277
+ const cellSourceData = this.hot.getSourceDataAtCell(row, column);
122278
+ if (displayValue) {
122279
+ returnValue = displayValue;
122280
+ } else {
122281
+ var _cellMeta$displayValu;
122282
+ // Render the cell in a mock element to try to get the display value (possibly applied in the renderer).
122283
+ (0, _element.renderMockCell)(this.hot.rootDocument, this.hot.getCellRenderer(row, column), [this.hot, row, column, prop, cellSourceData, cellMeta]);
122284
+
122285
+ // Retry getting the display value.
122286
+ returnValue = (_cellMeta$displayValu = cellMeta.displayValue) !== null && _cellMeta$displayValu !== void 0 ? _cellMeta$displayValu : cellSourceData;
122287
+ }
122288
+ columnData.push(returnValue);
122289
+ }
122290
+ return columnData;
122291
+ }
122186
122292
  }
122187
122293
  exports.MultipleSelectUI = MultipleSelectUI;
122188
122294
  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}
31
31
  /*!
32
32
  * Pikaday