@limetech/lime-elements 40.5.1 → 40.5.4

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.
Files changed (97) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/{_baseEach-Bygi-un6.js → _baseForOwn-8jMPwf3X.js} +1 -43
  3. package/dist/cjs/{_baseIsEqual-CQZKiKbe.js → _baseIsEqual-zzV9DKMv.js} +0 -1
  4. package/dist/cjs/{_baseIteratee-DDklwtn9.js → _baseIteratee-BIMRm4nq.js} +1 -3
  5. package/dist/cjs/_baseSet-DykMx7uF.js +92 -0
  6. package/dist/cjs/_getPrototype-CCLHkBHj.js +8 -0
  7. package/dist/cjs/{cloneDeep-hE40Q8aw.js → cloneDeep-D2immmwT.js} +16 -160
  8. package/dist/cjs/{difference-B543MGsY.js → isArrayLikeObject-U2Ddbw4n.js} +5 -93
  9. package/dist/cjs/{isEqual-Cd9J8a5-.js → isEqual-D3eFkhqd.js} +1 -1
  10. package/dist/cjs/limel-action-bar_3.cjs.entry.js +1 -1
  11. package/dist/cjs/limel-chip-set.cjs.entry.js +2 -2
  12. package/dist/cjs/limel-dialog.cjs.entry.js +2 -2
  13. package/dist/cjs/limel-file-dropzone_2.cjs.entry.js +45 -6
  14. package/dist/cjs/limel-file-viewer.cjs.entry.js +510 -70
  15. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +73 -11
  16. package/dist/cjs/limel-form.cjs.entry.js +5985 -3415
  17. package/dist/cjs/limel-popover_2.cjs.entry.js +1 -1
  18. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +326 -262
  19. package/dist/cjs/limel-tab-bar.cjs.entry.js +83 -4
  20. package/dist/cjs/limel-table.cjs.entry.js +598 -199
  21. package/dist/collection/components/action-bar/action-bar-item/action-bar-item.css +1 -1
  22. package/dist/collection/components/form/fields/schema-field.js +8 -0
  23. package/dist/collection/components/form/form.js +1 -0
  24. package/dist/collection/components/form/form.test-schemas.js +47 -0
  25. package/dist/collection/components/form/templates/array-field-collapsible-item.js +38 -11
  26. package/dist/collection/components/popover-surface/popover-surface.css +1 -0
  27. package/dist/collection/components/table/table.css +1 -2
  28. package/dist/esm/{_baseEach-lvj-g1Zj.js → _baseForOwn-D5j7fHlv.js} +2 -42
  29. package/dist/esm/{_baseIsEqual-B6bIeexY.js → _baseIsEqual-CyF4P8uM.js} +2 -2
  30. package/dist/esm/{_baseIteratee-CEZRuq23.js → _baseIteratee-CpbczHY1.js} +3 -3
  31. package/dist/esm/_baseSet-Cw2IE6ZF.js +89 -0
  32. package/dist/esm/_getPrototype-B0kMNv1F.js +6 -0
  33. package/dist/esm/{_getTag-CMJL-6hk.js → _getTag-BiAaLWvH.js} +1 -1
  34. package/dist/esm/{cloneDeep-CL7UD3mR.js → cloneDeep-DAbOtbs8.js} +18 -154
  35. package/dist/esm/{difference-DND5tWiA.js → isArrayLikeObject-CJB8HbtH.js} +7 -91
  36. package/dist/esm/{isEmpty-DHgukT5k.js → isEmpty-BGVZ12Ea.js} +1 -1
  37. package/dist/esm/{isEqual-4tbMaaf_.js → isEqual-CE83yS8T.js} +1 -1
  38. package/dist/esm/limel-action-bar_3.entry.js +1 -1
  39. package/dist/esm/limel-chip-set.entry.js +3 -3
  40. package/dist/esm/limel-chip_2.entry.js +2 -2
  41. package/dist/esm/limel-dialog.entry.js +3 -3
  42. package/dist/esm/limel-file-dropzone_2.entry.js +45 -6
  43. package/dist/esm/limel-file-viewer.entry.js +510 -70
  44. package/dist/esm/limel-flatpickr-adapter.entry.js +69 -7
  45. package/dist/esm/limel-form.entry.js +5982 -3412
  46. package/dist/esm/limel-popover_2.entry.js +1 -1
  47. package/dist/esm/limel-prosemirror-adapter.entry.js +327 -263
  48. package/dist/esm/limel-tab-bar.entry.js +83 -4
  49. package/dist/esm/limel-table.entry.js +595 -196
  50. package/dist/lime-elements/lime-elements.esm.js +1 -1
  51. package/dist/lime-elements/p-05afb316.entry.js +1 -0
  52. package/dist/lime-elements/p-0fba64eb.entry.js +16 -0
  53. package/dist/lime-elements/p-10594468.entry.js +1 -0
  54. package/dist/lime-elements/p-19344984.entry.js +13 -0
  55. package/dist/lime-elements/p-26c5c6b9.entry.js +1 -0
  56. package/dist/lime-elements/{p-11a96a8c.entry.js → p-36ce4fbc.entry.js} +1 -1
  57. package/dist/lime-elements/{p-955292eb.entry.js → p-4aae63bd.entry.js} +1 -1
  58. package/dist/lime-elements/{p-b8c76487.entry.js → p-5d974afa.entry.js} +1 -1
  59. package/dist/lime-elements/p-B6-3WXAv.js +1 -0
  60. package/dist/lime-elements/p-BQeIv4aA.js +1 -0
  61. package/dist/lime-elements/p-BY5NjPj8.js +1 -0
  62. package/dist/lime-elements/p-COdirXg1.js +1 -0
  63. package/dist/lime-elements/p-CW2-jhzP.js +1 -0
  64. package/dist/lime-elements/p-D2VFSWDU.js +1 -0
  65. package/dist/lime-elements/{p-D4RdItCq.js → p-DK0pjX-Y.js} +1 -1
  66. package/dist/lime-elements/p-ORUNaKm-.js +1 -0
  67. package/dist/lime-elements/{p-5b371d6b.entry.js → p-a71f6e87.entry.js} +4 -4
  68. package/dist/lime-elements/{p-1dd86ad4.entry.js → p-bd7b3f8e.entry.js} +1 -1
  69. package/dist/lime-elements/p-cef66e53.entry.js +1 -0
  70. package/dist/lime-elements/{p-02812dc8.entry.js → p-d3bd4b80.entry.js} +1 -1
  71. package/dist/lime-elements/p-nVemxylR.js +1 -0
  72. package/dist/lime-elements/p-pk5KIdKH.js +1 -0
  73. package/dist/types/components/form/form.test-schemas.d.ts +3 -0
  74. package/dist/types/components/form/templates/array-field-collapsible-item.d.ts +0 -1
  75. package/package.json +16 -16
  76. package/dist/cjs/_getAllKeysIn-BJsgUTAt.js +0 -119
  77. package/dist/cjs/_isIterateeCall-BUGt9SrH.js +0 -73
  78. package/dist/cjs/pickBy-D-X6S5kg.js +0 -201
  79. package/dist/esm/_getAllKeysIn-kT3KizYN.js +0 -114
  80. package/dist/esm/_isIterateeCall-Bb4gUZLK.js +0 -70
  81. package/dist/esm/pickBy-C4C3CM4m.js +0 -195
  82. package/dist/lime-elements/p-055b11f7.entry.js +0 -13
  83. package/dist/lime-elements/p-56bkn1D-.js +0 -1
  84. package/dist/lime-elements/p-67f02b69.entry.js +0 -1
  85. package/dist/lime-elements/p-867681aa.entry.js +0 -1
  86. package/dist/lime-elements/p-9d3437ac.entry.js +0 -16
  87. package/dist/lime-elements/p-B8yl2MCT.js +0 -1
  88. package/dist/lime-elements/p-BAR6am-7.js +0 -1
  89. package/dist/lime-elements/p-BE1Efiuj.js +0 -1
  90. package/dist/lime-elements/p-BsX7ma3n.js +0 -1
  91. package/dist/lime-elements/p-CR7u-m0b.js +0 -1
  92. package/dist/lime-elements/p-CVzgpz9P.js +0 -1
  93. package/dist/lime-elements/p-D8H5afYg.js +0 -1
  94. package/dist/lime-elements/p-DtrvybFR.js +0 -1
  95. package/dist/lime-elements/p-f309ceb8.entry.js +0 -1
  96. package/dist/lime-elements/p-f3c108c9.entry.js +0 -1
  97. package/dist/lime-elements/p-mmkVLOjW.js +0 -1
@@ -1,29 +1,239 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index--B6-r0uo.js');
4
- var pickBy = require('./pickBy-D-X6S5kg.js');
4
+ var _baseIteratee = require('./_baseIteratee-BIMRm4nq.js');
5
+ var _baseSet = require('./_baseSet-DykMx7uF.js');
6
+ var _baseIsEqual = require('./_baseIsEqual-zzV9DKMv.js');
7
+ var _getPrototype = require('./_getPrototype-CCLHkBHj.js');
8
+ var isObject = require('./isObject-B6Osvvqp.js');
9
+ var _getTag = require('./_getTag-BC28Za7d.js');
10
+ var isArrayLike = require('./isArrayLike-C2RwZMG4.js');
5
11
  var layout = require('./layout-CL_D-afg.js');
6
- var isEqual = require('./isEqual-Cd9J8a5-.js');
12
+ var isEqual = require('./isEqual-D3eFkhqd.js');
7
13
  var translations = require('./translations-DFFpR6AZ.js');
8
- require('./_baseIteratee-DDklwtn9.js');
9
- require('./_baseIsEqual-CQZKiKbe.js');
10
- require('./eq-DFcUoVzv.js');
11
- require('./_getTag-BC28Za7d.js');
12
- require('./isObject-B6Osvvqp.js');
13
- require('./isObjectLike-Dlpn-j-1.js');
14
- require('./isArrayLike-C2RwZMG4.js');
15
- require('./isFunction-RSHwsz1x.js');
16
- require('./_getNative-Cf52giNE.js');
17
14
  require('./isArray-BuFVIU_i.js');
18
- require('./_isIndex-Bu45fvR7.js');
19
15
  require('./isSymbol-DxAVNJfH.js');
16
+ require('./isObjectLike-Dlpn-j-1.js');
17
+ require('./_isIndex-Bu45fvR7.js');
20
18
  require('./identity-Dz5mxHaJ.js');
21
19
  require('./_assignValue-DQh76m39.js');
22
20
  require('./_defineProperty-Csu6P9HT.js');
23
- require('./_getAllKeysIn-BJsgUTAt.js');
21
+ require('./_getNative-Cf52giNE.js');
22
+ require('./isFunction-RSHwsz1x.js');
23
+ require('./eq-DFcUoVzv.js');
24
24
  require('./language-CaqPKPyW.js');
25
25
 
