@paperless/angular 1.52.1 → 1.52.2

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.
@@ -1,99 +1,10 @@
1
1
  /* eslint-disable max-len */
2
2
  import { Component, HostBinding, Input } from '@angular/core';
3
- import { isTableColumnSizesKey, objectGetByPath, } from '@paperless/core';
3
+ import { getTableCellColumnClasses, objectGetByPath, } from '@paperless/core';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "../../../../stencil/components";
7
- export class TableCell {
8
- constructor() {
9
- /**
10
- * The variant of the column
11
- */
12
- this.variant = 'default';
13
- /**
14
- * The index of the column
15
- */
16
- this.index = 0;
17
- /**
18
- * The index of the row
19
- */
20
- this.rowIndex = 0;
21
- /**
22
- * Wether the table has actions
23
- */
24
- this.tableHasActions = false;
25
- }
26
- get class() {
27
- return this.getColumnClasses();
28
- }
29
- get data() {
30
- if (this.variant === 'header') {
31
- return {
32
- value: this.value,
33
- };
34
- }
35
- if (this.variant === 'actions') {
36
- return {
37
- value: this.value,
38
- item: this.item,
39
- index: this.index,
40
- rowIndex: this.rowIndex,
41
- };
42
- }
43
- return {
44
- value: this.value ?? objectGetByPath(this.item, this.definition.path),
45
- item: this.item,
46
- index: this.index,
47
- rowIndex: this.rowIndex,
48
- };
49
- }
50
- // render() {
51
- // return (
52
- // <Host
53
- // class={{
54
- // 'p-table-column': true,
55
- // [`variant-${this.variant}`]: true,
56
- // ...this._getColumnClasses(),
57
- // }}
58
- // >
59
- // {this.checkbox}
60
- // {this.variant === 'loading' ? (
61
- // <p-loader
62
- // variant="ghost"
63
- // class="rounded flex-1 w-full h-6"
64
- // />
65
- // ) : (
66
- // <div class="flex">
67
- // {this.variant === 'header' ? (
68
- // this.data.value
69
- // ) : this.definition.useSlot ? (
70
- // <slot />
71
- // ) : (
72
- // this.template(this.data as TableDefinitionData)
73
- // )}
74
- // </div>
75
- // )}
76
- // </Host>
77
- // );
78
- // }
79
- getColumnClasses() {
80
- const sizes = this.definition ? this._getSizes(this.definition) : {};
81
- const isLastValues = this.definition
82
- ? this._getIsLastValues(this.definition)
83
- : {};
84
- return {
85
- 'justify-start': !this.definition?.align || this.definition?.align === 'start',
86
- 'justify-center': this.definition?.align === 'center',
87
- 'justify-end': this.definition?.align === 'end',
88
- 'font-semibold': this.variant !== 'header' && this.definition?.type === 'th',
89
- 'text-storm-dark': this.variant !== 'header' && this.definition?.type === 'th',
90
- 'group-hover:flex': this.variant === 'actions' && this.tableHasActions,
91
- hidden: this.variant === 'actions' && this.tableHasActions,
92
- ...sizes,
93
- ...isLastValues,
94
- };
95
- }
96
- /*
7
+ /*
97
8
  With this, we shall hack the system in ways no one would ever have thought.
98
9
 
99
10
  w-1/12 w-2/12 w-3/12 w-4/12 w-5/12 w-6/12 w-7/12 w-8/12 w-9/12 w-10/12 w-11/12 w-12/12
@@ -123,7 +34,8 @@ export class TableCell {
123
34
  ⠀⠀⣨⣷⣶⣿⣧⣛⣛⠿⠿⣿⢿⣿⣿⣛⣿⡿⠀⠀⡇⠀⠀⠀⠀⢸⠀⠈⢿⣟⣛⠿⢿⡿⢿⢿⢿⣛⣫⣼⡿⣶⣾⣅⡀⠀
124
35
  ⢀⡼⠋⠁⠀⠀⠈⠉⠛⠛⠻⠟⠸⠛⠋⠉⠁⠀⠀⢸⡇⠀⠀⠄⠀⢸⡄⠀⠀⠈⠉⠙⠛⠃⠻⠛⠛⠛⠉⠁⠀⠀⠈⠙⢧⡀
125
36
  ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡇⢠⠀⠀⠀⢸⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
126
- ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡇⠀⠀⠀⠀⢸⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠟⠁⣿⠇⠀⠀⠀⠀⢸⡇⠙⢿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
37
+ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡇⠀⠀⠀⠀⢸⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
38
+ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠟⠁⣿⠇⠀⠀⠀⠀⢸⡇⠙⢿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
127
39
  ⠀⠰⣄⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⠖⡾⠁⠀⠀⣿⠀⠀⠀⠀⠀⠘⣿⠀⠀⠙⡇⢸⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠄⠀
128
40
  ⠀⠀⢻⣷⡦⣤⣤⣤⡴⠶⠿⠛⠉⠁⠀⢳⠀⢠⡀⢿⣀⠀⠀⠀⠀⣠⡟⢀⣀⢠⠇⠀⠈⠙⠛⠷⠶⢦⣤⣤⣤⢴⣾⡏⠀⠀
129
41
  ⠀⠀⠈⣿⣧⠙⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⢊⣙⠛⠒⠒⢛⣋⡚⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⡿⠁⣾⡿⠀⠀⠀
@@ -140,85 +52,49 @@ export class TableCell {
140
52
  ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
141
53
  ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
142
54
  */
143
- _getSizes({ sizes, } /* Table Definition */) {
144
- if (sizes === 'auto' || !sizes) {
145
- return {
146
- 'w-auto': true,
147
- };
148
- }
149
- if (sizes === 'hidden') {
55
+ export class TableCell {
56
+ constructor() {
57
+ /**
58
+ * The variant of the column
59
+ */
60
+ this.variant = 'default';
61
+ /**
62
+ * The index of the column
63
+ */
64
+ this.index = 0;
65
+ /**
66
+ * The index of the row
67
+ */
68
+ this.rowIndex = 0;
69
+ /**
70
+ * Wether the table has actions
71
+ */
72
+ this.tableHasActions = false;
73
+ }
74
+ get class() {
75
+ return getTableCellColumnClasses(this.definition, this.variant, this.tableHasActions);
76
+ }
77
+ get data() {
78
+ if (this.variant === 'header') {
150
79
  return {
151
- hidden: true,
80
+ value: this.value,
152
81
  };
153
82
  }
154
- if (typeof sizes === 'object') {
155
- sizes = sizes;
156
- const classes = {};
157
- let previousSize;
158
- for (let size in sizes) {
159
- if (!isTableColumnSizesKey(sizes, size)) {
160
- continue;
161
- }
162
- if (size === 'default') {
163
- if (sizes.default === 'hidden') {
164
- classes['hidden'] = true;
165
- previousSize = size;
166
- continue;
167
- }
168
- classes[`w-${sizes.default}/12`] = true;
169
- previousSize = size;
170
- continue;
171
- }
172
- const currentValue = sizes[size];
173
- const previousValue = previousSize ? sizes[previousSize] : null;
174
- if (currentValue !== 'hidden' &&
175
- previousValue &&
176
- previousValue === 'hidden' &&
177
- this.variant !== 'actions') {
178
- classes[`${size}:flex`] = true;
179
- }
180
- if (currentValue === 'hidden' && this.variant !== 'actions') {
181
- classes[`${size}:hidden`] = true;
182
- previousSize = size;
183
- continue;
184
- }
185
- if (currentValue === 12 || currentValue === 'full') {
186
- classes[`${size}:w-full`] = true;
187
- }
188
- classes[`${size}:w-${currentValue}/12`] = true;
189
- previousSize = size;
190
- }
191
- return classes;
192
- }
193
- if (sizes === 12 || sizes === 'full') {
83
+ if (this.variant === 'actions') {
194
84
  return {
195
- 'w-full': true,
85
+ value: this.value,
86
+ item: this.item,
87
+ index: this.index,
88
+ rowIndex: this.rowIndex,
196
89
  };
197
90
  }
198
- // is a number.
199
91
  return {
200
- [`w-${sizes}/12`]: true,
92
+ value: this.value ?? objectGetByPath(this.item, this.definition.path),
93
+ item: this.item,
94
+ index: this.index,
95
+ rowIndex: this.rowIndex,
201
96
  };
202
97
  }
203
- _getIsLastValues({ isLast, parsedSizes, } /* Table Definition */) {
204
- const values = {};
205
- for (let size of Object.keys(isLast)) {
206
- let prefix = '';
207
- if (size !== 'default') {
208
- prefix = `${size}:`;
209
- }
210
- values[`${prefix}pr-4`] = !isLast[size];
211
- values[`${prefix}group-hover:hidden`] =
212
- isLast[size] && this.tableHasActions && this.variant !== 'actions';
213
- values[`${prefix}group-hover:flex`] =
214
- parsedSizes[size] !== 'hidden' ||
215
- this.variant === 'actions';
216
- values[`${prefix}flex`] =
217
- parsedSizes[size] !== 'hidden' &&
218
- this.variant !== 'actions';
219
- }
220
- return values;
221
- }
222
98
  }
223
99
  TableCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableCell, deps: [], target: i0.ɵɵFactoryTarget.Component });
224
100
  TableCell.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: TableCell, selector: "p-table-cell-ngx", inputs: { variant: "variant", index: "index", rowIndex: "rowIndex", definition: "definition", item: "item", value: "value", tableHasActions: "tableHasActions", checkbox: "checkbox", template: "template" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<ng-container *ngIf=\"checkbox\">\n\t<ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\n</ng-container>\n\n<ng-container [ngSwitch]=\"variant\">\n\t<p-loader\n\t\t*ngSwitchCase=\"'loading'\"\n\t\tvariant=\"ghost\"\n\t\tclass=\"h-6 w-full flex-1 rounded\"\n\t></p-loader>\n\n\t<ng-container *ngSwitchCase=\"'actions'\">\n\t\t<ng-container *ngIf=\"template\">\n\t\t\t<ng-container *ngTemplateOutlet=\"template; context: data\"></ng-container>\n\t\t</ng-container>\n\t</ng-container>\n\n\t<div\n\t\t*ngSwitchCase=\"'header'\"\n\t\tclass=\"flex w-full overflow-hidden\"\n\t\t[class.justify-start]=\"definition.align === 'start'\"\n\t\t[class.justify-center]=\"definition.align === 'center'\"\n\t\t[class.justify-end]=\"definition.align === 'end'\"\n\t>\n\t\t<ng-container *ngTemplateOutlet=\"valueTemplate\"></ng-container>\n\t</div>\n\n\t<div\n\t\t*ngSwitchCase=\"'default'\"\n\t\tclass=\"flex min-w-0 flex-1\"\n\t\t[class.justify-start]=\"definition.align === 'start'\"\n\t\t[class.justify-center]=\"definition.align === 'center'\"\n\t\t[class.justify-end]=\"definition.align === 'end'\"\n\t>\n\t\t<ng-container *ngIf=\"template; else valueTemplate\">\n\t\t\t<ng-container *ngTemplateOutlet=\"template; context: data\"></ng-container>\n\t\t</ng-container>\n\t</div>\n</ng-container>\n\n<ng-template #valueTemplate>\n\t{{ data.value }}\n</ng-template>\n", styles: [":host{align-items:center;gap:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.PLoader, selector: "p-loader", inputs: ["color", "modalDescription", "modalTitle", "show", "variant"] }] });
@@ -247,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
247
123
  type: HostBinding,
248
124
  args: ['class']
249
125
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXBlcmxlc3Mvc3JjL2xpYi9tb2R1bGVzL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtY2VsbC90YWJsZS1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BhcGVybGVzcy9zcmMvbGliL21vZHVsZXMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsL3RhYmxlLWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQ04scUJBQXFCLEVBQ3JCLGVBQWUsR0FJZixNQUFNLGlCQUFpQixDQUFDOzs7O0FBT3pCLE1BQU0sT0FBTyxTQUFTO0lBTHRCO1FBTUM7O1dBRUc7UUFDTSxZQUFPLEdBQWlELFNBQVMsQ0FBQztRQUUzRTs7V0FFRztRQUNNLFVBQUssR0FBVyxDQUFDLENBQUM7UUFFM0I7O1dBRUc7UUFDTSxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBaUI5Qjs7V0FFRztRQUNNLG9CQUFlLEdBQVksS0FBSyxDQUFDO0tBK1AxQztJQW5QQSxJQUNJLEtBQUs7UUFDUixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDUCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQzlCLE9BQU87Z0JBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ2pCLENBQUM7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDL0IsT0FBTztnQkFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pC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U0FBUyxDQUFDO1lBRTVCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sTUFBTSxDQUFDO2dCQUN0QixXQUFXLENBQUMsSUFBOEIsQ0FBQyxLQUFLLFFBQVE7b0JBQ3hELElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO1NBQzVCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDOztzR0FoU1csU0FBUzswRkFBVCxTQUFTLHVUQ2Z0QixtMUNBMkNBOzJGRDVCYSxTQUFTO2tCQUxyQixTQUFTOytCQUNDLGtCQUFrQjs4QkFRbkIsT0FBTztzQkFBZixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxlQUFlO3NCQUF2QixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRixLQUFLO3NCQURSLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0aXNUYWJsZUNvbHVtblNpemVzS2V5LFxuXHRvYmplY3RHZXRCeVBhdGgsXG5cdFRhYmxlQ29sdW1uU2l6ZXMsXG5cdFRhYmxlQ29sdW1uU2l6ZXNLZXksXG5cdFRhYmxlRGVmaW5pdGlvbkRhdGEsXG59IGZyb20gJ0BwYXBlcmxlc3MvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3AtdGFibGUtY2VsbC1uZ3gnLFxuXHRzdHlsZVVybHM6IFsndGFibGUtY2VsbC5jb21wb25lbnQuc2NzcyddLFxuXHR0ZW1wbGF0ZVVybDogJy4vdGFibGUtY2VsbC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbCB7XG5cdC8qKlxuXHQgKiBUaGUgdmFyaWFudCBvZiB0aGUgY29sdW1uXG5cdCAqL1xuXHRASW5wdXQoKSB2YXJpYW50OiAnZGVmYXVsdCcgfCAnbG9hZGluZycgfCAnaGVhZGVyJyB8ICdhY3Rpb25zJyA9ICdkZWZhdWx0JztcblxuXHQvKipcblx0ICogVGhlIGluZGV4IG9mIHRoZSBjb2x1bW5cblx0ICovXG5cdEBJbnB1dCgpIGluZGV4OiBudW1iZXIgPSAwO1xuXG5cdC8qKlxuXHQgKiBUaGUgaW5kZXggb2YgdGhlIHJvd1xuXHQgKi9cblx0QElucHV0KCkgcm93SW5kZXg6IG51bWJlciA9IDA7XG5cblx0LyoqXG5cdCAqIFRoZSBkZWZpbml0aW9uIG9mIHRoZSB0YWJsZSBjb2x1bW5cblx0ICovXG5cdEBJbnB1dCgpIGRlZmluaXRpb24/OiBhbnk7IC8vIFRhYmxlRGVmaW5pdGlvblxuXG5cdC8qKlxuXHQgKiBUaGUgaXRlbSBpbiBxdWVzdGlvblxuXHQgKi9cblx0QElucHV0KCkgaXRlbTogYW55O1xuXG5cdC8qKlxuXHQgKiBUaGUgdmFsdWUgb2YgdGhlIGNvbHVtblxuXHQgKi9cblx0QElucHV0KCkgdmFsdWU6IGFueTtcblxuXHQvKipcblx0ICogV2V0aGVyIHRoZSB0YWJsZSBoYXMgYWN0aW9uc1xuXHQgKi9cblx0QElucHV0KCkgdGFibGVIYXNBY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRoZSBjaGVja2JveCB0ZW1wbGF0ZVJlZlxuXHQgKi9cblx0QElucHV0KCkgY2hlY2tib3g6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIFRoZSB0ZW1wbGF0ZSByZWYgZm9yIHRoZSBjb250ZW50XG5cdCAqL1xuXHRASW5wdXQoKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzJylcblx0Z2V0IGNsYXNzKCkge1xuXHRcdHJldHVybiB0aGlzLmdldENvbHVtbkNsYXNzZXMoKTtcblx0fVxuXG5cdGdldCBkYXRhKCk6IFRhYmxlRGVmaW5pdGlvbkRhdGEgfCB7IHZhbHVlOiBzdHJpbmcgfSB7XG5cdFx0aWYgKHRoaXMudmFyaWFudCA9PT0gJ2hlYWRlcicpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHZhbHVlOiB0aGlzLnZhbHVlLFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy52YXJpYW50ID09PSAnYWN0aW9ucycpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHZhbHVlOiB0aGlzLnZhbHVlLFxuXHRcdFx0XHRpdGVtOiB0aGlzLml0ZW0sXG5cdFx0XHRcdGluZGV4OiB0aGlzLmluZGV4LFxuXHRcdFx0XHRyb3dJbmRleDogdGhpcy5yb3dJbmRleCxcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdHZhbHVlOiB0aGlzLnZhbHVlID8/IG9iamVjdEdldEJ5UGF0aCh0aGlzLml0ZW0sIHRoaXMuZGVmaW5pdGlvbi5wYXRoKSxcblx0XHRcdGl0ZW06IHRoaXMuaXRlbSxcblx0XHRcdGluZGV4OiB0aGlzLmluZGV4LFxuXHRcdFx0cm93SW5kZXg6IHRoaXMucm93SW5kZXgsXG5cdFx0fTtcblx0fVxuXG5cdC8vIHJlbmRlcigpIHtcblx0Ly8gXHRyZXR1cm4gKFxuXHQvLyBcdFx0PEhvc3Rcblx0Ly8gXHRcdFx0Y2xhc3M9e3tcblx0Ly8gXHRcdFx0XHQncC10YWJsZS1jb2x1bW4nOiB0cnVlLFxuXHQvLyBcdFx0XHRcdFtgdmFyaWFudC0ke3RoaXMudmFyaWFudH1gXTogdHJ1ZSxcblx0Ly8gXHRcdFx0XHQuLi50aGlzLl9nZXRDb2x1bW5DbGFzc2VzKCksXG5cdC8vIFx0XHRcdH19XG5cdC8vIFx0XHQ+XG5cdC8vIFx0XHRcdHt0aGlzLmNoZWNrYm94fVxuXG5cdC8vIFx0XHRcdHt0aGlzLnZhcmlhbnQgPT09ICdsb2FkaW5nJyA/IChcblx0Ly8gXHRcdFx0XHQ8cC1sb2FkZXJcblx0Ly8gXHRcdFx0XHRcdHZhcmlhbnQ9XCJnaG9zdFwiXG5cdC8vIFx0XHRcdFx0XHRjbGFzcz1cInJvdW5kZWQgZmxleC0xIHctZnVsbCBoLTZcIlxuXHQvLyBcdFx0XHRcdC8+XG5cdC8vIFx0XHRcdCkgOiAoXG5cdC8vIFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXhcIj5cblx0Ly8gXHRcdFx0XHRcdHt0aGlzLnZhcmlhbnQgPT09ICdoZWFkZXInID8gKFxuXHQvLyBcdFx0XHRcdFx0XHR0aGlzLmRhdGEudmFsdWVcblx0Ly8gXHRcdFx0XHRcdCkgOiB0aGlzLmRlZmluaXRpb24udXNlU2xvdCA/IChcblx0Ly8gXHRcdFx0XHRcdFx0PHNsb3QgLz5cblx0Ly8gXHRcdFx0XHRcdCkgOiAoXG5cdC8vIFx0XHRcdFx0XHRcdHRoaXMudGVtcGxhdGUodGhpcy5kYXRhIGFzIFRhYmxlRGVmaW5pdGlvbkRhdGEpXG5cdC8vIFx0XHRcdFx0XHQpfVxuXHQvLyBcdFx0XHRcdDwvZGl2PlxuXHQvLyBcdFx0XHQpfVxuXHQvLyBcdFx0PC9Ib3N0PlxuXHQvLyBcdCk7XG5cdC8vIH1cblxuXHRwdWJsaWMgZ2V0Q29sdW1uQ2xhc3NlcygpIHtcblx0XHRjb25zdCBzaXplcyA9IHRoaXMuZGVmaW5pdGlvbiA/IHRoaXMuX2dldFNpemVzKHRoaXMuZGVmaW5pdGlvbikgOiB7fTtcblx0XHRjb25zdCBpc0xhc3RWYWx1ZXMgPSB0aGlzLmRlZmluaXRpb25cblx0XHRcdD8gdGhpcy5fZ2V0SXNMYXN0VmFsdWVzKHRoaXMuZGVmaW5pdGlvbilcblx0XHRcdDoge307XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0J2p1c3RpZnktc3RhcnQnOlxuXHRcdFx0XHQhdGhpcy5kZWZpbml0aW9uPy5hbGlnbiB8fCB0aGlzLmRlZmluaXRpb24/LmFsaWduID09PSAnc3RhcnQnLFxuXHRcdFx0J2p1c3RpZnktY2VudGVyJzogdGhpcy5kZWZpbml0aW9uPy5hbGlnbiA9PT0gJ2NlbnRlcicsXG5cdFx0XHQnanVzdGlmeS1lbmQnOiB0aGlzLmRlZmluaXRpb24/LmFsaWduID09PSAnZW5kJyxcblx0XHRcdCdmb250LXNlbWlib2xkJzpcblx0XHRcdFx0dGhpcy52YXJpYW50ICE9PSAnaGVhZGVyJyAmJiB0aGlzLmRlZmluaXRpb24/LnR5cGUgPT09ICd0aCcsXG5cdFx0XHQndGV4dC1zdG9ybS1kYXJrJzpcblx0XHRcdFx0dGhpcy52YXJpYW50ICE9PSAnaGVhZGVyJyAmJiB0aGlzLmRlZmluaXRpb24/LnR5cGUgPT09ICd0aCcsXG5cdFx0XHQnZ3JvdXAtaG92ZXI6ZmxleCc6IHRoaXMudmFyaWFudCA9PT0gJ2FjdGlvbnMnICYmIHRoaXMudGFibGVIYXNBY3Rpb25zLFxuXHRcdFx0aGlkZGVuOiB0aGlzLnZhcmlhbnQgPT09ICdhY3Rpb25zJyAmJiB0aGlzLnRhYmxlSGFzQWN0aW9ucyxcblx0XHRcdC4uLnNpemVzLFxuXHRcdFx0Li4uaXNMYXN0VmFsdWVzLFxuXHRcdH07XG5cdH1cblxuXHQvKlxuICAgICBXaXRoIHRoaXMsIHdlIHNoYWxsIGhhY2sgdGhlIHN5c3RlbSBpbiB3YXlzIG5vIG9uZSB3b3VsZCBldmVyIGhhdmUgdGhvdWdodC5cblxuICAgICB3LTEvMTIgdy0yLzEyIHctMy8xMiB3LTQvMTIgdy01LzEyIHctNi8xMiB3LTcvMTIgdy04LzEyIHctOS8xMiB3LTEwLzEyIHctMTEvMTIgdy0xMi8xMlxuICAgICB0YWJsZXQ6dy0xLzEyIHRhYmxldDp3LTIvMTIgdGFibGV0OnctMy8xMiB0YWJsZXQ6dy00LzEyIHRhYmxldDp3LTUvMTIgdGFibGV0OnctNi8xMiB0YWJsZXQ6dy03LzEyIHRhYmxldDp3LTgvMTIgdGFibGV0OnctOS8xMiB0YWJsZXQ6dy0xMC8xMiB0YWJsZXQ6dy0xMS8xMiB0YWJsZXQ6dy0xMi8xMlxuICAgICBkZXNrdG9wLXhzOnctMS8xMiBkZXNrdG9wLXhzOnctMi8xMiBkZXNrdG9wLXhzOnctMy8xMiBkZXNrdG9wLXhzOnctNC8xMiBkZXNrdG9wLXhzOnctNS8xMiBkZXNrdG9wLXhzOnctNi8xMiBkZXNrdG9wLXhzOnctNy8xMiBkZXNrdG9wLXhzOnctOC8xMiBkZXNrdG9wLXhzOnctOS8xMiBkZXNrdG9wLXhzOnctMTAvMTIgZGVza3RvcC14czp3LTExLzEyIGRlc2t0b3AteHM6dy0xMi8xMlxuICAgICBkZXNrdG9wLXhzOnctMS8xMiBkZXNrdG9wLXhzOnctMi8xMiBkZXNrdG9wLXhzOnctMy8xMiBkZXNrdG9wLXhzOnctNC8xMiBkZXNrdG9wLXhzOnctNS8xMiBkZXNrdG9wLXhzOnctNi8xMiBkZXNrdG9wLXhzOnctNy8xMiBkZXNrdG9wLXhzOnctOC8xMiBkZXNrdG9wLXhzOnctOS8xMiBkZXNrdG9wLXhzOnctMTAvMTIgZGVza3RvcC14czp3LTExLzEyIGRlc2t0b3AteHM6dy0xMi8xMlxuICAgICBkZXNrdG9wLXNtOnctMS8xMiBkZXNrdG9wLXNtOnctMi8xMiBkZXNrdG9wLXNtOnctMy8xMiBkZXNrdG9wLXNtOnctNC8xMiBkZXNrdG9wLXNtOnctNS8xMiBkZXNrdG9wLXNtOnctNi8xMiBkZXNrdG9wLXNtOnctNy8xMiBkZXNrdG9wLXNtOnctOC8xMiBkZXNrdG9wLXNtOnctOS8xMiBkZXNrdG9wLXNtOnctMTAvMTIgZGVza3RvcC1zbTp3LTExLzEyIGRlc2t0b3Atc206dy0xMi8xMlxuICAgICBkZXNrdG9wOnctMS8xMiBkZXNrdG9wOnctMi8xMiBkZXNrdG9wOnctMy8xMiBkZXNrdG9wOnctNC8xMiBkZXNrdG9wOnctNS8xMiBkZXNrdG9wOnctNi8xMiBkZXNrdG9wOnctNy8xMiBkZXNrdG9wOnctOC8xMiBkZXNrdG9wOnctOS8xMiBkZXNrdG9wOnctMTAvMTIgZGVza3RvcDp3LTExLzEyIGRlc2t0b3A6dy0xMi8xMlxuICAgICBkZXNrdG9wLWxnOnctMS8xMiBkZXNrdG9wLWxnOnctMi8xMiBkZXNrdG9wLWxnOnctMy8xMiBkZXNrdG9wLWxnOnctNC8xMiBkZXNrdG9wLWxnOnctNS8xMiBkZXNrdG9wLWxnOnctNi8xMiBkZXNrdG9wLWxnOnctNy8xMiBkZXNrdG9wLWxnOnctOC8xMiBkZXNrdG9wLWxnOnctOS8xMiBkZXNrdG9wLWxnOnctMTAvMTIgZGVza3RvcC1sZzp3LTExLzEyIGRlc2t0b3AtbGc6dy0xMi8xMlxuICAgICBkZXNrdG9wLXhsOnctMS8xMiBkZXNrdG9wLXhsOnctMi8xMiBkZXNrdG9wLXhsOnctMy8xMiBkZXNrdG9wLXhsOnctNC8xMiBkZXNrdG9wLXhsOnctNS8xMiBkZXNrdG9wLXhsOnctNi8xMiBkZXNrdG9wLXhsOnctNy8xMiBkZXNrdG9wLXhsOnctOC8xMiBkZXNrdG9wLXhsOnctOS8xMiBkZXNrdG9wLXhsOnctMTAvMTIgZGVza3RvcC14bDp3LTExLzEyIGRlc2t0b3AteGw6dy0xMi8xMlxuICAgICBoaWRkZW4gZmxleCBncm91cC1ob3ZlcjpoaWRkZW4gZ3JvdXAtaG92ZXI6ZmxleFxuICAgICB0YWJsZXQ6aGlkZGVuIHRhYmxldDpmbGV4IHRhYmxldDpncm91cC1ob3ZlcjpoaWRkZW4gdGFibGV0Omdyb3VwLWhvdmVyOmZsZXhcbiAgICAgZGVza3RvcC14czpoaWRkZW4gZGVza3RvcC14czpmbGV4IGRlc2t0b3AteHM6Z3JvdXAtaG92ZXI6aGlkZGVuIGRlc2t0b3AteHM6Z3JvdXAtaG92ZXI6ZmxleFxuICAgICBkZXNrdG9wLXNtOmhpZGRlbiBkZXNrdG9wLXNtOmZsZXggIGRlc2t0b3Atc206Z3JvdXAtaG92ZXI6aGlkZGVuIGRlc2t0b3Atc206Z3JvdXAtaG92ZXI6ZmxleFxuICAgICBkZXNrdG9wOmhpZGRlbiBkZXNrdG9wOmZsZXggZGVza3RvcDpncm91cC1ob3ZlcjpoaWRkZW4gZGVza3RvcDpncm91cC1ob3ZlcjpmbGV4XG4gICAgIGRlc2t0b3AtbGc6aGlkZGVuIGRlc2t0b3AtbGc6ZmxleCBkZXNrdG9wLWxnOmdyb3VwLWhvdmVyOmhpZGRlbiBkZXNrdG9wLWxnOmdyb3VwLWhvdmVyOmZsZXhcbiAgICAgZGVza3RvcC14bDpoaWRkZW4gZGVza3RvcC14bDpmbGV4IGRlc2t0b3AteGw6Z3JvdXAtaG92ZXI6aGlkZGVuIGRlc2t0b3AteGw6Z3JvdXAtaG92ZXI6ZmxleFxuXG5cbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qOg4qO04qO24qO/4qO/4qC/4qO34qO24qOk4qOE4qGA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qKA4qOg4qO04qO24qO34qC/4qO/4qO/4qO24qOm4qOA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKigOKjvuKjv+Kjv+Kjv+Kjv+Kjv+Kjv+Kjv+KjtuKjpuKjrOKhieKgkuKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKgmuKiieKjpeKjtOKjvuKjv+Kjv+Kjv+Kjv+Kjv+Kjv+Kjv+Kjp+KggOKggOKggOKggFxuICAgICAgICDioIDioIDioIDiob7ioL/ioJvioJvioJvioJvioL/ior/io7/io7/io7/io7/io7/io7fio4TioIDioIDioIDioIDioIDioIDioIDioIDioIDiooDio6Dio77io7/io7/io7/io7/io7/ioL/ioL/ioJvioJvioJvioJvioL/ioqfioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCZ4qC74qO/4qO/4qO/4qO/4qO/4qGE4qCA4qCA4qCA4qCA4qCA4qCA4qOg4qO/4qO/4qO/4qO/4qG/4qCf4qCJ4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKgmeKiv+Kjv+KhhOKggOKggOKggOKggOKggOKggOKggOKggOKisOKjv+Khv+Kgi+KggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioIDioIDioIDio6Dio6TioLbioLbioLbioLDioKbio6Tio4DioIDioJnio7fioIDioIDioIDioIDioIDioIDioIDioqDiob/ioIviooDio4Dio6TiorTioIbioLLioLbioLbio6Tio4TioIDioIDioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCY4qOG4qCA4qCA4qKg4qO+4qOr4qO24qO+4qO/4qO/4qO/4qO/4qO34qOv4qO/4qOm4qCI4qCD4qGH4qCA4qCA4qCA4qCA4qK44qCY4qKB4qO24qO/4qO14qO+4qO/4qO/4qO/4qO/4qO34qOm4qOd4qO34qGE4qCA4qCA4qGw4qCC4qCAXG4gICAgICAgIOKggOKggOKjqOKjt+KjtuKjv+Kjp+Kjm+Kjm+Kgv+Kgv+Kjv+Kiv+Kjv+Kjv+Kjm+Kjv+Khv+KggOKggOKhh+KggOKggOKggOKggOKiuOKggOKgiOKiv+Kjn+Kjm+Kgv+Kiv+Khv+Kiv+Kiv+Kiv+Kjm+Kjq+KjvOKhv+KjtuKjvuKjheKhgOKggFxuICAgICAgICDiooDiobzioIvioIHioIDioIDioIjioInioJvioJvioLvioJ/ioLjioJvioIvioInioIHioIDioIDiorjioYfioIDioIDioITioIDiorjioYTioIDioIDioIjioInioJnioJvioIPioLvioJvioJvioJvioInioIHioIDioIDioIjioJnioqfioYBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qKA4qO/4qGH4qKg4qCA4qCA4qCA4qK44qO34qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKigOKjvuKjv+Khh+KggOKggOKggOKggOKiuOKjv+Kjt+KhgOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggCDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDio7DioJ/ioIHio7/ioIfioIDioIDioIDioIDiorjioYfioJnior/io4bioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCw4qOE4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qKA4qOg4qO+4qCW4qG+4qCB4qCA4qCA4qO/4qCA4qCA4qCA4qCA4qCA4qCY4qO/4qCA4qCA4qCZ4qGH4qK44qO34qOE4qGA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qOw4qCE4qCAXG4gICAgICAgIOKggOKggOKiu+Kjt+KhpuKjpOKjpOKjpOKhtOKgtuKgv+Kgm+KgieKggeKggOKis+KggOKioOKhgOKiv+KjgOKggOKggOKggOKggOKjoOKhn+KigOKjgOKioOKgh+KggOKgiOKgmeKgm+Kgt+KgtuKipuKjpOKjpOKjpOKitOKjvuKhj+KggOKggFxuICAgICAgICDioIDioIDioIjio7/io6fioJnio7/io7fio4TioIDioIDioIDioIDioIDioIDioIDioIDioJjioJvioorio5nioJvioJLioJLiopvio4vioZrioJvioInioIDioIDioIDioIDioIDioIDioIDioIDio6Dio7/iob/ioIHio77iob/ioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCY4qO/4qOH4qCI4qK/4qO/4qOm4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qOw4qO/4qO/4qO/4qG/4qK/4qO/4qO/4qO/4qOG4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qKA4qO84qO/4qGf4qCB4qO84qG/4qCB4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKgmOKjv+KjpuKggOKgu+Kjv+Kjt+KjpuKjpOKjpOKjtuKjtuKjtuKjv+Kjv+Kjv+Kjv+Kgj+KggOKggOKgu+Kjv+Kjv+Kjv+Kjv+KjtuKjtuKjtuKjpuKjpOKjtOKjv+Kjv+Kgj+KigOKjvOKhv+KggeKggOKggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioIDioJjior/io7fio4TioJnioLvioL/ioL/ioL/ioL/ioL/ior/io7/io7/io7/io4Hio4Dio4Dio4Dio4Dio5nio7/io7/io7/ioL/ioL/ioL/ioL/ioL/ioL/ioJ/ioIHio6Dio7/iob/ioIHioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCI4qC74qOv4qCZ4qKm4qOA4qCA4qCA4qCA4qCA4qCA4qCJ4qCJ4qCJ4qCJ4qCJ4qCJ4qCJ4qCJ4qCJ4qCJ4qCJ4qCJ4qCA4qCA4qCA4qCA4qCA4qOg4qC04qKL4qO+4qCf4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKggOKggOKggOKggOKgmeKip+KhgOKgiOKgieKgkuKggOKggOKggOKggOKggOKggOKjgOKggOKggOKggOKggOKigOKggOKggOKggOKggOKggOKgkOKgkuKgieKggeKigOKhvuKgg+KggOKggOKggOKggOKggOKggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIjioLPio4TioIDioIDioIDioIDioIDioIDioIDioIDioLvio7/io7/io7/io7/ioIvioIDioIDioIDioIDioIDioIDioIDioIDio6DioJ/ioIDioIDioIDioIDioIDioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCY4qKm4qGA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qO44qO/4qO/4qGH4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qKA4qG04qCB4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKjv+Kjv+Kjv+Kjv+KggOKggOKggOKggOKggOKggOKggOKgi+KggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioJDio7/io7/io7/io7/ioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qO/4qO/4qO/4qG/4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKiu+Kjv+Kjv+Khh+KggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioLjio7/io7/ioIPioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIBcbiAgICAqL1xuXHRwcml2YXRlIF9nZXRTaXplcyhcblx0XHR7XG5cdFx0XHRzaXplcyxcblx0XHR9OiB7XG5cdFx0XHRzaXplczogJ2F1dG8nIHwgJ2hpZGRlbicgfCAnZnVsbCcgfCBudW1iZXIgfCBUYWJsZUNvbHVtblNpemVzO1xuXHRcdH0gLyogVGFibGUgRGVmaW5pdGlvbiAqL1xuXHQpIHtcblx0XHRpZiAoc2l6ZXMgPT09ICdhdXRvJyB8fCAhc2l6ZXMpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdCd3LWF1dG8nOiB0cnVlLFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRpZiAoc2l6ZXMgPT09ICdoaWRkZW4nKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygc2l6ZXMgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRzaXplcyA9IHNpemVzIGFzIFRhYmxlQ29sdW1uU2l6ZXM7XG5cdFx0XHRjb25zdCBjbGFzc2VzOiBhbnkgPSB7fTtcblx0XHRcdGxldCBwcmV2aW91c1NpemU6IFRhYmxlQ29sdW1uU2l6ZXNLZXkgfCB1bmRlZmluZWQ7XG5cblx0XHRcdGZvciAobGV0IHNpemUgaW4gc2l6ZXMpIHtcblx0XHRcdFx0aWYgKCFpc1RhYmxlQ29sdW1uU2l6ZXNLZXkoc2l6ZXMsIHNpemUpKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoc2l6ZSA9PT0gJ2RlZmF1bHQnKSB7XG5cdFx0XHRcdFx0aWYgKHNpemVzLmRlZmF1bHQgPT09ICdoaWRkZW4nKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzWydoaWRkZW4nXSA9IHRydWU7XG5cdFx0XHRcdFx0XHRwcmV2aW91c1NpemUgPSBzaXplO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y2xhc3Nlc1tgdy0ke3NpemVzLmRlZmF1bHR9LzEyYF0gPSB0cnVlO1xuXHRcdFx0XHRcdHByZXZpb3VzU2l6ZSA9IHNpemU7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSBzaXplc1tzaXplXTtcblx0XHRcdFx0Y29uc3QgcHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzU2l6ZSA/IHNpemVzW3ByZXZpb3VzU2l6ZV0gOiBudWxsO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0Y3VycmVudFZhbHVlICE9PSAnaGlkZGVuJyAmJlxuXHRcdFx0XHRcdHByZXZpb3VzVmFsdWUgJiZcblx0XHRcdFx0XHRwcmV2aW91c1ZhbHVlID09PSAnaGlkZGVuJyAmJlxuXHRcdFx0XHRcdHRoaXMudmFyaWFudCAhPT0gJ2FjdGlvbnMnXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNsYXNzZXNbYCR7c2l6ZX06ZmxleGBdID0gdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPT09ICdoaWRkZW4nICYmIHRoaXMudmFyaWFudCAhPT0gJ2FjdGlvbnMnKSB7XG5cdFx0XHRcdFx0Y2xhc3Nlc1tgJHtzaXplfTpoaWRkZW5gXSA9IHRydWU7XG5cdFx0XHRcdFx0cHJldmlvdXNTaXplID0gc2l6ZTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPT09IDEyIHx8IGN1cnJlbnRWYWx1ZSA9PT0gJ2Z1bGwnKSB7XG5cdFx0XHRcdFx0Y2xhc3Nlc1tgJHtzaXplfTp3LWZ1bGxgXSA9IHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjbGFzc2VzW2Ake3NpemV9OnctJHtjdXJyZW50VmFsdWV9LzEyYF0gPSB0cnVlO1xuXHRcdFx0XHRwcmV2aW91c1NpemUgPSBzaXplO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gY2xhc3Nlcztcblx0XHR9XG5cblx0XHRpZiAoc2l6ZXMgPT09IDEyIHx8IHNpemVzID09PSAnZnVsbCcpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdCd3LWZ1bGwnOiB0cnVlLFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHQvLyBpcyBhIG51bWJlci5cblx0XHRyZXR1cm4ge1xuXHRcdFx0W2B3LSR7c2l6ZXN9LzEyYF06IHRydWUsXG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgX2dldElzTGFzdFZhbHVlcyhcblx0XHR7XG5cdFx0XHRpc0xhc3QsXG5cdFx0XHRwYXJzZWRTaXplcyxcblx0XHR9OiB7XG5cdFx0XHRpc0xhc3Q6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuXHRcdFx0cGFyc2VkU2l6ZXM6IFRhYmxlQ29sdW1uU2l6ZXM7XG5cdFx0fSAvKiBUYWJsZSBEZWZpbml0aW9uICovXG5cdCkge1xuXHRcdGNvbnN0IHZhbHVlczogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuXHRcdGZvciAobGV0IHNpemUgb2YgT2JqZWN0LmtleXMoaXNMYXN0KSkge1xuXHRcdFx0bGV0IHByZWZpeCA9ICcnO1xuXHRcdFx0aWYgKHNpemUgIT09ICdkZWZhdWx0Jykge1xuXHRcdFx0XHRwcmVmaXggPSBgJHtzaXplfTpgO1xuXHRcdFx0fVxuXG5cdFx0XHR2YWx1ZXNbYCR7cHJlZml4fXByLTRgXSA9ICFpc0xhc3Rbc2l6ZV07XG5cblx0XHRcdHZhbHVlc1tgJHtwcmVmaXh9Z3JvdXAtaG92ZXI6aGlkZGVuYF0gPVxuXHRcdFx0XHRpc0xhc3Rbc2l6ZV0gJiYgdGhpcy50YWJsZUhhc0FjdGlvbnMgJiYgdGhpcy52YXJpYW50ICE9PSAnYWN0aW9ucyc7XG5cblx0XHRcdHZhbHVlc1tgJHtwcmVmaXh9Z3JvdXAtaG92ZXI6ZmxleGBdID1cblx0XHRcdFx0cGFyc2VkU2l6ZXNbc2l6ZSBhcyBrZXlvZiBUYWJsZUNvbHVtblNpemVzXSAhPT0gJ2hpZGRlbicgfHxcblx0XHRcdFx0dGhpcy52YXJpYW50ID09PSAnYWN0aW9ucyc7XG5cblx0XHRcdHZhbHVlc1tgJHtwcmVmaXh9ZmxleGBdID1cblx0XHRcdFx0cGFyc2VkU2l6ZXNbc2l6ZSBhcyBrZXlvZiBUYWJsZUNvbHVtblNpemVzXSAhPT0gJ2hpZGRlbicgJiZcblx0XHRcdFx0dGhpcy52YXJpYW50ICE9PSAnYWN0aW9ucyc7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlcztcblx0fVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoZWNrYm94XCI+XG5cdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGVja2JveFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInZhcmlhbnRcIj5cblx0PHAtbG9hZGVyXG5cdFx0Km5nU3dpdGNoQ2FzZT1cIidsb2FkaW5nJ1wiXG5cdFx0dmFyaWFudD1cImdob3N0XCJcblx0XHRjbGFzcz1cImgtNiB3LWZ1bGwgZmxleC0xIHJvdW5kZWRcIlxuXHQ+PC9wLWxvYWRlcj5cblxuXHQ8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYWN0aW9ucydcIj5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGVcIj5cblx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogZGF0YVwiPjwvbmctY29udGFpbmVyPlxuXHRcdDwvbmctY29udGFpbmVyPlxuXHQ8L25nLWNvbnRhaW5lcj5cblxuXHQ8ZGl2XG5cdFx0Km5nU3dpdGNoQ2FzZT1cIidoZWFkZXInXCJcblx0XHRjbGFzcz1cImZsZXggdy1mdWxsIG92ZXJmbG93LWhpZGRlblwiXG5cdFx0W2NsYXNzLmp1c3RpZnktc3RhcnRdPVwiZGVmaW5pdGlvbi5hbGlnbiA9PT0gJ3N0YXJ0J1wiXG5cdFx0W2NsYXNzLmp1c3RpZnktY2VudGVyXT1cImRlZmluaXRpb24uYWxpZ24gPT09ICdjZW50ZXInXCJcblx0XHRbY2xhc3MuanVzdGlmeS1lbmRdPVwiZGVmaW5pdGlvbi5hbGlnbiA9PT0gJ2VuZCdcIlxuXHQ+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZhbHVlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblx0PC9kaXY+XG5cblx0PGRpdlxuXHRcdCpuZ1N3aXRjaENhc2U9XCInZGVmYXVsdCdcIlxuXHRcdGNsYXNzPVwiZmxleCBtaW4tdy0wIGZsZXgtMVwiXG5cdFx0W2NsYXNzLmp1c3RpZnktc3RhcnRdPVwiZGVmaW5pdGlvbi5hbGlnbiA9PT0gJ3N0YXJ0J1wiXG5cdFx0W2NsYXNzLmp1c3RpZnktY2VudGVyXT1cImRlZmluaXRpb24uYWxpZ24gPT09ICdjZW50ZXInXCJcblx0XHRbY2xhc3MuanVzdGlmeS1lbmRdPVwiZGVmaW5pdGlvbi5hbGlnbiA9PT0gJ2VuZCdcIlxuXHQ+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbXBsYXRlOyBlbHNlIHZhbHVlVGVtcGxhdGVcIj5cblx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogZGF0YVwiPjwvbmctY29udGFpbmVyPlxuXHRcdDwvbmctY29udGFpbmVyPlxuXHQ8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3ZhbHVlVGVtcGxhdGU+XG5cdHt7IGRhdGEudmFsdWUgfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXBlcmxlc3Mvc3JjL2xpYi9tb2R1bGVzL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtY2VsbC90YWJsZS1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BhcGVybGVzcy9zcmMvbGliL21vZHVsZXMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsL3RhYmxlLWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQ04seUJBQXlCLEVBQ3pCLGVBQWUsR0FFZixNQUFNLGlCQUFpQixDQUFDOzs7O0FBRXpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQStDTTtBQU1OLE1BQU0sT0FBTyxTQUFTO0lBTHRCO1FBTUM7O1dBRUc7UUFDTSxZQUFPLEdBQWlELFNBQVMsQ0FBQztRQUUzRTs7V0FFRztRQUNNLFVBQUssR0FBVyxDQUFDLENBQUM7UUFFM0I7O1dBRUc7UUFDTSxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBaUI5Qjs7V0FFRztRQUNNLG9CQUFlLEdBQVksS0FBSyxDQUFDO0tBNEMxQztJQWhDQSxJQUNJLEtBQUs7UUFDUixPQUFPLHlCQUF5QixDQUMvQixJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLGVBQWUsQ0FDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLElBQUk7UUFDUCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQzlCLE9BQU87Z0JBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ2pCLENBQUM7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDL0IsT0FBTztnQkFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN2QixDQUFDO1NBQ0Y7UUFFRCxPQUFPO1lBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDckUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN2QixDQUFDO0lBQ0gsQ0FBQzs7c0dBN0VXLFNBQVM7MEZBQVQsU0FBUyx1VEM3RHRCLG0xQ0EyQ0E7MkZEa0JhLFNBQVM7a0JBTHJCLFNBQVM7K0JBQ0Msa0JBQWtCOzhCQVFuQixPQUFPO3NCQUFmLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdGLEtBQUs7c0JBRFIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRnZXRUYWJsZUNlbGxDb2x1bW5DbGFzc2VzLFxuXHRvYmplY3RHZXRCeVBhdGgsXG5cdFRhYmxlRGVmaW5pdGlvbkRhdGEsXG59IGZyb20gJ0BwYXBlcmxlc3MvY29yZSc7XG5cbi8qXG4gICAgIFdpdGggdGhpcywgd2Ugc2hhbGwgaGFjayB0aGUgc3lzdGVtIGluIHdheXMgbm8gb25lIHdvdWxkIGV2ZXIgaGF2ZSB0aG91Z2h0LlxuXG4gICAgIHctMS8xMiB3LTIvMTIgdy0zLzEyIHctNC8xMiB3LTUvMTIgdy02LzEyIHctNy8xMiB3LTgvMTIgdy05LzEyIHctMTAvMTIgdy0xMS8xMiB3LTEyLzEyXG4gICAgIHRhYmxldDp3LTEvMTIgdGFibGV0OnctMi8xMiB0YWJsZXQ6dy0zLzEyIHRhYmxldDp3LTQvMTIgdGFibGV0OnctNS8xMiB0YWJsZXQ6dy02LzEyIHRhYmxldDp3LTcvMTIgdGFibGV0OnctOC8xMiB0YWJsZXQ6dy05LzEyIHRhYmxldDp3LTEwLzEyIHRhYmxldDp3LTExLzEyIHRhYmxldDp3LTEyLzEyXG4gICAgIGRlc2t0b3AteHM6dy0xLzEyIGRlc2t0b3AteHM6dy0yLzEyIGRlc2t0b3AteHM6dy0zLzEyIGRlc2t0b3AteHM6dy00LzEyIGRlc2t0b3AteHM6dy01LzEyIGRlc2t0b3AteHM6dy02LzEyIGRlc2t0b3AteHM6dy03LzEyIGRlc2t0b3AteHM6dy04LzEyIGRlc2t0b3AteHM6dy05LzEyIGRlc2t0b3AteHM6dy0xMC8xMiBkZXNrdG9wLXhzOnctMTEvMTIgZGVza3RvcC14czp3LTEyLzEyXG4gICAgIGRlc2t0b3AteHM6dy0xLzEyIGRlc2t0b3AteHM6dy0yLzEyIGRlc2t0b3AteHM6dy0zLzEyIGRlc2t0b3AteHM6dy00LzEyIGRlc2t0b3AteHM6dy01LzEyIGRlc2t0b3AteHM6dy02LzEyIGRlc2t0b3AteHM6dy03LzEyIGRlc2t0b3AteHM6dy04LzEyIGRlc2t0b3AteHM6dy05LzEyIGRlc2t0b3AteHM6dy0xMC8xMiBkZXNrdG9wLXhzOnctMTEvMTIgZGVza3RvcC14czp3LTEyLzEyXG4gICAgIGRlc2t0b3Atc206dy0xLzEyIGRlc2t0b3Atc206dy0yLzEyIGRlc2t0b3Atc206dy0zLzEyIGRlc2t0b3Atc206dy00LzEyIGRlc2t0b3Atc206dy01LzEyIGRlc2t0b3Atc206dy02LzEyIGRlc2t0b3Atc206dy03LzEyIGRlc2t0b3Atc206dy04LzEyIGRlc2t0b3Atc206dy05LzEyIGRlc2t0b3Atc206dy0xMC8xMiBkZXNrdG9wLXNtOnctMTEvMTIgZGVza3RvcC1zbTp3LTEyLzEyXG4gICAgIGRlc2t0b3A6dy0xLzEyIGRlc2t0b3A6dy0yLzEyIGRlc2t0b3A6dy0zLzEyIGRlc2t0b3A6dy00LzEyIGRlc2t0b3A6dy01LzEyIGRlc2t0b3A6dy02LzEyIGRlc2t0b3A6dy03LzEyIGRlc2t0b3A6dy04LzEyIGRlc2t0b3A6dy05LzEyIGRlc2t0b3A6dy0xMC8xMiBkZXNrdG9wOnctMTEvMTIgZGVza3RvcDp3LTEyLzEyXG4gICAgIGRlc2t0b3AtbGc6dy0xLzEyIGRlc2t0b3AtbGc6dy0yLzEyIGRlc2t0b3AtbGc6dy0zLzEyIGRlc2t0b3AtbGc6dy00LzEyIGRlc2t0b3AtbGc6dy01LzEyIGRlc2t0b3AtbGc6dy02LzEyIGRlc2t0b3AtbGc6dy03LzEyIGRlc2t0b3AtbGc6dy04LzEyIGRlc2t0b3AtbGc6dy05LzEyIGRlc2t0b3AtbGc6dy0xMC8xMiBkZXNrdG9wLWxnOnctMTEvMTIgZGVza3RvcC1sZzp3LTEyLzEyXG4gICAgIGRlc2t0b3AteGw6dy0xLzEyIGRlc2t0b3AteGw6dy0yLzEyIGRlc2t0b3AteGw6dy0zLzEyIGRlc2t0b3AteGw6dy00LzEyIGRlc2t0b3AteGw6dy01LzEyIGRlc2t0b3AteGw6dy02LzEyIGRlc2t0b3AteGw6dy03LzEyIGRlc2t0b3AteGw6dy04LzEyIGRlc2t0b3AteGw6dy05LzEyIGRlc2t0b3AteGw6dy0xMC8xMiBkZXNrdG9wLXhsOnctMTEvMTIgZGVza3RvcC14bDp3LTEyLzEyXG4gICAgIGhpZGRlbiBmbGV4IGdyb3VwLWhvdmVyOmhpZGRlbiBncm91cC1ob3ZlcjpmbGV4XG4gICAgIHRhYmxldDpoaWRkZW4gdGFibGV0OmZsZXggdGFibGV0Omdyb3VwLWhvdmVyOmhpZGRlbiB0YWJsZXQ6Z3JvdXAtaG92ZXI6ZmxleFxuICAgICBkZXNrdG9wLXhzOmhpZGRlbiBkZXNrdG9wLXhzOmZsZXggZGVza3RvcC14czpncm91cC1ob3ZlcjpoaWRkZW4gZGVza3RvcC14czpncm91cC1ob3ZlcjpmbGV4XG4gICAgIGRlc2t0b3Atc206aGlkZGVuIGRlc2t0b3Atc206ZmxleCAgZGVza3RvcC1zbTpncm91cC1ob3ZlcjpoaWRkZW4gZGVza3RvcC1zbTpncm91cC1ob3ZlcjpmbGV4XG4gICAgIGRlc2t0b3A6aGlkZGVuIGRlc2t0b3A6ZmxleCBkZXNrdG9wOmdyb3VwLWhvdmVyOmhpZGRlbiBkZXNrdG9wOmdyb3VwLWhvdmVyOmZsZXhcbiAgICAgZGVza3RvcC1sZzpoaWRkZW4gZGVza3RvcC1sZzpmbGV4IGRlc2t0b3AtbGc6Z3JvdXAtaG92ZXI6aGlkZGVuIGRlc2t0b3AtbGc6Z3JvdXAtaG92ZXI6ZmxleFxuICAgICBkZXNrdG9wLXhsOmhpZGRlbiBkZXNrdG9wLXhsOmZsZXggZGVza3RvcC14bDpncm91cC1ob3ZlcjpoaWRkZW4gZGVza3RvcC14bDpncm91cC1ob3ZlcjpmbGV4XG5cblxuICAgICAgICDioIDioIDioIDioIDioIDio6Dio7Tio7bio7/io7/ioL/io7fio7bio6Tio4TioYDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDiooDio6Dio7Tio7bio7fioL/io7/io7/io7bio6bio4DioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qKA4qO+4qO/4qO/4qO/4qO/4qO/4qO/4qO/4qO24qOm4qOs4qGJ4qCS4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCa4qKJ4qOl4qO04qO+4qO/4qO/4qO/4qO/4qO/4qO/4qO/4qOn4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKhvuKgv+Kgm+Kgm+Kgm+Kgm+Kgv+Kiv+Kjv+Kjv+Kjv+Kjv+Kjv+Kjt+KjhOKggOKggOKggOKggOKggOKggOKggOKggOKggOKigOKjoOKjvuKjv+Kjv+Kjv+Kjv+Kjv+Kgv+Kgv+Kgm+Kgm+Kgm+Kgm+Kgv+Kip+KggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioJnioLvio7/io7/io7/io7/io7/ioYTioIDioIDioIDioIDioIDioIDio6Dio7/io7/io7/io7/iob/ioJ/ioInioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCZ4qK/4qO/4qGE4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qKw4qO/4qG/4qCL4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKggOKggOKggOKjoOKjpOKgtuKgtuKgtuKgsOKgpuKjpOKjgOKggOKgmeKjt+KggOKggOKggOKggOKggOKggOKggOKioOKhv+Kgi+KigOKjgOKjpOKitOKghuKgsuKgtuKgtuKjpOKjhOKggOKggOKggOKggOKggOKggOKggFxuICAgICAgICDioIDioJjio4bioIDioIDioqDio77io6vio7bio77io7/io7/io7/io7/io7fio6/io7/io6bioIjioIPioYfioIDioIDioIDioIDiorjioJjiooHio7bio7/io7Xio77io7/io7/io7/io7/io7fio6bio53io7fioYTioIDioIDiobDioILioIBcbiAgICAgICAg4qCA4qCA4qOo4qO34qO24qO/4qOn4qOb4qOb4qC/4qC/4qO/4qK/4qO/4qO/4qOb4qO/4qG/4qCA4qCA4qGH4qCA4qCA4qCA4qCA4qK44qCA4qCI4qK/4qOf4qOb4qC/4qK/4qG/4qK/4qK/4qK/4qOb4qOr4qO84qG/4qO24qO+4qOF4qGA4qCAXG4gICAgICAgIOKigOKhvOKgi+KggeKggOKggOKgiOKgieKgm+Kgm+Kgu+Kgn+KguOKgm+Kgi+KgieKggeKggOKggOKiuOKhh+KggOKggOKghOKggOKiuOKhhOKggOKggOKgiOKgieKgmeKgm+Kgg+Kgu+Kgm+Kgm+Kgm+KgieKggeKggOKggOKgiOKgmeKip+KhgFxuICAgICAgICDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDiooDio7/ioYfioqDioIDioIDioIDiorjio7fioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qKA4qO+4qO/4qGH4qCA4qCA4qCA4qCA4qK44qO/4qO34qGA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG5cdFx04qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qOw4qCf4qCB4qO/4qCH4qCA4qCA4qCA4qCA4qK44qGH4qCZ4qK/4qOG4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKgsOKjhOKggOKggOKggOKggOKggOKggOKggOKggOKigOKjoOKjvuKgluKhvuKggeKggOKggOKjv+KggOKggOKggOKggOKggOKgmOKjv+KggOKggOKgmeKhh+KiuOKjt+KjhOKhgOKggOKggOKggOKggOKggOKggOKggOKggOKjsOKghOKggFxuICAgICAgICDioIDioIDiorvio7fioabio6Tio6Tio6TiobTioLbioL/ioJvioInioIHioIDiorPioIDioqDioYDior/io4DioIDioIDioIDioIDio6DioZ/iooDio4DioqDioIfioIDioIjioJnioJvioLfioLbioqbio6Tio6Tio6TiorTio77ioY/ioIDioIBcbiAgICAgICAg4qCA4qCA4qCI4qO/4qOn4qCZ4qO/4qO34qOE4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCY4qCb4qKK4qOZ4qCb4qCS4qCS4qKb4qOL4qGa4qCb4qCJ4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qOg4qO/4qG/4qCB4qO+4qG/4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKgmOKjv+Kjh+KgiOKiv+Kjv+KjpuKggOKggOKggOKggOKggOKggOKggOKggOKjsOKjv+Kjv+Kjv+Khv+Kiv+Kjv+Kjv+Kjv+KjhuKggOKggOKggOKggOKggOKggOKggOKigOKjvOKjv+Khn+KggeKjvOKhv+KggeKggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioJjio7/io6bioIDioLvio7/io7fio6bio6Tio6Tio7bio7bio7bio7/io7/io7/io7/ioI/ioIDioIDioLvio7/io7/io7/io7/io7bio7bio7bio6bio6Tio7Tio7/io7/ioI/iooDio7ziob/ioIHioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCY4qK/4qO34qOE4qCZ4qC74qC/4qC/4qC/4qC/4qC/4qK/4qO/4qO/4qO/4qOB4qOA4qOA4qOA4qOA4qOZ4qO/4qO/4qO/4qC/4qC/4qC/4qC/4qC/4qC/4qCf4qCB4qOg4qO/4qG/4qCB4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKggOKggOKgiOKgu+Kjr+KgmeKipuKjgOKggOKggOKggOKggOKggOKgieKgieKgieKgieKgieKgieKgieKgieKgieKgieKgieKgieKggOKggOKggOKggOKggOKjoOKgtOKii+KjvuKgn+KggOKggOKggOKggOKggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioIDioIDioIDioIDioJnioqfioYDioIjioInioJLioIDioIDioIDioIDioIDioIDio4DioIDioIDioIDioIDiooDioIDioIDioIDioIDioIDioJDioJLioInioIHiooDiob7ioIPioIDioIDioIDioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCI4qCz4qOE4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qC74qO/4qO/4qO/4qO/4qCL4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qOg4qCf4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKgmOKipuKhgOKggOKggOKggOKggOKggOKggOKggOKjuOKjv+Kjv+Khh+KggOKggOKggOKggOKggOKggOKggOKigOKhtOKggeKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDio7/io7/io7/io7/ioIDioIDioIDioIDioIDioIDioIDioIvioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCQ4qO/4qO/4qO/4qO/4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgICAgIOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKjv+Kjv+Kjv+Khv+KggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggOKggFxuICAgICAgICDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDiorvio7/io7/ioYfioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIDioIBcbiAgICAgICAg4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qC44qO/4qO/4qCD4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCA4qCAXG4gICAgKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3AtdGFibGUtY2VsbC1uZ3gnLFxuXHRzdHlsZVVybHM6IFsndGFibGUtY2VsbC5jb21wb25lbnQuc2NzcyddLFxuXHR0ZW1wbGF0ZVVybDogJy4vdGFibGUtY2VsbC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbCB7XG5cdC8qKlxuXHQgKiBUaGUgdmFyaWFudCBvZiB0aGUgY29sdW1uXG5cdCAqL1xuXHRASW5wdXQoKSB2YXJpYW50OiAnZGVmYXVsdCcgfCAnbG9hZGluZycgfCAnaGVhZGVyJyB8ICdhY3Rpb25zJyA9ICdkZWZhdWx0JztcblxuXHQvKipcblx0ICogVGhlIGluZGV4IG9mIHRoZSBjb2x1bW5cblx0ICovXG5cdEBJbnB1dCgpIGluZGV4OiBudW1iZXIgPSAwO1xuXG5cdC8qKlxuXHQgKiBUaGUgaW5kZXggb2YgdGhlIHJvd1xuXHQgKi9cblx0QElucHV0KCkgcm93SW5kZXg6IG51bWJlciA9IDA7XG5cblx0LyoqXG5cdCAqIFRoZSBkZWZpbml0aW9uIG9mIHRoZSB0YWJsZSBjb2x1bW5cblx0ICovXG5cdEBJbnB1dCgpIGRlZmluaXRpb24/OiBhbnk7IC8vIFRhYmxlRGVmaW5pdGlvblxuXG5cdC8qKlxuXHQgKiBUaGUgaXRlbSBpbiBxdWVzdGlvblxuXHQgKi9cblx0QElucHV0KCkgaXRlbTogYW55O1xuXG5cdC8qKlxuXHQgKiBUaGUgdmFsdWUgb2YgdGhlIGNvbHVtblxuXHQgKi9cblx0QElucHV0KCkgdmFsdWU6IGFueTtcblxuXHQvKipcblx0ICogV2V0aGVyIHRoZSB0YWJsZSBoYXMgYWN0aW9uc1xuXHQgKi9cblx0QElucHV0KCkgdGFibGVIYXNBY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRoZSBjaGVja2JveCB0ZW1wbGF0ZVJlZlxuXHQgKi9cblx0QElucHV0KCkgY2hlY2tib3g6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIFRoZSB0ZW1wbGF0ZSByZWYgZm9yIHRoZSBjb250ZW50XG5cdCAqL1xuXHRASW5wdXQoKSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzJylcblx0Z2V0IGNsYXNzKCkge1xuXHRcdHJldHVybiBnZXRUYWJsZUNlbGxDb2x1bW5DbGFzc2VzKFxuXHRcdFx0dGhpcy5kZWZpbml0aW9uLFxuXHRcdFx0dGhpcy52YXJpYW50LFxuXHRcdFx0dGhpcy50YWJsZUhhc0FjdGlvbnNcblx0XHQpO1xuXHR9XG5cblx0Z2V0IGRhdGEoKTogVGFibGVEZWZpbml0aW9uRGF0YSB8IHsgdmFsdWU6IHN0cmluZyB9IHtcblx0XHRpZiAodGhpcy52YXJpYW50ID09PSAnaGVhZGVyJykge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dmFsdWU6IHRoaXMudmFsdWUsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnZhcmlhbnQgPT09ICdhY3Rpb25zJykge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dmFsdWU6IHRoaXMudmFsdWUsXG5cdFx0XHRcdGl0ZW06IHRoaXMuaXRlbSxcblx0XHRcdFx0aW5kZXg6IHRoaXMuaW5kZXgsXG5cdFx0XHRcdHJvd0luZGV4OiB0aGlzLnJvd0luZGV4LFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dmFsdWU6IHRoaXMudmFsdWUgPz8gb2JqZWN0R2V0QnlQYXRoKHRoaXMuaXRlbSwgdGhpcy5kZWZpbml0aW9uLnBhdGgpLFxuXHRcdFx0aXRlbTogdGhpcy5pdGVtLFxuXHRcdFx0aW5kZXg6IHRoaXMuaW5kZXgsXG5cdFx0XHRyb3dJbmRleDogdGhpcy5yb3dJbmRleCxcblx0XHR9O1xuXHR9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY2hlY2tib3hcIj5cblx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoZWNrYm94XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidmFyaWFudFwiPlxuXHQ8cC1sb2FkZXJcblx0XHQqbmdTd2l0Y2hDYXNlPVwiJ2xvYWRpbmcnXCJcblx0XHR2YXJpYW50PVwiZ2hvc3RcIlxuXHRcdGNsYXNzPVwiaC02IHctZnVsbCBmbGV4LTEgcm91bmRlZFwiXG5cdD48L3AtbG9hZGVyPlxuXG5cdDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhY3Rpb25zJ1wiPlxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW1wbGF0ZVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiBkYXRhXCI+PC9uZy1jb250YWluZXI+XG5cdFx0PC9uZy1jb250YWluZXI+XG5cdDwvbmctY29udGFpbmVyPlxuXG5cdDxkaXZcblx0XHQqbmdTd2l0Y2hDYXNlPVwiJ2hlYWRlcidcIlxuXHRcdGNsYXNzPVwiZmxleCB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCJcblx0XHRbY2xhc3MuanVzdGlmeS1zdGFydF09XCJkZWZpbml0aW9uLmFsaWduID09PSAnc3RhcnQnXCJcblx0XHRbY2xhc3MuanVzdGlmeS1jZW50ZXJdPVwiZGVmaW5pdGlvbi5hbGlnbiA9PT0gJ2NlbnRlcidcIlxuXHRcdFtjbGFzcy5qdXN0aWZ5LWVuZF09XCJkZWZpbml0aW9uLmFsaWduID09PSAnZW5kJ1wiXG5cdD5cblx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmFsdWVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXHQ8L2Rpdj5cblxuXHQ8ZGl2XG5cdFx0Km5nU3dpdGNoQ2FzZT1cIidkZWZhdWx0J1wiXG5cdFx0Y2xhc3M9XCJmbGV4IG1pbi13LTAgZmxleC0xXCJcblx0XHRbY2xhc3MuanVzdGlmeS1zdGFydF09XCJkZWZpbml0aW9uLmFsaWduID09PSAnc3RhcnQnXCJcblx0XHRbY2xhc3MuanVzdGlmeS1jZW50ZXJdPVwiZGVmaW5pdGlvbi5hbGlnbiA9PT0gJ2NlbnRlcidcIlxuXHRcdFtjbGFzcy5qdXN0aWZ5LWVuZF09XCJkZWZpbml0aW9uLmFsaWduID09PSAnZW5kJ1wiXG5cdD5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGU7IGVsc2UgdmFsdWVUZW1wbGF0ZVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiBkYXRhXCI+PC9uZy1jb250YWluZXI+XG5cdFx0PC9uZy1jb250YWluZXI+XG5cdDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjdmFsdWVUZW1wbGF0ZT5cblx0e3sgZGF0YS52YWx1ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -13,7 +13,7 @@ import { PlatformModule } from '@angular/cdk/platform';
13
13
  import { PortalModule, CdkPortal, ComponentPortal } from '@angular/cdk/portal';
14
14
  import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
15
15
  import { startWith, tap, pairwise, map, filter, debounce } from 'rxjs/operators';
16
- import { objectGetByPath, isTableColumnSizesKey, isMobile, tableColumSizesOptions } from '@paperless/core';
16
+ import { getTableCellColumnClasses, objectGetByPath, isMobile, tableColumSizesOptions } from '@paperless/core';
17
17
  import * as i2 from '@angular/router';
18
18
  import { RouterModule } from '@angular/router';
19
19
  import { v4 } from 'uuid';
@@ -2369,88 +2369,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
2369
2369
  }] } });
