@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,27 +1,237 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-Bnc9lzk2.js';
2
- import { p as pickBy, n as negate, h as has } from './pickBy-C4C3CM4m.js';
2
+ import { h as hasPath, d as baseGet, c as castPath, e as arrayMap, b as baseIteratee } from './_baseIteratee-CpbczHY1.js';
3
+ import { b as baseSet, n as negate } from './_baseSet-Cw2IE6ZF.js';
4
+ import { e as arrayLikeKeys, f as stubArray, d as arrayPush, h as getSymbols, i as baseGetAllKeys } from './_baseIsEqual-CyF4P8uM.js';
5
+ import { g as getPrototype } from './_getPrototype-B0kMNv1F.js';
6
+ import { i as isObject } from './isObject-BJQylLSL.js';
7
+ import { d as isPrototype } from './_getTag-BiAaLWvH.js';
8
+ import { i as isArrayLike } from './isArrayLike-CyVGB489.js';
3
9
  import { _ as _mapLayout } from './layout-C4zsCPOF.js';
4
- import { i as isEqual } from './isEqual-4tbMaaf_.js';
10
+ import { i as isEqual } from './isEqual-CE83yS8T.js';
5
11
  import { t as translate } from './translations-DMtX4tTX.js';
6
- import './_baseIteratee-CEZRuq23.js';
7
- import './_baseIsEqual-B6bIeexY.js';
8
- import './eq-CZ30nDJE.js';
9
- import './_getTag-CMJL-6hk.js';
10
- import './isObject-BJQylLSL.js';
11
- import './isObjectLike-oiMYqRQ0.js';
12
- import './isArrayLike-CyVGB489.js';
13
- import './isFunction-9zQTeQI8.js';
14
- import './_getNative-COawFdVX.js';
15
12
  import './isArray-B8VKuhvH.js';
16
- import './_isIndex-B--C3qwe.js';
17
13
  import './isSymbol-ClAke5ga.js';
14
+ import './isObjectLike-oiMYqRQ0.js';
15
+ import './_isIndex-B--C3qwe.js';
18
16
  import './identity-CK4jS9_E.js';
19
17
  import './_assignValue-CEFvyZxO.js';
20
18
  import './_defineProperty-C69Btzid.js';
21
- import './_getAllKeysIn-kT3KizYN.js';
19
+ import './_getNative-COawFdVX.js';
20
+ import './isFunction-9zQTeQI8.js';
21
+ import './eq-CZ30nDJE.js';
22
22
  import './language-C3hECvXE.js';
23
23
 
