handsontable 0.0.0-next-ab36b92-20240612 → 0.0.0-next-2a08c12-20240612

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.

@@ -8,6 +8,7 @@ var _feature = require("../../../helpers/feature");
8
8
  var _array = require("../../../helpers/array");
9
9
  var _unicode = require("../../../helpers/unicode");
10
10
  var _browser = require("../../../helpers/browser");
11
+ var _console = require("../../../helpers/console");
11
12
  var _overlay = require("./overlay");
12
13
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
13
14
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
@@ -22,6 +23,8 @@ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.h
22
23
  */
23
24
  var _overlays = /*#__PURE__*/new WeakMap();
24
25
  var _hasRenderingStateChanged = /*#__PURE__*/new WeakMap();
26
+ var _containerDomResizeCount = /*#__PURE__*/new WeakMap();
27
+ var _containerDomResizeCountTimeout = /*#__PURE__*/new WeakMap();
25
28
  class Overlays {
26
29
  /**
27
30
  * @param {Walkontable} wotInstance The Walkontable instance. @todo refactoring remove.
@@ -100,6 +103,18 @@ class Overlays {
100
103
  * @type {boolean}
101
104
  */
102
105
  _classPrivateFieldInitSpec(this, _hasRenderingStateChanged, false);
106
+ /**
107
+ * The amount of times the ResizeObserver callback was fired in direct succession.
108
+ *
109
+ * @type {number}
110
+ */
111
+ _classPrivateFieldInitSpec(this, _containerDomResizeCount, 0);
112
+ /**
113
+ * The timeout ID for the ResizeObserver endless-loop-blocking logic.
114
+ *
115
+ * @type {number}
116
+ */
117
+ _classPrivateFieldInitSpec(this, _containerDomResizeCountTimeout, null);
103
118
  /**
104
119
  * The instance of the ResizeObserver that observes the size of the Walkontable wrapper element.
105
120
  * In case of the size change detection the `onContainerElementResize` is fired.
@@ -112,6 +127,20 @@ class Overlays {
112
127
  if (!Array.isArray(entries) || !entries.length) {
113
128
  return;
114
129
  }
130
+ _classPrivateFieldSet(_containerDomResizeCount, this, _classPrivateFieldGet(_containerDomResizeCount, this) + 1);
131
+ if (_classPrivateFieldGet(_containerDomResizeCount, this) === 100) {
132
+ (0, _console.warn)('The ResizeObserver callback was fired too many times in direct succession.' + '\nThis may be due to an infinite loop caused by setting a dynamic height/width (for example, ' + 'with the `dvh` units) to a Handsontable container\'s parent. ' + '\nThe observer will be disconnected.');
133
+ this.resizeObserver.disconnect();
134
+ }
135
+
136
+ // This logic is required to prevent an endless loop of the ResizeObserver callback.
137
+ // https://github.com/handsontable/dev-handsontable/issues/1898#issuecomment-2154794817
138
+ if (_classPrivateFieldGet(_containerDomResizeCountTimeout, this) !== null) {
139
+ clearTimeout(_classPrivateFieldGet(_containerDomResizeCountTimeout, this));
140
+ }
141
+ _classPrivateFieldSet(_containerDomResizeCountTimeout, this, setTimeout(() => {
142
+ _classPrivateFieldSet(_containerDomResizeCount, this, 0);
143
+ }, 100));
115
144
  this.wtSettings.getSetting('onContainerElementResize');
116
145
  });
117
146
  }));
@@ -303,6 +332,9 @@ class Overlays {
303
332
  clearTimeout(resizeTimeout);
304
333
  resizeTimeout = setTimeout(() => {
305
334
  this.wtSettings.getSetting('onWindowResize');
335
+
336
+ // Remove resizing the window from the ResizeObserver's endless-loop-blocking logic.
337
+ _classPrivateFieldSet(_containerDomResizeCount, this, 0);
306
338
  }, 200);
307
339
  });
308
340
  if (!isScrollOnWindow) {
@@ -13,12 +13,15 @@ import { requestAnimationFrame } from "../../../helpers/feature.mjs";
13
13
  import { arrayEach } from "../../../helpers/array.mjs";
14
14
  import { isKey } from "../../../helpers/unicode.mjs";
15
15
  import { isChrome } from "../../../helpers/browser.mjs";
16
+ import { warn } from "../../../helpers/console.mjs";
16
17
  import { InlineStartOverlay, TopOverlay, TopInlineStartCornerOverlay, BottomOverlay, BottomInlineStartCornerOverlay } from "./overlay/index.mjs";
17
18
  /**
18
19
  * @class Overlays
19
20
  */
20
21
  var _overlays = /*#__PURE__*/new WeakMap();
21
22
  var _hasRenderingStateChanged = /*#__PURE__*/new WeakMap();
23
+ var _containerDomResizeCount = /*#__PURE__*/new WeakMap();
24
+ var _containerDomResizeCountTimeout = /*#__PURE__*/new WeakMap();
22
25
  class Overlays {
23
26
  /**
24
27
  * @param {Walkontable} wotInstance The Walkontable instance. @todo refactoring remove.
@@ -97,6 +100,18 @@ class Overlays {
97
100
  * @type {boolean}
98
101
  */
99
102
  _classPrivateFieldInitSpec(this, _hasRenderingStateChanged, false);
103
+ /**
104
+ * The amount of times the ResizeObserver callback was fired in direct succession.
105
+ *
106
+ * @type {number}
107
+ */
108
+ _classPrivateFieldInitSpec(this, _containerDomResizeCount, 0);
109
+ /**
110
+ * The timeout ID for the ResizeObserver endless-loop-blocking logic.
111
+ *
112
+ * @type {number}
113
+ */
114
+ _classPrivateFieldInitSpec(this, _containerDomResizeCountTimeout, null);
100
115
  /**
101
116
  * The instance of the ResizeObserver that observes the size of the Walkontable wrapper element.
102
117
  * In case of the size change detection the `onContainerElementResize` is fired.
@@ -109,6 +124,20 @@ class Overlays {
109
124
  if (!Array.isArray(entries) || !entries.length) {
110
125
  return;
111
126
  }
127
+ _classPrivateFieldSet(_containerDomResizeCount, this, _classPrivateFieldGet(_containerDomResizeCount, this) + 1);
128
+ if (_classPrivateFieldGet(_containerDomResizeCount, this) === 100) {
129
+ warn('The ResizeObserver callback was fired too many times in direct succession.' + '\nThis may be due to an infinite loop caused by setting a dynamic height/width (for example, ' + 'with the `dvh` units) to a Handsontable container\'s parent. ' + '\nThe observer will be disconnected.');
130
+ this.resizeObserver.disconnect();
131
+ }
132
+
133
+ // This logic is required to prevent an endless loop of the ResizeObserver callback.
134
+ // https://github.com/handsontable/dev-handsontable/issues/1898#issuecomment-2154794817
135
+ if (_classPrivateFieldGet(_containerDomResizeCountTimeout, this) !== null) {
136
+ clearTimeout(_classPrivateFieldGet(_containerDomResizeCountTimeout, this));
137
+ }
138
+ _classPrivateFieldSet(_containerDomResizeCountTimeout, this, setTimeout(() => {
139
+ _classPrivateFieldSet(_containerDomResizeCount, this, 0);
140
+ }, 100));
112
141
  this.wtSettings.getSetting('onContainerElementResize');
113
142
  });
114
143
  }));
@@ -300,6 +329,9 @@ class Overlays {
300
329
  clearTimeout(resizeTimeout);
301
330
  resizeTimeout = setTimeout(() => {
302
331
  this.wtSettings.getSetting('onWindowResize');
332
+
333
+ // Remove resizing the window from the ResizeObserver's endless-loop-blocking logic.
334
+ _classPrivateFieldSet(_containerDomResizeCount, this, 0);
303
335
  }, 200);
304
336
  });
305
337
  if (!isScrollOnWindow) {
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 = "12/06/2024 12:13:52";
49
- Handsontable.version = "0.0.0-next-ab36b92-20240612";
48
+ Handsontable.buildDate = "12/06/2024 13:00:27";
49
+ Handsontable.version = "0.0.0-next-2a08c12-20240612";
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 = "12/06/2024 12:13:58";
39
- Handsontable.version = "0.0.0-next-ab36b92-20240612";
38
+ Handsontable.buildDate = "12/06/2024 13:00:32";
39
+ Handsontable.version = "0.0.0-next-2a08c12-20240612";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
@@ -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-ab36b92-20240612
29
- * Release date: 11/06/2024 (built at 12/06/2024 12:14:02)
28
+ * Version: 0.0.0-next-2a08c12-20240612
29
+ * Release date: 11/06/2024 (built at 12/06/2024 13:00:37)
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-ab36b92-20240612
29
- * Release date: 11/06/2024 (built at 12/06/2024 12:14:02)
28
+ * Version: 0.0.0-next-2a08c12-20240612
29
+ * Release date: 11/06/2024 (built at 12/06/2024 13:00:37)
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-ab36b92-20240612
29
- * Release date: 11/06/2024 (built at 12/06/2024 12:14:02)
28
+ * Version: 0.0.0-next-2a08c12-20240612
29
+ * Release date: 11/06/2024 (built at 12/06/2024 13:00:37)
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 = "12/06/2024 12:14:02";
42679
- Handsontable.version = "0.0.0-next-ab36b92-20240612";
42678
+ Handsontable.buildDate = "12/06/2024 13:00:37";
42679
+ Handsontable.version = "0.0.0-next-2a08c12-20240612";
42680
42680
  Handsontable.languages = {
42681
42681
  dictionaryKeys: _registry.dictionaryKeys,
42682
42682
  getLanguageDictionary: _registry.getLanguageDictionary,
@@ -53294,7 +53294,7 @@ const domMessages = {
53294
53294
  function _injectProductInfo(key, element) {
53295
53295
  const hasValidType = !isEmpty(key);
53296
53296
  const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
53297
- const hotVersion = "0.0.0-next-ab36b92-20240612";
53297
+ const hotVersion = "0.0.0-next-2a08c12-20240612";
53298
53298
  let keyValidityDate;
53299
53299
  let consoleMessageState = 'invalid';
53300
53300
  let domMessageState = 'invalid';
@@ -71371,6 +71371,7 @@ var _feature = __webpack_require__(485);
71371
71371
  var _array = __webpack_require__(478);
71372
71372
  var _unicode = __webpack_require__(491);
71373
71373
  var _browser = __webpack_require__(481);
71374
+ var _console = __webpack_require__(500);
71374
71375
  var _overlay = __webpack_require__(532);
71375
71376
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
71376
71377
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
@@ -71382,6 +71383,8 @@ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.h
71382
71383
  */
71383
71384
  var _overlays = /*#__PURE__*/new WeakMap();
71384
71385
  var _hasRenderingStateChanged = /*#__PURE__*/new WeakMap();
71386
+ var _containerDomResizeCount = /*#__PURE__*/new WeakMap();
71387
+ var _containerDomResizeCountTimeout = /*#__PURE__*/new WeakMap();
71385
71388
  class Overlays {
71386
71389
  /**
71387
71390
  * @param {Walkontable} wotInstance The Walkontable instance. @todo refactoring remove.
@@ -71460,6 +71463,18 @@ class Overlays {
71460
71463
  * @type {boolean}
71461
71464
  */
71462
71465
  _classPrivateFieldInitSpec(this, _hasRenderingStateChanged, false);
71466
+ /**
71467
+ * The amount of times the ResizeObserver callback was fired in direct succession.
71468
+ *
71469
+ * @type {number}
71470
+ */
71471
+ _classPrivateFieldInitSpec(this, _containerDomResizeCount, 0);
71472
+ /**
71473
+ * The timeout ID for the ResizeObserver endless-loop-blocking logic.
71474
+ *
71475
+ * @type {number}
71476
+ */
71477
+ _classPrivateFieldInitSpec(this, _containerDomResizeCountTimeout, null);
71463
71478
  /**
71464
71479
  * The instance of the ResizeObserver that observes the size of the Walkontable wrapper element.
71465
71480
  * In case of the size change detection the `onContainerElementResize` is fired.
@@ -71472,6 +71487,20 @@ class Overlays {
71472
71487
  if (!Array.isArray(entries) || !entries.length) {
71473
71488
  return;
71474
71489
  }
71490
+ _classPrivateFieldSet(_containerDomResizeCount, this, _classPrivateFieldGet(_containerDomResizeCount, this) + 1);
71491
+ if (_classPrivateFieldGet(_containerDomResizeCount, this) === 100) {
71492
+ (0, _console.warn)('The ResizeObserver callback was fired too many times in direct succession.' + '\nThis may be due to an infinite loop caused by setting a dynamic height/width (for example, ' + 'with the `dvh` units) to a Handsontable container\'s parent. ' + '\nThe observer will be disconnected.');
71493
+ this.resizeObserver.disconnect();
71494
+ }
71495
+
71496
+ // This logic is required to prevent an endless loop of the ResizeObserver callback.
71497
+ // https://github.com/handsontable/dev-handsontable/issues/1898#issuecomment-2154794817
71498
+ if (_classPrivateFieldGet(_containerDomResizeCountTimeout, this) !== null) {
71499
+ clearTimeout(_classPrivateFieldGet(_containerDomResizeCountTimeout, this));
71500
+ }
71501
+ _classPrivateFieldSet(_containerDomResizeCountTimeout, this, setTimeout(() => {
71502
+ _classPrivateFieldSet(_containerDomResizeCount, this, 0);
71503
+ }, 100));
71475
71504
  this.wtSettings.getSetting('onContainerElementResize');
71476
71505
  });
71477
71506
  }));
@@ -71663,6 +71692,9 @@ class Overlays {
71663
71692
  clearTimeout(resizeTimeout);
71664
71693
  resizeTimeout = setTimeout(() => {
71665
71694
  this.wtSettings.getSetting('onWindowResize');
71695
+
71696
+ // Remove resizing the window from the ResizeObserver's endless-loop-blocking logic.
71697
+ _classPrivateFieldSet(_containerDomResizeCount, this, 0);
71666
71698
  }, 200);
71667
71699
  });
71668
71700
  if (!isScrollOnWindow) {
@@ -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-ab36b92-20240612
29
- * Release date: 11/06/2024 (built at 12/06/2024 12:14:19)
28
+ * Version: 0.0.0-next-2a08c12-20240612
29
+ * Release date: 11/06/2024 (built at 12/06/2024 13:00:55)
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