2370
2370
 
2371
2371
  /* eslint-disable max-len */
2372
- class TableCell {
2373
- constructor() {
2374
- /**
2375
- * The variant of the column
2376
- */
2377
- this.variant = 'default';
2378
- /**
2379
- * The index of the column
2380
- */
2381
- this.index = 0;
2382
- /**
2383
- * The index of the row
2384
- */
2385
- this.rowIndex = 0;
2386
- /**
2387
- * Wether the table has actions
2388
- */
2389
- this.tableHasActions = false;
2390
- }
2391
- get class() {
2392
- return this.getColumnClasses();
2393
- }
2394
- get data() {
2395
- var _a;
2396
- if (this.variant === 'header') {
2397
- return {
2398
- value: this.value,
2399
- };
2400
- }
2401
- if (this.variant === 'actions') {
2402
- return {
2403
- value: this.value,
2404
- item: this.item,
2405
- index: this.index,
2406
- rowIndex: this.rowIndex,
2407
- };
2408
- }
2409
- return {
2410
- value: (_a = this.value) !== null && _a !== void 0 ? _a : objectGetByPath(this.item, this.definition.path),
2411
- item: this.item,
2412
- index: this.index,
2413
- rowIndex: this.rowIndex,
2414
- };
2415
- }
2416
- // render() {
2417
- // return (
2418
- // <Host
2419
- // class={{
2420
- // 'p-table-column': true,
2421
- // [`variant-${this.variant}`]: true,
2422
- // ...this._getColumnClasses(),
2423
- // }}
2424
- // >
2425
- // {this.checkbox}
2426
- // {this.variant === 'loading' ? (
2427
- // <p-loader
2428
- // variant="ghost"
2429
- // class="rounded flex-1 w-full h-6"
2430
- // />
2431
- // ) : (
2432
- // <div class="flex">
2433
- // {this.variant === 'header' ? (
2434
- // this.data.value
2435
- // ) : this.definition.useSlot ? (
2436
- // <slot />
2437
- // ) : (
2438
- // this.template(this.data as TableDefinitionData)
2439
- // )}
2440
- // </div>
2441
- // )}
2442
- // </Host>
2443
- // );
2444
- // }
2445
- getColumnClasses() {
2446
- var _a, _b, _c, _d, _e, _f;
2447
- const sizes = this.definition ? this._getSizes(this.definition) : {};
2448
- const isLastValues = this.definition
2449
- ? this._getIsLastValues(this.definition)
2450
- : {};
2451
- return Object.assign(Object.assign({ 'justify-start': !((_a = this.definition) === null || _a === void 0 ? void 0 : _a.align) || ((_b = this.definition) === null || _b === void 0 ? void 0 : _b.align) === 'start', 'justify-center': ((_c = this.definition) === null || _c === void 0 ? void 0 : _c.align) === 'center', 'justify-end': ((_d = this.definition) === null || _d === void 0 ? void 0 : _d.align) === 'end', 'font-semibold': this.variant !== 'header' && ((_e = this.definition) === null || _e === void 0 ? void 0 : _e.type) === 'th', 'text-storm-dark': this.variant !== 'header' && ((_f = this.definition) === null || _f === void 0 ? void 0 : _f.type) === 'th', 'group-hover:flex': this.variant === 'actions' && this.tableHasActions, hidden: this.variant === 'actions' && this.tableHasActions }, sizes), isLastValues);
2452
- }
2453
- /*
2372
+ /*
2454
2373
  With this, we shall hack the system in ways no one would ever have thought.
2455
2374
 
2456
2375
  w-1/12 w-2/12 w-3/12 w-4/12 w-5/12 w-6/12 w-7/12 w-8/12 w-9/12 w-10/12 w-11/12 w-12/12
@@ -2480,7 +2399,8 @@ class TableCell {
2480
2399
  ⠀⠀⣨⣷⣶⣿⣧⣛⣛⠿⠿⣿⢿⣿⣿⣛⣿⡿⠀⠀⡇⠀⠀⠀⠀⢸⠀⠈⢿⣟⣛⠿⢿⡿⢿⢿⢿⣛⣫⣼⡿⣶⣾⣅⡀⠀
2481
2400
  ⢀⡼⠋⠁⠀⠀⠈⠉⠛⠛⠻⠟⠸⠛⠋⠉⠁⠀⠀⢸⡇⠀⠀⠄⠀⢸⡄⠀⠀⠈⠉⠙⠛⠃⠻⠛⠛⠛⠉⠁⠀⠀⠈⠙⢧⡀
2482
2401
  ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⡇⢠⠀⠀⠀⢸⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
2483
- ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡇⠀⠀⠀⠀⢸⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠟⠁⣿⠇⠀⠀⠀⠀⢸⡇⠙⢿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
2402
+ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⡇⠀⠀⠀⠀⢸⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
2403
+ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠟⠁⣿⠇⠀⠀⠀⠀⢸⡇⠙⢿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
2484
2404
  ⠀⠰⣄⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⠖⡾⠁⠀⠀⣿⠀⠀⠀⠀⠀⠘⣿⠀⠀⠙⡇⢸⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠄⠀
2485
2405
  ⠀⠀⢻⣷⡦⣤⣤⣤⡴⠶⠿⠛⠉⠁⠀⢳⠀⢠⡀⢿⣀⠀⠀⠀⠀⣠⡟⢀⣀⢠⠇⠀⠈⠙⠛⠷⠶⢦⣤⣤⣤⢴⣾⡏⠀⠀
2486
2406
  ⠀⠀⠈⣿⣧⠙⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠘⠛⢊⣙⠛⠒⠒⢛⣋⡚⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⡿⠁⣾⡿⠀⠀⠀
@@ -2497,85 +2417,50 @@ class TableCell {
2497
2417
  ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
2498
2418
  ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
2499
2419
  */
2500
- _getSizes({ sizes, } /* Table Definition */) {
2501
- if (sizes === 'auto' || !sizes) {
2502
- return {
2503
- 'w-auto': true,
2504
- };
2505
- }
2506
- if (sizes === 'hidden') {
2420
+ class TableCell {
2421
+ constructor() {
2422
+ /**
2423
+ * The variant of the column
2424
+ */
2425
+ this.variant = 'default';
2426
+ /**
2427
+ * The index of the column
2428
+ */
2429
+ this.index = 0;
2430
+ /**
2431
+ * The index of the row
2432
+ */
2433
+ this.rowIndex = 0;
2434
+ /**
2435
+ * Wether the table has actions
2436
+ */
2437
+ this.tableHasActions = false;
2438
+ }
2439
+ get class() {
2440
+ return getTableCellColumnClasses(this.definition, this.variant, this.tableHasActions);
2441
+ }
2442
+ get data() {
2443
+ var _a;
2444
+ if (this.variant === 'header') {
2507
2445
  return {
2508
- hidden: true,
2446
+ value: this.value,
2509
2447
  };
2510
2448
  }
2511
- if (typeof sizes === 'object') {
2512
- sizes = sizes;
2513
- const classes = {};
2514
- let previousSize;
2515
- for (let size in sizes) {
2516
- if (!isTableColumnSizesKey(sizes, size)) {
2517
- continue;
2518
- }
2519
- if (size === 'default') {
2520
- if (sizes.default === 'hidden') {
2521
- classes['hidden'] = true;
2522
- previousSize = size;
2523
- continue;
2524
- }
2525
- classes[`w-${sizes.default}/12`] = true;
2526
- previousSize = size;
2527
- continue;
2528
- }
2529
- const currentValue = sizes[size];
2530
- const previousValue = previousSize ? sizes[previousSize] : null;
2531
- if (currentValue !== 'hidden' &&
2532
- previousValue &&
2533
- previousValue === 'hidden' &&
2534
- this.variant !== 'actions') {
2535
- classes[`${size}:flex`] = true;
2536
- }
2537
- if (currentValue === 'hidden' && this.variant !== 'actions') {
2538
- classes[`${size}:hidden`] = true;
2539
- previousSize = size;
2540
- continue;
2541
- }
2542
- if (currentValue === 12 || currentValue === 'full') {
2543
- classes[`${size}:w-full`] = true;
2544
- }
2545
- classes[`${size}:w-${currentValue}/12`] = true;
2546
- previousSize = size;
2547
- }
2548
- return classes;
2549
- }
2550
- if (sizes === 12 || sizes === 'full') {
2449
+ if (this.variant === 'actions') {
2551
2450
  return {
2552
- 'w-full': true,
2451
+ value: this.value,
2452
+ item: this.item,
2453
+ index: this.index,
2454
+ rowIndex: this.rowIndex,
2553
2455
  };
2554
2456
  }
2555
- // is a number.
2556
2457
  return {
2557
- [`w-${sizes}/12`]: true,
2458
+ value: (_a = this.value) !== null && _a !== void 0 ? _a : objectGetByPath(this.item, this.definition.path),
2459
+ item: this.item,
2460
+ index: this.index,
2461
+ rowIndex: this.rowIndex,
2558
2462
  };
2559
2463
  }
2560
- _getIsLastValues({ isLast, parsedSizes, } /* Table Definition */) {
2561
- const values = {};
2562
- for (let size of Object.keys(isLast)) {
2563
- let prefix = '';
2564
- if (size !== 'default') {
2565
- prefix = `${size}:`;
2566
- }
2567
- values[`${prefix}pr-4`] = !isLast[size];
2568
- values[`${prefix}group-hover:hidden`] =
2569
- isLast[size] && this.tableHasActions && this.variant !== 'actions';
2570
- values[`${prefix}group-hover:flex`] =
2571
- parsedSizes[size] !== 'hidden' ||
2572
- this.variant === 'actions';
2573
- values[`${prefix}flex`] =
2574
- parsedSizes[size] !== 'hidden' &&
2575
- this.variant !== 'actions';
2576
- }
2577
- return values;
2578
- }
2579
2464
  }
2580
2465
  TableCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableCell, deps: [], target: i0.ɵɵFactoryTarget.Component });
2581
2466
  TableCell.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: TableCell, selector: "p-table-cell-ngx", inputs: { variant: "variant", index: "index", rowIndex: "rowIndex", definition: "definition", item: "item", value: "value", tableHasActions: "tableHasActions", checkbox: "checkbox", template: "template" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<ng-container *ngIf=\"checkbox\">\n\t<ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\n</ng-container>\n\n<ng-container [ngSwitch]=\"variant\">\n\t<p-loader\n\t\t*ngSwitchCase=\"'loading'\"\n\t\tvariant=\"ghost\"\n\t\tclass=\"h-6 w-full flex-1 rounded\"\n\t></p-loader>\n\n\t<ng-container *ngSwitchCase=\"'actions'\">\n\t\t<ng-container *ngIf=\"template\">\n\t\t\t<ng-container *ngTemplateOutlet=\"template; context: data\"></ng-container>\n\t\t</ng-container>\n\t</ng-container>\n\n\t<div\n\t\t*ngSwitchCase=\"'header'\"\n\t\tclass=\"flex w-full overflow-hidden\"\n\t\t[class.justify-start]=\"definition.align === 'start'\"\n\t\t[class.justify-center]=\"definition.align === 'center'\"\n\t\t[class.justify-end]=\"definition.align === 'end'\"\n\t>\n\t\t<ng-container *ngTemplateOutlet=\"valueTemplate\"></ng-container>\n\t</div>\n\n\t<div\n\t\t*ngSwitchCase=\"'default'\"\n\t\tclass=\"flex min-w-0 flex-1\"\n\t\t[class.justify-start]=\"definition.align === 'start'\"\n\t\t[class.justify-center]=\"definition.align === 'center'\"\n\t\t[class.justify-end]=\"definition.align === 'end'\"\n\t>\n\t\t<ng-container *ngIf=\"template; else valueTemplate\">\n\t\t\t<ng-container *ngTemplateOutlet=\"template; context: data\"></ng-container>\n\t\t</ng-container>\n\t</div>\n</ng-container>\n\n<ng-template #valueTemplate>\n\t{{ data.value }}\n</ng-template>\n", styles: [":host{align-items:center;gap:1rem}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: PLoader, selector: "p-loader", inputs: ["color", "modalDescription", "modalTitle", "show", "variant"] }] });