handsontable 0.0.0-next-78c52c0-20240515 → 0.0.0-next-b8f1220-20240516

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

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 = "15/05/2024 14:06:48";
49
- Handsontable.version = "0.0.0-next-78c52c0-20240515";
48
+ Handsontable.buildDate = "16/05/2024 07:21:13";
49
+ Handsontable.version = "0.0.0-next-b8f1220-20240516";
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 = "15/05/2024 14:06:54";
39
- Handsontable.version = "0.0.0-next-78c52c0-20240515";
38
+ Handsontable.buildDate = "16/05/2024 07:21:19";
39
+ Handsontable.version = "0.0.0-next-b8f1220-20240516";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -671,17 +671,20 @@ class DataMap {
671
671
  dataRow = isNaN(modifiedRowData) ? modifiedRowData : dataRow;
672
672
  //
673
673
 
674
+ const {
675
+ dataDotNotation
676
+ } = this.hot.getSettings();
674
677
  let value = null;
675
678
 
676
679
  // try to get value under property `prop` (includes dot)
677
680
  if (dataRow && dataRow.hasOwnProperty && (0, _object.hasOwnProperty)(dataRow, prop)) {
678
681
  value = dataRow[prop];
679
- } else if (typeof prop === 'string' && prop.indexOf('.') > -1) {
680
- const sliced = prop.split('.');
682
+ } else if (dataDotNotation && typeof prop === 'string' && prop.indexOf('.') > -1) {
681
683
  let out = dataRow;
682
684
  if (!out) {
683
685
  return null;
684
686
  }
687
+ const sliced = prop.split('.');
685
688
  for (let i = 0, ilen = sliced.length; i < ilen; i++) {
686
689
  out = out[sliced[i]];
687
690
  if (typeof out === 'undefined') {
@@ -739,15 +742,18 @@ class DataMap {
739
742
  newValue = valueHolder.value;
740
743
  }
741
744
  }
745
+ const {
746
+ dataDotNotation
747
+ } = this.hot.getSettings();
742
748
 
743
749
  // try to set value under property `prop` (includes dot)
744
750
  if (dataRow && dataRow.hasOwnProperty && (0, _object.hasOwnProperty)(dataRow, prop)) {
745
751
  dataRow[prop] = newValue;
746
- } else if (typeof prop === 'string' && prop.indexOf('.') > -1) {
747
- const sliced = prop.split('.');
752
+ } else if (dataDotNotation && typeof prop === 'string' && prop.indexOf('.') > -1) {
748
753
  let out = dataRow;
749
754
  let i = 0;
750
755
  let ilen;
756
+ const sliced = prop.split('.');
751
757
  for (i = 0, ilen = sliced.length - 1; i < ilen; i++) {
752
758
  if (typeof out[sliced[i]] === 'undefined') {
753
759
  out[sliced[i]] = {};
@@ -667,17 +667,20 @@ class DataMap {
667
667
  dataRow = isNaN(modifiedRowData) ? modifiedRowData : dataRow;
668
668
  //
669
669
 
670
+ const {
671
+ dataDotNotation
672
+ } = this.hot.getSettings();
670
673
  let value = null;
671
674
 
672
675
  // try to get value under property `prop` (includes dot)
673
676
  if (dataRow && dataRow.hasOwnProperty && hasOwnProperty(dataRow, prop)) {
674
677
  value = dataRow[prop];
675
- } else if (typeof prop === 'string' && prop.indexOf('.') > -1) {
676
- const sliced = prop.split('.');
678
+ } else if (dataDotNotation && typeof prop === 'string' && prop.indexOf('.') > -1) {
677
679
  let out = dataRow;
678
680
  if (!out) {
679
681
  return null;
680
682
  }
683
+ const sliced = prop.split('.');
681
684
  for (let i = 0, ilen = sliced.length; i < ilen; i++) {
682
685
  out = out[sliced[i]];
683
686
  if (typeof out === 'undefined') {
@@ -735,15 +738,18 @@ class DataMap {
735
738
  newValue = valueHolder.value;
736
739
  }
737
740
  }
741
+ const {
742
+ dataDotNotation
743
+ } = this.hot.getSettings();
738
744
 
739
745
  // try to set value under property `prop` (includes dot)
740
746
  if (dataRow && dataRow.hasOwnProperty && hasOwnProperty(dataRow, prop)) {
741
747
  dataRow[prop] = newValue;
742
- } else if (typeof prop === 'string' && prop.indexOf('.') > -1) {
743
- const sliced = prop.split('.');
748
+ } else if (dataDotNotation && typeof prop === 'string' && prop.indexOf('.') > -1) {
744
749
  let out = dataRow;
745
750
  let i = 0;
746
751
  let ilen;
752
+ const sliced = prop.split('.');
747
753
  for (i = 0, ilen = sliced.length - 1; i < ilen; i++) {
748
754
  if (typeof out[sliced[i]] === 'undefined') {
749
755
  out[sliced[i]] = {};
@@ -110,6 +110,9 @@ class DataSource {
110
110
  getAtRow(row, startColumn, endColumn) {
111
111
  let toArray = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
112
112
  const getAllProps = startColumn === undefined && endColumn === undefined;
113
+ const {
114
+ dataDotNotation
115
+ } = this.hot.getSettings();
113
116
  let dataRow = null;
114
117
  let newDataRow = null;
115
118
  dataRow = this.modifyRowData(row);
@@ -140,14 +143,21 @@ class DataSource {
140
143
  const cellValue = this.getAtPhysicalCell(row, prop, dataRow);
141
144
  if (toArray) {
142
145
  newDataRow.push(cellValue);
143
- } else {
146
+ } else if (dataDotNotation) {
144
147
  (0, _object.setProperty)(newDataRow, prop, cellValue);
148
+ } else {
149
+ newDataRow[prop] = cellValue;
145
150
  }
146
151
  }
147
152
  });
148
153
  } else {
149
154
  (0, _object.objectEach)(dataRow, (value, prop) => {
150
- (0, _object.setProperty)(newDataRow, prop, this.getAtPhysicalCell(row, prop, dataRow));
155
+ const cellValue = this.getAtPhysicalCell(row, prop, dataRow);
156
+ if (dataDotNotation) {
157
+ (0, _object.setProperty)(newDataRow, prop, cellValue);
158
+ } else {
159
+ newDataRow[prop] = cellValue;
160
+ }
151
161
  });
152
162
  }
153
163
  }
@@ -194,7 +204,10 @@ class DataSource {
194
204
  let result = null;
195
205
  if (dataRow) {
196
206
  if (typeof column === 'string') {
197
- result = (0, _object.getProperty)(dataRow, column);
207
+ const {
208
+ dataDotNotation
209
+ } = this.hot.getSettings();
210
+ result = dataDotNotation ? (0, _object.getProperty)(dataRow, column) : dataRow[column];
198
211
  } else if (typeof column === 'function') {
199
212
  result = column(dataRow);
200
213
  } else {
@@ -107,6 +107,9 @@ class DataSource {
107
107
  getAtRow(row, startColumn, endColumn) {
108
108
  let toArray = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
109
109
  const getAllProps = startColumn === undefined && endColumn === undefined;
110
+ const {
111
+ dataDotNotation
112
+ } = this.hot.getSettings();
110
113
  let dataRow = null;
111
114
  let newDataRow = null;
112
115
  dataRow = this.modifyRowData(row);
@@ -137,14 +140,21 @@ class DataSource {
137
140
  const cellValue = this.getAtPhysicalCell(row, prop, dataRow);
138
141
  if (toArray) {
139
142
  newDataRow.push(cellValue);
140
- } else {
143
+ } else if (dataDotNotation) {
141
144
  setProperty(newDataRow, prop, cellValue);
145
+ } else {
146
+ newDataRow[prop] = cellValue;
142
147
  }
143
148
  }
144
149
  });
145
150
  } else {
146
151
  objectEach(dataRow, (value, prop) => {
147
- setProperty(newDataRow, prop, this.getAtPhysicalCell(row, prop, dataRow));
152
+ const cellValue = this.getAtPhysicalCell(row, prop, dataRow);
153
+ if (dataDotNotation) {
154
+ setProperty(newDataRow, prop, cellValue);
155
+ } else {
156
+ newDataRow[prop] = cellValue;
157
+ }
148
158
  });
149
159
  }
150
160
  }
@@ -191,7 +201,10 @@ class DataSource {
191
201
  let result = null;
192
202
  if (dataRow) {
193
203
  if (typeof column === 'string') {
194
- result = getProperty(dataRow, column);
204
+ const {
205
+ dataDotNotation
206
+ } = this.hot.getSettings();
207
+ result = dataDotNotation ? getProperty(dataRow, column) : dataRow[column];
195
208
  } else if (typeof column === 'function') {
196
209
  result = column(dataRow);
197
210
  } else {
@@ -1536,6 +1536,44 @@ var _default = () => {
1536
1536
  * ```
1537
1537
  */
1538
1538
  data: undefined,
1539
+ /**
1540
+ * @description
1541
+ * If `true`, Handsontable will interpret the dots in the columns mapping as a nested object path. If your dataset contains
1542
+ * the dots in the object keys and you don't want Handsontable to interpret them as a nested object path, set this option to `false`.
1543
+ *
1544
+ * The option only works when defined in the global table settings.
1545
+ *
1546
+ * @since 14.4.0
1547
+ * @memberof Options#
1548
+ * @type {boolean}
1549
+ * @default true
1550
+ * @category Core
1551
+ *
1552
+ * @example
1553
+ * ```js
1554
+ * // All dots are interpreted as nested object paths
1555
+ * dataDotNotation: true,
1556
+ * data: [
1557
+ * { id: 1, name: { first: 'Ted', last: 'Right' }, user: { address: '1234 Any Street' } },
1558
+ * ],
1559
+ * columns={[
1560
+ * { data: 'name.first' },
1561
+ * { data: 'user.address' },
1562
+ * ]},
1563
+ * ```
1564
+ * ```js
1565
+ * // All dots are interpreted as simple object keys
1566
+ * dataDotNotation: false,
1567
+ * data: [
1568
+ * { id: 1, 'name.first': 'Ted', 'user.address': '1234 Any Street' },
1569
+ * ],
1570
+ * columns={[
1571
+ * { data: 'name.first' },
1572
+ * { data: 'user.address' },
1573
+ * ]},
1574
+ * ```
1575
+ */
1576
+ dataDotNotation: true,
1539
1577
  /**
1540
1578
  * @description
1541
1579
  * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects)
@@ -1533,6 +1533,44 @@ export default (() => {
1533
1533
  * ```
1534
1534
  */
1535
1535
  data: undefined,
1536
+ /**
1537
+ * @description
1538
+ * If `true`, Handsontable will interpret the dots in the columns mapping as a nested object path. If your dataset contains
1539
+ * the dots in the object keys and you don't want Handsontable to interpret them as a nested object path, set this option to `false`.
1540
+ *
1541
+ * The option only works when defined in the global table settings.
1542
+ *
1543
+ * @since 14.4.0
1544
+ * @memberof Options#
1545
+ * @type {boolean}
1546
+ * @default true
1547
+ * @category Core
1548
+ *
1549
+ * @example
1550
+ * ```js
1551
+ * // All dots are interpreted as nested object paths
1552
+ * dataDotNotation: true,
1553
+ * data: [
1554
+ * { id: 1, name: { first: 'Ted', last: 'Right' }, user: { address: '1234 Any Street' } },
1555
+ * ],
1556
+ * columns={[
1557
+ * { data: 'name.first' },
1558
+ * { data: 'user.address' },
1559
+ * ]},
1560
+ * ```
1561
+ * ```js
1562
+ * // All dots are interpreted as simple object keys
1563
+ * dataDotNotation: false,
1564
+ * data: [
1565
+ * { id: 1, 'name.first': 'Ted', 'user.address': '1234 Any Street' },
1566
+ * ],
1567
+ * columns={[
1568
+ * { data: 'name.first' },
1569
+ * { data: 'user.address' },
1570
+ * ]},
1571
+ * ```
1572
+ */
1573
+ dataDotNotation: true,
1536
1574
  /**
1537
1575
  * @description
1538
1576
  * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects)
@@ -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-78c52c0-20240515
29
- * Release date: 16/04/2024 (built at 15/05/2024 14:06:59)
28
+ * Version: 0.0.0-next-b8f1220-20240516
29
+ * Release date: 16/04/2024 (built at 16/05/2024 07:21:23)
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-78c52c0-20240515
29
- * Release date: 16/04/2024 (built at 15/05/2024 14:06:59)
28
+ * Version: 0.0.0-next-b8f1220-20240516
29
+ * Release date: 16/04/2024 (built at 16/05/2024 07:21:23)
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-78c52c0-20240515
29
- * Release date: 16/04/2024 (built at 15/05/2024 14:06:59)
28
+ * Version: 0.0.0-next-b8f1220-20240516
29
+ * Release date: 16/04/2024 (built at 16/05/2024 07:21:23)
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 = "15/05/2024 14:06:59";
42679
- Handsontable.version = "0.0.0-next-78c52c0-20240515";
42678
+ Handsontable.buildDate = "16/05/2024 07:21:23";
42679
+ Handsontable.version = "0.0.0-next-b8f1220-20240516";
42680
42680
  Handsontable.languages = {
42681
42681
  dictionaryKeys: _registry.dictionaryKeys,
42682
42682
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -53274,7 +53274,7 @@ const domMessages = {
53274
53274
  function _injectProductInfo(key, element) {
53275
53275
  const hasValidType = !isEmpty(key);
53276
53276
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
53277
- const hotVersion = "0.0.0-next-78c52c0-20240515";
53277
+ const hotVersion = "0.0.0-next-b8f1220-20240516";
53278
53278
  let keyValidityDate;
53279
53279
  let consoleMessageState = 'invalid';
53280
53280
  let domMessageState = 'invalid';
@@ -81180,6 +81180,9 @@ class DataSource {
81180
81180
  getAtRow(row, startColumn, endColumn) {
81181
81181
  let toArray = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
81182
81182
  const getAllProps = startColumn === undefined && endColumn === undefined;
81183
+ const {
81184
+ dataDotNotation
81185
+ } = this.hot.getSettings();
81183
81186
  let dataRow = null;
81184
81187
  let newDataRow = null;
81185
81188
  dataRow = this.modifyRowData(row);
@@ -81210,14 +81213,21 @@ class DataSource {
81210
81213
  const cellValue = this.getAtPhysicalCell(row, prop, dataRow);
81211
81214
  if (toArray) {
81212
81215
  newDataRow.push(cellValue);
81213
- } else {
81216
+ } else if (dataDotNotation) {
81214
81217
  (0, _object.setProperty)(newDataRow, prop, cellValue);
81218
+ } else {
81219
+ newDataRow[prop] = cellValue;
81215
81220
  }
81216
81221
  }
81217
81222
  });
81218
81223
  } else {
81219
81224
  (0, _object.objectEach)(dataRow, (value, prop) => {
81220
- (0, _object.setProperty)(newDataRow, prop, this.getAtPhysicalCell(row, prop, dataRow));
81225
+ const cellValue = this.getAtPhysicalCell(row, prop, dataRow);
81226
+ if (dataDotNotation) {
81227
+ (0, _object.setProperty)(newDataRow, prop, cellValue);
81228
+ } else {
81229
+ newDataRow[prop] = cellValue;
81230
+ }
81221
81231
  });
81222
81232
  }
81223
81233
  }
@@ -81264,7 +81274,10 @@ class DataSource {
81264
81274
  let result = null;
81265
81275
  if (dataRow) {
81266
81276
  if (typeof column === 'string') {
81267
- result = (0, _object.getProperty)(dataRow, column);
81277
+ const {
81278
+ dataDotNotation
81279
+ } = this.hot.getSettings();
81280
+ result = dataDotNotation ? (0, _object.getProperty)(dataRow, column) : dataRow[column];
81268
81281
  } else if (typeof column === 'function') {
81269
81282
  result = column(dataRow);
81270
81283
  } else {
@@ -87789,17 +87802,20 @@ class DataMap {
87789
87802
  dataRow = isNaN(modifiedRowData) ? modifiedRowData : dataRow;
87790
87803
  //
87791
87804
 
87805
+ const {
87806
+ dataDotNotation
87807
+ } = this.hot.getSettings();
87792
87808
  let value = null;
87793
87809
 
87794
87810
  // try to get value under property `prop` (includes dot)
87795
87811
  if (dataRow && dataRow.hasOwnProperty && (0, _object.hasOwnProperty)(dataRow, prop)) {
87796
87812
  value = dataRow[prop];
87797
- } else if (typeof prop === 'string' && prop.indexOf('.') > -1) {
87798
- const sliced = prop.split('.');
87813
+ } else if (dataDotNotation && typeof prop === 'string' && prop.indexOf('.') > -1) {
87799
87814
  let out = dataRow;
87800
87815
  if (!out) {
87801
87816
  return null;
87802
87817
  }
87818
+ const sliced = prop.split('.');
87803
87819
  for (let i = 0, ilen = sliced.length; i < ilen; i++) {
87804
87820
  out = out[sliced[i]];
87805
87821
  if (typeof out === 'undefined') {
@@ -87857,15 +87873,18 @@ class DataMap {
87857
87873
  newValue = valueHolder.value;
87858
87874
  }
87859
87875
  }
87876
+ const {
87877
+ dataDotNotation
87878
+ } = this.hot.getSettings();
87860
87879
 
87861
87880
  // try to set value under property `prop` (includes dot)
87862
87881
  if (dataRow && dataRow.hasOwnProperty && (0, _object.hasOwnProperty)(dataRow, prop)) {
87863
87882
  dataRow[prop] = newValue;
87864
- } else if (typeof prop === 'string' && prop.indexOf('.') > -1) {
87865
- const sliced = prop.split('.');
87883
+ } else if (dataDotNotation && typeof prop === 'string' && prop.indexOf('.') > -1) {
87866
87884
  let out = dataRow;
87867
87885
  let i = 0;
87868
87886
  let ilen;
87887
+ const sliced = prop.split('.');
87869
87888
  for (i = 0, ilen = sliced.length - 1; i < ilen; i++) {
87870
87889
  if (typeof out[sliced[i]] === 'undefined') {
87871
87890
  out[sliced[i]] = {};
@@ -90337,6 +90356,44 @@ var _default = () => {
90337
90356
  * ```
90338
90357
  */
90339
90358
  data: undefined,
90359
+ /**
90360
+ * @description
90361
+ * If `true`, Handsontable will interpret the dots in the columns mapping as a nested object path. If your dataset contains
90362
+ * the dots in the object keys and you don't want Handsontable to interpret them as a nested object path, set this option to `false`.
90363
+ *
90364
+ * The option only works when defined in the global table settings.
90365
+ *
90366
+ * @since 14.4.0
90367
+ * @memberof Options#
90368
+ * @type {boolean}
90369
+ * @default true
90370
+ * @category Core
90371
+ *
90372
+ * @example
90373
+ * ```js
90374
+ * // All dots are interpreted as nested object paths
90375
+ * dataDotNotation: true,
90376
+ * data: [
90377
+ * { id: 1, name: { first: 'Ted', last: 'Right' }, user: { address: '1234 Any Street' } },
90378
+ * ],
90379
+ * columns={[
90380
+ * { data: 'name.first' },
90381
+ * { data: 'user.address' },
90382
+ * ]},
90383
+ * ```
90384
+ * ```js
90385
+ * // All dots are interpreted as simple object keys
90386
+ * dataDotNotation: false,
90387
+ * data: [
90388
+ * { id: 1, 'name.first': 'Ted', 'user.address': '1234 Any Street' },
90389
+ * ],
90390
+ * columns={[
90391
+ * { data: 'name.first' },
90392
+ * { data: 'user.address' },
90393
+ * ]},
90394
+ * ```
90395
+ */
90396
+ dataDotNotation: true,
90340
90397
  /**
90341
90398
  * @description
90342
90399
  * When the [`data`](#data) option is set to an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects)
@@ -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-78c52c0-20240515
29
- * Release date: 16/04/2024 (built at 15/05/2024 14:07:16)
28
+ * Version: 0.0.0-next-b8f1220-20240516
29
+ * Release date: 16/04/2024 (built at 16/05/2024 07:21:41)
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