handsontable 0.0.0-next-7cf23cf-20240507 → 0.0.0-next-c4a5d06-20240509

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 = "07/05/2024 14:37:38";
49
- Handsontable.version = "0.0.0-next-7cf23cf-20240507";
48
+ Handsontable.buildDate = "09/05/2024 06:58:12";
49
+ Handsontable.version = "0.0.0-next-c4a5d06-20240509";
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 = "07/05/2024 14:37:44";
39
- Handsontable.version = "0.0.0-next-7cf23cf-20240507";
38
+ Handsontable.buildDate = "09/05/2024 06:58:18";
39
+ Handsontable.version = "0.0.0-next-c4a5d06-20240509";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
package/core.js CHANGED
@@ -583,6 +583,14 @@ function Core(rootElement, userSettings) {
583
583
  // Remove from the stack the last added selection as that selection below will be
584
584
  // replaced by new transformed selection.
585
585
  selection.getSelectedRange().pop();
586
+ instance.addHookOnce('afterSelection', function () {
587
+ for (var _len16 = arguments.length, _ref5 = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
588
+ _ref5[_key16] = arguments[_key16];
589
+ }
590
+ let [,,,, preventScrolling] = _ref5;
591
+ preventScrolling.value = true;
592
+ });
593
+
586
594
  // I can't use transforms as they don't work in negative indexes.
587
595
  selection.setRangeStartOnly(instance._createCellCoords(currentFromRow + rowDelta, currentFromColumn), true);
588
596
  selection.setRangeEnd(instance._createCellCoords(currentToRow + rowDelta, currentToColumn)); // will call render() internally
@@ -651,8 +659,8 @@ function Core(rootElement, userSettings) {
651
659
  let offset = 0;
652
660
 
653
661
  // Normalize the {index, amount} groups into bigger groups.
654
- (0, _array.arrayEach)(indexes, _ref5 => {
655
- let [groupIndex, groupAmount] = _ref5;
662
+ (0, _array.arrayEach)(indexes, _ref6 => {
663
+ let [groupIndex, groupAmount] = _ref6;
656
664
  const calcIndex = (0, _mixed.isEmpty)(groupIndex) ? instance.countRows() - 1 : Math.max(groupIndex - offset, 0);
657
665
 
658
666
  // If the 'index' is an integer decrease it by 'offset' otherwise pass it through to make the value
@@ -693,8 +701,8 @@ function Core(rootElement, userSettings) {
693
701
  let offset = 0;
694
702
 
695
703
  // Normalize the {index, amount} groups into bigger groups.
696
- (0, _array.arrayEach)(indexes, _ref6 => {
697
- let [groupIndex, groupAmount] = _ref6;
704
+ (0, _array.arrayEach)(indexes, _ref7 => {
705
+ let [groupIndex, groupAmount] = _ref7;
698
706
  const calcIndex = (0, _mixed.isEmpty)(groupIndex) ? instance.countCols() - 1 : Math.max(groupIndex - offset, 0);
699
707
  let physicalColumnIndex = instance.toPhysicalColumn(calcIndex);
700
708
 
@@ -1204,8 +1212,18 @@ function Core(rootElement, userSettings) {
1204
1212
  };
1205
1213
  for (let i = changes.length - 1; i >= 0; i--) {
1206
1214
  const [row, prop,, newValue] = changes[i];
1207
- const col = datamap.propToCol(prop);
1208
- const cellProperties = instance.getCellMeta(row, col);
1215
+ const visualCol = datamap.propToCol(prop);
1216
+ let cellProperties;
1217
+ if (Number.isInteger(visualCol)) {
1218
+ cellProperties = instance.getCellMeta(row, visualCol);
1219
+ } else {
1220
+ // If there's no requested visual column, we can use the table meta as the cell properties when retrieving
1221
+ // the cell validator.
1222
+ cellProperties = {
1223
+ ...Object.getPrototypeOf(tableMeta),
1224
+ ...tableMeta
1225
+ };
1226
+ }
1209
1227
  if (cellProperties.type === 'numeric' && typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
1210
1228
  changes[i][3] = getParsedNumber(newValue);
1211
1229
  }
@@ -1507,6 +1525,9 @@ function Core(rootElement, userSettings) {
1507
1525
  for (i = 0, ilen = input.length; i < ilen; i++) {
1508
1526
  changes.push([input[i][0], input[i][1], dataSource.getAtCell(this.toPhysicalRow(input[i][0]), input[i][1]), input[i][2]]);
1509
1527
  }
1528
+
1529
+ // TODO: I don't think `prop` should be used as `changeSource` here, but removing it would be a breaking change.
1530
+ // We should remove it with the next major release.
1510
1531
  if (!changeSource && typeof row === 'object') {
1511
1532
  changeSource = prop;
1512
1533
  }
@@ -1615,8 +1636,8 @@ function Core(rootElement, userSettings) {
1615
1636
  * @returns {Array} Returns removed portion of columns.
1616
1637
  */
1617
1638
  this.spliceCol = function (column, index, amount) {
1618
- for (var _len16 = arguments.length, elements = new Array(_len16 > 3 ? _len16 - 3 : 0), _key16 = 3; _key16 < _len16; _key16++) {
1619
- elements[_key16 - 3] = arguments[_key16];
1639
+ for (var _len17 = arguments.length, elements = new Array(_len17 > 3 ? _len17 - 3 : 0), _key17 = 3; _key17 < _len17; _key17++) {
1640
+ elements[_key17 - 3] = arguments[_key17];
1620
1641
  }
1621
1642
  return datamap.spliceCol(column, index, amount, ...elements);
1622
1643
  };
@@ -1633,8 +1654,8 @@ function Core(rootElement, userSettings) {
1633
1654
  * @returns {Array} Returns removed portion of rows.
1634
1655
  */
1635
1656
  this.spliceRow = function (row, index, amount) {
1636
- for (var _len17 = arguments.length, elements = new Array(_len17 > 3 ? _len17 - 3 : 0), _key17 = 3; _key17 < _len17; _key17++) {
1637
- elements[_key17 - 3] = arguments[_key17];
1657
+ for (var _len18 = arguments.length, elements = new Array(_len18 > 3 ? _len18 - 3 : 0), _key18 = 3; _key18 < _len18; _key18++) {
1658
+ elements[_key18 - 3] = arguments[_key18];
1638
1659
  }
1639
1660
  return datamap.spliceRow(row, index, amount, ...elements);
1640
1661
  };
@@ -1655,11 +1676,11 @@ function Core(rootElement, userSettings) {
1655
1676
  this.getSelected = function () {
1656
1677
  // https://github.com/handsontable/handsontable/issues/44 //cjl
1657
1678
  if (selection.isSelected()) {
1658
- return (0, _array.arrayMap)(selection.getSelectedRange(), _ref7 => {
1679
+ return (0, _array.arrayMap)(selection.getSelectedRange(), _ref8 => {
1659
1680
  let {
1660
1681
  from,
1661
1682
  to
1662
- } = _ref7;
1683
+ } = _ref8;
1663
1684
  return [from.row, from.col, to.row, to.col];
1664
1685
  });
1665
1686
  }
@@ -2608,7 +2629,7 @@ function Core(rootElement, userSettings) {
2608
2629
  }
2609
2630
  renderableRowIndex = this.rowIndexMapper.getRenderableFromVisualIndex(row);
2610
2631
  }
2611
- if (renderableRowIndex === null || renderableColumnIndex === null) {
2632
+ if (renderableRowIndex === null || renderableColumnIndex === null || renderableRowIndex === undefined || renderableColumnIndex === undefined) {
2612
2633
  return null;
2613
2634
  }
2614
2635
  return instance.view.getCellAtCoords(instance._createCellCoords(renderableRowIndex, renderableColumnIndex), topmost);
@@ -2885,15 +2906,15 @@ function Core(rootElement, userSettings) {
2885
2906
  const isThereAnySetSourceListener = this.hasHook('afterSetSourceDataAtCell');
2886
2907
  const changesForHook = [];
2887
2908
  if (isThereAnySetSourceListener) {
2888
- (0, _array.arrayEach)(input, _ref8 => {
2889
- let [changeRow, changeProp, changeValue] = _ref8;
2909
+ (0, _array.arrayEach)(input, _ref9 => {
2910
+ let [changeRow, changeProp, changeValue] = _ref9;
2890
2911
  changesForHook.push([changeRow, changeProp, dataSource.getAtCell(changeRow, changeProp),
2891
2912
  // The previous value.
2892
2913
  changeValue]);
2893
2914
  });
2894
2915
  }
2895
- (0, _array.arrayEach)(input, _ref9 => {
2896
- let [changeRow, changeProp, changeValue] = _ref9;
2916
+ (0, _array.arrayEach)(input, _ref10 => {
2917
+ let [changeRow, changeProp, changeValue] = _ref10;
2897
2918
  dataSource.setAtCell(changeRow, changeProp, changeValue);
2898
2919
  });
2899
2920
  if (isThereAnySetSourceListener) {
@@ -3031,8 +3052,8 @@ function Core(rootElement, userSettings) {
3031
3052
  */
3032
3053
  this.spliceCellsMeta = function (visualIndex) {
3033
3054
  let deleteAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
3034
- for (var _len18 = arguments.length, cellMetaRows = new Array(_len18 > 2 ? _len18 - 2 : 0), _key18 = 2; _key18 < _len18; _key18++) {
3035
- cellMetaRows[_key18 - 2] = arguments[_key18];
3055
+ for (var _len19 = arguments.length, cellMetaRows = new Array(_len19 > 2 ? _len19 - 2 : 0), _key19 = 2; _key19 < _len19; _key19++) {
3056
+ cellMetaRows[_key19 - 2] = arguments[_key19];
3036
3057
  }
3037
3058
  if (cellMetaRows.length > 0 && !Array.isArray(cellMetaRows[0])) {
3038
3059
  throw new Error('The 3rd argument (cellMetaRows) has to be passed as an array of cell meta objects array.');
@@ -4245,8 +4266,8 @@ function Core(rootElement, userSettings) {
4245
4266
  instance.batchExecution(() => {
4246
4267
  instance.rowIndexMapper.unregisterAll();
4247
4268
  instance.columnIndexMapper.unregisterAll();
4248
- pluginsRegistry.getItems().forEach(_ref10 => {
4249
- let [, plugin] = _ref10;
4269
+ pluginsRegistry.getItems().forEach(_ref11 => {
4270
+ let [, plugin] = _ref11;
4250
4271
  plugin.destroy();
4251
4272
  });
4252
4273
  pluginsRegistry.clear();
package/core.mjs CHANGED
@@ -578,6 +578,14 @@ export default function Core(rootElement, userSettings) {
578
578
  // Remove from the stack the last added selection as that selection below will be
579
579
  // replaced by new transformed selection.
580
580
  selection.getSelectedRange().pop();
581
+ instance.addHookOnce('afterSelection', function () {
582
+ for (var _len16 = arguments.length, _ref5 = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
583
+ _ref5[_key16] = arguments[_key16];
584
+ }
585
+ let [,,,, preventScrolling] = _ref5;
586
+ preventScrolling.value = true;
587
+ });
588
+
581
589
  // I can't use transforms as they don't work in negative indexes.
582
590
  selection.setRangeStartOnly(instance._createCellCoords(currentFromRow + rowDelta, currentFromColumn), true);
583
591
  selection.setRangeEnd(instance._createCellCoords(currentToRow + rowDelta, currentToColumn)); // will call render() internally
@@ -646,8 +654,8 @@ export default function Core(rootElement, userSettings) {
646
654
  let offset = 0;
647
655
 
648
656
  // Normalize the {index, amount} groups into bigger groups.
649
- arrayEach(indexes, _ref5 => {
650
- let [groupIndex, groupAmount] = _ref5;
657
+ arrayEach(indexes, _ref6 => {
658
+ let [groupIndex, groupAmount] = _ref6;
651
659
  const calcIndex = isEmpty(groupIndex) ? instance.countRows() - 1 : Math.max(groupIndex - offset, 0);
652
660
 
653
661
  // If the 'index' is an integer decrease it by 'offset' otherwise pass it through to make the value
@@ -688,8 +696,8 @@ export default function Core(rootElement, userSettings) {
688
696
  let offset = 0;
689
697
 
690
698
  // Normalize the {index, amount} groups into bigger groups.
691
- arrayEach(indexes, _ref6 => {
692
- let [groupIndex, groupAmount] = _ref6;
699
+ arrayEach(indexes, _ref7 => {
700
+ let [groupIndex, groupAmount] = _ref7;
693
701
  const calcIndex = isEmpty(groupIndex) ? instance.countCols() - 1 : Math.max(groupIndex - offset, 0);
694
702
  let physicalColumnIndex = instance.toPhysicalColumn(calcIndex);
695
703
 
@@ -1199,8 +1207,18 @@ export default function Core(rootElement, userSettings) {
1199
1207
  };
1200
1208
  for (let i = changes.length - 1; i >= 0; i--) {
1201
1209
  const [row, prop,, newValue] = changes[i];
1202
- const col = datamap.propToCol(prop);
1203
- const cellProperties = instance.getCellMeta(row, col);
1210
+ const visualCol = datamap.propToCol(prop);
1211
+ let cellProperties;
1212
+ if (Number.isInteger(visualCol)) {
1213
+ cellProperties = instance.getCellMeta(row, visualCol);
1214
+ } else {
1215
+ // If there's no requested visual column, we can use the table meta as the cell properties when retrieving
1216
+ // the cell validator.
1217
+ cellProperties = {
1218
+ ...Object.getPrototypeOf(tableMeta),
1219
+ ...tableMeta
1220
+ };
1221
+ }
1204
1222
  if (cellProperties.type === 'numeric' && typeof newValue === 'string' && isNumericLike(newValue)) {
1205
1223
  changes[i][3] = getParsedNumber(newValue);
1206
1224
  }
@@ -1502,6 +1520,9 @@ export default function Core(rootElement, userSettings) {
1502
1520
  for (i = 0, ilen = input.length; i < ilen; i++) {
1503
1521
  changes.push([input[i][0], input[i][1], dataSource.getAtCell(this.toPhysicalRow(input[i][0]), input[i][1]), input[i][2]]);
1504
1522
  }
1523
+
1524
+ // TODO: I don't think `prop` should be used as `changeSource` here, but removing it would be a breaking change.
1525
+ // We should remove it with the next major release.
1505
1526
  if (!changeSource && typeof row === 'object') {
1506
1527
  changeSource = prop;
1507
1528
  }
@@ -1610,8 +1631,8 @@ export default function Core(rootElement, userSettings) {
1610
1631
  * @returns {Array} Returns removed portion of columns.
1611
1632
  */
1612
1633
  this.spliceCol = function (column, index, amount) {
1613
- for (var _len16 = arguments.length, elements = new Array(_len16 > 3 ? _len16 - 3 : 0), _key16 = 3; _key16 < _len16; _key16++) {
1614
- elements[_key16 - 3] = arguments[_key16];
1634
+ for (var _len17 = arguments.length, elements = new Array(_len17 > 3 ? _len17 - 3 : 0), _key17 = 3; _key17 < _len17; _key17++) {
1635
+ elements[_key17 - 3] = arguments[_key17];
1615
1636
  }
1616
1637
  return datamap.spliceCol(column, index, amount, ...elements);
1617
1638
  };
@@ -1628,8 +1649,8 @@ export default function Core(rootElement, userSettings) {
1628
1649
  * @returns {Array} Returns removed portion of rows.
1629
1650
  */
1630
1651
  this.spliceRow = function (row, index, amount) {
1631
- for (var _len17 = arguments.length, elements = new Array(_len17 > 3 ? _len17 - 3 : 0), _key17 = 3; _key17 < _len17; _key17++) {
1632
- elements[_key17 - 3] = arguments[_key17];
1652
+ for (var _len18 = arguments.length, elements = new Array(_len18 > 3 ? _len18 - 3 : 0), _key18 = 3; _key18 < _len18; _key18++) {
1653
+ elements[_key18 - 3] = arguments[_key18];
1633
1654
  }
1634
1655
  return datamap.spliceRow(row, index, amount, ...elements);
1635
1656
  };
@@ -1650,11 +1671,11 @@ export default function Core(rootElement, userSettings) {
1650
1671
  this.getSelected = function () {
1651
1672
  // https://github.com/handsontable/handsontable/issues/44 //cjl
1652
1673
  if (selection.isSelected()) {
1653
- return arrayMap(selection.getSelectedRange(), _ref7 => {
1674
+ return arrayMap(selection.getSelectedRange(), _ref8 => {
1654
1675
  let {
1655
1676
  from,
1656
1677
  to
1657
- } = _ref7;
1678
+ } = _ref8;
1658
1679
  return [from.row, from.col, to.row, to.col];
1659
1680
  });
1660
1681
  }
@@ -2603,7 +2624,7 @@ export default function Core(rootElement, userSettings) {
2603
2624
  }
2604
2625
  renderableRowIndex = this.rowIndexMapper.getRenderableFromVisualIndex(row);
2605
2626
  }
2606
- if (renderableRowIndex === null || renderableColumnIndex === null) {
2627
+ if (renderableRowIndex === null || renderableColumnIndex === null || renderableRowIndex === undefined || renderableColumnIndex === undefined) {
2607
2628
  return null;
2608
2629
  }
2609
2630
  return instance.view.getCellAtCoords(instance._createCellCoords(renderableRowIndex, renderableColumnIndex), topmost);
@@ -2880,15 +2901,15 @@ export default function Core(rootElement, userSettings) {
2880
2901
  const isThereAnySetSourceListener = this.hasHook('afterSetSourceDataAtCell');
2881
2902
  const changesForHook = [];
2882
2903
  if (isThereAnySetSourceListener) {
2883
- arrayEach(input, _ref8 => {
2884
- let [changeRow, changeProp, changeValue] = _ref8;
2904
+ arrayEach(input, _ref9 => {
2905
+ let [changeRow, changeProp, changeValue] = _ref9;
2885
2906
  changesForHook.push([changeRow, changeProp, dataSource.getAtCell(changeRow, changeProp),
2886
2907
  // The previous value.
2887
2908
  changeValue]);
2888
2909
  });
2889
2910
  }
2890
- arrayEach(input, _ref9 => {
2891
- let [changeRow, changeProp, changeValue] = _ref9;
2911
+ arrayEach(input, _ref10 => {
2912
+ let [changeRow, changeProp, changeValue] = _ref10;
2892
2913
  dataSource.setAtCell(changeRow, changeProp, changeValue);
2893
2914
  });
2894
2915
  if (isThereAnySetSourceListener) {
@@ -3026,8 +3047,8 @@ export default function Core(rootElement, userSettings) {
3026
3047
  */
3027
3048
  this.spliceCellsMeta = function (visualIndex) {
3028
3049
  let deleteAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
3029
- for (var _len18 = arguments.length, cellMetaRows = new Array(_len18 > 2 ? _len18 - 2 : 0), _key18 = 2; _key18 < _len18; _key18++) {
3030
- cellMetaRows[_key18 - 2] = arguments[_key18];
3050
+ for (var _len19 = arguments.length, cellMetaRows = new Array(_len19 > 2 ? _len19 - 2 : 0), _key19 = 2; _key19 < _len19; _key19++) {
3051
+ cellMetaRows[_key19 - 2] = arguments[_key19];
3031
3052
  }
3032
3053
  if (cellMetaRows.length > 0 && !Array.isArray(cellMetaRows[0])) {
3033
3054
  throw new Error('The 3rd argument (cellMetaRows) has to be passed as an array of cell meta objects array.');
@@ -4240,8 +4261,8 @@ export default function Core(rootElement, userSettings) {
4240
4261
  instance.batchExecution(() => {
4241
4262
  instance.rowIndexMapper.unregisterAll();
4242
4263
  instance.columnIndexMapper.unregisterAll();
4243
- pluginsRegistry.getItems().forEach(_ref10 => {
4244
- let [, plugin] = _ref10;
4264
+ pluginsRegistry.getItems().forEach(_ref11 => {
4265
+ let [, plugin] = _ref11;
4245
4266
  plugin.destroy();
4246
4267
  });
4247
4268
  pluginsRegistry.clear();
@@ -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-7cf23cf-20240507
29
- * Release date: 16/04/2024 (built at 07/05/2024 14:37:49)
28
+ * Version: 0.0.0-next-c4a5d06-20240509
29
+ * Release date: 16/04/2024 (built at 09/05/2024 06:58:22)
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-7cf23cf-20240507
29
- * Release date: 16/04/2024 (built at 07/05/2024 14:37:49)
28
+ * Version: 0.0.0-next-c4a5d06-20240509
29
+ * Release date: 16/04/2024 (built at 09/05/2024 06:58:22)
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-7cf23cf-20240507
29
- * Release date: 16/04/2024 (built at 07/05/2024 14:37:49)
28
+ * Version: 0.0.0-next-c4a5d06-20240509
29
+ * Release date: 16/04/2024 (built at 09/05/2024 06:58:22)
30
30
  */
31
31
  (function webpackUniversalModuleDefinition(root, factory) {
32
32
  if(typeof exports === 'object' && typeof module === 'object')
@@ -42675,8 +42675,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
42675
42675
  Handsontable.CellCoords = _src.CellCoords;
42676
42676
  Handsontable.CellRange = _src.CellRange;
42677
42677
  Handsontable.packageName = 'handsontable';
42678
- Handsontable.buildDate = "07/05/2024 14:37:49";
42679
- Handsontable.version = "0.0.0-next-7cf23cf-20240507";
42678
+ Handsontable.buildDate = "09/05/2024 06:58:22";
42679
+ Handsontable.version = "0.0.0-next-c4a5d06-20240509";
42680
42680
  Handsontable.languages = {
42681
42681
  dictionaryKeys: _registry.dictionaryKeys,
42682
42682
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -43312,6 +43312,14 @@ function Core(rootElement, userSettings) {
43312
43312
  // Remove from the stack the last added selection as that selection below will be
43313
43313
  // replaced by new transformed selection.
43314
43314
  selection.getSelectedRange().pop();
43315
+ instance.addHookOnce('afterSelection', function () {
43316
+ for (var _len16 = arguments.length, _ref5 = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
43317
+ _ref5[_key16] = arguments[_key16];
43318
+ }
43319
+ let [,,,, preventScrolling] = _ref5;
43320
+ preventScrolling.value = true;
43321
+ });
43322
+
43315
43323
  // I can't use transforms as they don't work in negative indexes.
43316
43324
  selection.setRangeStartOnly(instance._createCellCoords(currentFromRow + rowDelta, currentFromColumn), true);
43317
43325
  selection.setRangeEnd(instance._createCellCoords(currentToRow + rowDelta, currentToColumn)); // will call render() internally
@@ -43380,8 +43388,8 @@ function Core(rootElement, userSettings) {
43380
43388
  let offset = 0;
43381
43389
 
43382
43390
  // Normalize the {index, amount} groups into bigger groups.
43383
- (0, _array.arrayEach)(indexes, _ref5 => {
43384
- let [groupIndex, groupAmount] = _ref5;
43391
+ (0, _array.arrayEach)(indexes, _ref6 => {
43392
+ let [groupIndex, groupAmount] = _ref6;
43385
43393
  const calcIndex = (0, _mixed.isEmpty)(groupIndex) ? instance.countRows() - 1 : Math.max(groupIndex - offset, 0);
43386
43394
 
43387
43395
  // If the 'index' is an integer decrease it by 'offset' otherwise pass it through to make the value
@@ -43422,8 +43430,8 @@ function Core(rootElement, userSettings) {
43422
43430
  let offset = 0;
43423
43431
 
43424
43432
  // Normalize the {index, amount} groups into bigger groups.
43425
- (0, _array.arrayEach)(indexes, _ref6 => {
43426
- let [groupIndex, groupAmount] = _ref6;
43433
+ (0, _array.arrayEach)(indexes, _ref7 => {
43434
+ let [groupIndex, groupAmount] = _ref7;
43427
43435
  const calcIndex = (0, _mixed.isEmpty)(groupIndex) ? instance.countCols() - 1 : Math.max(groupIndex - offset, 0);
43428
43436
  let physicalColumnIndex = instance.toPhysicalColumn(calcIndex);
43429
43437
 
@@ -43933,8 +43941,18 @@ function Core(rootElement, userSettings) {
43933
43941
  };
43934
43942
  for (let i = changes.length - 1; i >= 0; i--) {
43935
43943
  const [row, prop,, newValue] = changes[i];
43936
- const col = datamap.propToCol(prop);
43937
- const cellProperties = instance.getCellMeta(row, col);
43944
+ const visualCol = datamap.propToCol(prop);
43945
+ let cellProperties;
43946
+ if (Number.isInteger(visualCol)) {
43947
+ cellProperties = instance.getCellMeta(row, visualCol);
43948
+ } else {
43949
+ // If there's no requested visual column, we can use the table meta as the cell properties when retrieving
43950
+ // the cell validator.
43951
+ cellProperties = {
43952
+ ...Object.getPrototypeOf(tableMeta),
43953
+ ...tableMeta
43954
+ };
43955
+ }
43938
43956
  if (cellProperties.type === 'numeric' && typeof newValue === 'string' && (0, _number.isNumericLike)(newValue)) {
43939
43957
  changes[i][3] = getParsedNumber(newValue);
43940
43958
  }
@@ -44236,6 +44254,9 @@ function Core(rootElement, userSettings) {
44236
44254
  for (i = 0, ilen = input.length; i < ilen; i++) {
44237
44255
  changes.push([input[i][0], input[i][1], dataSource.getAtCell(this.toPhysicalRow(input[i][0]), input[i][1]), input[i][2]]);
44238
44256
  }
44257
+
44258
+ // TODO: I don't think `prop` should be used as `changeSource` here, but removing it would be a breaking change.
44259
+ // We should remove it with the next major release.
44239
44260
  if (!changeSource && typeof row === 'object') {
44240
44261
  changeSource = prop;
44241
44262
  }
@@ -44344,8 +44365,8 @@ function Core(rootElement, userSettings) {
44344
44365
  * @returns {Array} Returns removed portion of columns.
44345
44366
  */
44346
44367
  this.spliceCol = function (column, index, amount) {
44347
- for (var _len16 = arguments.length, elements = new Array(_len16 > 3 ? _len16 - 3 : 0), _key16 = 3; _key16 < _len16; _key16++) {
44348
- elements[_key16 - 3] = arguments[_key16];
44368
+ for (var _len17 = arguments.length, elements = new Array(_len17 > 3 ? _len17 - 3 : 0), _key17 = 3; _key17 < _len17; _key17++) {
44369
+ elements[_key17 - 3] = arguments[_key17];
44349
44370
  }
44350
44371
  return datamap.spliceCol(column, index, amount, ...elements);
44351
44372
  };
@@ -44362,8 +44383,8 @@ function Core(rootElement, userSettings) {
44362
44383
  * @returns {Array} Returns removed portion of rows.
44363
44384
  */
44364
44385
  this.spliceRow = function (row, index, amount) {
44365
- for (var _len17 = arguments.length, elements = new Array(_len17 > 3 ? _len17 - 3 : 0), _key17 = 3; _key17 < _len17; _key17++) {
44366
- elements[_key17 - 3] = arguments[_key17];
44386
+ for (var _len18 = arguments.length, elements = new Array(_len18 > 3 ? _len18 - 3 : 0), _key18 = 3; _key18 < _len18; _key18++) {
44387
+ elements[_key18 - 3] = arguments[_key18];
44367
44388
  }
44368
44389
  return datamap.spliceRow(row, index, amount, ...elements);
44369
44390
  };
@@ -44384,11 +44405,11 @@ function Core(rootElement, userSettings) {
44384
44405
  this.getSelected = function () {
44385
44406
  // https://github.com/handsontable/handsontable/issues/44 //cjl
44386
44407
  if (selection.isSelected()) {
44387
- return (0, _array.arrayMap)(selection.getSelectedRange(), _ref7 => {
44408
+ return (0, _array.arrayMap)(selection.getSelectedRange(), _ref8 => {
44388
44409
  let {
44389
44410
  from,
44390
44411
  to
44391
- } = _ref7;
44412
+ } = _ref8;
44392
44413
  return [from.row, from.col, to.row, to.col];
44393
44414
  });
44394
44415
  }
@@ -45337,7 +45358,7 @@ function Core(rootElement, userSettings) {
45337
45358
  }
45338
45359
  renderableRowIndex = this.rowIndexMapper.getRenderableFromVisualIndex(row);
45339
45360
  }
45340
- if (renderableRowIndex === null || renderableColumnIndex === null) {
45361
+ if (renderableRowIndex === null || renderableColumnIndex === null || renderableRowIndex === undefined || renderableColumnIndex === undefined) {
45341
45362
  return null;
45342
45363
  }
45343
45364
  return instance.view.getCellAtCoords(instance._createCellCoords(renderableRowIndex, renderableColumnIndex), topmost);
@@ -45614,15 +45635,15 @@ function Core(rootElement, userSettings) {
45614
45635
  const isThereAnySetSourceListener = this.hasHook('afterSetSourceDataAtCell');
45615
45636
  const changesForHook = [];
45616
45637
  if (isThereAnySetSourceListener) {
45617
- (0, _array.arrayEach)(input, _ref8 => {
45618
- let [changeRow, changeProp, changeValue] = _ref8;
45638
+ (0, _array.arrayEach)(input, _ref9 => {
45639
+ let [changeRow, changeProp, changeValue] = _ref9;
45619
45640
  changesForHook.push([changeRow, changeProp, dataSource.getAtCell(changeRow, changeProp),
45620
45641
  // The previous value.
45621
45642
  changeValue]);
45622
45643
  });
45623
45644
  }
45624
- (0, _array.arrayEach)(input, _ref9 => {
45625
- let [changeRow, changeProp, changeValue] = _ref9;
45645
+ (0, _array.arrayEach)(input, _ref10 => {
45646
+ let [changeRow, changeProp, changeValue] = _ref10;
45626
45647
  dataSource.setAtCell(changeRow, changeProp, changeValue);
45627
45648
  });
45628
45649
  if (isThereAnySetSourceListener) {
@@ -45760,8 +45781,8 @@ function Core(rootElement, userSettings) {
45760
45781
  */
45761
45782
  this.spliceCellsMeta = function (visualIndex) {
45762
45783
  let deleteAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
45763
- for (var _len18 = arguments.length, cellMetaRows = new Array(_len18 > 2 ? _len18 - 2 : 0), _key18 = 2; _key18 < _len18; _key18++) {
45764
- cellMetaRows[_key18 - 2] = arguments[_key18];
45784
+ for (var _len19 = arguments.length, cellMetaRows = new Array(_len19 > 2 ? _len19 - 2 : 0), _key19 = 2; _key19 < _len19; _key19++) {
45785
+ cellMetaRows[_key19 - 2] = arguments[_key19];
45765
45786
  }
45766
45787
  if (cellMetaRows.length > 0 && !Array.isArray(cellMetaRows[0])) {
45767
45788
  throw new Error('The 3rd argument (cellMetaRows) has to be passed as an array of cell meta objects array.');
@@ -46974,8 +46995,8 @@ function Core(rootElement, userSettings) {
46974
46995
  instance.batchExecution(() => {
46975
46996
  instance.rowIndexMapper.unregisterAll();
46976
46997
  instance.columnIndexMapper.unregisterAll();
46977
- pluginsRegistry.getItems().forEach(_ref10 => {
46978
- let [, plugin] = _ref10;
46998
+ pluginsRegistry.getItems().forEach(_ref11 => {
46999
+ let [, plugin] = _ref11;
46979
47000
  plugin.destroy();
46980
47001
  });
46981
47002
  pluginsRegistry.clear();
@@ -53348,7 +53369,7 @@ const domMessages = {
53348
53369
  function _injectProductInfo(key, element) {
53349
53370
  const hasValidType = !isEmpty(key);
53350
53371
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
53351
- const hotVersion = "0.0.0-next-7cf23cf-20240507";
53372
+ const hotVersion = "0.0.0-next-c4a5d06-20240509";
53352
53373
  let keyValidityDate;
53353
53374
  let consoleMessageState = 'invalid';
53354
53375
  let domMessageState = 'invalid';
@@ -101207,11 +101228,14 @@ class DropdownEditor extends _autocompleteEditor.AutocompleteEditor {
101207
101228
  }
101208
101229
  exports.DropdownEditor = DropdownEditor;
101209
101230
  _pluginHooks.default.getSingleton().add('beforeValidate', function (value, row, col) {
101210
- const cellMeta = this.getCellMeta(row, this.propToCol(col));
101211
- if (cellMeta.editor === DropdownEditor) {
101212
- if (cellMeta.strict === undefined) {
101213
- cellMeta.filter = false;
101214
- cellMeta.strict = true;
101231
+ const visualColumnIndex = this.propToCol(col);
101232
+ if (Number.isInteger(visualColumnIndex)) {
101233
+ const cellMeta = this.getCellMeta(row, visualColumnIndex);
101234
+ if (cellMeta.editor === DropdownEditor) {
101235
+ if (cellMeta.strict === undefined) {
101236
+ cellMeta.filter = false;
101237
+ cellMeta.strict = true;
101238
+ }
101215
101239
  }
101216
101240
  }
101217
101241
  });
@@ -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-7cf23cf-20240507
29
- * Release date: 16/04/2024 (built at 07/05/2024 14:38:06)
28
+ * Version: 0.0.0-next-c4a5d06-20240509
29
+ * Release date: 16/04/2024 (built at 09/05/2024 06:58:39)
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{border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child{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