24
- /* Tabulator v6.5.2 (c) Oliver Folkerd 2026 */
24
+ /**
25
+ * This function is like
26
+ * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
27
+ * except that it includes inherited enumerable properties.
28
+ *
29
+ * @private
30
+ * @param {Object} object The object to query.
31
+ * @returns {Array} Returns the array of property names.
32
+ */
33
+ function nativeKeysIn(object) {
34
+ var result = [];
35
+ if (object != null) {
36
+ for (var key in Object(object)) {
37
+ result.push(key);
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+
43
+ /** Used for built-in method references. */
44
+ var objectProto$1 = Object.prototype;
45
+
46
+ /** Used to check objects for own properties. */
47
+ var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
48
+
49
+ /**
50
+ * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
51
+ *
52
+ * @private
53
+ * @param {Object} object The object to query.
54
+ * @returns {Array} Returns the array of property names.
55
+ */
56
+ function baseKeysIn(object) {
57
+ if (!isObject(object)) {
58
+ return nativeKeysIn(object);
59
+ }
60
+ var isProto = isPrototype(object),
61
+ result = [];
62
+
63
+ for (var key in object) {
64
+ if (!(key == 'constructor' && (isProto || !hasOwnProperty$1.call(object, key)))) {
65
+ result.push(key);
66
+ }
67
+ }
68
+ return result;
69
+ }
70
+
71
+ /**
72
+ * Creates an array of the own and inherited enumerable property names of `object`.
73
+ *
74
+ * **Note:** Non-object values are coerced to objects.
75
+ *
76
+ * @static
77
+ * @memberOf _
78
+ * @since 3.0.0
79
+ * @category Object
80
+ * @param {Object} object The object to query.
81
+ * @returns {Array} Returns the array of property names.
82
+ * @example
83
+ *
84
+ * function Foo() {
85
+ * this.a = 1;
86
+ * this.b = 2;
87
+ * }
88
+ *
89
+ * Foo.prototype.c = 3;
90
+ *
91
+ * _.keysIn(new Foo);
92
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
93
+ */
94
+ function keysIn(object) {
95
+ return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
96
+ }
97
+
98
+ /* Built-in method references for those with the same name as other `lodash` methods. */
99
+ var nativeGetSymbols = Object.getOwnPropertySymbols;
100
+
101
+ /**
102
+ * Creates an array of the own and inherited enumerable symbols of `object`.
103
+ *
104
+ * @private
105
+ * @param {Object} object The object to query.
106
+ * @returns {Array} Returns the array of symbols.
107
+ */
108
+ var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
109
+ var result = [];
110
+ while (object) {
111
+ arrayPush(result, getSymbols(object));
112
+ object = getPrototype(object);
113
+ }
114
+ return result;
115
+ };
116
+
117
+ /**
118
+ * Creates an array of own and inherited enumerable property names and
119
+ * symbols of `object`.
120
+ *
121
+ * @private
122
+ * @param {Object} object The object to query.
123
+ * @returns {Array} Returns the array of property names and symbols.
124
+ */
125
+ function getAllKeysIn(object) {
126
+ return baseGetAllKeys(object, keysIn, getSymbolsIn);
127
+ }
128
+
129
+ /** Used for built-in method references. */
130
+ var objectProto = Object.prototype;
131
+
132
+ /** Used to check objects for own properties. */
133
+ var hasOwnProperty = objectProto.hasOwnProperty;
134
+
135
+ /**
136
+ * The base implementation of `_.has` without support for deep paths.
137
+ *
138
+ * @private
139
+ * @param {Object} [object] The object to query.
140
+ * @param {Array|string} key The key to check.
141
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
142
+ */
143
+ function baseHas(object, key) {
144
+ return object != null && hasOwnProperty.call(object, key);
145
+ }
146
+
147
+ /**
148
+ * Checks if `path` is a direct property of `object`.
149
+ *
150
+ * @static
151
+ * @since 0.1.0
152
+ * @memberOf _
153
+ * @category Object
154
+ * @param {Object} object The object to query.
155
+ * @param {Array|string} path The path to check.
156
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
157
+ * @example
158
+ *
159
+ * var object = { 'a': { 'b': 2 } };
160
+ * var other = _.create({ 'a': _.create({ 'b': 2 }) });
161
+ *
162
+ * _.has(object, 'a');
163
+ * // => true
164
+ *
165
+ * _.has(object, 'a.b');
166
+ * // => true
167
+ *
168
+ * _.has(object, ['a', 'b']);
169
+ * // => true
170
+ *
171
+ * _.has(other, 'a');
172
+ * // => false
173
+ */
174
+ function has(object, path) {
175
+ return object != null && hasPath(object, path, baseHas);
176
+ }
177
+
178
+ /**
179
+ * The base implementation of `_.pickBy` without support for iteratee shorthands.
180
+ *
181
+ * @private
182
+ * @param {Object} object The source object.
183
+ * @param {string[]} paths The property paths to pick.
184
+ * @param {Function} predicate The function invoked per property.
185
+ * @returns {Object} Returns the new object.
186
+ */
187
+ function basePickBy(object, paths, predicate) {
188
+ var index = -1,
189
+ length = paths.length,
190
+ result = {};
191
+
192
+ while (++index < length) {
193
+ var path = paths[index],
194
+ value = baseGet(object, path);
195
+
196
+ if (predicate(value, path)) {
197
+ baseSet(result, castPath(path, object), value);
198
+ }
199
+ }
200
+ return result;
201
+ }
202
+
203
+ /**
204
+ * Creates an object composed of the `object` properties `predicate` returns
205
+ * truthy for. The predicate is invoked with two arguments: (value, key).
206
+ *
207
+ * @static
208
+ * @memberOf _
209
+ * @since 4.0.0
210
+ * @category Object
211
+ * @param {Object} object The source object.
212
+ * @param {Function} [predicate=_.identity] The function invoked per property.
213
+ * @returns {Object} Returns the new object.
214
+ * @example
215
+ *
216
+ * var object = { 'a': 1, 'b': '2', 'c': 3 };
217
+ *
218
+ * _.pickBy(object, _.isNumber);
219
+ * // => { 'a': 1, 'c': 3 }
220
+ */
221
+ function pickBy(object, predicate) {
222
+ if (object == null) {
223
+ return {};
224
+ }
225
+ var props = arrayMap(getAllKeysIn(object), function(prop) {
226
+ return [prop];
227
+ });
228
+ predicate = baseIteratee(predicate);
229
+ return basePickBy(object, props, function(value, path) {
230
+ return predicate(value, path[0]);
231
+ });
232
+ }
233
+
234
+ /* Tabulator v6.5.3 (c) Oliver Folkerd 2026 */
25
235
  class CoreFeature{
26
236
 
27
237
  constructor(table){
@@ -245,6 +455,19 @@ let Popup$1 = class Popup extends CoreFeature{
245
455
  this.blurCallback = null;
246
456
  this.blurEventsBound = false;
247
457
  this.renderedCallback = null;
458
+
459
+ /**
460
+ * Corresponds to the css offset properties (`top`, `right`, `bottom`, `left`).
461
+ * Values can be `null` if not set.
462
+ *
463
+ * @type {{ top: number|null, right: number|null, bottom: number|null, left: number|null }}
464
+ **/
465
+ this.offset = {
466
+ top: null,
467
+ right: null,
468
+ bottom: null,
469
+ left: null,
470
+ };
248
471
 
249
472
  this.visible = false;
250
473
  this.hideable = true;
@@ -359,35 +582,30 @@ let Popup$1 = class Popup extends CoreFeature{
359
582
  }
360
583
 
361
584
  show(origin, position){
362
- var x, y, parentEl, parentOffset, coords;
585
+ var parentEl, parentOffset;
363
586
 
364
587
  if(this.destroyed || this.table.destroyed){
365
588
  return this;
366
589
  }
590
+
591
+ if(!this.parent){
592
+ this.reversedX = false;
593
+ }
367
594
 
368
595
  if(origin instanceof HTMLElement){
369
596
  parentEl = origin;
370
- coords = this.elementPositionCoords(origin, position);
371
-
372
- parentOffset = coords.offset;
373
- x = coords.x;
374
- y = coords.y;
375
-
597
+ parentOffset = this.elementPositionCoords(origin, position).offset;
376
598
  }else if(typeof origin === "number"){
377
599
  parentOffset = {top:0, left:0};
378
- x = origin;
379
- y = position;
380
- }else {
381
- coords = this.containerEventCoords(origin);
382
-
383
- x = coords.x;
384
- y = coords.y;
385
-
386
- this.reversedX = false;
387
600
  }
388
-
389
- this.element.style.top = y + "px";
390
- this.element.style.left = x + "px";
601
+
602
+ const coords = this.resolveCoordsByOrigin(origin, position);
603
+
604
+ this.offset.top = coords.y;
605
+ this.offset.left = coords.x;
606
+ this.offset.right = null;
607
+
608
+ this.applyOffset();
391
609
 
392
610
  this.container.appendChild(this.element);
393
611
 
@@ -395,7 +613,7 @@ let Popup$1 = class Popup extends CoreFeature{
395
613
  this.renderedCallback();
396
614
  }
397
615
 
398
- this._fitToScreen(x, y, parentEl, parentOffset, position);
616
+ this._fitToScreen(coords.x, coords.y, parentEl, parentOffset, position);
399
617
 
400
618
  this.visible = true;
401
619
 
@@ -407,50 +625,105 @@ let Popup$1 = class Popup extends CoreFeature{
407
625
 
408
626
  return this;
409
627
  }
628
+
629
+ resolveCoordsByOrigin(origin, position) {
630
+ if (origin instanceof HTMLElement){
631
+ const coords = this.elementPositionCoords(origin, position);
632
+ return { x: coords.x, y: coords.y };
633
+ }
634
+ if (typeof origin === "number"){
635
+ return { x: origin, y: position };
636
+ }
637
+ return this.containerEventCoords(origin);
638
+ }
410
639
 
640
+ _elementWidth(){
641
+ return this.element.getBoundingClientRect().width || this.element.offsetWidth;
642
+ }
643
+
644
+ _elementHeight(){
645
+ return this.element.getBoundingClientRect().height || this.element.offsetHeight;
646
+ }
647
+
411
648
  _fitToScreen(x, y, parentEl, parentOffset, position){
412
649
  var scrollTop = this.container === document.body ? document.documentElement.scrollTop : this.container.scrollTop;
650
+ var scrollLeft = this.container === document.body ? document.documentElement.scrollLeft : this.container.scrollLeft;
651
+ var boundsLeft = this.container === document.body ? scrollLeft : 0;
652
+ var boundsRight = this.container === document.body ? scrollLeft + document.documentElement.clientWidth : this.container.offsetWidth;
653
+ var boundsTop = this.container === document.body ? scrollTop : 0;
654
+ var boundsBottom = this.container === document.body ? scrollTop + document.documentElement.clientHeight : Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0);
655
+ var popupWidth = this._elementWidth();
656
+ var newLeft = x;
413
657
 
414
658
  //move menu to start on right edge if it is too close to the edge of the screen
415
- if((x + this.element.offsetWidth) >= this.container.offsetWidth || this.reversedX){
416
- this.element.style.left = "";
417
-
418
- if(parentEl){
419
- this.element.style.right = (this.container.offsetWidth - parentOffset.left) + "px";
659
+ if((newLeft + popupWidth) > boundsRight || this.reversedX){
660
+ if(parentEl && position === "right"){
661
+ newLeft = parentOffset.left - popupWidth;
662
+ }else if(parentEl && position === "left"){
663
+ newLeft = parentOffset.left + parentEl.offsetWidth;
664
+ }else if(parentEl){
665
+ newLeft = parentOffset.left - popupWidth;
420
666
  }else {
421
- this.element.style.right = (this.container.offsetWidth - x) + "px";
667
+ newLeft = boundsRight - popupWidth;
422
668
  }
423
669
 
424
670
  this.reversedX = true;
425
671
  }
672
+
673
+ if((newLeft + popupWidth) > boundsRight){
674
+ newLeft = boundsRight - popupWidth;
675
+ }
676
+
677
+ if(newLeft < boundsLeft){
678
+ newLeft = boundsLeft;
679
+ }
680
+
681
+ this.offset.left = newLeft;
682
+ this.offset.right = null;
426
683
 
427
684
  //move menu to start on bottom edge if it is too close to the edge of the screen
428
- let offsetHeight = Math.max(this.container.offsetHeight, scrollTop ? this.container.scrollHeight : 0);
429
- if((y + this.element.offsetHeight) > offsetHeight) {
685
+ if((y + this._elementHeight()) > boundsBottom) {
430
686
  if(parentEl){
431
687
  switch(position){
432
688
  case "bottom":
433
- this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight - parentEl.offsetHeight - 1) + "px";
689
+ this.offset.top = this.offset.top - this._elementHeight() - parentEl.offsetHeight - 1;
434
690
  break;
435
691
 
436
692
  default:
437
- this.element.style.top = (parseInt(this.element.style.top) - this.element.offsetHeight + parentEl.offsetHeight + 1) + "px";
693
+ this.offset.top = this.offset.top - this._elementHeight() + parentEl.offsetHeight + 1;
438
694
  }
439
695
 
440
696
  }else {
441
- let menuHeight = this.element.offsetHeight;
442
- if(menuHeight > offsetHeight){
443
- this.element.style.top = "0px";
444
- this.element.style.height = offsetHeight + "px";
697
+ let menuHeight = this._elementHeight();
698
+ if(menuHeight > (boundsBottom - boundsTop)){
699
+ this.offset.top = boundsTop;
700
+ this.element.style.height = (boundsBottom - boundsTop) + "px";
445
701
  }else {
446
702
  let newTop = y - menuHeight;
447
- if(newTop < 0){
448
- newTop = offsetHeight - menuHeight;
703
+ if(newTop < boundsTop){
704
+ newTop = boundsBottom - menuHeight;
449
705
  }
450
- this.element.style.top = newTop + "px";
706
+ this.offset.top = newTop;
451
707
  }
452
708
  }
453
709
  }
710
+
711
+ if((this.offset.top + this._elementHeight()) > boundsBottom){
712
+ this.offset.top = boundsBottom - this._elementHeight();
713
+ }
714
+
715
+ if(this.offset.top < boundsTop){
716
+ this.offset.top = boundsTop;
717
+ }
718
+
719
+ this.applyOffset();
720
+ }
721
+
722
+ applyOffset() {
723
+ this.element.style.top = this.offset.top == null ? "" : this.offset.top + "px";
724
+ this.element.style.right = this.offset.right == null ? "" : this.offset.right + "px";
725
+ this.element.style.bottom = this.offset.bottom == null ? "" : this.offset.bottom + "px";
726
+ this.element.style.left = this.offset.left == null ? "" : this.offset.left + "px";
454
727
  }
455
728
 
456
729
  isVisible(){
@@ -3168,6 +3441,9 @@ class RowComponent {
3168
3441
  }
3169
3442
 
3170
3443
  class Row extends CoreFeature{
3444
+
3445
+ static rowTemplate = Row.createRowTemplate();
3446
+
3171
3447
  constructor (data, parent, type = "row"){
3172
3448
  super(parent.table);
3173
3449
 
@@ -3190,6 +3466,7 @@ class Row extends CoreFeature{
3190
3466
 
3191
3467
  this.created = false;
3192
3468
 
3469
+
3193
3470
  this.setData(data);
3194
3471
  }
3195
3472
 
@@ -3201,12 +3478,7 @@ class Row extends CoreFeature{
3201
3478
  }
3202
3479
 
3203
3480
  createElement (){
3204
- var el = document.createElement("div");
3205
-
3206
- el.classList.add("tabulator-row");
3207
- el.setAttribute("role", "row");
3208
-
3209
- this.element = el;
3481
+ this.element = Row.rowTemplate.cloneNode(false) ;
3210
3482
  }
3211
3483
 
3212
3484
  getElement(){
@@ -3649,6 +3921,13 @@ class Row extends CoreFeature{
3649
3921
 
3650
3922
  return this.component;
3651
3923
  }
3924
+
3925
+ static createRowTemplate(){
3926
+ const rowTemplate = document.createElement("div");
3927
+ rowTemplate.classList.add("tabulator-row");
3928
+ rowTemplate.setAttribute("role", "row");
3929
+ return rowTemplate;
3930
+ }
3652
3931
  }
3653
3932
 
3654
3933
  var defaultCalculations = {
@@ -3764,6 +4043,7 @@ class ColumnCalcs extends Module{
3764
4043
  this.botRow = false;
3765
4044
  this.topInitialized = false;
3766
4045
  this.botInitialized = false;
4046
+ this.topBreakElement = null; //structural <br> inserted alongside the top calc row
3767
4047
 
3768
4048
  this.blocked = false;
3769
4049
  this.recalcAfterBlock = false;
@@ -3990,6 +4270,15 @@ class ColumnCalcs extends Module{
3990
4270
 
3991
4271
  if(this.topInitialized){
3992
4272
  this.topInitialized = false;
4273
+
4274
+ //remove the structural <br> inserted alongside the calc row in
4275
+ //initializeTopRow, otherwise it is orphaned and adds a blank line
4276
+ //above the table on every group toggle
4277
+ //https://github.com/tabulator-tables/tabulator/issues/4540
4278
+ if(this.topBreakElement && this.topBreakElement.parentNode){
4279
+ this.topBreakElement.parentNode.removeChild(this.topBreakElement);
4280
+ }
4281
+
3993
4282
  this.topElement.parentNode.removeChild(this.topElement);
3994
4283
  changed = true;
3995
4284
  }
@@ -4020,7 +4309,12 @@ class ColumnCalcs extends Module{
4020
4309
 
4021
4310
  if(!this.topInitialized){
4022
4311
 
4023
- fragment.appendChild(document.createElement("br"));
4312
+ //the headers and the calc row are both inline-block, the <br> forces
4313
+ //the calc row onto its own line below the headers, removeCalcs
4314
+ //removes it again by reference
4315
+ this.topBreakElement = document.createElement("br");
4316
+
4317
+ fragment.appendChild(this.topBreakElement);
4024
4318
  fragment.appendChild(this.topElement);
4025
4319
 
4026
4320
  this.table.columnManager.getContentsElement().insertBefore(fragment, this.table.columnManager.headersElement.nextSibling);
@@ -4567,17 +4861,30 @@ class DataTree extends Module{
4567
4861
  config.branchEl = this.branchEl.cloneNode(true);
4568
4862
  el.insertBefore(config.branchEl, el.firstChild);
4569
4863
 
4864
+ let computed = window.getComputedStyle(config.branchEl);
4865
+ let baseMargin = this.table.rtl
4866
+ ? parseInt(computed.marginRight) || 0
4867
+ : parseInt(computed.marginLeft) || 0;
4868
+
4869
+ let indentValue = baseMargin + (config.index * this.indent) + "px";
4870
+
4570
4871
  if(this.table.rtl){
4571
- config.branchEl.style.marginRight = (((config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1)) + (config.index * this.indent)) + "px";
4872
+ config.branchEl.style.marginRight = indentValue;
4572
4873
  }else {
4573
- config.branchEl.style.marginLeft = (((config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1)) + (config.index * this.indent)) + "px";
4874
+ config.branchEl.style.marginLeft = indentValue;
4574
4875
  }
4575
4876
  }else {
4877
+ let computed = window.getComputedStyle(el);
4878
+ let basePadding = this.table.rtl
4879
+ ? parseInt(computed.paddingRight) || 0
4880
+ : parseInt(computed.paddingLeft) || 0;
4881
+
4882
+ let paddingValue = basePadding + (config.index * this.indent) + "px";
4576
4883
 
4577
4884
  if(this.table.rtl){
4578
- el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + (config.index * this.indent) + "px";
4885
+ el.style.paddingRight = paddingValue;
4579
4886
  }else {
4580
- el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + (config.index * this.indent) + "px";
4887
+ el.style.paddingLeft = paddingValue;
4581
4888
  }
4582
4889
  }
4583
4890
  }
@@ -7864,6 +8171,7 @@ class Edit extends Module{
7864
8171
 
7865
8172
  this.registerTableFunction("getEditedCells", this.getEditedCells.bind(this));
7866
8173
  this.registerTableFunction("clearCellEdited", this.clearCellEdited.bind(this));
8174
+ this.registerTableFunction("setCellEdited", this.setCellEdited.bind(this));
7867
8175
  this.registerTableFunction("navigatePrev", this.navigatePrev.bind(this));
7868
8176
  this.registerTableFunction("navigateNext", this.navigateNext.bind(this));
7869
8177
  this.registerTableFunction("navigateLeft", this.navigateLeft.bind(this));
@@ -7873,6 +8181,7 @@ class Edit extends Module{
7873
8181
 
7874
8182
  this.registerComponentFunction("cell", "isEdited", this.cellIsEdited.bind(this));
7875
8183
  this.registerComponentFunction("cell", "clearEdited", this.clearEdited.bind(this));
8184
+ this.registerComponentFunction("cell", "setEdited", this.setEdited.bind(this));
7876
8185
  this.registerComponentFunction("cell", "edit", this.editCell.bind(this));
7877
8186
  this.registerComponentFunction("cell", "cancelEdit", this.cellCancelEdit.bind(this));
7878
8187
 
@@ -8005,6 +8314,22 @@ class Edit extends Module{
8005
8314
  });
8006
8315
  }
8007
8316
 
8317
+ //mark cells as edited programmatically, mirrors clearCellEdited
8318
+ //https://github.com/tabulator-tables/tabulator/issues/4443
8319
+ setCellEdited(cells){
8320
+ if(!cells){
8321
+ return;
8322
+ }
8323
+
8324
+ if(!Array.isArray(cells)){
8325
+ cells = [cells];
8326
+ }
8327
+
8328
+ cells.forEach((cell) => {
8329
+ this.table.modules.edit.setEdited(cell._getSelf());
8330
+ });
8331
+ }
8332
+
8008
8333
  navigatePrev(cell = this.currentCell, e){
8009
8334
  var nextCell, prevRow;
8010
8335
 
@@ -8315,6 +8640,12 @@ class Edit extends Module{
8315
8640
 
8316
8641
  cell.table.element.classList.remove("tabulator-editing");
8317
8642
  }
8643
+
8644
+ //release the redraw block taken when the editor opened, running any redraw
8645
+ //(e.g. a resize) that was deferred while editing.
8646
+ if(this.table.getRedrawBlock()){
8647
+ this.table.restoreRedraw();
8648
+ }
8318
8649
  }
8319
8650
 
8320
8651
  cancelEdit(){
@@ -8471,12 +8802,13 @@ class Edit extends Module{
8471
8802
  cellEditor, component, params;
8472
8803
 
8473
8804
  //prevent editing if another cell is refusing to leave focus (eg. validation fail)
8474
-
8805
+ //and prevent an open editor being restarted on top of itself
8475
8806
  if(this.currentCell){
8476
- if(!this.invalidEdit && this.currentCell !== cell){
8477
- this.cancelEdit();
8807
+ if(this.invalidEdit || this.currentCell === cell){
8808
+ return;
8478
8809
  }
8479
- return;
8810
+
8811
+ this.cancelEdit();
8480
8812
  }
8481
8813
 
8482
8814
  //handle successful value change
@@ -8578,17 +8910,31 @@ class Edit extends Module{
8578
8910
  cell.table.element.classList.add("tabulator-editing");
8579
8911
  while(element.firstChild) element.removeChild(element.firstChild);
8580
8912
  element.appendChild(cellEditor);
8581
-
8913
+
8914
+ //block table redraws while the editor is open so a redraw (e.g. a
8915
+ //resize, or a % height editor growing the table, #4142) cannot
8916
+ //re-render the rows and tear the editor down. Released in clearEditor.
8917
+ this.table.blockRedraw();
8918
+
8582
8919
  //trigger onRendered Callback
8583
8920
  rendered();
8584
8921
 
8585
- //prevent editing from triggering rowClick event
8922
+ //prevent editing from triggering rowClick event and, with
8923
+ //selectableRange, from starting a range selection whose focus
8924
+ //transfer would blur and close the editor
8925
+ //https://github.com/tabulator-tables/tabulator/issues/4563
8586
8926
  var children = element.children;
8587
-
8927
+
8588
8928
  for (var i = 0; i < children.length; i++) {
8589
8929
  children[i].addEventListener("click", function(e){
8590
8930
  e.stopPropagation();
8591
8931
  });
8932
+ children[i].addEventListener("mousedown", function(e){
8933
+ e.stopPropagation();
8934
+ });
8935
+ children[i].addEventListener("mouseup", function(e){
8936
+ e.stopPropagation();
8937
+ });
8592
8938
  }
8593
8939
  }else {
8594
8940
  console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
@@ -8664,6 +9010,24 @@ class Edit extends Module{
8664
9010
  this.editedCells.splice(editIndex, 1);
8665
9011
  }
8666
9012
  }
9013
+
9014
+ //mark a cell as edited without a user edit, mirrors clearEdited
9015
+ //https://github.com/tabulator-tables/tabulator/issues/4443
9016
+ setEdited(cell){
9017
+ if(!cell.modules.edit){
9018
+ cell.modules.edit = {};
9019
+ }
9020
+
9021
+ if(!cell.modules.edit.edited){
9022
+ cell.modules.edit.edited = true;
9023
+
9024
+ this.dispatch("edit-edited-set", cell);
9025
+ }
9026
+
9027
+ if(this.editedCells.indexOf(cell) == -1){
9028
+ this.editedCells.push(cell);
9029
+ }
9030
+ }
8667
9031
  }
8668
9032
 
8669
9033
  class ExportRow{
@@ -11692,10 +12056,11 @@ class FrozenRows extends Module{
11692
12056
  this.rows = [];
11693
12057
 
11694
12058
  this.topElement.classList.add("tabulator-frozen-rows-holder");
11695
-
11696
- // Replaced by adding padding-top to the tabulator-frozen-rows-holder
11697
- // See https://github.com/olifolkerd/tabulator/pull/4809
11698
- //fragment.appendChild(document.createElement("br"));
12059
+
12060
+ // The headers and the holder are both inline-block, so a line break is
12061
+ // required to force the holder onto its own row below the headers.
12062
+ // https://github.com/tabulator-tables/tabulator/issues/4871
12063
+ fragment.appendChild(document.createElement("br"));
11699
12064
  fragment.appendChild(this.topElement);
11700
12065
 
11701
12066
  // this.table.columnManager.element.append(this.topElement);
@@ -18465,7 +18830,15 @@ class ResizeColumns extends Module{
18465
18830
  handle.style.position = "sticky";
18466
18831
  handle.style[column.modules.frozen.position] = this.frozenColumnOffset(column);
18467
18832
  }
18468
-
18833
+
18834
+ //seed the handle with the row height, cell handles are recreated when
18835
+ //a cell is re-rendered (e.g. after editing) and the cell-height event
18836
+ //that usually sizes them does not fire again unless the height changes
18837
+ //https://github.com/tabulator-tables/tabulator/issues/4544
18838
+ if(type === "cell"){
18839
+ handle.style.height = component.row.heightStyled;
18840
+ }
18841
+
18469
18842
  config.handleEl = handle;
18470
18843
 
18471
18844
  if(element.parentNode && column.visible){
@@ -18846,22 +19219,19 @@ class ResizeTable extends Module{
18846
19219
  this.autoResize = true;
18847
19220
 
18848
19221
  this.resizeObserver = new ResizeObserver((entry) => {
18849
- if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){
18850
-
18851
- var nodeHeight = Math.floor(entry[0].contentRect.height);
18852
- var nodeWidth = Math.floor(entry[0].contentRect.width);
18853
-
18854
- if(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){
18855
- this.tableHeight = nodeHeight;
18856
- this.tableWidth = nodeWidth;
18857
-
18858
- if(table.element.parentNode){
18859
- this.containerHeight = table.element.parentNode.clientHeight;
18860
- this.containerWidth = table.element.parentNode.clientWidth;
18861
- }
18862
-
18863
- this.redrawTable();
19222
+ var nodeHeight = Math.floor(entry[0].contentRect.height);
19223
+ var nodeWidth = Math.floor(entry[0].contentRect.width);
19224
+
19225
+ if(this.tableHeight != nodeHeight || this.tableWidth != nodeWidth){
19226
+ this.tableHeight = nodeHeight;
19227
+ this.tableWidth = nodeWidth;
19228
+
19229
+ if(table.element.parentNode){
19230
+ this.containerHeight = table.element.parentNode.clientHeight;
19231
+ this.containerWidth = table.element.parentNode.clientWidth;
18864
19232
  }
19233
+
19234
+ this.redrawTable();
18865
19235
  }
18866
19236
  });
18867
19237
 
@@ -18872,20 +19242,17 @@ class ResizeTable extends Module{
18872
19242
  if(this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))){
18873
19243
 
18874
19244
  this.containerObserver = new ResizeObserver((entry) => {
18875
- if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){
18876
-
18877
- var nodeHeight = Math.floor(entry[0].contentRect.height);
18878
- var nodeWidth = Math.floor(entry[0].contentRect.width);
18879
-
18880
- if(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){
18881
- this.containerHeight = nodeHeight;
18882
- this.containerWidth = nodeWidth;
18883
- this.tableHeight = table.element.clientHeight;
18884
- this.tableWidth = table.element.clientWidth;
18885
- }
18886
-
18887
- this.redrawTable();
19245
+ var nodeHeight = Math.floor(entry[0].contentRect.height);
19246
+ var nodeWidth = Math.floor(entry[0].contentRect.width);
19247
+
19248
+ if(this.containerHeight != nodeHeight || this.containerWidth != nodeWidth){
19249
+ this.containerHeight = nodeHeight;
19250
+ this.containerWidth = nodeWidth;
19251
+ this.tableHeight = table.element.clientHeight;
19252
+ this.tableWidth = table.element.clientWidth;
18888
19253
  }
19254
+
19255
+ this.redrawTable();
18889
19256
  });
18890
19257
 
18891
19258
  this.containerObserver.observe(this.table.element.parentNode);
@@ -18894,11 +19261,9 @@ class ResizeTable extends Module{
18894
19261
  this.subscribe("table-resize", this.tableResized.bind(this));
18895
19262
 
18896
19263
  }else {
18897
- this.binding = function(){
18898
- if(!table.browserMobile || (table.browserMobile && (!table.modules.edit || (table.modules.edit && !table.modules.edit.currentCell)))){
18899
- table.columnManager.rerenderColumns(true);
18900
- table.redraw();
18901
- }
19264
+ this.binding = () => {
19265
+ table.columnManager.rerenderColumns(true);
19266
+ table.redraw();
18902
19267
  };
18903
19268
 
18904
19269
  window.addEventListener("resize", this.binding);
@@ -19687,7 +20052,7 @@ class SelectRow extends Module{
19687
20052
  if(Array.isArray(rowMatch)){
19688
20053
  if(rowMatch.length){
19689
20054
  rowMatch.forEach((row) => {
19690
- change = this._selectRow(row, true, true);
20055
+ change = this._selectRow(row, true);
19691
20056
 
19692
20057
  if(change){
19693
20058
  changes.push(change);
@@ -19698,11 +20063,11 @@ class SelectRow extends Module{
19698
20063
  }
19699
20064
  }else {
19700
20065
  if(rowMatch){
19701
- this._selectRow(rowMatch, false, true);
20066
+ this._selectRow(rowMatch, false);
19702
20067
  }
19703
- }
20068
+ }
19704
20069
  }
19705
-
20070
+
19706
20071
  //select an individual row
19707
20072
  _selectRow(rowInfo, silent, force){
19708
20073
  //handle max row count
@@ -20177,7 +20542,11 @@ class Range extends CoreFeature{
20177
20542
  var _vDomTop = this.table.rowManager.renderer.vDomTop,
20178
20543
  _vDomBottom = this.table.rowManager.renderer.vDomBottom,
20179
20544
  _vDomLeft = this.table.columnManager.renderer.leftCol,
20180
- _vDomRight = this.table.columnManager.renderer.rightCol,
20545
+ _vDomRight = this.table.columnManager.renderer.rightCol,
20546
+ frozenLeftColumns = this.table.modules.frozenColumns.leftColumns,
20547
+ frozenLeft = frozenLeftColumns.length,
20548
+ frozenRightColumns = this.table.modules.frozenColumns.rightColumns,
20549
+ frozenRight = frozenRightColumns.length,
20181
20550
  top, bottom, left, right, topLeftCell, bottomRightCell, topLeftCellEl, bottomRightCellEl, topLeftRowEl, bottomRightRowEl;
20182
20551
 
20183
20552
  if(this.table.options.renderHorizontal === "virtual" && this.rangeManager.rowHeader) {
@@ -20199,12 +20568,16 @@ class Range extends CoreFeature{
20199
20568
  if (_vDomRight == null) {
20200
20569
  _vDomRight = Infinity;
20201
20570
  }
20571
+
20572
+ if (frozenLeft > 0 && frozenLeftColumns[0].isRowHeader === true) {
20573
+ frozenLeft -= 1;
20574
+ }
20202
20575
 
20203
20576
  if (this.overlaps(_vDomLeft, _vDomTop, _vDomRight, _vDomBottom)) {
20204
20577
  top = Math.max(this.top, _vDomTop);
20205
20578
  bottom = Math.min(this.bottom, _vDomBottom);
20206
20579
  left = Math.max(this.left, _vDomLeft);
20207
- right = Math.min(this.right, _vDomRight);
20580
+ right = Math.min(this.right, _vDomRight + frozenLeft + frozenRight);
20208
20581
 
20209
20582
  topLeftCell = this.rangeManager.getCell(top, left);
20210
20583
  bottomRightCell = this.rangeManager.getCell(bottom, right);
@@ -20215,13 +20588,28 @@ class Range extends CoreFeature{
20215
20588
 
20216
20589
  this.element.classList.add("tabulator-range-active");
20217
20590
  // this.element.classList.toggle("tabulator-range-active", this === this.rangeManager.activeRange);
20591
+
20592
+ let occupiedFrozenColumnsWidth = 0;
20593
+ this.rangeManager.getTableColumns().forEach((column) => {
20594
+ if (this.occupiesColumn(column) && column.definition.frozen){
20595
+ occupiedFrozenColumnsWidth += column.width;
20596
+ }
20597
+ });
20218
20598
 
20219
20599
  if(this.table.rtl){
20600
+ const calculatedRangeWidth = Math.max(
20601
+ topLeftCellEl.offsetLeft + topLeftCellEl.offsetWidth - bottomRightCellEl.offsetLeft,
20602
+ occupiedFrozenColumnsWidth,
20603
+ );
20220
20604
  this.element.style.right = topLeftRowEl.offsetWidth - topLeftCellEl.offsetLeft - topLeftCellEl.offsetWidth + "px";
20221
- this.element.style.width = topLeftCellEl.offsetLeft + topLeftCellEl.offsetWidth - bottomRightCellEl.offsetLeft + "px";
20605
+ this.element.style.width = calculatedRangeWidth + "px";
20222
20606
  }else {
20607
+ const calculatedRangeWidth = Math.max(
20608
+ bottomRightCellEl.offsetLeft + bottomRightCellEl.offsetWidth - topLeftCellEl.offsetLeft,
20609
+ occupiedFrozenColumnsWidth,
20610
+ );
20223
20611
  this.element.style.left = topLeftRowEl.offsetLeft + topLeftCellEl.offsetLeft + "px";
20224
- this.element.style.width = bottomRightCellEl.offsetLeft + bottomRightCellEl.offsetWidth - topLeftCellEl.offsetLeft + "px";
20612
+ this.element.style.width = calculatedRangeWidth + "px";
20225
20613
  }
20226
20614
 
20227
20615
  this.element.style.top = topLeftRowEl.offsetTop + "px";
@@ -23257,22 +23645,24 @@ var defaultValidators = {
23257
23645
  if(value === "" || value === null || typeof value === "undefined"){
23258
23646
  return true;
23259
23647
  }
23260
- var unique = true;
23648
+
23649
+ //the "ignorecase" parameter enables case-insensitive comparison, other
23650
+ //rows can hold non string values (numbers, empty cells), so only lower
23651
+ //case when both sides are strings (https://github.com/tabulator-tables/tabulator/pull/4486)
23652
+ var equals = parameters === "ignorecase"
23653
+ ? (x, y) => typeof x === "string" && typeof y === "string" ? x.toLowerCase() == y.toLowerCase() : x == y
23654
+ : (x, y) => x == y;
23261
23655
 
23262
23656
  var cellData = cell.getData();
23263
23657
  var column = cell.getColumn()._getSelf();
23264
23658
 
23265
- this.table.rowManager.rows.forEach(function(row){
23659
+ return !this.table.rowManager.rows.some(function(row){
23266
23660
  var data = row.getData();
23267
23661
 
23268
23662
  if(data !== cellData){
23269
- if(value == column.getFieldValue(data)){
23270
- unique = false;
23271
- }
23663
+ return equals(value, column.getFieldValue(data));
23272
23664
  }
23273
23665
  });
23274
-
23275
- return unique;
23276
23666
  },
23277
23667
 
23278
23668
  //must have a value
@@ -25398,6 +25788,7 @@ class BasicVertical extends Renderer{
25398
25788
 
25399
25789
 
25400
25790
  rerenderRows(callback){
25791
+ let origScrollTop = this.elementVertical.scrollTop;
25401
25792
  this.clearRows();
25402
25793
 
25403
25794
  if(callback){
@@ -25408,6 +25799,9 @@ class BasicVertical extends Renderer{
25408
25799
 
25409
25800
  if(!this.rows().length){
25410
25801
  this.table.rowManager.tableEmpty();
25802
+ } else {
25803
+ //Restore existing scrolling position
25804
+ this.elementVertical.scrollTop = origScrollTop;
25411
25805
  }
25412
25806
  }
25413
25807
 
@@ -25526,7 +25920,13 @@ class VirtualDomVertical extends Renderer{
25526
25920
  }
25527
25921
 
25528
25922
  if(this.rows().length){
25529
- this._virtualRenderFill((topRow === false ? this.rows.length - 1 : topRow), true, topOffset || 0);
25923
+ if(topRow === false){
25924
+ //no rendered row to anchor on, start from the top if nothing was rendered before,
25925
+ //otherwise the rendered window is past the end of the shrunken data so anchor on the last row
25926
+ topRow = rows.length ? this.rows().length - 1 : 0;
25927
+ }
25928
+
25929
+ this._virtualRenderFill(topRow, true, topOffset || 0);
25530
25930
  }else {
25531
25931
  this.clear();
25532
25932
  this.table.rowManager.tableEmpty();
@@ -25776,7 +26176,8 @@ class VirtualDomVertical extends Renderer{
25776
26176
  totalRowsRendered++;
25777
26177
  });
25778
26178
 
25779
- resized = this.table.rowManager.adjustTableSize();
26179
+ //block the redraw, this loop picks up the new container size itself
26180
+ resized = this.table.rowManager.adjustTableSize(true);
25780
26181
  containerHeight = this.elementVertical.clientHeight;
25781
26182
  if(resized && (fixedHeight || this.table.options.maxHeight))
25782
26183
  {
@@ -26124,7 +26525,7 @@ class RowManager extends CoreFeature{
26124
26525
 
26125
26526
  el.classList.add("tabulator-table");
26126
26527
  el.setAttribute("role", "rowgroup");
26127
- el.setAttribute("id", "tabulator-table-body");
26528
+ el.setAttribute("id", "tabulator-table-body-" + this.table.instanceId);
26128
26529
 
26129
26530
  return el;
26130
26531
  }
@@ -26831,7 +27232,7 @@ class RowManager extends CoreFeature{
26831
27232
  }
26832
27233
 
26833
27234
  setActiveRows(activeRows){
26834
- this.activeRows = this.activeRows = Object.assign([], activeRows);
27235
+ this.activeRows = activeRows.slice();
26835
27236
  this.activeRowsCount = this.activeRows.length;
26836
27237
  }
26837
27238
 
@@ -27101,7 +27502,7 @@ class RowManager extends CoreFeature{
27101
27502
  }
27102
27503
 
27103
27504
  //adjust the height of the table holder to fit in the Tabulator element
27104
- adjustTableSize(){
27505
+ adjustTableSize(blockRedraw){
27105
27506
  let initialHeight = this.element.clientHeight, minHeight;
27106
27507
  let resized = false;
27107
27508
 
@@ -27117,8 +27518,8 @@ class RowManager extends CoreFeature{
27117
27518
  this.element.style.maxHeight = height;
27118
27519
  } else {
27119
27520
  this.element.style.height = "";
27120
- this.element.style.height =
27121
- this.table.element.clientHeight - otherHeight + "px";
27521
+ //clamp at zero, a negative height is invalid css and would leave the holder at its content height
27522
+ this.element.style.height = Math.max(this.table.element.clientHeight - otherHeight, 0) + "px";
27122
27523
  this.element.scrollTop = this.scrollTop;
27123
27524
  }
27124
27525
 
@@ -27127,7 +27528,10 @@ class RowManager extends CoreFeature{
27127
27528
  //check if the table has changed size when dealing with variable height tables
27128
27529
  if(!this.fixedHeight && initialHeight != this.element.clientHeight){
27129
27530
  resized = true;
27130
- if(!this.redrawing){ // prevent recursive redraws
27531
+
27532
+ //the renderer blocks the redraw when it adjusts the size from inside its render loop,
27533
+ //it picks up the new size itself and a redraw would re-render the rows while they are still being rendered
27534
+ if(!blockRedraw && !this.redrawing){ // prevent recursive redraws
27131
27535
  this.redrawing = true;
27132
27536
  if(this.subscribed("table-resize")){
27133
27537
  this.dispatch("table-resize");
@@ -27864,35 +28268,27 @@ class ExternalEventBus {
27864
28268
  }
27865
28269
  }
27866
28270
 
27867
- _dispatch(){
27868
- var args = Array.from(arguments),
27869
- key = args.shift(),
27870
- result;
27871
-
27872
- if(this.events[key]){
27873
- this.events[key].forEach((callback, i) => {
27874
- let callResult = callback.apply(this.table, args);
27875
-
27876
- if(!i){
27877
- result = callResult;
27878
- }
27879
- });
28271
+ _dispatch(key, ...args){
28272
+ const subs = this.events[key];
28273
+ const len = subs?.length;
28274
+ if(len){
28275
+ const result = subs[0].apply(this.table, args);
28276
+
28277
+ for(let i = 1; i < len; i++){
28278
+ subs[i].apply(this.table, args);
28279
+ }
28280
+
28281
+ return result;
27880
28282
  }
27881
-
27882
- return result;
27883
28283
  }
27884
28284
 
27885
- _debugDispatch(){
27886
- var args = Array.from(arguments),
27887
- key = args[0];
27888
-
27889
- args[0] = "ExternalEvent:" + args[0];
27890
-
28285
+ _debugDispatch(key, ...args){
27891
28286
  if(this.debug === true || this.debug.includes(key)){
27892
- console.log(...args);
28287
+ const debugArgs = ["ExternalEvent:" + key, ...args];
28288
+ console.log(...debugArgs);
27893
28289
  }
27894
28290
 
27895
- return this._dispatch(...arguments);
28291
+ return this._dispatch(key, ...args);
27896
28292
  }
27897
28293
  }
27898
28294
 
@@ -27963,21 +28359,28 @@ class InternalEventBus {
27963
28359
  }
27964
28360
 
27965
28361
  _chain(key, args, initialValue, fallback){
27966
- var value = initialValue;
28362
+ const subs = this.events[key];
27967
28363
 
27968
- if(!Array.isArray(args)){
27969
- args = [args];
27970
- }
28364
+ if(subs && subs.length){
28365
+ if(!Array.isArray(args)){
28366
+ args = [args];
28367
+ }
27971
28368
 
27972
- if(this.subscribed(key)){
27973
- this.events[key].forEach((subscriber, i) => {
27974
- value = subscriber.callback.apply(this, args.concat([value]));
27975
- });
28369
+ //reuse a single args array across subscribers, mutating only the trailing
28370
+ //accumulator slot, instead of allocating a fresh concat per subscriber
28371
+ const callArgs = args.slice();
28372
+ const valueIndex = callArgs.length;
28373
+ let value = initialValue;
28374
+
28375
+ for(let i = 0; i < subs.length; i++){
28376
+ callArgs[valueIndex] = value;
28377
+ value = subs[i].callback.apply(this, callArgs);
28378
+ }
27976
28379
 
27977
28380
  return value;
27978
- }else {
27979
- return typeof fallback === "function" ? fallback() : fallback;
27980
28381
  }
28382
+
28383
+ return typeof fallback === "function" ? fallback() : fallback;
27981
28384
  }
27982
28385
 
27983
28386
  _confirm(key, args){
@@ -28008,54 +28411,40 @@ class InternalEventBus {
28008
28411
  }
28009
28412
  }
28010
28413
 
28011
- _dispatch(){
28012
- var args = Array.from(arguments),
28013
- key = args.shift();
28014
-
28015
- if(this.events[key]){
28016
- this.events[key].forEach((subscriber) => {
28414
+ _dispatch(key, ...args){
28415
+ const subs = this.events[key];
28416
+ if(subs){
28417
+ for(const subscriber of subs){
28017
28418
  subscriber.callback.apply(this, args);
28018
- });
28419
+ }
28019
28420
  }
28020
28421
  }
28021
28422
 
28022
- _debugDispatch(){
28023
- var args = Array.from(arguments),
28024
- key = args[0];
28025
-
28026
- args[0] = "InternalEvent:" + key;
28027
-
28423
+ _debugDispatch(key, ...args){
28028
28424
  if(this.debug === true || this.debug.includes(key)){
28029
- console.log(...args);
28425
+ const debugArgs = ["InternalEvent:" + key, ...args];
28426
+ console.log(...debugArgs);
28030
28427
  }
28031
28428
 
28032
- return this._dispatch(...arguments);
28429
+ return this._dispatch(key, ...args);
28033
28430
  }
28034
28431
 
28035
- _debugChain(){
28036
- var args = Array.from(arguments),
28037
- key = args[0];
28038
-
28039
- args[0] = "InternalEvent:" + key;
28040
-
28432
+ _debugChain(key, args, initialValue, fallback){
28041
28433
  if(this.debug === true || this.debug.includes(key)){
28042
- console.log(...args);
28434
+ const debugArgs = ["InternalEvent:" + key, args, initialValue, fallback];
28435
+ console.log(...debugArgs);
28043
28436
  }
28044
28437
 
28045
- return this._chain(...arguments);
28438
+ return this._chain(key, args, initialValue, fallback);
28046
28439
  }
28047
28440
 
28048
- _debugConfirm(){
28049
- var args = Array.from(arguments),
28050
- key = args[0];
28051
-
28052
- args[0] = "InternalEvent:" + key;
28053
-
28441
+ _debugConfirm(key, args){
28054
28442
  if(this.debug === true || this.debug.includes(key)){
28055
- console.log(...args);
28443
+ const debugArgs = ["InternalEvent:" + key, args];
28444
+ console.log(...debugArgs);
28056
28445
  }
28057
28446
 
28058
- return this._confirm(...arguments);
28447
+ return this._confirm(key, args);
28059
28448
  }
28060
28449
  }
28061
28450
 
@@ -29103,6 +29492,12 @@ class Tabulator extends ModuleBinder{
29103
29492
 
29104
29493
  if(this.initializeElement(element)){
29105
29494
 
29495
+ if (this.element.id) {
29496
+ this.instanceId = this.element.id;
29497
+ } else {
29498
+ this.instanceId = Math.random().toString(36).slice(2, 7);
29499
+ }
29500
+
29106
29501
  this.initializeCoreSystems(options);
29107
29502
 
29108
29503
  //delay table creation to allow event bindings immediately after the constructor
@@ -29260,7 +29655,7 @@ class Tabulator extends ModuleBinder{
29260
29655
 
29261
29656
  element.classList.add("tabulator");
29262
29657
  element.setAttribute("role", "grid");
29263
- element.setAttribute("aria-owns", "tabulator-table-body");
29658
+ element.setAttribute("aria-owns", "tabulator-table-body-" + this.instanceId);
29264
29659
 
29265
29660
  //empty element
29266
29661
  while(element.firstChild) element.removeChild(element.firstChild);
@@ -29446,6 +29841,10 @@ class Tabulator extends ModuleBinder{
29446
29841
  getDataCount(active){
29447
29842
  return this.rowManager.getDataCount(active);
29448
29843
  }
29844
+
29845
+ getRedrawBlock() {
29846
+ return this.rowManager.redrawBlock || this.columnManager.redrawBlock;
29847
+ }
29449
29848
 
29450
29849
  //replace data, keeping table in position with same sort
29451
29850
  replaceData(data, params, config){
@@ -30693,7 +31092,7 @@ const areRowsEqual = (newData, oldData) => {
30693
31092
  return newData.every((newItem, index) => isEqual(newItem, oldData[index]));
30694
31093
  };
30695
31094
 
30696
- 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)}`;
31095
+ 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)}`;
30697
31096
 
30698
31097
  const FIRST_PAGE = 1;
30699
31098
  const Table = class {