26
- /* Tabulator v6.5.2 (c) Oliver Folkerd 2026 */
26
+ /**
27
+ * This function is like
28
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
29
+ * except that it includes inherited enumerable properties.
30
+ *
31
+ * @private
32
+ * @param {Object} object The object to query.
33
+ * @returns {Array} Returns the array of property names.
34
+ */
35
+ function nativeKeysIn(object) {
36
+ var result = [];
37
+ if (object != null) {
38
+ for (var key in Object(object)) {
39
+ result.push(key);
40
+ }
41
+ }
42
+ return result;
43
+ }
44
+
45
+ /** Used for built-in method references. */
46
+ var objectProto$1 = Object.prototype;
47
+
48
+ /** Used to check objects for own properties. */
49
+ var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
50
+
51
+ /**
52
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
53
+ *
54
+ * @private
55
+ * @param {Object} object The object to query.
56
+ * @returns {Array} Returns the array of property names.
57
+ */
58
+ function baseKeysIn(object) {
59
+ if (!isObject.isObject(object)) {
60
+ return nativeKeysIn(object);
61
+ }
62
+ var isProto = _getTag.isPrototype(object),
63
+ result = [];
64
+
65
+ for (var key in object) {
66
+ if (!(key == 'constructor' && (isProto || !hasOwnProperty$1.call(object, key)))) {
67
+ result.push(key);
68
+ }
69
+ }
70
+ return result;
71
+ }
72
+
73
+ /**
74
+ * Creates an array of the own and inherited enumerable property names of `object`.
75
+ *
76
+ * **Note:** Non-object values are coerced to objects.
77
+ *
78
+ * @static
79
+ * @memberOf _
80
+ * @since 3.0.0
81
+ * @category Object
82
+ * @param {Object} object The object to query.
83
+ * @returns {Array} Returns the array of property names.
84
+ * @example
85
+ *
86
+ * function Foo() {
87
+ * this.a = 1;
88
+ * this.b = 2;
89
+ * }
90
+ *
91
+ * Foo.prototype.c = 3;
92
+ *
93
+ * _.keysIn(new Foo);
94
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
95
+ */
96
+ function keysIn(object) {
97
+ return isArrayLike.isArrayLike(object) ? _baseIsEqual.arrayLikeKeys(object, true) : baseKeysIn(object);
98
+ }
99
+
100
+ /* Built-in method references for those with the same name as other `lodash` methods. */
101
+ var nativeGetSymbols = Object.getOwnPropertySymbols;
102
+
103
+ /**
104
+ * Creates an array of the own and inherited enumerable symbols of `object`.
105
+ *
106
+ * @private
107
+ * @param {Object} object The object to query.
108
+ * @returns {Array} Returns the array of symbols.
109
+ */
110
+ var getSymbolsIn = !nativeGetSymbols ? _baseIsEqual.stubArray : function(object) {
111
+ var result = [];
112
+ while (object) {
113
+ _baseIsEqual.arrayPush(result, _baseIsEqual.getSymbols(object));
114
+ object = _getPrototype.getPrototype(object);
115
+ }
116
+ return result;
117
+ };
118
+
119
+ /**
120
+ * Creates an array of own and inherited enumerable property names and
121
+ * symbols of `object`.
122
+ *
123
+ * @private
124
+ * @param {Object} object The object to query.
125
+ * @returns {Array} Returns the array of property names and symbols.
126
+ */
127
+ function getAllKeysIn(object) {
128
+ return _baseIsEqual.baseGetAllKeys(object, keysIn, getSymbolsIn);
129
+ }
130
+
131
+ /** Used for built-in method references. */
132
+ var objectProto = Object.prototype;
133
+
134
+ /** Used to check objects for own properties. */
135
+ var hasOwnProperty = objectProto.hasOwnProperty;
136
+
137
+ /**
138
+ * The base implementation of `_.has` without support for deep paths.
139
+ *
140
+ * @private
141
+ * @param {Object} [object] The object to query.
142
+ * @param {Array|string} key The key to check.
143
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
144
+ */
145
+ function baseHas(object, key) {
146
+ return object != null && hasOwnProperty.call(object, key);
147
+ }
148
+
149
+ /**
150
+ * Checks if `path` is a direct property of `object`.
151
+ *
152
+ * @static
153
+ * @since 0.1.0
154
+ * @memberOf _
155
+ * @category Object
156
+ * @param {Object} object The object to query.
157
+ * @param {Array|string} path The path to check.
158
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
159
+ * @example
160
+ *
161
+ * var object = { 'a': { 'b': 2 } };
162
+ * var other = _.create({ 'a': _.create({ 'b': 2 }) });
163
+ *
164
+ * _.has(object, 'a');
165
+ * // => true
166
+ *
167
+ * _.has(object, 'a.b');
168
+ * // => true
169
+ *
170
+ * _.has(object, ['a', 'b']);
171
+ * // => true
172
+ *
173
+ * _.has(other, 'a');
174
+ * // => false
175
+ */
176
+ function has(object, path) {
177
+ return object != null && _baseIteratee.hasPath(object, path, baseHas);
178
+ }
179
+
180
+ /**
181
+ * The base implementation of `_.pickBy` without support for iteratee shorthands.
182
+ *
183
+ * @private
184
+ * @param {Object} object The source object.
185
+ * @param {string[]} paths The property paths to pick.
186
+ * @param {Function} predicate The function invoked per property.
187
+ * @returns {Object} Returns the new object.
188
+ */
189
+ function basePickBy(object, paths, predicate) {
190
+ var index = -1,
191
+ length = paths.length,
192
+ result = {};
193
+
194
+ while (++index < length) {
195
+ var path = paths[index],
196
+ value = _baseIteratee.baseGet(object, path);
197
+
198
+ if (predicate(value, path)) {
199
+ _baseSet.baseSet(result, _baseIteratee.castPath(path, object), value);
200
+ }
201
+ }
202
+ return result;
203
+ }
204
+
205
+ /**
206
+ * Creates an object composed of the `object` properties `predicate` returns
207
+ * truthy for. The predicate is invoked with two arguments: (value, key).
208
+ *
209
+ * @static
210
+ * @memberOf _
211
+ * @since 4.0.0
212
+ * @category Object
213
+ * @param {Object} object The source object.
214
+ * @param {Function} [predicate=_.identity] The function invoked per property.
215
+ * @returns {Object} Returns the new object.
216
+ * @example
217
+ *
218
+ * var object = { 'a': 1, 'b': '2', 'c': 3 };
219
+ *
220
+ * _.pickBy(object, _.isNumber);
221
+ * // => { 'a': 1, 'c': 3 }
222
+ */
223
+ function pickBy(object, predicate) {
224
+ if (object == null) {
225
+ return {};
226
+ }
227
+ var props = _baseIteratee.arrayMap(getAllKeysIn(object), function(prop) {
228
+ return [prop];
229
+ });
230
+ predicate = _baseIteratee.baseIteratee(predicate);
231
+ return basePickBy(object, props, function(value, path) {
232
+ return predicate(value, path[0]);
233
+ });
234
+ }
235
+
236
+ /* Tabulator v6.5.3 (c) Oliver Folkerd 2026 */
27
237
  class CoreFeature{
28
238
 
29
239
  constructor(table){
@@ -247,6 +457,19 @@ let Popup$1 = class Popup extends CoreFeature{
247
457
  this.blurCallback = null;
248
458
  this.blurEventsBound = false;
249
459
  this.renderedCallback = null;
460
+
461
+ /**
462
+ * Corresponds to the css offset properties (`top`, `right`, `bottom`, `left`).
463
+ * Values can be `null` if not set.
464
+ *
465
+ * @type {{ top: number|null, right: number|null, bottom: number|null, left: number|null }}
466
+ **/
467
+ this.offset = {
468
+ top: null,
469
+ right: null,
470
+ bottom: null,
471
+ left: null,
472
+ };
250
473
 
251
474
  this.visible = false;
252
475
  this.hideable = true;
@@ -361,35 +584,30 @@ let Popup$1 = class Popup extends CoreFeature{
361
584
  }
362
585
 
363
586
  show(origin, position){
364
- var x, y, parentEl, parentOffset, coords;
587
+ var parentEl, parentOffset;
365
588
 
366
589
  if(this.destroyed || this.table.destroyed){
367
590
  return this;
368
591
  }
592
+
593
+ if(!this.parent){
594
+ this.reversedX = false;
595
+ }
369
596
 
370
597
  if(origin instanceof HTMLElement){
371
598
  parentEl = origin;
372
- coords = this.elementPositionCoords(origin, position);
373
-
374
- parentOffset = coords.offset;
375
- x = coords.x;
376
- y = coords.y;
377
-
599
+ parentOffset = this.elementPositionCoords(origin, position).offset;
378
600
  }else if(typeof origin === "number"){
379
601
  parentOffset = {top:0, left:0};
380
- x = origin;
381
- y = position;
382
- }else {
383
- coords = this.containerEventCoords(origin);
384
-
385
- x = coords.x;
386
- y = coords.y;
387
-
388
- this.reversedX = false;
389
602
  }
390
-
391
- this.element.style.top = y + "px";
392
- this.element.style.left = x + "px";
603
+
604
+ const coords = this.resolveCoordsByOrigin(origin, position);
605
+
606
+ this.offset.top = coords.y;
607
+ this.offset.left = coords.x;
608
+ this.offset.right = null;
609
+
610
+ this.applyOffset();
393
611
 
394
612
  this.container.appendChild(this.element);
395
613
 
@@ -397,7 +615,7 @@ let Popup$1 = class Popup extends CoreFeature{
397
615
  this.renderedCallback();
398
616
  }
399
617
 
400
- this._fitToScreen(x, y, parentEl, parentOffset, position);
618
+ this._fitToScreen(coords.x, coords.y, parentEl, parentOffset, position);
401
619
 
402
620
  this.visible = true;
403
621
 
@@ -409,50 +627,105 @@ let Popup$1 = class Popup extends CoreFeature{
409
627
 
410
628
  return this;
411
629
  }
630
+
631
+ resolveCoordsByOrigin(origin, position) {
632
+ if (origin instanceof HTMLElement){
633
+ const coords = this.elementPositionCoords(origin, position);
634
+ return { x: coords.x, y: coords.y };
635
+ }
636
+ if (typeof origin === "number"){
637
+ return { x: origin, y: position };
638
+ }
639
+ return this.containerEventCoords(origin);
640
+ }
412
641
 
642
+ _elementWidth(){
643
+ return this.element.getBoundingClientRect().width || this.element.offsetWidth;
644
+ }
645
+
646
+ _elementHeight(){
647
+ return this.element.getBoundingClientRect().height || this.element.offsetHeight;
648
+ }
649
+
413
650
  _fitToScreen(x, y, parentEl, parentOffset, position){
414
651
  var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;
652
+ var scrollLeft = this.container === document.body ? document.documentElement.scrollLeft : this.container.scrollLeft;
653
+ var boundsLeft = this.container === document.body ? scrollLeft : 0;
654
+ var boundsRight = this.container === document.body ? scrollLeft + document.documentElement.clientWidth : this.container.offsetWidth;
655
+ var boundsTop = this.container === document.body ? scrollTop : 0;
656
+ var boundsBottom = this.container === document.body ? scrollTop + document.documentElement.clientHeight : Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0);
657
+ var popupWidth = this._elementWidth();
658
+ var newLeft = x;
415
659
 
416
660
  //move menu to start on right edge if it is too close to the edge of the screen
417
- if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){
418
- this.element.style.left = "";
419
-
420
- if(parentEl){
421
- this.element.style.right = (this.container.offsetWidth - parentOffset.left) + "px";
661
+ if((newLeft + popupWidth) > boundsRight || this.reversedX){
662
+ if(parentEl && position === "right"){
663
+ newLeft = parentOffset.left - popupWidth;
664
+ }else if(parentEl && position === "left"){
665
+ newLeft = parentOffset.left + parentEl.offsetWidth;
666
+ }else if(parentEl){
667
+ newLeft = parentOffset.left - popupWidth;
422
668
  }else {
423
- this.element.style.right = (this.container.offsetWidth - x) + "px";
669
+ newLeft = boundsRight - popupWidth;
424
670
  }
425
671
 
426
672
  this.reversedX = true;
427
673
  }
674
+
675
+ if((newLeft + popupWidth) > boundsRight){
676
+ newLeft = boundsRight - popupWidth;
677
+ }
678
+
679
+ if(newLeft < boundsLeft){
680
+ newLeft = boundsLeft;
681
+ }
682
+
683
+ this.offset.left = newLeft;
684
+ this.offset.right = null;
428
685
 
429
686
  //move menu to start on bottom edge if it is too close to the edge of the screen
430
- let offsetHeight = Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0);
431
- if((y + this.element.offsetHeight) > offsetHeight) {
687
+ if((y + this._elementHeight()) > boundsBottom) {
432
688
  if(parentEl){
433
689
  switch(position){
434
690
  case "bottom":
435
- this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + "px";
691
+ this.offset.top = this.offset.top - this._elementHeight() - parentEl.offsetHeight - 1;
436
692
  break;
437
693
 
438
694
  default:
439
- this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + "px";
695
+ this.offset.top = this.offset.top - this._elementHeight() + parentEl.offsetHeight + 1;
440
696
  }
441
697
 
442
698
  }else {
443
- let menuHeight = this.element.offsetHeight;
444
- if(menuHeight > offsetHeight){
445
- this.element.style.top = "0px";
446
- this.element.style.height = offsetHeight + "px";
699
+ let menuHeight = this._elementHeight();
700
+ if(menuHeight > (boundsBottom - boundsTop)){
701
+ this.offset.top = boundsTop;
702
+ this.element.style.height = (boundsBottom - boundsTop) + "px";
447
703
  }else {
448
704
  let newTop = y - menuHeight;
449
- if(newTop < 0){
450
- newTop = offsetHeight - menuHeight;
705
+ if(newTop < boundsTop){
706
+ newTop = boundsBottom - menuHeight;
451
707
  }
452
- this.element.style.top = newTop + "px";
708
+ this.offset.top = newTop;
453
709
  }
454
710
  }
455
711
  }
712
+
713
+ if((this.offset.top + this._elementHeight()) > boundsBottom){
714
+ this.offset.top = boundsBottom - this._elementHeight();
715
+ }
716
+
717
+ if(this.offset.top < boundsTop){
718
+ this.offset.top = boundsTop;
719
+ }
720
+
721
+ this.applyOffset();
722
+ }
723
+
724
+ applyOffset() {
725
+ this.element.style.top = this.offset.top == null ? "" : this.offset.top + "px";
726
+ this.element.style.right = this.offset.right == null ? "" : this.offset.right + "px";
727
+ this.element.style.bottom = this.offset.bottom == null ? "" : this.offset.bottom + "px";
728
+ this.element.style.left = this.offset.left == null ? "" : this.offset.left + "px";
456
729
  }
457
730
 
458
731
  isVisible(){
@@ -3170,6 +3443,9 @@ class RowComponent {
3170
3443
  }
3171
3444
 
3172
3445
  class Row extends CoreFeature{
3446
+
3447
+ static rowTemplate = Row.createRowTemplate();
3448
+
3173
3449
  constructor (data, parent, type = "row"){
3174
3450
  super(parent.table);
3175
3451
 
@@ -3192,6 +3468,7 @@ class Row extends CoreFeature{
3192
3468
 
3193
3469
  this.created = false;
3194
3470
 
3471
+
3195
3472
  this.setData(data);
3196
3473
  }
3197
3474
 
@@ -3203,12 +3480,7 @@ class Row extends CoreFeature{
3203
3480
  }
3204
3481
 
3205
3482
  createElement (){
3206
- var el = document.createElement("div");
3207
-
3208
- el.classList.add("tabulator-row");
3209
- el.setAttribute("role", "row");
3210
-
3211
- this.element = el;
3483
+ this.element = Row.rowTemplate.cloneNode(false) ;
3212
3484
  }
3213
3485
 
3214
3486
  getElement(){
@@ -3651,6 +3923,13 @@ class Row extends CoreFeature{
3651
3923
 
3652
3924
  return this.component;
3653
3925
  }
3926
+
3927
+ static createRowTemplate(){
3928
+ const rowTemplate = document.createElement("div");
3929
+ rowTemplate.classList.add("tabulator-row");
3930
+ rowTemplate.setAttribute("role", "row");
3931
+ return rowTemplate;
3932
+ }
3654
3933
  }
3655
3934
 
3656
3935
  var defaultCalculations = {
@@ -3766,6 +4045,7 @@ class ColumnCalcs extends Module{
3766
4045
  this.botRow = false;
3767
4046
  this.topInitialized = false;
3768
4047
  this.botInitialized = false;
4048
+ this.topBreakElement = null; //structural <br> inserted alongside the top calc row
3769
4049
 
3770
4050
  this.blocked = false;
3771
4051
  this.recalcAfterBlock = false;
@@ -3992,6 +4272,15 @@ class ColumnCalcs extends Module{
3992
4272
 
3993
4273
  if(this.topInitialized){
3994
4274
  this.topInitialized = false;
4275
+
4276
+ //remove the structural <br> inserted alongside the calc row in
4277
+ //initializeTopRow, otherwise it is orphaned and adds a blank line
4278
+ //above the table on every group toggle
4279
+ //https://github.com/tabulator-tables/tabulator/issues/4540
4280
+ if(this.topBreakElement && this.topBreakElement.parentNode){
4281
+ this.topBreakElement.parentNode.removeChild(this.topBreakElement);
4282
+ }
4283
+
3995
4284
  this.topElement.parentNode.removeChild(this.topElement);
3996
4285
  changed = true;
3997
4286
  }
@@ -4022,7 +4311,12 @@ class ColumnCalcs extends Module{
4022
4311
 
4023
4312
  if(!this.topInitialized){
4024
4313
 
4025
- fragment.appendChild(document.createElement("br"));
4314
+ //the headers and the calc row are both inline-block, the <br> forces
4315
+ //the calc row onto its own line below the headers, removeCalcs
4316
+ //removes it again by reference
4317
+ this.topBreakElement = document.createElement("br");
4318
+
4319
+ fragment.appendChild(this.topBreakElement);
4026
4320
  fragment.appendChild(this.topElement);
4027
4321
 
4028
4322
  this.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);
@@ -4569,17 +4863,30 @@ class DataTree extends Module{
4569
4863
  config.branchEl = this.branchEl.cloneNode(true);
4570
4864
  el.insertBefore(config.branchEl, el.firstChild);
4571
4865
 
4866
+ let computed = window.getComputedStyle(config.branchEl);
4867
+ let baseMargin = this.table.rtl
4868
+ ? parseInt(computed.marginRight) || 0
4869
+ : parseInt(computed.marginLeft) || 0;
4870
+
4871
+ let indentValue = baseMargin + (config.index * this.indent) + "px";
4872
+
4572
4873
  if(this.table.rtl){
4573
- config.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + "px";
4874
+ config.branchEl.style.marginRight = indentValue;
4574
4875
  }else {
4575
- config.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + "px";
4876
+ config.branchEl.style.marginLeft = indentValue;
4576
4877
  }
4577
4878
  }else {
4879
+ let computed = window.getComputedStyle(el);
4880
+ let basePadding = this.table.rtl
4881
+ ? parseInt(computed.paddingRight) || 0
4882
+ : parseInt(computed.paddingLeft) || 0;
4883
+
4884
+ let paddingValue = basePadding + (config.index * this.indent) + "px";
4578
4885
 
4579
4886
  if(this.table.rtl){
4580
- el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + "px";
4887
+ el.style.paddingRight = paddingValue;
4581
4888
  }else {
4582
- el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + "px";
4889
+ el.style.paddingLeft = paddingValue;
4583
4890
  }
4584
4891
  }
4585
4892
  }
@@ -7866,6 +8173,7 @@ class Edit extends Module{
7866
8173
 
7867
8174
  this.registerTableFunction("getEditedCells", this.getEditedCells.bind(this));
7868
8175
  this.registerTableFunction("clearCellEdited", this.clearCellEdited.bind(this));
8176
+ this.registerTableFunction("setCellEdited", this.setCellEdited.bind(this));
7869
8177
  this.registerTableFunction("navigatePrev", this.navigatePrev.bind(this));
7870
8178
  this.registerTableFunction("navigateNext", this.navigateNext.bind(this));
7871
8179
  this.registerTableFunction("navigateLeft", this.navigateLeft.bind(this));
@@ -7875,6 +8183,7 @@ class Edit extends Module{
7875
8183
 
7876
8184
  this.registerComponentFunction("cell", "isEdited", this.cellIsEdited.bind(this));
7877
8185
  this.registerComponentFunction("cell", "clearEdited", this.clearEdited.bind(this));
8186
+ this.registerComponentFunction("cell", "setEdited", this.setEdited.bind(this));
7878
8187
  this.registerComponentFunction("cell", "edit", this.editCell.bind(this));
7879
8188
  this.registerComponentFunction("cell", "cancelEdit", this.cellCancelEdit.bind(this));
7880
8189
 
@@ -8007,6 +8316,22 @@ class Edit extends Module{
8007
8316
  });
8008
8317
  }
8009
8318
 
8319
+ //mark cells as edited programmatically, mirrors clearCellEdited
8320
+ //https://github.com/tabulator-tables/tabulator/issues/4443
8321
+ setCellEdited(cells){
8322
+ if(!cells){
8323
+ return;
8324
+ }
8325
+
8326
+ if(!Array.isArray(cells)){
8327
+ cells = [cells];
8328
+ }
8329
+
8330
+ cells.forEach((cell) => {
8331
+ this.table.modules.edit.setEdited(cell._getSelf());
8332
+ });
8333
+ }
8334
+
8010
8335
  navigatePrev(cell = this.currentCell, e){
8011
8336
  var nextCell, prevRow;
8012
8337
 
@@ -8317,6 +8642,12 @@ class Edit extends Module{
8317
8642
 
8318
8643
  cell.table.element.classList.remove("tabulator-editing");
8319
8644
  }
8645
+
8646
+ //release the redraw block taken when the editor opened, running any redraw
8647
+ //(e.g. a resize) that was deferred while editing.
8648
+ if(this.table.getRedrawBlock()){
8649
+ this.table.restoreRedraw();
8650
+ }
8320
8651
  }
8321
8652
 
8322
8653
  cancelEdit(){
@@ -8473,12 +8804,13 @@ class Edit extends Module{
8473
8804
  cellEditor, component, params;
8474
8805
 
8475
8806
  //prevent editing if another cell is refusing to leave focus (eg. validation fail)
8476
-
8807
+ //and prevent an open editor being restarted on top of itself
8477
8808
  if(this.currentCell){
8478
- if(!this.invalidEdit && this.currentCell !== cell){
8479
- this.cancelEdit();
8809
+ if(this.invalidEdit || this.currentCell === cell){
8810
+ return;
8480
8811
  }
8481
- return;
8812
+
8813
+ this.cancelEdit();
8482
8814
  }
8483
8815
 
8484
8816
  //handle successful value change
@@ -8580,17 +8912,31 @@ class Edit extends Module{
8580
8912
  cell.table.element.classList.add("tabulator-editing");
8581
8913
  while(element.firstChild) element.removeChild(element.firstChild);
8582
8914
  element.appendChild(cellEditor);
8583
-
8915
+
8916
+ //block table redraws while the editor is open so a redraw (e.g. a
8917
+ //resize, or a % height editor growing the table, #4142) cannot
8918
+ //re-render the rows and tear the editor down. Released in clearEditor.
8919
+ this.table.blockRedraw();
8920
+
8584
8921
  //trigger onRendered Callback
8585
8922
  rendered();
8586
8923
 
8587
- //prevent editing from triggering rowClick event
8924
+ //prevent editing from triggering rowClick event and, with
8925
+ //selectableRange, from starting a range selection whose focus
8926
+ //transfer would blur and close the editor
8927
+ //https://github.com/tabulator-tables/tabulator/issues/4563
8588
8928
  var children = element.children;
8589
-
8929
+
8590
8930
  for (var i = 0; i < children.length; i++) {
8591
8931
  children[i].addEventListener("click", function(e){
8592
8932
  e.stopPropagation();
8593
8933
  });
8934
+ children[i].addEventListener("mousedown", function(e){
8935
+ e.stopPropagation();
8936
+ });
8937
+ children[i].addEventListener("mouseup", function(e){
8938
+ e.stopPropagation();
8939
+ });
8594
8940
  }
8595
8941
  }else {
8596
8942
  console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
@@ -8666,6 +9012,24 @@ class Edit extends Module{
8666
9012
  this.editedCells.splice(editIndex, 1);
8667
9013
  }
8668
9014
  }
9015
+
9016
+ //mark a cell as edited without a user edit, mirrors clearEdited
9017
+ //https://github.com/tabulator-tables/tabulator/issues/4443
9018
+ setEdited(cell){
9019
+ if(!cell.modules.edit){
9020
+ cell.modules.edit = {};
9021
+ }
9022
+
9023
+ if(!cell.modules.edit.edited){
9024
+ cell.modules.edit.edited = true;
9025
+
9026
+ this.dispatch("edit-edited-set", cell);
9027
+ }
9028
+
9029
+ if(this.editedCells.indexOf(cell) == -1){
9030
+ this.editedCells.push(cell);
9031
+ }
9032
+ }
8669
9033
  }
8670
9034
 
8671
9035
  class ExportRow{
@@ -11694,10 +12058,11 @@ class FrozenRows extends Module{
11694
12058
  this.rows = [];
11695
12059
 
11696
12060
  this.topElement.classList.add("tabulator-frozen-rows-holder");
11697
-
11698
- // Replaced by adding padding-top to the tabulator-frozen-rows-holder
11699
- // See https://github.com/olifolkerd/tabulator/pull/4809
11700
- //fragment.appendChild(document.createElement("br"));
12061
+
12062
+ // The headers and the holder are both inline-block, so a line break is
12063
+ // required to force the holder onto its own row below the headers.
12064
+ // https://github.com/tabulator-tables/tabulator/issues/4871
12065
+ fragment.appendChild(document.createElement("br"));
11701
12066
  fragment.appendChild(this.topElement);
11702
12067
 
11703
12068
  // this.table.columnManager.element.append(this.topElement);
@@ -18467,7 +18832,15 @@ class ResizeColumns extends Module{
18467
18832
  handle.style.position = "sticky";
18468
18833
  handle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);
18469
18834
  }
18470
-
18835
+
18836
+ //seed the handle with the row height, cell handles are recreated when
18837
+ //a cell is re-rendered (e.g. after editing) and the cell-height event
18838
+ //that usually sizes them does not fire again unless the height changes
18839
+ //https://github.com/tabulator-tables/tabulator/issues/4544
18840
+ if(type === "cell"){
18841
+ handle.style.height = component.row.heightStyled;
18842
+ }
18843
+
18471
18844
  config.handleEl = handle;
18472
18845
 
18473
18846
  if(element.parentNode && column.visible){
@@ -18848,22 +19221,19 @@ class ResizeTable extends Module{
18848
19221
  this.autoResize = true;
18849
19222
 
18850
19223
  this.resizeObserver = new ResizeObserver((entry) => {
18851
- if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){
18852
-
18853
- var nodeHeight = Math.floor(entry[0].contentRect.height);
18854
- var nodeWidth = Math.floor(entry[0].contentRect.width);
18855
-
18856
- if(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){
18857
- this.tableHeight = nodeHeight;
18858
- this.tableWidth = nodeWidth;
18859
-
18860
- if(table.element.parentNode){
18861
- this.containerHeight = table.element.parentNode.clientHeight;
18862
- this.containerWidth = table.element.parentNode.clientWidth;
18863
- }
18864
-
18865
- this.redrawTable();
19224
+ var nodeHeight = Math.floor(entry[0].contentRect.height);
19225
+ var nodeWidth = Math.floor(entry[0].contentRect.width);
19226
+
19227
+ if(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){
19228
+ this.tableHeight = nodeHeight;
19229
+ this.tableWidth = nodeWidth;
19230
+
19231
+ if(table.element.parentNode){
19232
+ this.containerHeight = table.element.parentNode.clientHeight;
19233
+ this.containerWidth = table.element.parentNode.clientWidth;
18866
19234
  }
19235
+
19236
+ this.redrawTable();
18867
19237
  }
18868
19238
  });
18869
19239
 
@@ -18874,20 +19244,17 @@ class ResizeTable extends Module{
18874
19244
  if(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))){
18875
19245
 
18876
19246
  this.containerObserver = new ResizeObserver((entry) => {
18877
- if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){
18878
-
18879
- var nodeHeight = Math.floor(entry[0].contentRect.height);
18880
- var nodeWidth = Math.floor(entry[0].contentRect.width);
18881
-
18882
- if(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){
18883
- this.containerHeight = nodeHeight;
18884
- this.containerWidth = nodeWidth;
18885
- this.tableHeight = table.element.clientHeight;
18886
- this.tableWidth = table.element.clientWidth;
18887
- }
18888
-
18889
- this.redrawTable();
19247
+ var nodeHeight = Math.floor(entry[0].contentRect.height);
19248
+ var nodeWidth = Math.floor(entry[0].contentRect.width);
19249
+
19250
+ if(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){
19251
+ this.containerHeight = nodeHeight;
19252
+ this.containerWidth = nodeWidth;
19253
+ this.tableHeight = table.element.clientHeight;
19254
+ this.tableWidth = table.element.clientWidth;
18890
19255
  }
19256
+
19257
+ this.redrawTable();
18891
19258
  });
18892
19259
 
18893
19260
  this.containerObserver.observe(this.table.element.parentNode);
@@ -18896,11 +19263,9 @@ class ResizeTable extends Module{
18896
19263
  this.subscribe("table-resize", this.tableResized.bind(this));
18897
19264
 
18898
19265
  }else {
18899
- this.binding = function(){
18900
- if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){
18901
- table.columnManager.rerenderColumns(true);
18902
- table.redraw();
18903
- }
19266
+ this.binding = () => {
19267
+ table.columnManager.rerenderColumns(true);
19268
+ table.redraw();
18904
19269
  };
18905
19270
 
18906
19271
  window.addEventListener("resize", this.binding);
@@ -19689,7 +20054,7 @@ class SelectRow extends Module{
19689
20054
  if(Array.isArray(rowMatch)){
19690
20055
  if(rowMatch.length){
19691
20056
  rowMatch.forEach((row) => {
19692
- change = this._selectRow(row, true, true);
20057
+ change = this._selectRow(row, true);
19693
20058
 
19694
20059
  if(change){
19695
20060
  changes.push(change);
@@ -19700,11 +20065,11 @@ class SelectRow extends Module{
19700
20065
  }
19701
20066
  }else {
19702
20067
  if(rowMatch){
19703
- this._selectRow(rowMatch, false, true);
20068
+ this._selectRow(rowMatch, false);
19704
20069
  }
19705
- }
20070
+ }
19706
20071
  }
19707
-
20072
+
19708
20073
  //select an individual row
19709
20074
  _selectRow(rowInfo, silent, force){
19710
20075
  //handle max row count
@@ -20179,7 +20544,11 @@ class Range extends CoreFeature{
20179
20544
  var _vDomTop = this.table.rowManager.renderer.vDomTop,
20180
20545
  _vDomBottom = this.table.rowManager.renderer.vDomBottom,
20181
20546
  _vDomLeft = this.table.columnManager.renderer.leftCol,
20182
- _vDomRight = this.table.columnManager.renderer.rightCol,
20547
+ _vDomRight = this.table.columnManager.renderer.rightCol,
20548
+ frozenLeftColumns = this.table.modules.frozenColumns.leftColumns,
20549
+ frozenLeft = frozenLeftColumns.length,
20550
+ frozenRightColumns = this.table.modules.frozenColumns.rightColumns,
20551
+ frozenRight = frozenRightColumns.length,
20183
20552
  top, bottom, left, right, topLeftCell, bottomRightCell, topLeftCellEl, bottomRightCellEl, topLeftRowEl, bottomRightRowEl;
20184
20553
 
20185
20554
  if(this.table.options.renderHorizontal === "virtual" && this.rangeManager.rowHeader) {
@@ -20201,12 +20570,16 @@ class Range extends CoreFeature{
20201
20570
  if (_vDomRight == null) {
20202
20571
  _vDomRight = Infinity;
20203
20572
  }
20573
+
20574
+ if (frozenLeft > 0 && frozenLeftColumns[0].isRowHeader === true) {
20575
+ frozenLeft -= 1;
20576
+ }
20204
20577
 
20205
20578
  if (this.overlaps(_vDomLeft, _vDomTop, _vDomRight, _vDomBottom)) {
20206
20579
  top = Math.max(this.top, _vDomTop);
20207
20580
  bottom = Math.min(this.bottom, _vDomBottom);
20208
20581
  left = Math.max(this.left, _vDomLeft);
20209
- right = Math.min(this.right, _vDomRight);
20582
+ right = Math.min(this.right, _vDomRight + frozenLeft + frozenRight);
20210
20583
 
20211
20584
  topLeftCell = this.rangeManager.getCell(top, left);
20212
20585
  bottomRightCell = this.rangeManager.getCell(bottom, right);
@@ -20217,13 +20590,28 @@ class Range extends CoreFeature{
20217
20590
 
20218
20591
  this.element.classList.add("tabulator-range-active");
20219
20592
  // this.element.classList.toggle("tabulator-range-active", this === this.rangeManager.activeRange);
20593
+
20594
+ let occupiedFrozenColumnsWidth = 0;
20595
+ this.rangeManager.getTableColumns().forEach((column) => {
20596
+ if (this.occupiesColumn(column) && column.definition.frozen){
20597
+ occupiedFrozenColumnsWidth += column.width;
20598
+ }
20599
+ });
20220
20600
 
20221
20601
  if(this.table.rtl){
20602
+ const calculatedRangeWidth = Math.max(
20603
+ topLeftCellEl.offsetLeft + topLeftCellEl.offsetWidth - bottomRightCellEl.offsetLeft,
20604
+ occupiedFrozenColumnsWidth,
20605
+ );
20222
20606
  this.element.style.right = topLeftRowEl.offsetWidth - topLeftCellEl.offsetLeft - topLeftCellEl.offsetWidth + "px";
20223
- this.element.style.width = topLeftCellEl.offsetLeft + topLeftCellEl.offsetWidth - bottomRightCellEl.offsetLeft + "px";
20607
+ this.element.style.width = calculatedRangeWidth + "px";
20224
20608
  }else {
20609
+ const calculatedRangeWidth = Math.max(
20610
+ bottomRightCellEl.offsetLeft + bottomRightCellEl.offsetWidth - topLeftCellEl.offsetLeft,
20611
+ occupiedFrozenColumnsWidth,
20612
+ );
20225
20613
  this.element.style.left = topLeftRowEl.offsetLeft + topLeftCellEl.offsetLeft + "px";
20226
- this.element.style.width = bottomRightCellEl.offsetLeft + bottomRightCellEl.offsetWidth - topLeftCellEl.offsetLeft + "px";
20614
+ this.element.style.width = calculatedRangeWidth + "px";
20227
20615
  }
20228
20616
 
20229
20617
  this.element.style.top = topLeftRowEl.offsetTop + "px";
@@ -23259,22 +23647,24 @@ var defaultValidators = {
23259
23647
  if(value === "" || value === null || typeof value === "undefined"){
23260
23648
  return true;
23261
23649
  }
23262
- var unique = true;
23650
+
23651
+ //the "ignorecase" parameter enables case-insensitive comparison, other
23652
+ //rows can hold non string values (numbers, empty cells), so only lower
23653
+ //case when both sides are strings (https://github.com/tabulator-tables/tabulator/pull/4486)
23654
+ var equals = parameters === "ignorecase"
23655
+ ? (x, y) => typeof x === "string" && typeof y === "string" ? x.toLowerCase() == y.toLowerCase() : x == y
23656
+ : (x, y) => x == y;
23263
23657
 
23264
23658
  var cellData = cell.getData();
23265
23659
  var column = cell.getColumn()._getSelf();
23266
23660
 
23267
- this.table.rowManager.rows.forEach(function(row){
23661
+ return !this.table.rowManager.rows.some(function(row){
23268
23662
  var data = row.getData();
23269
23663
 
23270
23664
  if(data !== cellData){
23271
- if(value == column.getFieldValue(data)){
23272
- unique = false;
23273
- }
23665
+ return equals(value, column.getFieldValue(data));
23274
23666
  }
23275
23667
  });
23276
-
23277
- return unique;
23278
23668
  },
23279
23669
 
23280
23670
  //must have a value
@@ -25400,6 +25790,7 @@ class BasicVertical extends Renderer{
25400
25790
 
25401
25791
 
25402
25792
  rerenderRows(callback){
25793
+ let origScrollTop = this.elementVertical.scrollTop;
25403
25794
  this.clearRows();
25404
25795
 
25405
25796
  if(callback){
@@ -25410,6 +25801,9 @@ class BasicVertical extends Renderer{
25410
25801
 
25411
25802
  if(!this.rows().length){
25412
25803
  this.table.rowManager.tableEmpty();
25804
+ } else {
25805
+ //Restore existing scrolling position
25806
+ this.elementVertical.scrollTop = origScrollTop;
25413
25807
  }
25414
25808
  }
25415
25809
 
@@ -25528,7 +25922,13 @@ class VirtualDomVertical extends Renderer{
25528
25922
  }
25529
25923
 
25530
25924
  if(this.rows().length){
25531
- this._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);
25925
+ if(topRow === false){
25926
+ //no rendered row to anchor on, start from the top if nothing was rendered before,
25927
+ //otherwise the rendered window is past the end of the shrunken data so anchor on the last row
25928
+ topRow = rows.length ? this.rows().length - 1 : 0;
25929
+ }
25930
+
25931
+ this._virtualRenderFill(topRow, true, topOffset || 0);
25532
25932
  }else {
25533
25933
  this.clear();
25534
25934
  this.table.rowManager.tableEmpty();
@@ -25778,7 +26178,8 @@ class VirtualDomVertical extends Renderer{
25778
26178
  totalRowsRendered++;
25779
26179
  });
25780
26180
 
25781
- resized = this.table.rowManager.adjustTableSize();
26181
+ //block the redraw, this loop picks up the new container size itself
26182
+ resized = this.table.rowManager.adjustTableSize(true);
25782
26183
  containerHeight = this.elementVertical.clientHeight;
25783
26184
  if(resized && (fixedHeight || this.table.options.maxHeight))
25784
26185
  {
@@ -26126,7 +26527,7 @@ class RowManager extends CoreFeature{
26126
26527
 
26127
26528
  el.classList.add("tabulator-table");
26128
26529
  el.setAttribute("role", "rowgroup");
26129
- el.setAttribute("id", "tabulator-table-body");
26530
+ el.setAttribute("id", "tabulator-table-body-" + this.table.instanceId);
26130
26531
 
26131
26532
  return el;
26132
26533
  }
@@ -26833,7 +27234,7 @@ class RowManager extends CoreFeature{
26833
27234
  }
26834
27235
 
26835
27236
  setActiveRows(activeRows){
26836
- this.activeRows = this.activeRows = Object.assign([], activeRows);
27237
+ this.activeRows = activeRows.slice();
26837
27238
  this.activeRowsCount = this.activeRows.length;
26838
27239
  }
26839
27240
 
@@ -27103,7 +27504,7 @@ class RowManager extends CoreFeature{
27103
27504
  }
27104
27505
 
27105
27506
  //adjust the height of the table holder to fit in the Tabulator element
27106
- adjustTableSize(){
27507
+ adjustTableSize(blockRedraw){
27107
27508
  let initialHeight = this.element.clientHeight, minHeight;
27108
27509
  let resized = false;
27109
27510
 
@@ -27119,8 +27520,8 @@ class RowManager extends CoreFeature{
27119
27520
  this.element.style.maxHeight = height;
27120
27521
  } else {
27121
27522
  this.element.style.height = "";
27122
- this.element.style.height =
27123
- this.table.element.clientHeight - otherHeight + "px";
27523
+ //clamp at zero, a negative height is invalid css and would leave the holder at its content height
27524
+ this.element.style.height = Math.max(this.table.element.clientHeight - otherHeight, 0) + "px";
27124
27525
  this.element.scrollTop = this.scrollTop;
27125
27526
  }
27126
27527
 
@@ -27129,7 +27530,10 @@ class RowManager extends CoreFeature{
27129
27530
  //check if the table has changed size when dealing with variable height tables
27130
27531
  if(!this.fixedHeight && initialHeight != this.element.clientHeight){
27131
27532
  resized = true;
27132
- if(!this.redrawing){ // prevent recursive redraws
27533
+
27534
+ //the renderer blocks the redraw when it adjusts the size from inside its render loop,
27535
+ //it picks up the new size itself and a redraw would re-render the rows while they are still being rendered
27536
+ if(!blockRedraw && !this.redrawing){ // prevent recursive redraws
27133
27537
  this.redrawing = true;
27134
27538
  if(this.subscribed("table-resize")){
27135
27539
  this.dispatch("table-resize");
@@ -27866,35 +28270,27 @@ class ExternalEventBus {
27866
28270
  }
27867
28271
  }
27868
28272
 
27869
- _dispatch(){
27870
- var args = Array.from(arguments),
27871
- key = args.shift(),
27872
- result;
27873
-
27874
- if(this.events[key]){
27875
- this.events[key].forEach((callback, i) => {
27876
- let callResult = callback.apply(this.table, args);
27877
-
27878
- if(!i){
27879
- result = callResult;
27880
- }
27881
- });
28273
+ _dispatch(key, ...args){
28274
+ const subs = this.events[key];
28275
+ const len = subs?.length;
28276
+ if(len){
28277
+ const result = subs[0].apply(this.table, args);
28278
+
28279
+ for(let i = 1; i < len; i++){
28280
+ subs[i].apply(this.table, args);
28281
+ }
28282
+
28283
+ return result;
27882
28284
  }
27883
-
27884
- return result;
27885
28285
  }
27886
28286
 
27887
- _debugDispatch(){
27888
- var args = Array.from(arguments),
27889
- key = args[0];
27890
-
27891
- args[0] = "ExternalEvent:" + args[0];
27892
-
28287
+ _debugDispatch(key, ...args){
27893
28288
  if(this.debug === true || this.debug.includes(key)){
27894
- console.log(...args);
28289
+ const debugArgs = ["ExternalEvent:" + key, ...args];
28290
+ console.log(...debugArgs);
27895
28291
  }
27896
28292
 
27897
- return this._dispatch(...arguments);
28293
+ return this._dispatch(key, ...args);
27898
28294
  }
27899
28295
  }
27900
28296
 
@@ -27965,21 +28361,28 @@ class InternalEventBus {
27965
28361
  }
27966
28362
 
27967
28363
  _chain(key, args, initialValue, fallback){
27968
- var value = initialValue;
28364
+ const subs = this.events[key];
27969
28365
 
27970
- if(!Array.isArray(args)){
27971
- args = [args];
27972
- }
28366
+ if(subs && subs.length){
28367
+ if(!Array.isArray(args)){
28368
+ args = [args];
28369
+ }
27973
28370
 
27974
- if(this.subscribed(key)){
27975
- this.events[key].forEach((subscriber, i) => {
27976
- value = subscriber.callback.apply(this, args.concat([value]));
27977
- });
28371
+ //reuse a single args array across subscribers, mutating only the trailing
28372
+ //accumulator slot, instead of allocating a fresh concat per subscriber
28373
+ const callArgs = args.slice();
28374
+ const valueIndex = callArgs.length;
28375
+ let value = initialValue;
28376
+
28377
+ for(let i = 0; i < subs.length; i++){
28378
+ callArgs[valueIndex] = value;
28379
+ value = subs[i].callback.apply(this, callArgs);
28380
+ }
27978
28381
 
27979
28382
  return value;
27980
- }else {
27981
- return typeof fallback === "function" ? fallback() : fallback;
27982
28383
  }
28384
+
28385
+ return typeof fallback === "function" ? fallback() : fallback;
27983
28386
  }
27984
28387
 
27985
28388
  _confirm(key, args){
@@ -28010,54 +28413,40 @@ class InternalEventBus {
28010
28413
  }
28011
28414
  }
28012
28415
 
28013
- _dispatch(){
28014
- var args = Array.from(arguments),
28015
- key = args.shift();
28016
-
28017
- if(this.events[key]){
28018
- this.events[key].forEach((subscriber) => {
28416
+ _dispatch(key, ...args){
28417
+ const subs = this.events[key];
28418
+ if(subs){
28419
+ for(const subscriber of subs){
28019
28420
  subscriber.callback.apply(this, args);
28020
- });
28421
+ }
28021
28422
  }
28022
28423
  }
28023
28424
 
28024
- _debugDispatch(){
28025
- var args = Array.from(arguments),
28026
- key = args[0];
28027
-
28028
- args[0] = "InternalEvent:" + key;
28029
-
28425
+ _debugDispatch(key, ...args){
28030
28426
  if(this.debug === true || this.debug.includes(key)){
28031
- console.log(...args);
28427
+ const debugArgs = ["InternalEvent:" + key, ...args];
28428
+ console.log(...debugArgs);
28032
28429
  }
28033
28430
 
28034
- return this._dispatch(...arguments);
28431
+ return this._dispatch(key, ...args);
28035
28432
  }
28036
28433
 
28037
- _debugChain(){
28038
- var args = Array.from(arguments),
28039
- key = args[0];
28040
-
28041
- args[0] = "InternalEvent:" + key;
28042
-
28434
+ _debugChain(key, args, initialValue, fallback){
28043
28435
  if(this.debug === true || this.debug.includes(key)){
28044
- console.log(...args);
28436
+ const debugArgs = ["InternalEvent:" + key, args, initialValue, fallback];
28437
+ console.log(...debugArgs);
28045
28438
  }
28046
28439
 
28047
- return this._chain(...arguments);
28440
+ return this._chain(key, args, initialValue, fallback);
28048
28441
  }
28049
28442
 
28050
- _debugConfirm(){
28051
- var args = Array.from(arguments),
28052
- key = args[0];
28053
-
28054
- args[0] = "InternalEvent:" + key;
28055
-
28443
+ _debugConfirm(key, args){
28056
28444
  if(this.debug === true || this.debug.includes(key)){
28057
- console.log(...args);
28445
+ const debugArgs = ["InternalEvent:" + key, args];
28446
+ console.log(...debugArgs);
28058
28447
  }
28059
28448
 
28060
- return this._confirm(...arguments);
28449
+ return this._confirm(key, args);
28061
28450
  }
28062
28451
  }
28063
28452
 
@@ -29105,6 +29494,12 @@ class Tabulator extends ModuleBinder{
29105
29494
 
29106
29495
  if(this.initializeElement(element)){
29107
29496
 
29497
+ if (this.element.id) {
29498
+ this.instanceId = this.element.id;
29499
+ } else {
29500
+ this.instanceId = Math.random().toString(36).slice(2, 7);
29501
+ }
29502
+
29108
29503
  this.initializeCoreSystems(options);
29109
29504
 
29110
29505
  //delay table creation to allow event bindings immediately after the constructor
@@ -29262,7 +29657,7 @@ class Tabulator extends ModuleBinder{
29262
29657
 
29263
29658
  element.classList.add("tabulator");
29264
29659
  element.setAttribute("role", "grid");
29265
- element.setAttribute("aria-owns", "tabulator-table-body");
29660
+ element.setAttribute("aria-owns", "tabulator-table-body-" + this.instanceId);
29266
29661
 
29267
29662
  //empty element
29268
29663
  while(element.firstChild) element.removeChild(element.firstChild);
@@ -29448,6 +29843,10 @@ class Tabulator extends ModuleBinder{
29448
29843
  getDataCount(active){
29449
29844
  return this.rowManager.getDataCount(active);
29450
29845
  }
29846
+
29847
+ getRedrawBlock() {
29848
+ return this.rowManager.redrawBlock || this.columnManager.redrawBlock;
29849
+ }
29451
29850
 
29452
29851
  //replace data, keeping table in position with same sort
29453
29852
  replaceData(data, params, config){
@@ -30152,9 +30551,9 @@ function createCustomComponent(cell, column, value, pool) {
30152
30551
  * @param props - object of properties and event listeners
30153
30552
  */
30154
30553
  function setElementProperties(element, props) {
30155
- const properties = pickBy.pickBy(props, pickBy.negate(isEventListener));
30554
+ const properties = pickBy(props, _baseSet.negate(isEventListener));
30156
30555
  Object.assign(element, properties);
30157
- const listeners = pickBy.pickBy(props, isEventListener);
30556
+ const listeners = pickBy(props, isEventListener);
30158
30557
  for (const [key, value] of Object.entries(listeners)) {
30159
30558
  const event = getEventName(key);
30160
30559
  element.addEventListener(event, value);
@@ -30695,7 +31094,7 @@ const areRowsEqual = (newData, oldData) => {
30695
31094
  return newData.every((newItem, index) => isEqual.isEqual(newItem, oldData[index]));
30696
31095
  };
30697
31096
 
30698
- const tableCss = () => `@charset "UTF-8";.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:bold;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;outline:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:rgb(204.5, 204.5, 204.5);pointer-events:none}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#D6D6D6;color:#000000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#FFFFFF}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:0.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:initial}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto !important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:rgb(204.5, 204.5, 204.5)}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;display:inline-block;background:rgb(242.75, 242.75, 242.75) !important;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:rgb(242.75, 242.75, 242.75) !important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{padding-top:1em;display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:bold;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:bold;background:rgb(226.25, 226.25, 226.25) !important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-range-overlay{position:absolute;inset:0;z-index:10;pointer-events:none}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{position:absolute;box-sizing:border-box;border:1px solid #2975DD}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after{content:"";position:absolute;right:-3px;bottom:-3px;width:6px;height:6px;background-color:#2975DD;border-radius:999px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{position:absolute;box-sizing:border-box;border:2px solid #2975DD}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:bold;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs{margin-top:-5px;overflow-x:auto}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab{display:inline-block;padding:5px;border:#999 1px solid;border-top:none;border-bottom-left-radius:5px;border-bottom-right-radius:5px;font-size:0.9em}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab:hover{cursor:pointer;opacity:0.7}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab.tabulator-spreadsheet-tab-active{background:#fff}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:rgb(242.75, 242.75, 242.75) !important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:rgb(242.75, 242.75, 242.75) !important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:normal}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:rgba(255, 255, 255, 0.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:0.5}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{cursor:pointer;background:rgba(0, 0, 0, 0.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:11;vertical-align:middle}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-col-resize-guide{position:absolute;top:0;width:4px;height:100%;margin-left:-0.5px;background-color:#999;opacity:0.5}.tabulator .tabulator-row-resize-guide{position:absolute;left:0;width:100%;height:4px;margin-top:-0.5px;background-color:#999;opacity:0.5}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0, 0, 0, 0.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:bold;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #D00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#EFEFEF}@media (hover: hover) and (pointer: fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9ABCEA}@media (hover: hover) and (pointer: fine){.tabulator-row.tabulator-selected:hover{background-color:#769BCC;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#D6D6D6;color:#000000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#FFFFFF}.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#FFFFFF}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover: hover) and (pointer: fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;outline:none}.tabulator-row .tabulator-cell .tabulator-tick{fill:#2DC214}.tabulator-row .tabulator-cell .tabulator-cross{fill:#CE1515}.tabulator-row .tabulator-cell.tabulator-row-header{border-right:1px solid #999;border-bottom:1px solid #aaa;background:#e6e6e6}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1D68CD;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #dd0000}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#dd0000}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9ABCEA}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0, 0, 0, 0.1);overflow:hidden}@media (hover: hover) and (pointer: fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0, 0, 0, 0.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:bold;font-size:1.1em}@media (hover: hover) and (pointer: fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:0.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:bold;min-width:100%}@media (hover: hover) and (pointer: fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0, 0, 0, 0.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-toggle{box-sizing:border-box;display:flex;flex-direction:row;border:1px solid #ccc;background:#dcdcdc}.tabulator-toggle.tabulator-toggle-on{background:#1c6cc2}.tabulator-toggle .tabulator-toggle-switch{box-sizing:border-box;border:1px solid #ccc;background:#fff}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0, 0, 0, 0.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:min(500px, 100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:0.5}@media (hover: hover) and (pointer: fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#EFEFEF}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after{display:inline-block;position:absolute;top:calc(5px + 0.4em);right:10px;height:7px;width:7px;content:"";border-width:1px 1px 0 0;border-style:solid;border-color:#aaa;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1D68CD}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid rgba(255, 255, 255, 0.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1D68CD}@media (hover: hover) and (pointer: fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1D68CD}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:bold}.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:initial;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:initial}.tabulator.tabulator-rtl .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after{content:"";position:absolute;left:-3px;right:initial;bottom:-3px;width:6px;height:6px;background-color:#2975DD;border-radius:999px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:initial;margin-left:5px;border-bottom-left-radius:initial;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:initial;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){display:none !important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:bold;min-width:100%}@media (hover: hover) and (pointer: fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0, 0, 0, 0.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px !important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px !important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px !important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px !important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px !important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0, 0, 0, 0.1);overflow:hidden}@media (hover: hover) and (pointer: fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0, 0, 0, 0.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}#tabulator-container,#tabulator-table{height:100%;width:100%}.tabulator{display:flex;flex-direction:column}.tabulator *{box-sizing:border-box}.tabulator .tabulator-header{flex-shrink:0}.tabulator .tabulator-tableholder{isolation:isolate;flex-grow:1;height:unset !important;max-height:unset !important;min-height:unset !important;padding-bottom:5rem}.tabulator .tabulator-footer{flex-shrink:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{position:relative;cursor:pointer;transition:opacity 0.2s ease;right:0}.tabulator-sortable[aria-sort=none] .tabulator-col-sorter{opacity:0}.tabulator-sortable[aria-sort=none]:hover .tabulator-col-sorter{opacity:1}.tabulator-sortable[aria-sort=none]:hover .tabulator-col-sorter .tabulator-arrow{animation:indicate-sortable-unsorted-column 2s ease forwards}.tabulator-sortable[aria-sort=desc] .tabulator-col-sorter,.tabulator-sortable[aria-sort=asc] .tabulator-col-sorter{opacity:1}.tabulator-sortable[aria-sort=desc]:hover .tabulator-col-sorter,.tabulator-sortable[aria-sort=asc]:hover .tabulator-col-sorter{opacity:1;animation:indicate-sortable-sorted-column 0.5s ease}.tabulator-arrow{rotate:180deg;transition:border 0.2s ease;border-left:0.25rem solid transparent !important;border-right:0.25rem solid transparent !important}.tabulator#tabulator-table .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-arrow{height:0.75rem;border-top-width:0.25rem;border-top-style:solid;border-top-color:rgb(var(--table-arrow-color));border-bottom-width:0.25rem;border-bottom-style:solid;border-bottom-color:rgb(var(--table-arrow-color))}.tabulator#tabulator-table .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-arrow{height:0;transform:translate3d(0, -0.2rem, 0);border-top-width:0.25rem;border-bottom-width:0;border-top-color:var(--table-arrow-color--active)}.tabulator#tabulator-table .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-arrow{height:0;transform:translate3d(0, 0.2rem, 0);border-top-width:0;border-bottom-width:0.25rem;border-bottom-color:var(--table-arrow-color--active)}@keyframes indicate-sortable-sorted-column{0%,100%{transform:translate3d(0, 0, 0)}30%{transform:translate3d(0, -0.0875rem, 0)}60%{transform:translate3d(0, 0.0875rem, 0)}}@keyframes indicate-sortable-unsorted-column{0%,15%,45%,75%{border-top-color:transparent;border-bottom-color:transparent;transform:translate3d(0, 0, 0)}30%{border-top-color:transparent;border-bottom-color:var(--table-arrow-color--active);transform:translate3d(0, -0.3125rem, 0)}60%{border-top-color:var(--table-arrow-color--active);border-bottom-color:transparent;transform:translate3d(0, 0.3125rem, 0)}100%{border-top-color:rgb(var(--table-arrow-color));border-bottom-color:rgb(var(--table-arrow-color))}}:host(:not(.has-pagination)) #tabulator-container .tabulator-paginator{display:var(--limel-table-single-page-paginator-display, grid)}.tabulator .tabulator-footer .tabulator-paginator{box-sizing:border-box;display:grid;grid-auto-flow:column;justify-content:end;padding-top:0.25rem;padding-bottom:0.25rem}.tabulator .tabulator-footer .tabulator-paginator .tabulator-pages{margin:0 0.5rem}.tabulator .tabulator-footer .tabulator-paginator .tabulator-pages .tabulator-page{margin:0 0rem}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]){transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:rgb(var(--contrast-1200)) !important;background-color:transparent}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):hover,.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):focus,.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):focus-visible{will-change:color, background-color, box-shadow, transform}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):hover,.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):focus-visible{transform:translate3d(0, 0.01rem, 0);color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color)}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):hover{box-shadow:var(--button-shadow-hovered)}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):hover,.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page{position:relative;height:1.75rem;min-width:1.75rem;padding:0 0.5rem;margin:0;border:none;border-radius:2.5rem;background-color:transparent}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active{background-color:var(--limel-theme-surface-background-color);box-shadow:var(--button-shadow-inset)}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:disabled{opacity:0.3;cursor:not-allowed}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:disabled:hover{background-color:transparent}button.tabulator-page{display:inline-flex !important;align-items:center;justify-content:center}button.tabulator-page[data-page=first],button.tabulator-page[data-page=prev],button.tabulator-page[data-page=next],button.tabulator-page[data-page=last]{font-size:0;color:transparent !important}button.tabulator-page[data-page=first]:before,button.tabulator-page[data-page=first]:after,button.tabulator-page[data-page=prev]:before,button.tabulator-page[data-page=prev]:after,button.tabulator-page[data-page=next]:before,button.tabulator-page[data-page=next]:after,button.tabulator-page[data-page=last]:before,button.tabulator-page[data-page=last]:after{content:"";transition:transform 0.2s ease;display:block;position:absolute}button.tabulator-page[data-page=first]:after,button.tabulator-page[data-page=prev]:after,button.tabulator-page[data-page=next]:after,button.tabulator-page[data-page=last]:after{border-style:solid;border-color:transparent;border-width:0.25rem 0 0.25rem 0.4rem;border-left-color:var(--limel-theme-on-surface-color)}button.tabulator-page[data-page=first]:before,button.tabulator-page[data-page=last]:before{height:0.5rem;width:0.125rem;background-color:var(--limel-theme-on-surface-color)}button.tabulator-page[data-page=first]:before{left:0.375rem}button.tabulator-page[data-page=last]:before{right:0.375rem}button.tabulator-page[data-page=first]:after,button.tabulator-page[data-page=prev]:after{transform:rotateZ(180deg)}button.tabulator-page[data-page=next]:not([disabled]):hover:after,button.tabulator-page[data-page=last]:not([disabled]):hover:after{transform:translate3d(0.09375rem, 0, 0)}button.tabulator-page[data-page=first]:not([disabled]):hover:after,button.tabulator-page[data-page=prev]:not([disabled]):hover:after{transform:translate3d(-0.09375rem, 0, 0) rotateZ(180deg)}@keyframes fade-in-tabulator-loader{0%{background:transparent}100%{background:rgba(var(--contrast-1400), 0.4)}}@keyframes spin-tabulator-loader{to{transform:rotate(360deg)}}.tabulator .tabulator-loader{animation:fade-in-tabulator-loader 0.5s ease 0.5s forwards;animation-iteration-count:1;cursor:progress;background:transparent}.tabulator .tabulator-loader .tabulator-loader-msg{animation:spin-tabulator-loader 0.4s linear infinite;color:transparent;font-size:0;border-radius:50%;border:0.1875rem solid rgb(var(--lime-brand-color-flexible-turquoise)) !important;border-top-color:transparent !important;width:1.25rem;height:1.25rem;background-color:transparent !important;padding:0}.interactive-feedback{position:absolute;inset:0;min-height:0.125rem;transition:color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);background-color:rgb(var(--limel-table-row-background-color))}.tabulator-row:active .interactive-feedback{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 )}.tabulator-row:hover .interactive-feedback,.tabulator-row:active .interactive-feedback{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}.tabulator-row:not(.tabulator-calcs){background-color:transparent}.tabulator-row:not(.tabulator-calcs).tabulator-row-odd{--limel-table-row-background-color:var( --table-row-background-color--odd )}.tabulator-row:not(.tabulator-calcs).tabulator-row-even{--limel-table-row-background-color:var( --table-row-background-color--even )}.tabulator-row:not(.tabulator-calcs) .tabulator-cell{pointer-events:none}.tabulator-row:not(.tabulator-calcs) .tabulator-cell>*{pointer-events:auto}.tabulator-row:not(.tabulator-calcs).tabulator-selectable:hover{background-color:var(--table-row-background-color--hover);z-index:var(--limel-table-interactive-selectable-row-z-index-hover)}.tabulator-row:not(.tabulator-calcs).tabulator-selectable.active:before{content:"";display:inline-block;box-sizing:border-box;position:sticky;z-index:calc(var(--limel-table-interactive-selectable-row-z-index-hover) + 1);inset:0 0 auto 0;border:0.2rem solid var(--lime-primary-color, var(--limel-theme-primary-color));border-radius:1rem;margin-right:-0.4rem}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable .interactive-feedback:hover{box-shadow:var(--button-shadow-hovered)}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable:active .interactive-feedback{box-shadow:var(--button-shadow-pressed);transform:translate3d(0, 0.05rem, 0)}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable.active{--limel-table-row-background-color:var( --table-row-background-color--active )}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable.active .interactive-feedback{opacity:0.2;background-color:var(--table-row-background-color--active);box-shadow:var(--button-shadow-inset-pressed)}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable.active .interactive-feedback:hover{opacity:0.3}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable:not(.active) .interactive-feedback:hover{background-color:var(--table-row-background-color--hover)}:host(.has-low-density) #tabulator-container{width:max-content;max-width:100%;margin:auto}:host(.has-low-density) .tabulator-table{background-color:transparent}:host(.has-low-density) .tabulator-header{border-radius:0.375rem}:host(.has-low-density) .tabulator-footer{border-radius:0.5rem}:host(.has-low-density) .tabulator-calcs-holder{border-radius:0.5rem 0.5rem 0 0}:host(.has-low-density) .tabulator-row{border-radius:0.5rem}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom){margin-bottom:0.25rem}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom):first-child{margin-top:0.75rem}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom) .tabulator-cell{height:2.75rem !important}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom) .tabulator-cell:first-child{border-radius:0.5rem 0 0 0.5rem}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom) .tabulator-cell:last-child{border-radius:0 0.5rem 0.5rem 0}:host(.has-pagination-on-top) .tabulator .tabulator-header{order:2}:host(.has-pagination-on-top) .tabulator .tabulator-tableholder{order:3}:host(.has-pagination-on-top) .tabulator .tabulator-footer{order:1;background-color:transparent}:host(.has-pagination-on-top) .tabulator .tabulator-calcs-holder{position:absolute;bottom:0}:host(.has-pagination-on-top):has(.tabulator-calcs-holder) .tabulator-tableholder{margin-bottom:var(--limel-table-height-of-aggregations-row)}:host(.has-pagination-on-top) .select-all{top:2.5rem}.lime-col-title__custom-component{width:100%;display:flex;align-items:center;margin-right:1.25rem;gap:0.25rem}.title-component-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex-grow:1;flex-shrink:1;min-width:0}.title-component-slot{flex-shrink:0}@keyframes detach-a-column-header{0%{transform:rotate(0deg)}100%{transform:rotate(-2deg)}}:host([movable-columns]:not([movable-columns=false])) .tabulator-header{overflow-y:visible}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col:not(.tabulator-frozen){cursor:move !important}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col:not(.tabulator-frozen).tabulator-sortable.tabulator-moving{animation:detach-a-column-header 0.2s ease forwards;opacity:0.9;border:none;border-radius:0.25rem;background-color:rgb(var(---table-header-background-color-when-being-dragged));box-shadow:var(--shadow-depth-16)}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col:not(.tabulator-frozen).tabulator-sortable.tabulator-moving:hover{background-color:rgb(var(---table-header-background-color-when-being-dragged))}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col:not(.tabulator-frozen).tabulator-sortable.tabulator-moving .tabulator-arrow:before{background-color:rgb(var(---table-header-background-color-when-being-dragged))}.tabulator .tabulator-footer{transition:transform 0.5s ease-out, opacity 0.35s ease;color:var(--table-text-color);background-color:rgb(var(--table-header-background-color--hover));border:none;user-select:auto}.tabulator .tabulator-footer .tabulator-footer-contents{padding:0 0.25rem}.tabulator .tabulator-footer .tabulator-calcs-holder{border-color:rgb(var(--contrast-500));background:rgb(var(--contrast-500)) !important;margin-top:0;margin-bottom:0}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{height:var(--limel-table-height-of-aggregations-row);background:transparent !important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-calcs{cursor:default}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-cell{height:var(--limel-table-height-of-aggregations-row) !important;padding-top:0.25rem;padding-bottom:0}.select-all,.limel-table--row-selector,.limel-table-drag-handle{--limel-checkbox-min-height:1.25rem;display:inline-flex !important;align-items:center;justify-content:center;text-overflow:unset !important;padding:0 !important}.select-all{position:absolute;z-index:var(--limel-table-row-selector-z-index);left:0.375rem;top:0.1875rem}:host([movable-rows]:not([movable-rows=false])) .select-all{left:calc(var(--limel-table-drag-handle-width) + 0.375rem)}.limel-table--row-selector{left:0}:host([movable-rows]:not([movable-rows=false])) .limel-table--row-selector{left:var(--limel-table-drag-handle-width)}.tabulator-block-select .limel-table--row-selector,.tabulator-block-select .limel-table--row-selector *{pointer-events:none !important}.limel-table--row-selector,.limel-table-drag-handle{position:sticky !important;border:none !important;z-index:var(--limel-table-row-selector-z-index) !important}.limel-table--row-selector:before,.limel-table-drag-handle:before{content:"";inset:0.25rem 0;position:absolute;background-image:linear-gradient(to right, rgb(var(--limel-table-row-background-color)) 70%, rgb(var(--limel-table-row-background-color), 0))}.limel-table--row-selector limel-checkbox,.limel-table-drag-handle limel-checkbox{transition:opacity 0.2s ease;opacity:0.3}.tabulator-row:hover .limel-table--row-selector limel-checkbox,.tabulator-row:hover .limel-table-drag-handle limel-checkbox{opacity:1}:host(.has-selection) .limel-table--row-selector limel-checkbox,:host(.has-selection) .limel-table-drag-handle limel-checkbox{opacity:1}.limel-table--row-selector .tabulator-col-resize-handle,.limel-table-drag-handle .tabulator-col-resize-handle{display:none}.limel-table--row-selector+.tabulator-col .tabulator-col-resize-handle.prev,.limel-table--row-selector+.tabulator-cell .tabulator-col-resize-handle.prev,.limel-table-drag-handle+.tabulator-col .tabulator-col-resize-handle.prev,.limel-table-drag-handle+.tabulator-cell .tabulator-col-resize-handle.prev{display:none}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col.limel-table--row-selector,:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col.limel-table-drag-handle{border:none;cursor:default !important;pointer-events:none;background-color:transparent;background-image:linear-gradient(to right, rgb(var(--table-header-background-color--hover)) 70%, rgb(var(--table-header-background-color--hover), 0));left:0}:host([movable-columns]:not([movable-columns=false])[movable-rows]:not([movable-rows=false])) .tabulator-header .tabulator-col.limel-table--row-selector{left:var(--limel-table-drag-handle-width)}:host(.has-selection) .tabulator-calcs .tabulator-cell{color:var(--table-arrow-color--active)}.limel-table-drag-handle{transition:opacity 0.3s ease;left:0;width:var(--limel-table-drag-handle-width) !important;height:2rem !important;user-select:none;z-index:calc(var(--limel-table-row-selector-z-index) + 1) !important;background-color:transparent !important}:host([selectable]:not([selectable=false])) .limel-table-drag-handle{background-image:none !important;background-color:rgb(var(--limel-table-row-background-color)) !important}.tabulator-block-select .limel-table-drag-handle{opacity:0.3;cursor:grabbing}.tabulator-block-select .limel-table-drag-handle limel-drag-handle,.tabulator-block-select .limel-table-drag-handle limel-drag-handle *{pointer-events:none !important}.tabulator-row.tabulator-moving .limel-table-drag-handle limel-drag-handle button:last-of-type{display:none;}:host(limel-table){--limel-table-interactive-selectable-row-z-index-hover:2;--limel-table-sorter-arrow-width:0.5rem;--limel-table-table-cell-padding:0.5rem;--limel-table-row-selector-z-index:1;--limel-table-drag-handle-width:2rem;--limel-table-height-of-aggregations-row:1.5rem;isolation:isolate;display:block;--table-header-background-color:var(--contrast-500);--table-header-background-color--hover:var(--contrast-400);--table-header-background-color-when-being-dragged:var(--contrast-100);--table-row-background-color--odd:var(--contrast-200);--table-row-background-color--even:var(--contrast-100);--table-row-background-color--hover:var( --lime-elevated-surface-background-color );--table-row-background-color--active:var(--mdc-theme-primary);--table-arrow-color:var(--contrast-800);--table-arrow-color--active:var( --lime-primary-color, var(--limel-theme-primary-color) );--table-text-color:var(--limel-theme-text-primary-on-background-color);--limel-chip-size:1.25rem}#tabulator-container{position:relative}#tabulator-container,#tabulator-table{background-color:transparent;border:none}.tabulator .tabulator-header{color:var(--table-text-color)}.tabulator .tabulator-tableholder .tabulator-table{color:var(--table-text-color);background-color:transparent}.tabulator .tabulator-header{border-bottom:0;background-color:rgb(var(--table-header-background-color))}.tabulator .tabulator-header .tabulator-headers{width:fit-content}.tabulator .tabulator-header .tabulator-col{transition:background-color 0.2s ease;background-color:rgb(var(--table-header-background-color));border-right-color:rgb(var(--contrast-200))}.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:rgb(var(--table-header-background-color--hover))}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:0 var(--limel-table-sorter-arrow-width) 0 0.25rem}.tabulator .tabulator-header .tabulator-col-title-holder{height:1.75rem;display:flex;align-items:center;gap:0.25rem}.tabulator .tabulator-header .tabulator-col-sorter{order:1}.tabulator .tabulator-header .tabulator-col-title{order:2;font-weight:500;padding-right:0 !important;line-height:1.25rem}.tabulator-row{height:2.25rem}.tabulator-row .tabulator-cell{border-right:transparent;padding:var(--limel-table-table-cell-padding);padding-left:calc(var(--limel-table-table-cell-padding) + var(--limel-table-sorter-arrow-width));height:inherit}.tabulator-row .tabulator-cell[style*="text-align: right;"]{justify-content:flex-end}.tabulator-row .tabulator-cell[style*="text-align: center;"]{justify-content:center}.tabulator-row .tabulator-col-resize-handle{display:none}.tabulator-col,.tabulator-cell{max-width:var(--table-max-column-width, 40rem)}#tabulator-loader,#tabulator-empty-text{position:absolute;width:100%;height:100%;z-index:1;display:flex;align-items:center;justify-content:center}#tabulator-loader{background-color:rgba(var(--contrast-100), 0.6);cursor:wait}#tabulator-empty-text{color:rgb(var(--contrast-800));font-weight:bold;font-size:1.25rem;pointer-events:none}limel-chip{transform:translateY(-0.15rem)}`;
31097
+ const tableCss = () => `@charset "UTF-8";.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator.tabulator-ranges .tabulator-cell:not(.tabulator-editing){user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:bold;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;outline:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #aaa;background:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:rgb(204.5, 204.5, 204.5);pointer-events:none}.tabulator .tabulator-header .tabulator-col.tabulator-range-highlight{background-color:#D6D6D6;color:#000000}.tabulator .tabulator-header .tabulator-col.tabulator-range-selected{background-color:#3876ca;color:#FFFFFF}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:0.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:initial}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto !important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:rgb(204.5, 204.5, 204.5)}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:11}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;display:inline-block;background:rgb(242.75, 242.75, 242.75) !important;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:rgb(242.75, 242.75, 242.75) !important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{display:inline-block}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;min-width:100%;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:bold;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:bold;background:rgb(226.25, 226.25, 226.25) !important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-tableholder .tabulator-range-overlay{position:absolute;inset:0;z-index:11;pointer-events:none}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range{position:absolute;box-sizing:border-box;border:1px solid #2975DD}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after{content:"";position:absolute;right:-3px;bottom:-3px;width:6px;height:6px;background-color:#2975DD;border-radius:999px}.tabulator .tabulator-tableholder .tabulator-range-overlay .tabulator-range-cell-active{position:absolute;box-sizing:border-box;border:2px solid #2975DD}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:bold;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs{margin-top:-5px;overflow-x:auto}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab{display:inline-block;padding:5px;border:#999 1px solid;border-top:none;border-bottom-left-radius:5px;border-bottom-right-radius:5px;font-size:0.9em}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab:hover{cursor:pointer;opacity:0.7}.tabulator .tabulator-footer .tabulator-spreadsheet-tabs .tabulator-spreadsheet-tab.tabulator-spreadsheet-tab-active{background:#fff}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:rgb(242.75, 242.75, 242.75) !important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:rgb(242.75, 242.75, 242.75) !important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:normal}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:rgba(255, 255, 255, 0.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:0.5}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-footer .tabulator-page:not(disabled):hover{cursor:pointer;background:rgba(0, 0, 0, 0.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:11;vertical-align:middle}@media (hover: hover) and (pointer: fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-col-resize-guide{position:absolute;top:0;width:4px;height:100%;margin-left:-0.5px;background-color:#999;opacity:0.5}.tabulator .tabulator-row-resize-guide{position:absolute;left:0;width:100%;height:4px;margin-top:-0.5px;background-color:#999;opacity:0.5}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0, 0, 0, 0.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:bold;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #D00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#EFEFEF}@media (hover: hover) and (pointer: fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9ABCEA}@media (hover: hover) and (pointer: fine){.tabulator-row.tabulator-selected:hover{background-color:#769BCC;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row.tabulator-range-highlight .tabulator-cell.tabulator-range-row-header{background-color:#D6D6D6;color:#000000}.tabulator-row.tabulator-range-highlight.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#FFFFFF}.tabulator-row.tabulator-range-selected .tabulator-cell.tabulator-range-row-header{background-color:#3876ca;color:#FFFFFF}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover: hover) and (pointer: fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;outline:none}.tabulator-row .tabulator-cell .tabulator-tick{fill:#2DC214}.tabulator-row .tabulator-cell .tabulator-cross{fill:#CE1515}.tabulator-row .tabulator-cell.tabulator-row-header{border-right:1px solid #999;border-bottom:1px solid #aaa;background:#e6e6e6}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:11}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1D68CD;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #dd0000}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#dd0000}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not(.tabulator-range-row-header){background-color:#9ABCEA}.tabulator-row .tabulator-cell .tabulator-data-tree-branch-empty{display:inline-block;width:7px}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0, 0, 0, 0.1);overflow:hidden}@media (hover: hover) and (pointer: fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0, 0, 0, 0.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:bold;font-size:1.1em}@media (hover: hover) and (pointer: fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:0.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:bold;min-width:100%}@media (hover: hover) and (pointer: fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0, 0, 0, 0.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-toggle{box-sizing:border-box;display:flex;flex-direction:row;border:1px solid #ccc;background:#dcdcdc}.tabulator-toggle.tabulator-toggle-on{background:#1c6cc2}.tabulator-toggle .tabulator-toggle-switch{box-sizing:border-box;border:1px solid #ccc;background:#fff}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0, 0, 0, 0.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:min(500px, 100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:0.5}@media (hover: hover) and (pointer: fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#EFEFEF}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu::after{display:inline-block;position:absolute;top:calc(5px + 0.4em);right:10px;height:7px;width:7px;content:"";border-width:1px 1px 0 0;border-style:solid;border-color:#aaa;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1D68CD}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid rgba(255, 255, 255, 0.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1D68CD}@media (hover: hover) and (pointer: fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1D68CD}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:bold}.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:initial;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:initial}.tabulator.tabulator-rtl .tabulator-tableholder .tabulator-range-overlay .tabulator-range.tabulator-range-active::after{content:"";position:absolute;left:-3px;right:initial;bottom:-3px;width:6px;height:6px;background-color:#2975DD;border-radius:999px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:initial;margin-left:5px;border-bottom-left-radius:initial;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:initial;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){display:none !important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:bold;min-width:100%}@media (hover: hover) and (pointer: fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0, 0, 0, 0.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px !important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px !important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px !important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px !important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px !important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0, 0, 0, 0.1);overflow:hidden}@media (hover: hover) and (pointer: fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0, 0, 0, 0.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}#tabulator-container,#tabulator-table{height:100%;width:100%}.tabulator{display:flex;flex-direction:column}.tabulator *{box-sizing:border-box}.tabulator .tabulator-header{flex-shrink:0}.tabulator .tabulator-tableholder{isolation:isolate;flex-grow:1;height:unset !important;max-height:unset !important;min-height:unset !important;padding-bottom:5rem}.tabulator .tabulator-footer{flex-shrink:0}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{position:relative;cursor:pointer;transition:opacity 0.2s ease;right:0}.tabulator-sortable[aria-sort=none] .tabulator-col-sorter{opacity:0}.tabulator-sortable[aria-sort=none]:hover .tabulator-col-sorter{opacity:1}.tabulator-sortable[aria-sort=none]:hover .tabulator-col-sorter .tabulator-arrow{animation:indicate-sortable-unsorted-column 2s ease forwards}.tabulator-sortable[aria-sort=desc] .tabulator-col-sorter,.tabulator-sortable[aria-sort=asc] .tabulator-col-sorter{opacity:1}.tabulator-sortable[aria-sort=desc]:hover .tabulator-col-sorter,.tabulator-sortable[aria-sort=asc]:hover .tabulator-col-sorter{opacity:1;animation:indicate-sortable-sorted-column 0.5s ease}.tabulator-arrow{rotate:180deg;transition:border 0.2s ease;border-left:0.25rem solid transparent !important;border-right:0.25rem solid transparent !important}.tabulator#tabulator-table .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-arrow{height:0.75rem;border-top-width:0.25rem;border-top-style:solid;border-top-color:rgb(var(--table-arrow-color));border-bottom-width:0.25rem;border-bottom-style:solid;border-bottom-color:rgb(var(--table-arrow-color))}.tabulator#tabulator-table .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-arrow{height:0;transform:translate3d(0, -0.2rem, 0);border-top-width:0.25rem;border-bottom-width:0;border-top-color:var(--table-arrow-color--active)}.tabulator#tabulator-table .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-arrow{height:0;transform:translate3d(0, 0.2rem, 0);border-top-width:0;border-bottom-width:0.25rem;border-bottom-color:var(--table-arrow-color--active)}@keyframes indicate-sortable-sorted-column{0%,100%{transform:translate3d(0, 0, 0)}30%{transform:translate3d(0, -0.0875rem, 0)}60%{transform:translate3d(0, 0.0875rem, 0)}}@keyframes indicate-sortable-unsorted-column{0%,15%,45%,75%{border-top-color:transparent;border-bottom-color:transparent;transform:translate3d(0, 0, 0)}30%{border-top-color:transparent;border-bottom-color:var(--table-arrow-color--active);transform:translate3d(0, -0.3125rem, 0)}60%{border-top-color:var(--table-arrow-color--active);border-bottom-color:transparent;transform:translate3d(0, 0.3125rem, 0)}100%{border-top-color:rgb(var(--table-arrow-color));border-bottom-color:rgb(var(--table-arrow-color))}}:host(:not(.has-pagination)) #tabulator-container .tabulator-paginator{display:var(--limel-table-single-page-paginator-display, grid)}.tabulator .tabulator-footer .tabulator-paginator{box-sizing:border-box;display:grid;grid-auto-flow:column;justify-content:end;padding-top:0.25rem;padding-bottom:0.25rem}.tabulator .tabulator-footer .tabulator-paginator .tabulator-pages{margin:0 0.5rem}.tabulator .tabulator-footer .tabulator-paginator .tabulator-pages .tabulator-page{margin:0 0rem}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]){transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:rgb(var(--contrast-1200)) !important;background-color:transparent}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):hover,.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):focus,.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):focus-visible{will-change:color, background-color, box-shadow, transform}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):hover,.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):focus-visible{transform:translate3d(0, 0.01rem, 0);color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color)}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):hover{box-shadow:var(--button-shadow-hovered)}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):hover,.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:not([disabled]):active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page{position:relative;height:1.75rem;min-width:1.75rem;padding:0 0.5rem;margin:0;border:none;border-radius:2.5rem;background-color:transparent}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page.active{background-color:var(--limel-theme-surface-background-color);box-shadow:var(--button-shadow-inset)}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:disabled{opacity:0.3;cursor:not-allowed}.tabulator .tabulator-footer .tabulator-paginator .tabulator-page:disabled:hover{background-color:transparent}button.tabulator-page{display:inline-flex !important;align-items:center;justify-content:center}button.tabulator-page[data-page=first],button.tabulator-page[data-page=prev],button.tabulator-page[data-page=next],button.tabulator-page[data-page=last]{font-size:0;color:transparent !important}button.tabulator-page[data-page=first]:before,button.tabulator-page[data-page=first]:after,button.tabulator-page[data-page=prev]:before,button.tabulator-page[data-page=prev]:after,button.tabulator-page[data-page=next]:before,button.tabulator-page[data-page=next]:after,button.tabulator-page[data-page=last]:before,button.tabulator-page[data-page=last]:after{content:"";transition:transform 0.2s ease;display:block;position:absolute}button.tabulator-page[data-page=first]:after,button.tabulator-page[data-page=prev]:after,button.tabulator-page[data-page=next]:after,button.tabulator-page[data-page=last]:after{border-style:solid;border-color:transparent;border-width:0.25rem 0 0.25rem 0.4rem;border-left-color:var(--limel-theme-on-surface-color)}button.tabulator-page[data-page=first]:before,button.tabulator-page[data-page=last]:before{height:0.5rem;width:0.125rem;background-color:var(--limel-theme-on-surface-color)}button.tabulator-page[data-page=first]:before{left:0.375rem}button.tabulator-page[data-page=last]:before{right:0.375rem}button.tabulator-page[data-page=first]:after,button.tabulator-page[data-page=prev]:after{transform:rotateZ(180deg)}button.tabulator-page[data-page=next]:not([disabled]):hover:after,button.tabulator-page[data-page=last]:not([disabled]):hover:after{transform:translate3d(0.09375rem, 0, 0)}button.tabulator-page[data-page=first]:not([disabled]):hover:after,button.tabulator-page[data-page=prev]:not([disabled]):hover:after{transform:translate3d(-0.09375rem, 0, 0) rotateZ(180deg)}@keyframes fade-in-tabulator-loader{0%{background:transparent}100%{background:rgba(var(--contrast-1400), 0.4)}}@keyframes spin-tabulator-loader{to{transform:rotate(360deg)}}.tabulator .tabulator-loader{animation:fade-in-tabulator-loader 0.5s ease 0.5s forwards;animation-iteration-count:1;cursor:progress;background:transparent}.tabulator .tabulator-loader .tabulator-loader-msg{animation:spin-tabulator-loader 0.4s linear infinite;color:transparent;font-size:0;border-radius:50%;border:0.1875rem solid rgb(var(--lime-brand-color-flexible-turquoise)) !important;border-top-color:transparent !important;width:1.25rem;height:1.25rem;background-color:transparent !important;padding:0}.interactive-feedback{position:absolute;inset:0;min-height:0.125rem;transition:color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);background-color:rgb(var(--limel-table-row-background-color))}.tabulator-row:active .interactive-feedback{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 )}.tabulator-row:hover .interactive-feedback,.tabulator-row:active .interactive-feedback{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}.tabulator-row:not(.tabulator-calcs){background-color:transparent}.tabulator-row:not(.tabulator-calcs).tabulator-row-odd{--limel-table-row-background-color:var( --table-row-background-color--odd )}.tabulator-row:not(.tabulator-calcs).tabulator-row-even{--limel-table-row-background-color:var( --table-row-background-color--even )}.tabulator-row:not(.tabulator-calcs) .tabulator-cell{pointer-events:none}.tabulator-row:not(.tabulator-calcs) .tabulator-cell>*{pointer-events:auto}.tabulator-row:not(.tabulator-calcs).tabulator-selectable:hover{background-color:var(--table-row-background-color--hover);z-index:var(--limel-table-interactive-selectable-row-z-index-hover)}.tabulator-row:not(.tabulator-calcs).tabulator-selectable.active:before{content:"";display:inline-block;box-sizing:border-box;position:sticky;z-index:calc(var(--limel-table-interactive-selectable-row-z-index-hover) + 1);inset:0 0 auto 0;border:0.2rem solid var(--lime-primary-color, var(--limel-theme-primary-color));border-radius:1rem;margin-right:-0.4rem}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable .interactive-feedback:hover{box-shadow:var(--button-shadow-hovered)}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable:active .interactive-feedback{box-shadow:var(--button-shadow-pressed);transform:translate3d(0, 0.05rem, 0)}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable.active{--limel-table-row-background-color:var( --table-row-background-color--active )}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable.active .interactive-feedback{opacity:0.2;background-color:var(--table-row-background-color--active);box-shadow:var(--button-shadow-inset-pressed)}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable.active .interactive-feedback:hover{opacity:0.3}:host(.has-interactive-rows) .tabulator-row:not(.tabulator-calcs).tabulator-selectable:not(.active) .interactive-feedback:hover{background-color:var(--table-row-background-color--hover)}:host(.has-low-density) #tabulator-container{width:max-content;max-width:100%;margin:auto}:host(.has-low-density) .tabulator-table{background-color:transparent}:host(.has-low-density) .tabulator-header{border-radius:0.375rem}:host(.has-low-density) .tabulator-footer{border-radius:0.5rem}:host(.has-low-density) .tabulator-calcs-holder{border-radius:0.5rem 0.5rem 0 0}:host(.has-low-density) .tabulator-row{border-radius:0.5rem}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom){margin-bottom:0.25rem}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom):first-child{margin-top:0.75rem}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom) .tabulator-cell{height:2.75rem !important}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom) .tabulator-cell:first-child{border-radius:0.5rem 0 0 0.5rem}:host(.has-low-density) .tabulator-row:not(.tabulator-calcs-bottom) .tabulator-cell:last-child{border-radius:0 0.5rem 0.5rem 0}:host(.has-pagination-on-top) .tabulator .tabulator-header{order:2}:host(.has-pagination-on-top) .tabulator .tabulator-tableholder{order:3}:host(.has-pagination-on-top) .tabulator .tabulator-footer{order:1;background-color:transparent}:host(.has-pagination-on-top) .tabulator .tabulator-calcs-holder{position:absolute;bottom:0}:host(.has-pagination-on-top):has(.tabulator-calcs-holder) .tabulator-tableholder{margin-bottom:var(--limel-table-height-of-aggregations-row)}:host(.has-pagination-on-top) .select-all{top:2.5rem}.lime-col-title__custom-component{width:100%;display:flex;align-items:center;margin-right:1.25rem;gap:0.25rem}.title-component-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex-grow:1;flex-shrink:1;min-width:0}.title-component-slot{flex-shrink:0}@keyframes detach-a-column-header{0%{transform:rotate(0deg)}100%{transform:rotate(-2deg)}}:host([movable-columns]:not([movable-columns=false])) .tabulator-header{overflow-y:visible}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col:not(.tabulator-frozen){cursor:move !important}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col:not(.tabulator-frozen).tabulator-sortable.tabulator-moving{animation:detach-a-column-header 0.2s ease forwards;opacity:0.9;border:none;border-radius:0.25rem;background-color:rgb(var(---table-header-background-color-when-being-dragged));box-shadow:var(--shadow-depth-16)}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col:not(.tabulator-frozen).tabulator-sortable.tabulator-moving:hover{background-color:rgb(var(---table-header-background-color-when-being-dragged))}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col:not(.tabulator-frozen).tabulator-sortable.tabulator-moving .tabulator-arrow:before{background-color:rgb(var(---table-header-background-color-when-being-dragged))}.tabulator .tabulator-footer{transition:transform 0.5s ease-out, opacity 0.35s ease;color:var(--table-text-color);background-color:rgb(var(--table-header-background-color--hover));border:none;user-select:auto}.tabulator .tabulator-footer .tabulator-footer-contents{padding:0 0.25rem}.tabulator .tabulator-footer .tabulator-calcs-holder{border-color:rgb(var(--contrast-500));background:rgb(var(--contrast-500)) !important;margin-top:0;margin-bottom:0}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{height:var(--limel-table-height-of-aggregations-row);background:transparent !important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-calcs{cursor:default}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-cell{height:var(--limel-table-height-of-aggregations-row) !important;padding-top:0.25rem;padding-bottom:0}.select-all,.limel-table--row-selector,.limel-table-drag-handle{--limel-checkbox-min-height:1.25rem;display:inline-flex !important;align-items:center;justify-content:center;text-overflow:unset !important;padding:0 !important}.select-all{position:absolute;z-index:var(--limel-table-row-selector-z-index);left:0.375rem;top:0.1875rem}:host([movable-rows]:not([movable-rows=false])) .select-all{left:calc(var(--limel-table-drag-handle-width) + 0.375rem)}.limel-table--row-selector{left:0}:host([movable-rows]:not([movable-rows=false])) .limel-table--row-selector{left:var(--limel-table-drag-handle-width)}.tabulator-block-select .limel-table--row-selector,.tabulator-block-select .limel-table--row-selector *{pointer-events:none !important}.limel-table--row-selector,.limel-table-drag-handle{position:sticky !important;border:none !important;z-index:var(--limel-table-row-selector-z-index) !important}.limel-table--row-selector:before,.limel-table-drag-handle:before{content:"";inset:0.25rem 0;position:absolute;background-image:linear-gradient(to right, rgb(var(--limel-table-row-background-color)) 70%, rgb(var(--limel-table-row-background-color), 0))}.limel-table--row-selector limel-checkbox,.limel-table-drag-handle limel-checkbox{transition:opacity 0.2s ease;opacity:0.3}.tabulator-row:hover .limel-table--row-selector limel-checkbox,.tabulator-row:hover .limel-table-drag-handle limel-checkbox{opacity:1}:host(.has-selection) .limel-table--row-selector limel-checkbox,:host(.has-selection) .limel-table-drag-handle limel-checkbox{opacity:1}.limel-table--row-selector .tabulator-col-resize-handle,.limel-table-drag-handle .tabulator-col-resize-handle{display:none}.limel-table--row-selector+.tabulator-col .tabulator-col-resize-handle.prev,.limel-table--row-selector+.tabulator-cell .tabulator-col-resize-handle.prev,.limel-table-drag-handle+.tabulator-col .tabulator-col-resize-handle.prev,.limel-table-drag-handle+.tabulator-cell .tabulator-col-resize-handle.prev{display:none}:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col.limel-table--row-selector,:host([movable-columns]:not([movable-columns=false])) .tabulator-header .tabulator-col.limel-table-drag-handle{border:none;cursor:default !important;pointer-events:none;background-color:transparent;background-image:linear-gradient(to right, rgb(var(--table-header-background-color--hover)) 70%, rgb(var(--table-header-background-color--hover), 0));left:0}:host([movable-columns]:not([movable-columns=false])[movable-rows]:not([movable-rows=false])) .tabulator-header .tabulator-col.limel-table--row-selector{left:var(--limel-table-drag-handle-width)}:host(.has-selection) .tabulator-calcs .tabulator-cell{color:var(--table-arrow-color--active)}.limel-table-drag-handle{transition:opacity 0.3s ease;left:0;width:var(--limel-table-drag-handle-width) !important;height:2rem !important;user-select:none;z-index:calc(var(--limel-table-row-selector-z-index) + 1) !important;background-color:transparent !important}:host([selectable]:not([selectable=false])) .limel-table-drag-handle{background-image:none !important;background-color:rgb(var(--limel-table-row-background-color)) !important}.tabulator-block-select .limel-table-drag-handle{opacity:0.3;cursor:grabbing}.tabulator-block-select .limel-table-drag-handle limel-drag-handle,.tabulator-block-select .limel-table-drag-handle limel-drag-handle *{pointer-events:none !important}.tabulator-row.tabulator-moving .limel-table-drag-handle limel-drag-handle button:last-of-type{display:none;}:host(limel-table){--limel-table-interactive-selectable-row-z-index-hover:2;--limel-table-sorter-arrow-width:0.5rem;--limel-table-table-cell-padding:0.5rem;--limel-table-row-selector-z-index:1;--limel-table-drag-handle-width:2rem;--limel-table-height-of-aggregations-row:1.5rem;isolation:isolate;display:block;--table-header-background-color:var(--contrast-500);--table-header-background-color--hover:var(--contrast-400);--table-header-background-color-when-being-dragged:var(--contrast-100);--table-row-background-color--odd:var(--contrast-200);--table-row-background-color--even:var(--contrast-100);--table-row-background-color--hover:var( --lime-elevated-surface-background-color );--table-row-background-color--active:var(--mdc-theme-primary);--table-arrow-color:var(--contrast-800);--table-arrow-color--active:var( --lime-primary-color, var(--limel-theme-primary-color) );--table-text-color:var(--limel-theme-text-primary-on-background-color);--limel-chip-size:1.25rem}#tabulator-container{position:relative}#tabulator-container,#tabulator-table{background-color:transparent;border:none}.tabulator .tabulator-header{color:var(--table-text-color)}.tabulator .tabulator-tableholder .tabulator-table{color:var(--table-text-color);background-color:transparent}.tabulator .tabulator-header{border-bottom:0;background-color:rgb(var(--table-header-background-color))}.tabulator .tabulator-header .tabulator-headers{width:fit-content}.tabulator .tabulator-header .tabulator-col{transition:background-color 0.2s ease;background-color:rgb(var(--table-header-background-color));border-right-color:rgb(var(--contrast-200))}.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{background-color:rgb(var(--table-header-background-color--hover))}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:0 var(--limel-table-sorter-arrow-width) 0 0.25rem}.tabulator .tabulator-header .tabulator-col-title-holder{height:1.75rem;display:flex;align-items:center;gap:0.25rem}.tabulator .tabulator-header .tabulator-col-sorter{order:1}.tabulator .tabulator-header .tabulator-col-title{order:2;font-weight:500;padding-right:0 !important;line-height:1.25rem}.tabulator-row{height:2.25rem}.tabulator-row .tabulator-cell{border-right:transparent;padding:var(--limel-table-table-cell-padding);padding-left:calc(var(--limel-table-table-cell-padding) + var(--limel-table-sorter-arrow-width));height:inherit}.tabulator-row .tabulator-cell[style*="text-align: right;"]{justify-content:flex-end}.tabulator-row .tabulator-cell[style*="text-align: center;"]{justify-content:center}.tabulator-row .tabulator-col-resize-handle{display:none}.tabulator-col,.tabulator-cell{max-width:var(--table-max-column-width, 40rem)}#tabulator-loader,#tabulator-empty-text{position:absolute;width:100%;height:100%;z-index:1;display:flex;align-items:center;justify-content:center}#tabulator-loader{background-color:rgba(var(--contrast-100), 0.6);cursor:wait}#tabulator-empty-text{color:rgb(var(--contrast-800));font-weight:bold;font-size:1.25rem;pointer-events:none}limel-chip{transform:translateY(-0.15rem)}`;
30699
31098
 
30700
31099
  const FIRST_PAGE = 1;
30701
31100
  const Table = class {
@@ -31424,7 +31823,7 @@ const Table = class {
31424
31823
  hasAggregation(columns) {
31425
31824
  return columns.some((column) => {
31426
31825
  var _a;
31427
- return pickBy.has(column, 'aggregator') ||
31826
+ return has(column, 'aggregator') ||
31428
31827
  ((_a = this.aggregates) !== null && _a !== void 0 ? _a : []).some((aggregate) => aggregate.field === column.field);
31429
31828
  });
31430
31829
  }