@seniorsistemas/data-seniorx-core 1.5.0 → 1.6.0
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.
- package/core/types/lists.type.d.ts +7 -2
- package/core/types/searchbox.type.d.ts +1 -0
- package/core/types/semantics.type.d.ts +4 -2
- package/core/types/table.types.d.ts +58 -0
- package/core/types/toast.type.d.ts +16 -0
- package/core/utils/layout.util.d.ts +3 -0
- package/esm2022/core/types/lists.type.mjs +1 -1
- package/esm2022/core/types/searchbox.type.mjs +2 -0
- package/esm2022/core/types/semantics.type.mjs +11 -9
- package/esm2022/core/types/table.types.mjs +26 -0
- package/esm2022/core/types/toast.type.mjs +2 -0
- package/esm2022/core/utils/layout.util.mjs +10 -0
- package/esm2022/features/button/button.component.mjs +12 -10
- package/esm2022/features/checkbox/checkbox.component.mjs +80 -0
- package/esm2022/features/combobox/combobox.component.mjs +30 -12
- package/esm2022/features/inputs.mjs +1 -12
- package/esm2022/features/list/list.component.mjs +55 -32
- package/esm2022/features/modalc/modalc.component.mjs +49 -26
- package/esm2022/features/panel/panel.component.mjs +6 -5
- package/esm2022/features/scaffold/scaffold.component.mjs +34 -0
- package/esm2022/features/searchbox/searchbox.component.mjs +26 -20
- package/esm2022/features/sidebar/sidebar.component.mjs +59 -0
- package/esm2022/features/spinner/spinner.component.mjs +15 -8
- package/esm2022/features/tab/tab-item.component.mjs +29 -0
- package/esm2022/features/tab/tab.component.mjs +159 -0
- package/esm2022/features/table/table.component.mjs +263 -0
- package/esm2022/features/textbox/textbox.component.mjs +3 -3
- package/esm2022/features/toast/toast.component.mjs +35 -27
- package/esm2022/features/toast/toast.service.mjs +60 -35
- package/esm2022/providers/primeng-config.provider.mjs +10 -8
- package/esm2022/public-api.mjs +7 -1
- package/features/button/button.component.d.ts +5 -4
- package/features/checkbox/checkbox.component.d.ts +23 -0
- package/features/combobox/combobox.component.d.ts +8 -5
- package/features/inputs.d.ts +0 -4
- package/features/list/list.component.d.ts +10 -4
- package/features/modalc/modalc.component.d.ts +16 -8
- package/features/scaffold/scaffold.component.d.ts +11 -0
- package/features/searchbox/searchbox.component.d.ts +7 -7
- package/features/sidebar/sidebar.component.d.ts +18 -0
- package/features/spinner/spinner.component.d.ts +3 -2
- package/features/tab/tab-item.component.d.ts +11 -0
- package/features/tab/tab.component.d.ts +38 -0
- package/features/table/table.component.d.ts +60 -0
- package/features/toast/toast.component.d.ts +10 -10
- package/features/toast/toast.service.d.ts +10 -10
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +930 -223
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +6 -0
- package/styles.css +50 -0
- package/styles.css.map +1 -1
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, signal, computed } from '@angular/core';
|
|
3
|
+
import { DEFAULT_TABLE_OPTIONS } from 'lib/src/core/types/table.types';
|
|
4
|
+
import { isMobile } from 'lib/src/core/utils/layout.util';
|
|
5
|
+
import { SearchboxComponent } from '../searchbox/searchbox.component';
|
|
6
|
+
import { PaginatorModule } from 'primeng/paginator';
|
|
7
|
+
import { ButtonComponent } from '../button/button.component';
|
|
8
|
+
import { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';
|
|
9
|
+
import { LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/common";
|
|
12
|
+
import * as i2 from "primeng/paginator";
|
|
13
|
+
import * as i3 from "primeng/api";
|
|
14
|
+
import * as i4 from "@seniorsistemas/angular-components/loading-state";
|
|
15
|
+
import * as i5 from "@seniorsistemas/angular-components/empty-state";
|
|
16
|
+
export class TableComponent {
|
|
17
|
+
cols = [];
|
|
18
|
+
data = [];
|
|
19
|
+
loading = false;
|
|
20
|
+
config = DEFAULT_TABLE_OPTIONS;
|
|
21
|
+
action = new EventEmitter();
|
|
22
|
+
isMobile = isMobile();
|
|
23
|
+
showSearch = computed(() => this.options().search?.show ?? false);
|
|
24
|
+
showPaginator = computed(() => this.options().pagination?.show ?? false);
|
|
25
|
+
rowsPerPageOptions = computed(() => this.options().pagination?.rowsPerPageOptions ?? []);
|
|
26
|
+
searchPlaceholder = computed(() => this.options().search?.placeholder ?? '');
|
|
27
|
+
triggerMode = computed(() => this.options().search?.type ?? 'auto');
|
|
28
|
+
totalRecordsLabel = computed(() => this.options().table?.totalRecordsLabel ?? '');
|
|
29
|
+
emptyTitle = computed(() => this.options().empty?.title ?? '');
|
|
30
|
+
emptyText = computed(() => this.options().empty?.text ?? '');
|
|
31
|
+
options = signal(DEFAULT_TABLE_OPTIONS);
|
|
32
|
+
globalFilter = signal('');
|
|
33
|
+
sortField = signal(null);
|
|
34
|
+
sortOrder = signal(0);
|
|
35
|
+
selection = signal([]);
|
|
36
|
+
first = signal(0);
|
|
37
|
+
rows = signal(DEFAULT_TABLE_OPTIONS.pagination?.rowsPerPage ?? 10);
|
|
38
|
+
cellCfg(kind) {
|
|
39
|
+
return (this.options().cells?.[kind] ?? {});
|
|
40
|
+
}
|
|
41
|
+
tagsOf(row, col) {
|
|
42
|
+
const raw = this._(row, col.field);
|
|
43
|
+
const arr = Array.isArray(raw) ? raw : [];
|
|
44
|
+
const max = this.options().cells?.tag?.maxItems;
|
|
45
|
+
return typeof max === 'number' ? arr.slice(0, max) : arr;
|
|
46
|
+
}
|
|
47
|
+
filteredData = computed(() => {
|
|
48
|
+
const q = this.globalFilter().trim().toLowerCase();
|
|
49
|
+
if (!q)
|
|
50
|
+
return this.data;
|
|
51
|
+
const fields = this.cols.filter(c => c.searchable ?? true).filter(c => !!c.field).map(c => c.field);
|
|
52
|
+
if (fields.length === 0)
|
|
53
|
+
return this.data;
|
|
54
|
+
return this.data.filter(row => fields.some(f => {
|
|
55
|
+
const v = this._(row, f);
|
|
56
|
+
if (Array.isArray(v))
|
|
57
|
+
return v.join(' ').toLowerCase().includes(q);
|
|
58
|
+
return String(v ?? '').toLowerCase().includes(q);
|
|
59
|
+
}));
|
|
60
|
+
});
|
|
61
|
+
sortedData = computed(() => {
|
|
62
|
+
const field = this.sortField();
|
|
63
|
+
const order = this.sortOrder();
|
|
64
|
+
const arr = [...this.filteredData()];
|
|
65
|
+
if (!field || order === 0)
|
|
66
|
+
return arr;
|
|
67
|
+
return arr.sort((a, b) => {
|
|
68
|
+
const va = this._(a, field);
|
|
69
|
+
const vb = this._(b, field);
|
|
70
|
+
if (va == null && vb == null)
|
|
71
|
+
return 0;
|
|
72
|
+
if (va == null)
|
|
73
|
+
return -order;
|
|
74
|
+
if (vb == null)
|
|
75
|
+
return order;
|
|
76
|
+
if (typeof va === 'number' && typeof vb === 'number')
|
|
77
|
+
return (va - vb) * order;
|
|
78
|
+
return String(va).localeCompare(String(vb)) * order;
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
totalRecords = computed(() => this.sortedData().length);
|
|
82
|
+
pageData = computed(() => {
|
|
83
|
+
const start = this.first();
|
|
84
|
+
const end = start + this.rows();
|
|
85
|
+
return this.sortedData().slice(start, end);
|
|
86
|
+
});
|
|
87
|
+
configHash = '';
|
|
88
|
+
constructor() { }
|
|
89
|
+
ngOnChanges(changes) {
|
|
90
|
+
if (changes['config']) {
|
|
91
|
+
this.applyConfigOptions();
|
|
92
|
+
this.rows.set(this.options().pagination?.rowsPerPage ?? 10);
|
|
93
|
+
this.first.set(0);
|
|
94
|
+
this.configHash = this.stableStringify(this.config);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
ngDoCheck() {
|
|
98
|
+
const nextHash = this.stableStringify(this.config);
|
|
99
|
+
if (nextHash !== this.configHash) {
|
|
100
|
+
this.configHash = nextHash;
|
|
101
|
+
this.applyConfigOptions();
|
|
102
|
+
this.rows.set(this.options().pagination?.rowsPerPage ?? 10);
|
|
103
|
+
this.first.set(0);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
onSearchTerm(evOrVal) {
|
|
107
|
+
const term = typeof evOrVal === 'string'
|
|
108
|
+
? evOrVal
|
|
109
|
+
: evOrVal?.detail ?? '';
|
|
110
|
+
this.globalFilter.set(String(term));
|
|
111
|
+
this.first.set(0);
|
|
112
|
+
}
|
|
113
|
+
onClearSearch(_ev) {
|
|
114
|
+
this.globalFilter.set('');
|
|
115
|
+
this.first.set(0);
|
|
116
|
+
}
|
|
117
|
+
toggleSort(field, enabled = true) {
|
|
118
|
+
if (!enabled)
|
|
119
|
+
return;
|
|
120
|
+
if (this.sortField() !== field) {
|
|
121
|
+
this.sortField.set(field);
|
|
122
|
+
this.sortOrder.set(1);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const order = this.sortOrder();
|
|
126
|
+
if (order === 1)
|
|
127
|
+
this.sortOrder.set(-1);
|
|
128
|
+
else if (order === -1) {
|
|
129
|
+
this.sortOrder.set(0);
|
|
130
|
+
this.sortField.set(null);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.sortOrder.set(1);
|
|
134
|
+
this.sortField.set(field);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
this.first.set(0);
|
|
138
|
+
}
|
|
139
|
+
onPageChange(e) {
|
|
140
|
+
this.first.set(e.first ?? 0);
|
|
141
|
+
this.rows.set(e.rows ?? this.options().pagination?.rowsPerPage ?? 10);
|
|
142
|
+
}
|
|
143
|
+
getCheckedValue(event) {
|
|
144
|
+
return event.target.checked;
|
|
145
|
+
}
|
|
146
|
+
onToggleRow(row, checked) {
|
|
147
|
+
const sel = new Set(this.selection());
|
|
148
|
+
checked ? sel.add(row) : sel.delete(row);
|
|
149
|
+
this.selection.set([...sel]);
|
|
150
|
+
}
|
|
151
|
+
isRowSelected(row) {
|
|
152
|
+
return this.selection().includes(row);
|
|
153
|
+
}
|
|
154
|
+
toggleSelectPage(checked) {
|
|
155
|
+
const sel = new Set(this.selection());
|
|
156
|
+
this.pageData().forEach(r => (checked ? sel.add(r) : sel.delete(r)));
|
|
157
|
+
this.selection.set([...sel]);
|
|
158
|
+
}
|
|
159
|
+
isPageFullySelected() {
|
|
160
|
+
const visible = this.pageData();
|
|
161
|
+
return visible.length > 0 && visible.every(r => this.selection().includes(r));
|
|
162
|
+
}
|
|
163
|
+
_ = (obj, path) => path.split('.').reduce((acc, part) => {
|
|
164
|
+
if (acc !== null && typeof acc === 'object')
|
|
165
|
+
return acc[part];
|
|
166
|
+
return undefined;
|
|
167
|
+
}, obj);
|
|
168
|
+
formatDate(value, _format = 'shortDate') {
|
|
169
|
+
try {
|
|
170
|
+
return new Intl.DateTimeFormat(undefined).format(new Date(value));
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
return String(value ?? '');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
formatCurrency(value, currency = 'BRL') {
|
|
177
|
+
const n = Number(value);
|
|
178
|
+
if (Number.isNaN(n))
|
|
179
|
+
return String(value ?? '');
|
|
180
|
+
return new Intl.NumberFormat(undefined, { style: 'currency', currency }).format(n);
|
|
181
|
+
}
|
|
182
|
+
applyConfigOptions() {
|
|
183
|
+
const cfg = this.config || DEFAULT_TABLE_OPTIONS;
|
|
184
|
+
this.options.set({
|
|
185
|
+
...DEFAULT_TABLE_OPTIONS,
|
|
186
|
+
...cfg,
|
|
187
|
+
search: { ...DEFAULT_TABLE_OPTIONS.search, ...cfg.search },
|
|
188
|
+
table: { ...DEFAULT_TABLE_OPTIONS.table, ...cfg.table },
|
|
189
|
+
empty: { ...DEFAULT_TABLE_OPTIONS.empty, ...cfg.empty },
|
|
190
|
+
pagination: { ...DEFAULT_TABLE_OPTIONS.pagination, ...cfg.pagination },
|
|
191
|
+
cells: {
|
|
192
|
+
checkbox: { ...(DEFAULT_TABLE_OPTIONS.cells?.checkbox ?? {}), ...(cfg.cells?.checkbox ?? {}) },
|
|
193
|
+
button: { ...(DEFAULT_TABLE_OPTIONS.cells?.button ?? {}), ...(cfg.cells?.button ?? {}) },
|
|
194
|
+
tag: { ...(DEFAULT_TABLE_OPTIONS.cells?.tag ?? {}), ...(cfg.cells?.tag ?? {}) },
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
stableStringify(obj) {
|
|
199
|
+
const seen = new WeakSet();
|
|
200
|
+
const replacer = (_k, v) => {
|
|
201
|
+
if (v && typeof v === 'object') {
|
|
202
|
+
const asObj = v;
|
|
203
|
+
if (seen.has(asObj))
|
|
204
|
+
return;
|
|
205
|
+
seen.add(asObj);
|
|
206
|
+
if (Array.isArray(v))
|
|
207
|
+
return v;
|
|
208
|
+
const o = v;
|
|
209
|
+
return Object.keys(o).sort().reduce((acc, key) => {
|
|
210
|
+
acc[key] = o[key];
|
|
211
|
+
return acc;
|
|
212
|
+
}, {});
|
|
213
|
+
}
|
|
214
|
+
if (typeof v === 'function' || typeof v === 'undefined')
|
|
215
|
+
return undefined;
|
|
216
|
+
return v;
|
|
217
|
+
};
|
|
218
|
+
try {
|
|
219
|
+
return JSON.stringify(obj ?? {}, replacer);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return JSON.stringify(obj ?? {});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
onButtonClick(row, col) {
|
|
226
|
+
const key = (col.actionField ?? col.field);
|
|
227
|
+
const value = key ? this._(row, key) : undefined;
|
|
228
|
+
this.action.emit({ column: col, row, value });
|
|
229
|
+
}
|
|
230
|
+
buttonKey(row, col, opt) {
|
|
231
|
+
const actKey = (col.actionField ?? col.field ?? '');
|
|
232
|
+
const actVal = actKey ? String(this._(row, actKey) ?? '') : '';
|
|
233
|
+
return [
|
|
234
|
+
String(opt?.label ?? ''),
|
|
235
|
+
String(opt?.icon ?? ''),
|
|
236
|
+
String(opt?.priority ?? ''),
|
|
237
|
+
String(opt?.size ?? ''),
|
|
238
|
+
String(opt?.tooltip ?? ''),
|
|
239
|
+
actVal
|
|
240
|
+
].join('|');
|
|
241
|
+
}
|
|
242
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
243
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TableComponent, isStandalone: true, selector: "sdc-table", inputs: { cols: "cols", data: "data", loading: "loading", config: "config" }, outputs: { action: "action" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"sdc-table\" [class.sdc-table-stack]=\"isMobile ? 'stack' : 'grid'\"\n [class.sdc-table-filtered]=\"!!globalFilter().trim()\">\n\n <div class=\"sdc-table-caption\" *ngIf=\"showSearch()\">\n <div [style.width]=\"isMobile ? '100%' : '20%'\">\n <sdc-searchbox [disabled]=\"loading\" [placeholder]=\"searchPlaceholder()\" [triggerMode]=\"triggerMode()\"\n (onSearch)=\"onSearchTerm($event)\" (onClear)=\"onClearSearch()\" />\n </div>\n </div>\n\n <table class=\"sdc-table-grid\">\n <thead>\n <tr>\n @for (col of cols; let i = $index; track i) {\n <th [class.sdc-table-th-checkbox]=\"col.type === 'checkbox-selection'\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\" [class.sdc-table-sortable]=\"col.sortable !== false\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\">\n\n <div class=\"sdc-table-th-inner\" [class.sdc-table-sortable]=\"col.sortable !== false\">\n @switch (col.type) {\n @case ('checkbox-selection') {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n }\n @default {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n <span class=\"sdc-table-sort-icons sdc-table-sort-overlay\" *ngIf=\"col.sortable !== false\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n </span>\n }\n }\n </div>\n\n <span class=\"sdc-table-th-center\"\n *ngIf=\"col.type === 'checkbox-selection' && (cellCfg('checkbox').selectAll ?? true)\">\n <input type=\"checkbox\" [checked]=\"isPageFullySelected()\" (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectPage(getCheckedValue($event))\" />\n </span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (loading) { } @else {\n @for (row of pageData(); let r = $index; track r) {\n <tr>\n @for (col of cols; let c = $index; track c) {\n <ng-container *ngIf=\"isMobile; else desktopContent\">\n <div class=\"sdc-table-td-mobile\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n\n <td class=\"sdc-table-td sdc-table-tdc sdc-table-mobile-td\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\" [attr.data-title]=\"col.header\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\">\n <div class=\"sdc-table-td-val\">\n <ng-container [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"></ng-container>\n </div>\n </td>\n </div>\n </ng-container>\n\n <ng-template #desktopContent>\n <td class=\"sdc-table-td sdc-table-tdc\" [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\" [attr.data-title]=\"col.header\">\n <div class=\"sdc-table-td-val\">\n <ng-container [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"></ng-container>\n </div>\n </td>\n </ng-template>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n\n <s-empty-state *ngIf=\"!loading && options().empty?.show !== false && totalRecords() === 0\" id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\" [title]=\"emptyTitle()\" [description]=\"emptyText()\" class=\"sdc-table-empty-state\">\n </s-empty-state>\n\n <s-loading-state *ngIf=\"loading\" [loading]=\"loading\" [blockWindow]=\"false\" class=\"sdc-table-loading-state\">\n </s-loading-state>\n\n <div class=\"sdc-table-paginator\" *ngIf=\"showPaginator()\">\n <p-paginator [dropdownAppendTo]=\"'body'\" [first]=\"first()\" [rows]=\"rows()\" [totalRecords]=\"totalRecords()\"\n [rowsPerPageOptions]=\"isMobile ? undefined : rowsPerPageOptions()\" [showFirstLastIcon]=\"!isMobile\"\n (onPageChange)=\"onPageChange($event)\">\n <ng-template pTemplate=\"dropdownicon\"><i class=\"fas fa-caret-down\"></i></ng-template>\n <ng-template pTemplate=\"firstpagelinkicon\"><i class=\"fas fa-step-forward fa-rotate-180\"></i></ng-template>\n <ng-template pTemplate=\"previouspagelinkicon\"><i class=\"fas fa-caret-left\"></i></ng-template>\n <ng-template pTemplate=\"nextpagelinkicon\"><i class=\"fas fa-caret-right\"></i></ng-template>\n <ng-template pTemplate=\"lastpagelinkicon\"><i class=\"fas fa-step-forward\"></i></ng-template>\n </p-paginator>\n\n <span *ngIf=\"!isMobile\">\n {{ totalRecordsLabel() }}: {{ totalRecords() }}\n </span>\n </div>\n\n <ng-template #cellTpl let-row let-col=\" col\">\n @switch (col.type) {\n @case ('checkbox-selection') {\n <ng-container *ngIf=\"cellCfg('checkbox') as checkboxOptions\">\n <div class=\"sdc-table-checkbox\">\n <input type=\"checkbox\" [checked]=\"isRowSelected(row)\" (change)=\"onToggleRow(row, getCheckedValue($event))\" />\n <label>{{ _(row, col.field) }}</label>\n </div>\n </ng-container>\n }\n\n @case ('date') { {{ formatDate(_(row, col.field), col.format || 'shortDate') }} }\n\n @case ('currency') { {{ formatCurrency(_(row, col.field), col.format || 'BRL') }} }\n\n @case ('tag') {\n <ng-container *ngIf=\"cellCfg('tag') as tagOptions\">\n <div class=\"sdc-table-tags\">\n @for (tag of tagsOf(row, col); let t = $index; track t) {\n <span class=\"sdc-table-tag\" [style.background]=\"tagOptions.backgroundColor || null\"\n [style.color]=\"tagOptions.color || null\" [attr.title]=\"tagOptions.tooltip\">\n <i *ngIf=\"tagOptions.icon\" [class]=\"tagOptions.icon\"></i>\n {{ tag }}\n </span>\n }\n </div>\n </ng-container>\n }\n\n @case ('button') {\n <ng-container *ngIf=\"cellCfg('button') as buttonOptions\">\n <ng-container *ngFor=\"let __k of [buttonKey(row, col, buttonOptions)]\">\n <div class=\"sdc-table-button\">\n <sdc-button\n style=\"max-width: 70%;\"\n\n [size]=\"buttonOptions.size\"\n [priority]=\"buttonOptions.priority || 'primary'\"\n [icon]=\"buttonOptions.icon\"\n [label]=\"buttonOptions.label\"\n [disabled]=\"buttonOptions.disabled\"\n [title]=\"buttonOptions.tooltip\"\n\n [attr.size]=\"buttonOptions.size\"\n [attr.priority]=\"buttonOptions.priority || 'primary'\"\n [attr.severity]=\"buttonOptions.priority || 'primary'\"\n [attr.icon]=\"buttonOptions.icon\"\n [attr.label]=\"buttonOptions.label\"\n [attr.disabled]=\"buttonOptions.disabled ? '' : null\"\n [attr.title]=\"buttonOptions.tooltip || null\"\n\n [attr.data-key]=\"__k\"\n (click)=\"buttonOptions.disabled ? null : onButtonClick(row, col)\">\n </sdc-button>\n </div>\n </ng-container>\n </ng-container>\n }\n @default { {{ _(row, col.field) }} }\n }\n </ng-template>\n</div>\n\n<ng-template #sortIconsTpl let-col=\"col\">\n <span *ngIf=\"col.sortable !== false && col.type !== 'checkbox-selection'\" class=\"sdc-table-sort-indicator\">\n <i *ngIf=\"sortField() !== col.field\" class=\"fas fa-sort-alt sdc-table-sort-neutral\"></i>\n <i *ngIf=\"sortField() === col.field && sortOrder() === 1\"\n class=\"fas fa-sort-amount-up-alt sdc-table-sort-active\"></i>\n <i *ngIf=\"sortField() === col.field && sortOrder() === -1\"\n class=\"fas fa-sort-amount-down sdc-table-sort-active\"></i>\n </span>\n <span *ngIf=\"col.sortable === false || col.type === 'checkbox-selection'\"\n class=\"sdc-table-sort-indicator sdc-table-sort-indicator-placeholder\"></span>\n</ng-template>", styles: [":host{display:block;width:100%;box-sizing:border-box}@media (max-width: 750px){.sdc-table-tag{font-size:.7rem;padding:.6rem .8rem}.sdc-table-paginator{justify-content:center!important}.sdc-table-sort-indicator{gap:.15rem;min-width:1.2rem}.sdc-table-sort-indicator i{font-size:.75rem;width:.65rem}.sdc-table-td-val{background:none!important;height:100%;padding:1rem;justify-content:end;border-left:1px solid var(--sdc-formfield-default-border);display:flex}.sdc-table-td-mobile{border-top:1px solid var(--sdc-formfield-default-border);display:flex;align-items:center;padding-left:10px}.sdc-table.sdc-table-stack thead{display:none}.sdc-table.sdc-table-stack .sdc-table-grid,.sdc-table.sdc-table-stack .sdc-table-grid tbody,.sdc-table.sdc-table-stack .sdc-table-grid tr,.sdc-table.sdc-table-stack .sdc-table-grid td{display:block;width:100%;box-sizing:border-box}.sdc-table.sdc-table-stack .sdc-table-grid tr{border-top:1px solid var(--sdc-formfield-default-border);background:var(--sdc-table-bg-card)}.sdc-table.sdc-table-stack .sdc-table-td{position:relative;padding:0;border-bottom:1px solid var(--sdc-table-border-gray);display:grid!important;grid-template-columns:45% 55%;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table.sdc-table-stack .sdc-table-td:before{content:attr(data-title);font-weight:600;padding:var(--sdc-table-padding-cell) .5rem var(--sdc-table-padding-cell) var(--sdc-table-padding-cell);border-right:0px solid var(--sdc-formfield-default-border);word-break:break-word}.sdc-table.sdc-table-stack .sdc-table-td>*{grid-column:2;min-width:0}.sdc-table.sdc-table-stack .sdc-table-grid tr .sdc-table-td:last-child{border-bottom:0}.sdc-table.sdc-table-stack .sdc-table-sort-icons{flex-direction:column;line-height:.8}.sdc-table-paginator{border-top:1px solid var(--sdc-table-border-gray)}::ng-deep .p-paginator .p-paginator-next{border-width:1px 1px 1px 1px!important}}@media (min-width: 750px){.sdc-table-tag{font-size:.8rem;padding:.6rem 1.7rem}.sdc-table-grid thead th+th{border-left:1px solid var(--sdc-formfield-default-border)}}.sdc-table{width:100%;box-sizing:border-box;overflow:hidden;background:var(--sdc-table-bg-card)}.sdc-table-caption{width:100%;justify-content:end;display:flex;padding:.75rem 0}.sdc-table-grid{width:100%;border-collapse:collapse;table-layout:fixed}thead th{padding:var(--sdc-table-padding-cell);background:var(--sdc-table-bg-card);border-bottom:1px solid var(--sdc-formfield-default-border);-webkit-user-select:none;user-select:none;transition:background var(--sdc-table-transition-fast),border var(--sdc-table-transition-fast)}thead th.sdc-table-sortable{cursor:pointer}thead th.sdc-table-sortable:hover{background:var(--sdc-table-th-hover-bg)}thead th.sdc-table-is-selected{background:var(--sdc-table-th-selected-bg)!important}.sdc-table-sort-neutral{color:var(--sdc-table-sort-neutral)}.sdc-table-sort-active{color:var(--sdc-table-sort-active)}.sdc-table-th-inner{display:flex;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table-sort-icons i{font-size:inherit;transition:color var(--sdc-table-transition-fast),transform var(--sdc-table-transition-fast),opacity var(--sdc-table-transition-fast)}tbody td{padding:var(--sdc-table-padding-cell);border-bottom:1px solid var(--sdc-table-border-gray);vertical-align:middle}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:var(--sdc-table-gap-tags)}.sdc-table-tag{display:inline-flex;align-items:center;gap:.25rem;border-radius:6px;background:var(--sdc-table-tag-bg)}.sdc-table-sort-indicator{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:1.7rem}.sdc-table-sort-indicator i{width:.75rem;text-align:center}.sdc-table-sort-indicator-placeholder{width:1.4rem;height:1rem;display:inline-block}.sdc-table-sort-overlay{position:relative}.sdc-table-paginator{padding:.5rem 0}.sdc-table-button,.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-empty-state{display:block;padding:12rem}.sdc-table-loading-state{background:var(--sdc-table-bg-loading);display:block;border-bottom:1px solid var(--sdc-formfield-default-border);min-width:10rem;padding:18.8rem 0rem}thead th.sdc-table-th-checkbox{position:relative}thead th.sdc-table-th-checkbox .sdc-table-th-center{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}thead th.sdc-table-th-checkbox .sdc-table-th-center input{pointer-events:auto}thead th.sdc-table-th-checkbox .sdc-table-th-inner{padding-right:.5rem}thead th.sdc-table-th-checkbox .sdc-table-th-label,thead .sdc-table-th-label{color:#333!important;white-space:nowrap}.sdc-table-paginator{display:flex;width:100%;justify-content:space-between;align-items:center;padding:.75em;box-sizing:border-box}.sdc-table-paginator ::ng-deep .p-paginator{text-align:left;background:var(--sdc-table-bg-card);border-color:transparent;gap:0;display:flex}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-element{font-weight:400}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-right-content{margin-left:auto;height:100%;padding-top:5px;padding-left:20px}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first .p-paginator-icon,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last .p-paginator-icon{font-size:12px}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages{padding:0;margin:0;white-space:nowrap;gap:0}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page-selected{color:#fff!important;border:1px solid #428bca;background:#428bca}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page-selected:hover{background-color:#6aa3d5!important;border-color:#6aa3d5!important}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-prev,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-next,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{padding:.4em .25em;color:#428bca;transition:background-color .2s ease-out;border-radius:0;border:1px solid #cccccc;border-width:1px 0 1px 1px;text-align:center;min-width:var(--sdc-table-paginator-size);height:var(--sdc-table-paginator-size);margin:0}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-prev:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-next:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:hover{background-color:#f7f7f7}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first.p-highlight:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-prev.p-highlight:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-next.p-highlight:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last.p-highlight:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight:hover{background-color:#6aa3d5;border-color:#6aa3d5}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first{border-radius:4px 0 0 4px}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last{border-right-width:1px;border-radius:0 4px 4px 0}.sdc-table-paginator ::ng-deep .p-select{margin-left:34px}.sdc-table-paginator ::ng-deep .p-select-label{height:34px;padding:6px 17px}.sdc-table-paginator ::ng-deep .p-select-dropdown{border-left:1px solid #cccccc}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode"], outputs: ["onSearch", "onClear"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: i2.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["disabled", "width", "icon", "id", "label", "priority", "size", "type"], outputs: ["onClick"] }, { kind: "ngmodule", type: LoadingStateModule }, { kind: "component", type: i4.LoadingStateComponent, selector: "s-loading-state", inputs: ["indicator", "id", "blockWindow", "loading"] }, { kind: "ngmodule", type: EmptyStateModule }, { kind: "component", type: i5.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }] });
|
|
244
|
+
}
|
|
245
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
|
|
246
|
+
type: Component,
|
|
247
|
+
args: [{ selector: 'sdc-table', standalone: true, imports: [CommonModule, SearchboxComponent, PaginatorModule, ButtonComponent, LoadingStateModule, EmptyStateModule], template: "<div class=\"sdc-table\" [class.sdc-table-stack]=\"isMobile ? 'stack' : 'grid'\"\n [class.sdc-table-filtered]=\"!!globalFilter().trim()\">\n\n <div class=\"sdc-table-caption\" *ngIf=\"showSearch()\">\n <div [style.width]=\"isMobile ? '100%' : '20%'\">\n <sdc-searchbox [disabled]=\"loading\" [placeholder]=\"searchPlaceholder()\" [triggerMode]=\"triggerMode()\"\n (onSearch)=\"onSearchTerm($event)\" (onClear)=\"onClearSearch()\" />\n </div>\n </div>\n\n <table class=\"sdc-table-grid\">\n <thead>\n <tr>\n @for (col of cols; let i = $index; track i) {\n <th [class.sdc-table-th-checkbox]=\"col.type === 'checkbox-selection'\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\" [class.sdc-table-sortable]=\"col.sortable !== false\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\">\n\n <div class=\"sdc-table-th-inner\" [class.sdc-table-sortable]=\"col.sortable !== false\">\n @switch (col.type) {\n @case ('checkbox-selection') {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n }\n @default {\n <span class=\"sdc-table-th-label\">{{ col.header }}</span>\n <span class=\"sdc-table-sort-icons sdc-table-sort-overlay\" *ngIf=\"col.sortable !== false\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n </span>\n }\n }\n </div>\n\n <span class=\"sdc-table-th-center\"\n *ngIf=\"col.type === 'checkbox-selection' && (cellCfg('checkbox').selectAll ?? true)\">\n <input type=\"checkbox\" [checked]=\"isPageFullySelected()\" (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectPage(getCheckedValue($event))\" />\n </span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (loading) { } @else {\n @for (row of pageData(); let r = $index; track r) {\n <tr>\n @for (col of cols; let c = $index; track c) {\n <ng-container *ngIf=\"isMobile; else desktopContent\">\n <div class=\"sdc-table-td-mobile\">\n <ng-container [ngTemplateOutlet]=\"sortIconsTpl\" [ngTemplateOutletContext]=\"{ col: col }\"></ng-container>\n\n <td class=\"sdc-table-td sdc-table-tdc sdc-table-mobile-td\"\n [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\" [attr.data-title]=\"col.header\"\n (click)=\"toggleSort(col.field!, col.sortable !== false)\">\n <div class=\"sdc-table-td-val\">\n <ng-container [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"></ng-container>\n </div>\n </td>\n </div>\n </ng-container>\n\n <ng-template #desktopContent>\n <td class=\"sdc-table-td sdc-table-tdc\" [class.sdc-table-td-checkbox]=\"col.type === 'checkbox-selection'\"\n [class.sdc-table-is-selected]=\"sortField() === col.field\" [attr.data-title]=\"col.header\">\n <div class=\"sdc-table-td-val\">\n <ng-container [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, col: col }\"></ng-container>\n </div>\n </td>\n </ng-template>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n\n <s-empty-state *ngIf=\"!loading && options().empty?.show !== false && totalRecords() === 0\" id=\"my-empty-state\"\n iconClass=\"fa fa-inbox\" [title]=\"emptyTitle()\" [description]=\"emptyText()\" class=\"sdc-table-empty-state\">\n </s-empty-state>\n\n <s-loading-state *ngIf=\"loading\" [loading]=\"loading\" [blockWindow]=\"false\" class=\"sdc-table-loading-state\">\n </s-loading-state>\n\n <div class=\"sdc-table-paginator\" *ngIf=\"showPaginator()\">\n <p-paginator [dropdownAppendTo]=\"'body'\" [first]=\"first()\" [rows]=\"rows()\" [totalRecords]=\"totalRecords()\"\n [rowsPerPageOptions]=\"isMobile ? undefined : rowsPerPageOptions()\" [showFirstLastIcon]=\"!isMobile\"\n (onPageChange)=\"onPageChange($event)\">\n <ng-template pTemplate=\"dropdownicon\"><i class=\"fas fa-caret-down\"></i></ng-template>\n <ng-template pTemplate=\"firstpagelinkicon\"><i class=\"fas fa-step-forward fa-rotate-180\"></i></ng-template>\n <ng-template pTemplate=\"previouspagelinkicon\"><i class=\"fas fa-caret-left\"></i></ng-template>\n <ng-template pTemplate=\"nextpagelinkicon\"><i class=\"fas fa-caret-right\"></i></ng-template>\n <ng-template pTemplate=\"lastpagelinkicon\"><i class=\"fas fa-step-forward\"></i></ng-template>\n </p-paginator>\n\n <span *ngIf=\"!isMobile\">\n {{ totalRecordsLabel() }}: {{ totalRecords() }}\n </span>\n </div>\n\n <ng-template #cellTpl let-row let-col=\" col\">\n @switch (col.type) {\n @case ('checkbox-selection') {\n <ng-container *ngIf=\"cellCfg('checkbox') as checkboxOptions\">\n <div class=\"sdc-table-checkbox\">\n <input type=\"checkbox\" [checked]=\"isRowSelected(row)\" (change)=\"onToggleRow(row, getCheckedValue($event))\" />\n <label>{{ _(row, col.field) }}</label>\n </div>\n </ng-container>\n }\n\n @case ('date') { {{ formatDate(_(row, col.field), col.format || 'shortDate') }} }\n\n @case ('currency') { {{ formatCurrency(_(row, col.field), col.format || 'BRL') }} }\n\n @case ('tag') {\n <ng-container *ngIf=\"cellCfg('tag') as tagOptions\">\n <div class=\"sdc-table-tags\">\n @for (tag of tagsOf(row, col); let t = $index; track t) {\n <span class=\"sdc-table-tag\" [style.background]=\"tagOptions.backgroundColor || null\"\n [style.color]=\"tagOptions.color || null\" [attr.title]=\"tagOptions.tooltip\">\n <i *ngIf=\"tagOptions.icon\" [class]=\"tagOptions.icon\"></i>\n {{ tag }}\n </span>\n }\n </div>\n </ng-container>\n }\n\n @case ('button') {\n <ng-container *ngIf=\"cellCfg('button') as buttonOptions\">\n <ng-container *ngFor=\"let __k of [buttonKey(row, col, buttonOptions)]\">\n <div class=\"sdc-table-button\">\n <sdc-button\n style=\"max-width: 70%;\"\n\n [size]=\"buttonOptions.size\"\n [priority]=\"buttonOptions.priority || 'primary'\"\n [icon]=\"buttonOptions.icon\"\n [label]=\"buttonOptions.label\"\n [disabled]=\"buttonOptions.disabled\"\n [title]=\"buttonOptions.tooltip\"\n\n [attr.size]=\"buttonOptions.size\"\n [attr.priority]=\"buttonOptions.priority || 'primary'\"\n [attr.severity]=\"buttonOptions.priority || 'primary'\"\n [attr.icon]=\"buttonOptions.icon\"\n [attr.label]=\"buttonOptions.label\"\n [attr.disabled]=\"buttonOptions.disabled ? '' : null\"\n [attr.title]=\"buttonOptions.tooltip || null\"\n\n [attr.data-key]=\"__k\"\n (click)=\"buttonOptions.disabled ? null : onButtonClick(row, col)\">\n </sdc-button>\n </div>\n </ng-container>\n </ng-container>\n }\n @default { {{ _(row, col.field) }} }\n }\n </ng-template>\n</div>\n\n<ng-template #sortIconsTpl let-col=\"col\">\n <span *ngIf=\"col.sortable !== false && col.type !== 'checkbox-selection'\" class=\"sdc-table-sort-indicator\">\n <i *ngIf=\"sortField() !== col.field\" class=\"fas fa-sort-alt sdc-table-sort-neutral\"></i>\n <i *ngIf=\"sortField() === col.field && sortOrder() === 1\"\n class=\"fas fa-sort-amount-up-alt sdc-table-sort-active\"></i>\n <i *ngIf=\"sortField() === col.field && sortOrder() === -1\"\n class=\"fas fa-sort-amount-down sdc-table-sort-active\"></i>\n </span>\n <span *ngIf=\"col.sortable === false || col.type === 'checkbox-selection'\"\n class=\"sdc-table-sort-indicator sdc-table-sort-indicator-placeholder\"></span>\n</ng-template>", styles: [":host{display:block;width:100%;box-sizing:border-box}@media (max-width: 750px){.sdc-table-tag{font-size:.7rem;padding:.6rem .8rem}.sdc-table-paginator{justify-content:center!important}.sdc-table-sort-indicator{gap:.15rem;min-width:1.2rem}.sdc-table-sort-indicator i{font-size:.75rem;width:.65rem}.sdc-table-td-val{background:none!important;height:100%;padding:1rem;justify-content:end;border-left:1px solid var(--sdc-formfield-default-border);display:flex}.sdc-table-td-mobile{border-top:1px solid var(--sdc-formfield-default-border);display:flex;align-items:center;padding-left:10px}.sdc-table.sdc-table-stack thead{display:none}.sdc-table.sdc-table-stack .sdc-table-grid,.sdc-table.sdc-table-stack .sdc-table-grid tbody,.sdc-table.sdc-table-stack .sdc-table-grid tr,.sdc-table.sdc-table-stack .sdc-table-grid td{display:block;width:100%;box-sizing:border-box}.sdc-table.sdc-table-stack .sdc-table-grid tr{border-top:1px solid var(--sdc-formfield-default-border);background:var(--sdc-table-bg-card)}.sdc-table.sdc-table-stack .sdc-table-td{position:relative;padding:0;border-bottom:1px solid var(--sdc-table-border-gray);display:grid!important;grid-template-columns:45% 55%;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table.sdc-table-stack .sdc-table-td:before{content:attr(data-title);font-weight:600;padding:var(--sdc-table-padding-cell) .5rem var(--sdc-table-padding-cell) var(--sdc-table-padding-cell);border-right:0px solid var(--sdc-formfield-default-border);word-break:break-word}.sdc-table.sdc-table-stack .sdc-table-td>*{grid-column:2;min-width:0}.sdc-table.sdc-table-stack .sdc-table-grid tr .sdc-table-td:last-child{border-bottom:0}.sdc-table.sdc-table-stack .sdc-table-sort-icons{flex-direction:column;line-height:.8}.sdc-table-paginator{border-top:1px solid var(--sdc-table-border-gray)}::ng-deep .p-paginator .p-paginator-next{border-width:1px 1px 1px 1px!important}}@media (min-width: 750px){.sdc-table-tag{font-size:.8rem;padding:.6rem 1.7rem}.sdc-table-grid thead th+th{border-left:1px solid var(--sdc-formfield-default-border)}}.sdc-table{width:100%;box-sizing:border-box;overflow:hidden;background:var(--sdc-table-bg-card)}.sdc-table-caption{width:100%;justify-content:end;display:flex;padding:.75rem 0}.sdc-table-grid{width:100%;border-collapse:collapse;table-layout:fixed}thead th{padding:var(--sdc-table-padding-cell);background:var(--sdc-table-bg-card);border-bottom:1px solid var(--sdc-formfield-default-border);-webkit-user-select:none;user-select:none;transition:background var(--sdc-table-transition-fast),border var(--sdc-table-transition-fast)}thead th.sdc-table-sortable{cursor:pointer}thead th.sdc-table-sortable:hover{background:var(--sdc-table-th-hover-bg)}thead th.sdc-table-is-selected{background:var(--sdc-table-th-selected-bg)!important}.sdc-table-sort-neutral{color:var(--sdc-table-sort-neutral)}.sdc-table-sort-active{color:var(--sdc-table-sort-active)}.sdc-table-th-inner{display:flex;align-items:center;gap:var(--sdc-table-gap-th-inner)}.sdc-table-sort-icons i{font-size:inherit;transition:color var(--sdc-table-transition-fast),transform var(--sdc-table-transition-fast),opacity var(--sdc-table-transition-fast)}tbody td{padding:var(--sdc-table-padding-cell);border-bottom:1px solid var(--sdc-table-border-gray);vertical-align:middle}.sdc-table-tags{display:flex;flex-wrap:wrap;gap:var(--sdc-table-gap-tags)}.sdc-table-tag{display:inline-flex;align-items:center;gap:.25rem;border-radius:6px;background:var(--sdc-table-tag-bg)}.sdc-table-sort-indicator{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:1.7rem}.sdc-table-sort-indicator i{width:.75rem;text-align:center}.sdc-table-sort-indicator-placeholder{width:1.4rem;height:1rem;display:inline-block}.sdc-table-sort-overlay{position:relative}.sdc-table-paginator{padding:.5rem 0}.sdc-table-button,.sdc-table-checkbox{display:flex;align-items:center;justify-content:center}.sdc-table-empty-state{display:block;padding:12rem}.sdc-table-loading-state{background:var(--sdc-table-bg-loading);display:block;border-bottom:1px solid var(--sdc-formfield-default-border);min-width:10rem;padding:18.8rem 0rem}thead th.sdc-table-th-checkbox{position:relative}thead th.sdc-table-th-checkbox .sdc-table-th-center{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}thead th.sdc-table-th-checkbox .sdc-table-th-center input{pointer-events:auto}thead th.sdc-table-th-checkbox .sdc-table-th-inner{padding-right:.5rem}thead th.sdc-table-th-checkbox .sdc-table-th-label,thead .sdc-table-th-label{color:#333!important;white-space:nowrap}.sdc-table-paginator{display:flex;width:100%;justify-content:space-between;align-items:center;padding:.75em;box-sizing:border-box}.sdc-table-paginator ::ng-deep .p-paginator{text-align:left;background:var(--sdc-table-bg-card);border-color:transparent;gap:0;display:flex}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-element{font-weight:400}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-right-content{margin-left:auto;height:100%;padding-top:5px;padding-left:20px}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first .p-paginator-icon,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last .p-paginator-icon{font-size:12px}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages{padding:0;margin:0;white-space:nowrap;gap:0}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page-selected{color:#fff!important;border:1px solid #428bca;background:#428bca}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page-selected:hover{background-color:#6aa3d5!important;border-color:#6aa3d5!important}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-prev,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-next,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page{padding:.4em .25em;color:#428bca;transition:background-color .2s ease-out;border-radius:0;border:1px solid #cccccc;border-width:1px 0 1px 1px;text-align:center;min-width:var(--sdc-table-paginator-size);height:var(--sdc-table-paginator-size);margin:0}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-prev:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-next:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page:hover{background-color:#f7f7f7}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first.p-highlight:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-prev.p-highlight:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-next.p-highlight:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last.p-highlight:hover,.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-pages .p-paginator-page.p-highlight:hover{background-color:#6aa3d5;border-color:#6aa3d5}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-first{border-radius:4px 0 0 4px}.sdc-table-paginator ::ng-deep .p-paginator .p-paginator-last{border-right-width:1px;border-radius:0 4px 4px 0}.sdc-table-paginator ::ng-deep .p-select{margin-left:34px}.sdc-table-paginator ::ng-deep .p-select-label{height:34px;padding:6px 17px}.sdc-table-paginator ::ng-deep .p-select-dropdown{border-left:1px solid #cccccc}\n"] }]
|
|
248
|
+
}], ctorParameters: () => [], propDecorators: { cols: [{
|
|
249
|
+
type: Input,
|
|
250
|
+
args: [{ required: true }]
|
|
251
|
+
}], data: [{
|
|
252
|
+
type: Input,
|
|
253
|
+
args: [{ required: true }]
|
|
254
|
+
}], loading: [{
|
|
255
|
+
type: Input,
|
|
256
|
+
args: [{ required: false }]
|
|
257
|
+
}], config: [{
|
|
258
|
+
type: Input,
|
|
259
|
+
args: [{ required: false }]
|
|
260
|
+
}], action: [{
|
|
261
|
+
type: Output
|
|
262
|
+
}] } });
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQTZDLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sRUFBRSxxQkFBcUIsRUFBa0UsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2SSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdEUsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7Ozs7QUFVdEYsTUFBTSxPQUFPLGNBQWM7SUFDRSxJQUFJLEdBQWtCLEVBQUUsQ0FBQztJQUN6QixJQUFJLEdBQVEsRUFBRSxDQUFDO0lBQ2QsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUN6QixNQUFNLEdBQWlCLHFCQUFxQixDQUFDO0lBRS9ELE1BQU0sR0FBRyxJQUFJLFlBQVksRUFJL0IsQ0FBQztJQUVjLFFBQVEsR0FBWSxRQUFRLEVBQUUsQ0FBQztJQUUvQixVQUFVLEdBQUcsUUFBUSxDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQzNFLGFBQWEsR0FBRyxRQUFRLENBQVUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUM7SUFFbEYsa0JBQWtCLEdBQUcsUUFBUSxDQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkcsaUJBQWlCLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLFdBQVcsR0FBRyxRQUFRLENBQW9CLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLGlCQUFpQixHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLFVBQVUsR0FBRyxRQUFRLENBQVMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkUsU0FBUyxHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVyRSxPQUFPLEdBQUcsTUFBTSxDQUFlLHFCQUFxQixDQUFDLENBQUM7SUFDdEQsWUFBWSxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUNsQyxTQUFTLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUN4QyxTQUFTLEdBQUcsTUFBTSxDQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFNBQVMsR0FBRyxNQUFNLENBQU0sRUFBRSxDQUFDLENBQUM7SUFDNUIsS0FBSyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxQixJQUFJLEdBQUcsTUFBTSxDQUFTLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7SUFFcEYsT0FBTyxDQUEwQyxJQUFPO1FBQ2hFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFRLENBQUM7SUFDckQsQ0FBQztJQUVTLE1BQU0sQ0FBQyxHQUFNLEVBQUUsR0FBZ0I7UUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQU0sQ0FBUSxDQUFDO1FBQzNDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQThCLENBQUM7UUFDdEUsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0QsQ0FBQztJQUVrQixZQUFZLEdBQUcsUUFBUSxDQUFNLEdBQUcsRUFBRTtRQUNuRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxDQUFTLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQU0sQ0FBYSxDQUFDO1FBQzFILElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRTFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNkLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVnQixVQUFVLEdBQUcsUUFBUSxDQUFNLEdBQUcsRUFBRTtRQUNqRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxDQUFDO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFFdEMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksSUFBSTtnQkFBRSxPQUFPLENBQUMsQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBSSxJQUFJO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDOUIsSUFBSSxFQUFFLElBQUksSUFBSTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM3QixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQy9FLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVnQixZQUFZLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVoRSxRQUFRLEdBQUcsUUFBUSxDQUFNLEdBQUcsRUFBRTtRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUssVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUV4QixnQkFBZ0IsQ0FBQztJQUVqQixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztZQUMzQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVTLFlBQVksQ0FBQyxPQUFnQjtRQUNyQyxNQUFNLElBQUksR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRO1lBQ3RDLENBQUMsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFFLE9BQWUsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFUyxhQUFhLENBQUMsR0FBYTtRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRVMsVUFBVSxDQUFDLEtBQWEsRUFBRSxVQUFtQixJQUFJO1FBQ3pELElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNyQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQixJQUFJLEtBQUssS0FBSyxDQUFDO2dCQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ25DLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFpQjtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFZO1FBQzFCLE9BQVEsS0FBSyxDQUFDLE1BQTJCLENBQUMsT0FBTyxDQUFDO0lBQ3BELENBQUM7SUFFUyxXQUFXLENBQUMsR0FBTSxFQUFFLE9BQWdCO1FBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRVMsYUFBYSxDQUFDLEdBQU07UUFDNUIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFUyxtQkFBbUI7UUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRVMsQ0FBQyxHQUFHLENBQUMsR0FBTSxFQUFFLElBQVksRUFBVyxFQUFFLENBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFVLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQzVDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQUUsT0FBUSxHQUErQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVBLFVBQVUsQ0FBQyxLQUFjLEVBQUUsVUFBa0IsV0FBVztRQUNoRSxJQUFJLENBQUM7WUFDSCxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBMEIsQ0FBQyxDQUFDLENBQUM7UUFDekYsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVTLGNBQWMsQ0FBQyxLQUFjLEVBQUUsV0FBbUIsS0FBSztRQUMvRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRCxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxHQUFHLEdBQWlCLElBQUksQ0FBQyxNQUFNLElBQUkscUJBQXFCLENBQUM7UUFDL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDZixHQUFHLHFCQUFxQjtZQUN4QixHQUFHLEdBQUc7WUFDTixNQUFNLEVBQUUsRUFBRSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDMUQsS0FBSyxFQUFFLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ3ZELEtBQUssRUFBRSxFQUFFLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRTtZQUN2RCxVQUFVLEVBQUUsRUFBRSxHQUFHLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDdEUsS0FBSyxFQUFFO2dCQUNMLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDOUYsTUFBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUN4RixHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUU7YUFDaEY7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZSxDQUFDLEdBQVk7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQVUsRUFBRSxDQUFVLEVBQVcsRUFBRTtZQUNuRCxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxLQUFLLEdBQUcsQ0FBVyxDQUFDO2dCQUMxQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO29CQUFFLE9BQU87Z0JBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQTRCLENBQUM7Z0JBQ3ZDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQTBCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUN4RSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQixPQUFPLEdBQUcsQ0FBQztnQkFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxVQUFVLElBQUksT0FBTyxDQUFDLEtBQUssV0FBVztnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUMxRSxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLFFBQW9ELENBQUMsQ0FBQztRQUN6RixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVTLGFBQWEsQ0FBQyxHQUFNLEVBQUUsR0FBZ0I7UUFDOUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQXVCLENBQUM7UUFDakUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVMsU0FBUyxDQUFDLEdBQU0sRUFBRSxHQUFnQixFQUFFLEdBQVE7UUFDcEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFXLENBQUM7UUFDOUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRCxPQUFPO1lBQ0wsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLENBQUMsR0FBRyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDM0IsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUMxQixNQUFNO1NBQ1AsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO3dHQXZQVSxjQUFjOzRGQUFkLGNBQWMsdU1DbkIzQiw2K1BBK0tjLHM1T0RoS0YsWUFBWSx1YUFBRSxrQkFBa0Isb0hBQUUsZUFBZSw2bkJBQUUsZUFBZSw4SkFBRSxrQkFBa0IseUtBQUUsZ0JBQWdCOzs0RkFJdkcsY0FBYztrQkFQMUIsU0FBUzsrQkFDRSxXQUFXLGNBQ1QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUM7d0RBS3hGLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNHLE9BQU87c0JBQWxDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUNFLE1BQU07c0JBQWpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUVoQixNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBEb0NoZWNrIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBERUZBVUxUX1RBQkxFX09QVElPTlMsIFJvd0Jhc2UsIFNvcnRPcmRlciwgVGFibGVDb2x1bW4sIFRhYmxlQ29sdW1uVHlwZSwgVGFibGVPcHRpb25zIH0gZnJvbSAnbGliL3NyYy9jb3JlL3R5cGVzL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnbGliL3NyYy9jb3JlL3V0aWxzL2xheW91dC51dGlsJztcbmltcG9ydCB7IFNlYXJjaGJveENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaGJveC9zZWFyY2hib3guY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaFRyaWdnZXJNb2RlIH0gZnJvbSAnbGliL3NyYy9jb3JlL3R5cGVzL3NlYXJjaGJveC50eXBlJztcbmltcG9ydCB7IFBhZ2luYXRvck1vZHVsZSwgUGFnaW5hdG9yU3RhdGUgfSBmcm9tICdwcmltZW5nL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9lbXB0eS1zdGF0ZSc7XG5pbXBvcnQgeyBMb2FkaW5nU3RhdGVNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvYWRpbmctc3RhdGUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NkYy10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNlYXJjaGJveENvbXBvbmVudCwgUGFnaW5hdG9yTW9kdWxlLCBCdXR0b25Db21wb25lbnQsIExvYWRpbmdTdGF0ZU1vZHVsZSwgRW1wdHlTdGF0ZU1vZHVsZV0sXG4gIHN0eWxlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgZXh0ZW5kcyBSb3dCYXNlID0gUm93QmFzZT4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIERvQ2hlY2sge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb2xzOiBUYWJsZUNvbHVtbltdID0gW107XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGRhdGE6IFRbXSA9IFtdO1xuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UgfSkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoeyByZXF1aXJlZDogZmFsc2UgfSkgY29uZmlnOiBUYWJsZU9wdGlvbnMgPSBERUZBVUxUX1RBQkxFX09QVElPTlM7XG5cbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGNvbHVtbjogVGFibGVDb2x1bW47XG4gICAgcm93OiBUO1xuICAgIHZhbHVlOiB1bmtub3duO1xuICB9PigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbiA9IGlzTW9iaWxlKCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dTZWFyY2ggPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5zZWFyY2g/LnNob3cgPz8gZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1BhZ2luYXRvciA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHRoaXMub3B0aW9ucygpLnBhZ2luYXRpb24/LnNob3cgPz8gZmFsc2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSByb3dzUGVyUGFnZU9wdGlvbnMgPSBjb21wdXRlZDxudW1iZXJbXT4oKCkgPT4gdGhpcy5vcHRpb25zKCkucGFnaW5hdGlvbj8ucm93c1BlclBhZ2VPcHRpb25zID8/IFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaFBsYWNlaG9sZGVyID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5zZWFyY2g/LnBsYWNlaG9sZGVyID8/ICcnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyaWdnZXJNb2RlID0gY29tcHV0ZWQ8U2VhcmNoVHJpZ2dlck1vZGU+KCgpID0+IHRoaXMub3B0aW9ucygpLnNlYXJjaD8udHlwZSA/PyAnYXV0bycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG90YWxSZWNvcmRzTGFiZWwgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHRoaXMub3B0aW9ucygpLnRhYmxlPy50b3RhbFJlY29yZHNMYWJlbCA/PyAnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBlbXB0eVRpdGxlID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5lbXB0eT8udGl0bGUgPz8gJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW1wdHlUZXh0ID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLm9wdGlvbnMoKS5lbXB0eT8udGV4dCA/PyAnJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSBzaWduYWw8VGFibGVPcHRpb25zPihERUZBVUxUX1RBQkxFX09QVElPTlMpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsRmlsdGVyID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc29ydEZpZWxkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc29ydE9yZGVyID0gc2lnbmFsPFNvcnRPcmRlcj4oMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3Rpb24gPSBzaWduYWw8VFtdPihbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmaXJzdCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm93cyA9IHNpZ25hbDxudW1iZXI+KERFRkFVTFRfVEFCTEVfT1BUSU9OUy5wYWdpbmF0aW9uPy5yb3dzUGVyUGFnZSA/PyAxMCk7XG5cbiAgcHJvdGVjdGVkIGNlbGxDZmc8SyBleHRlbmRzICdjaGVja2JveCcgfCAnYnV0dG9uJyB8ICd0YWcnPihraW5kOiBLKTogYW55IHtcbiAgICByZXR1cm4gKHRoaXMub3B0aW9ucygpLmNlbGxzPy5ba2luZF0gPz8ge30pIGFzIGFueTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0YWdzT2Yocm93OiBULCBjb2w6IFRhYmxlQ29sdW1uKTogYW55W10ge1xuICAgIGNvbnN0IHJhdyA9IHRoaXMuXyhyb3csIGNvbC5maWVsZCEpIGFzIGFueTtcbiAgICBjb25zdCBhcnIgPSBBcnJheS5pc0FycmF5KHJhdykgPyByYXcgOiBbXTtcbiAgICBjb25zdCBtYXggPSB0aGlzLm9wdGlvbnMoKS5jZWxscz8udGFnPy5tYXhJdGVtcyBhcyBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiBtYXggPT09ICdudW1iZXInID8gYXJyLnNsaWNlKDAsIG1heCkgOiBhcnI7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyZWREYXRhID0gY29tcHV0ZWQ8VFtdPigoKSA9PiB7XG4gICAgY29uc3QgcSA9IHRoaXMuZ2xvYmFsRmlsdGVyKCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCFxKSByZXR1cm4gdGhpcy5kYXRhO1xuXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5jb2xzLmZpbHRlcihjID0+IChjIGFzIGFueSkuc2VhcmNoYWJsZSA/PyB0cnVlKS5maWx0ZXIoYyA9PiAhIWMuZmllbGQpLm1hcChjID0+IGMuZmllbGQhKSBhcyBzdHJpbmdbXTtcbiAgICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRoaXMuZGF0YTtcblxuICAgIHJldHVybiB0aGlzLmRhdGEuZmlsdGVyKHJvdyA9PlxuICAgICAgZmllbGRzLnNvbWUoZiA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLl8ocm93LCBmKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHJldHVybiB2LmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpO1xuICAgICAgICByZXR1cm4gU3RyaW5nKHYgPz8gJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSk7XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzb3J0ZWREYXRhID0gY29tcHV0ZWQ8VFtdPigoKSA9PiB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnNvcnRGaWVsZCgpO1xuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5zb3J0T3JkZXIoKTtcbiAgICBjb25zdCBhcnIgPSBbLi4udGhpcy5maWx0ZXJlZERhdGEoKV07XG4gICAgaWYgKCFmaWVsZCB8fCBvcmRlciA9PT0gMCkgcmV0dXJuIGFycjtcblxuICAgIHJldHVybiBhcnIuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgdmEgPSB0aGlzLl8oYSwgZmllbGQpO1xuICAgICAgY29uc3QgdmIgPSB0aGlzLl8oYiwgZmllbGQpO1xuICAgICAgaWYgKHZhID09IG51bGwgJiYgdmIgPT0gbnVsbCkgcmV0dXJuIDA7XG4gICAgICBpZiAodmEgPT0gbnVsbCkgcmV0dXJuIC1vcmRlcjtcbiAgICAgIGlmICh2YiA9PSBudWxsKSByZXR1cm4gb3JkZXI7XG4gICAgICBpZiAodHlwZW9mIHZhID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmIgPT09ICdudW1iZXInKSByZXR1cm4gKHZhIC0gdmIpICogb3JkZXI7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhKS5sb2NhbGVDb21wYXJlKFN0cmluZyh2YikpICogb3JkZXI7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0b3RhbFJlY29yZHMgPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHRoaXMuc29ydGVkRGF0YSgpLmxlbmd0aCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2VEYXRhID0gY29tcHV0ZWQ8VFtdPigoKSA9PiB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLmZpcnN0KCk7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnJvd3MoKTtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWREYXRhKCkuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH0pO1xuXG4gIHByaXZhdGUgY29uZmlnSGFzaCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkge1xuICAgICAgdGhpcy5hcHBseUNvbmZpZ09wdGlvbnMoKTtcbiAgICAgIHRoaXMucm93cy5zZXQodGhpcy5vcHRpb25zKCkucGFnaW5hdGlvbj8ucm93c1BlclBhZ2UgPz8gMTApO1xuICAgICAgdGhpcy5maXJzdC5zZXQoMCk7XG4gICAgICB0aGlzLmNvbmZpZ0hhc2ggPSB0aGlzLnN0YWJsZVN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHRIYXNoID0gdGhpcy5zdGFibGVTdHJpbmdpZnkodGhpcy5jb25maWcpO1xuICAgIGlmIChuZXh0SGFzaCAhPT0gdGhpcy5jb25maWdIYXNoKSB7XG4gICAgICB0aGlzLmNvbmZpZ0hhc2ggPSBuZXh0SGFzaDtcbiAgICAgIHRoaXMuYXBwbHlDb25maWdPcHRpb25zKCk7XG4gICAgICB0aGlzLnJvd3Muc2V0KHRoaXMub3B0aW9ucygpLnBhZ2luYXRpb24/LnJvd3NQZXJQYWdlID8/IDEwKTtcbiAgICAgIHRoaXMuZmlyc3Quc2V0KDApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvblNlYXJjaFRlcm0oZXZPclZhbDogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHRlcm0gPSB0eXBlb2YgZXZPclZhbCA9PT0gJ3N0cmluZydcbiAgICAgID8gZXZPclZhbFxuICAgICAgOiAoZXZPclZhbCBhcyBhbnkpPy5kZXRhaWwgPz8gJyc7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXIuc2V0KFN0cmluZyh0ZXJtKSk7XG4gICAgdGhpcy5maXJzdC5zZXQoMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25DbGVhclNlYXJjaChfZXY/OiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXIuc2V0KCcnKTtcbiAgICB0aGlzLmZpcnN0LnNldCgwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTb3J0KGZpZWxkOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuc29ydEZpZWxkKCkgIT09IGZpZWxkKSB7XG4gICAgICB0aGlzLnNvcnRGaWVsZC5zZXQoZmllbGQpO1xuICAgICAgdGhpcy5zb3J0T3JkZXIuc2V0KDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBvcmRlciA9IHRoaXMuc29ydE9yZGVyKCk7XG4gICAgICBpZiAob3JkZXIgPT09IDEpIHRoaXMuc29ydE9yZGVyLnNldCgtMSk7XG4gICAgICBlbHNlIGlmIChvcmRlciA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5zb3J0T3JkZXIuc2V0KDApO1xuICAgICAgICB0aGlzLnNvcnRGaWVsZC5zZXQobnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvcnRPcmRlci5zZXQoMSk7XG4gICAgICAgIHRoaXMuc29ydEZpZWxkLnNldChmaWVsZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZmlyc3Quc2V0KDApO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGU6IFBhZ2luYXRvclN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5maXJzdC5zZXQoZS5maXJzdCA/PyAwKTtcbiAgICB0aGlzLnJvd3Muc2V0KGUucm93cyA/PyB0aGlzLm9wdGlvbnMoKS5wYWdpbmF0aW9uPy5yb3dzUGVyUGFnZSA/PyAxMCk7XG4gIH1cblxuICBnZXRDaGVja2VkVmFsdWUoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRvZ2dsZVJvdyhyb3c6IFQsIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBzZWwgPSBuZXcgU2V0KHRoaXMuc2VsZWN0aW9uKCkpO1xuICAgIGNoZWNrZWQgPyBzZWwuYWRkKHJvdykgOiBzZWwuZGVsZXRlKHJvdyk7XG4gICAgdGhpcy5zZWxlY3Rpb24uc2V0KFsuLi5zZWxdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1Jvd1NlbGVjdGVkKHJvdzogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbigpLmluY2x1ZGVzKHJvdyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlU2VsZWN0UGFnZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsID0gbmV3IFNldCh0aGlzLnNlbGVjdGlvbigpKTtcbiAgICB0aGlzLnBhZ2VEYXRhKCkuZm9yRWFjaChyID0+IChjaGVja2VkID8gc2VsLmFkZChyKSA6IHNlbC5kZWxldGUocikpKTtcbiAgICB0aGlzLnNlbGVjdGlvbi5zZXQoWy4uLnNlbF0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzUGFnZUZ1bGx5U2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmlzaWJsZSA9IHRoaXMucGFnZURhdGEoKTtcbiAgICByZXR1cm4gdmlzaWJsZS5sZW5ndGggPiAwICYmIHZpc2libGUuZXZlcnkociA9PiB0aGlzLnNlbGVjdGlvbigpLmluY2x1ZGVzKHIpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfID0gKG9iajogVCwgcGF0aDogc3RyaW5nKTogdW5rbm93biA9PlxuICAgIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2U8dW5rbm93bj4oKGFjYywgcGFydCkgPT4ge1xuICAgICAgaWYgKGFjYyAhPT0gbnVsbCAmJiB0eXBlb2YgYWNjID09PSAnb2JqZWN0JykgcmV0dXJuIChhY2MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3BhcnRdO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LCBvYmopO1xuXG4gIHByb3RlY3RlZCBmb3JtYXREYXRlKHZhbHVlOiB1bmtub3duLCBfZm9ybWF0OiBzdHJpbmcgPSAnc2hvcnREYXRlJyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh1bmRlZmluZWQpLmZvcm1hdChuZXcgRGF0ZSh2YWx1ZSBhcyB1bmtub3duIGFzIHN0cmluZykpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSA/PyAnJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGZvcm1hdEN1cnJlbmN5KHZhbHVlOiB1bmtub3duLCBjdXJyZW5jeTogc3RyaW5nID0gJ0JSTCcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG4gPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmIChOdW1iZXIuaXNOYU4obikpIHJldHVybiBTdHJpbmcodmFsdWUgPz8gJycpO1xuICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeSB9KS5mb3JtYXQobik7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29uZmlnT3B0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBjZmc6IFRhYmxlT3B0aW9ucyA9IHRoaXMuY29uZmlnIHx8IERFRkFVTFRfVEFCTEVfT1BUSU9OUztcbiAgICB0aGlzLm9wdGlvbnMuc2V0KHtcbiAgICAgIC4uLkRFRkFVTFRfVEFCTEVfT1BUSU9OUyxcbiAgICAgIC4uLmNmZyxcbiAgICAgIHNlYXJjaDogeyAuLi5ERUZBVUxUX1RBQkxFX09QVElPTlMuc2VhcmNoLCAuLi5jZmcuc2VhcmNoIH0sXG4gICAgICB0YWJsZTogeyAuLi5ERUZBVUxUX1RBQkxFX09QVElPTlMudGFibGUsIC4uLmNmZy50YWJsZSB9LFxuICAgICAgZW1wdHk6IHsgLi4uREVGQVVMVF9UQUJMRV9PUFRJT05TLmVtcHR5LCAuLi5jZmcuZW1wdHkgfSxcbiAgICAgIHBhZ2luYXRpb246IHsgLi4uREVGQVVMVF9UQUJMRV9PUFRJT05TLnBhZ2luYXRpb24sIC4uLmNmZy5wYWdpbmF0aW9uIH0sXG4gICAgICBjZWxsczoge1xuICAgICAgICBjaGVja2JveDogeyAuLi4oREVGQVVMVF9UQUJMRV9PUFRJT05TLmNlbGxzPy5jaGVja2JveCA/PyB7fSksIC4uLihjZmcuY2VsbHM/LmNoZWNrYm94ID8/IHt9KSB9LFxuICAgICAgICBidXR0b246IHsgLi4uKERFRkFVTFRfVEFCTEVfT1BUSU9OUy5jZWxscz8uYnV0dG9uID8/IHt9KSwgLi4uKGNmZy5jZWxscz8uYnV0dG9uID8/IHt9KSB9LFxuICAgICAgICB0YWc6IHsgLi4uKERFRkFVTFRfVEFCTEVfT1BUSU9OUy5jZWxscz8udGFnID8/IHt9KSwgLi4uKGNmZy5jZWxscz8udGFnID8/IHt9KSB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhYmxlU3RyaW5naWZ5KG9iajogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcbiAgICBjb25zdCByZXBsYWNlciA9IChfazogc3RyaW5nLCB2OiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gICAgICBpZiAodiAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgYXNPYmogPSB2IGFzIG9iamVjdDtcbiAgICAgICAgaWYgKHNlZW4uaGFzKGFzT2JqKSkgcmV0dXJuO1xuICAgICAgICBzZWVuLmFkZChhc09iaik7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSByZXR1cm4gdjtcbiAgICAgICAgY29uc3QgbyA9IHYgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvKS5zb3J0KCkucmVkdWNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICBhY2Nba2V5XSA9IG9ba2V5XTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHY7XG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiA/PyB7fSwgcmVwbGFjZXIgYXMgKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikgPT4gdW5rbm93bik7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqID8/IHt9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25CdXR0b25DbGljayhyb3c6IFQsIGNvbDogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSAoY29sLmFjdGlvbkZpZWxkID8/IGNvbC5maWVsZCkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHZhbHVlID0ga2V5ID8gdGhpcy5fKHJvdywga2V5KSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLmFjdGlvbi5lbWl0KHsgY29sdW1uOiBjb2wsIHJvdywgdmFsdWUgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnV0dG9uS2V5KHJvdzogVCwgY29sOiBUYWJsZUNvbHVtbiwgb3B0OiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFjdEtleSA9IChjb2wuYWN0aW9uRmllbGQgPz8gY29sLmZpZWxkID8/ICcnKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgYWN0VmFsID0gYWN0S2V5ID8gU3RyaW5nKHRoaXMuXyhyb3csIGFjdEtleSkgPz8gJycpIDogJyc7XG4gICAgcmV0dXJuIFtcbiAgICAgIFN0cmluZyhvcHQ/LmxhYmVsID8/ICcnKSxcbiAgICAgIFN0cmluZyhvcHQ/Lmljb24gPz8gJycpLFxuICAgICAgU3RyaW5nKG9wdD8ucHJpb3JpdHkgPz8gJycpLFxuICAgICAgU3RyaW5nKG9wdD8uc2l6ZSA/PyAnJyksXG4gICAgICBTdHJpbmcob3B0Py50b29sdGlwID8/ICcnKSxcbiAgICAgIGFjdFZhbFxuICAgIF0uam9pbignfCcpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2RjLXRhYmxlXCIgW2NsYXNzLnNkYy10YWJsZS1zdGFja109XCJpc01vYmlsZSA/ICdzdGFjaycgOiAnZ3JpZCdcIlxuICBbY2xhc3Muc2RjLXRhYmxlLWZpbHRlcmVkXT1cIiEhZ2xvYmFsRmlsdGVyKCkudHJpbSgpXCI+XG5cbiAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS1jYXB0aW9uXCIgKm5nSWY9XCJzaG93U2VhcmNoKClcIj5cbiAgICA8ZGl2IFtzdHlsZS53aWR0aF09XCJpc01vYmlsZSA/ICcxMDAlJyA6ICcyMCUnXCI+XG4gICAgICA8c2RjLXNlYXJjaGJveCBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlcigpXCIgW3RyaWdnZXJNb2RlXT1cInRyaWdnZXJNb2RlKClcIlxuICAgICAgICAob25TZWFyY2gpPVwib25TZWFyY2hUZXJtKCRldmVudClcIiAob25DbGVhcik9XCJvbkNsZWFyU2VhcmNoKClcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8dGFibGUgY2xhc3M9XCJzZGMtdGFibGUtZ3JpZFwiPlxuICAgIDx0aGVhZD5cbiAgICAgIDx0cj5cbiAgICAgICAgQGZvciAoY29sIG9mIGNvbHM7IGxldCBpID0gJGluZGV4OyB0cmFjayBpKSB7XG4gICAgICAgIDx0aCBbY2xhc3Muc2RjLXRhYmxlLXRoLWNoZWNrYm94XT1cImNvbC50eXBlID09PSAnY2hlY2tib3gtc2VsZWN0aW9uJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNvcnQoY29sLmZpZWxkISwgY29sLnNvcnRhYmxlICE9PSBmYWxzZSlcIiBbY2xhc3Muc2RjLXRhYmxlLXNvcnRhYmxlXT1cImNvbC5zb3J0YWJsZSAhPT0gZmFsc2VcIlxuICAgICAgICAgIFtjbGFzcy5zZGMtdGFibGUtaXMtc2VsZWN0ZWRdPVwic29ydEZpZWxkKCkgPT09IGNvbC5maWVsZFwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS10aC1pbm5lclwiIFtjbGFzcy5zZGMtdGFibGUtc29ydGFibGVdPVwiY29sLnNvcnRhYmxlICE9PSBmYWxzZVwiPlxuICAgICAgICAgICAgQHN3aXRjaCAoY29sLnR5cGUpIHtcbiAgICAgICAgICAgIEBjYXNlICgnY2hlY2tib3gtc2VsZWN0aW9uJykge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFibGUtdGgtbGFiZWxcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFibGUtdGgtbGFiZWxcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFibGUtc29ydC1pY29ucyBzZGMtdGFibGUtc29ydC1vdmVybGF5XCIgKm5nSWY9XCJjb2wuc29ydGFibGUgIT09IGZhbHNlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic29ydEljb25zVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29sOiBjb2wgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFibGUtdGgtY2VudGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sLnR5cGUgPT09ICdjaGVja2JveC1zZWxlY3Rpb24nICYmIChjZWxsQ2ZnKCdjaGVja2JveCcpLnNlbGVjdEFsbCA/PyB0cnVlKVwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImlzUGFnZUZ1bGx5U2VsZWN0ZWQoKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdFBhZ2UoZ2V0Q2hlY2tlZFZhbHVlKCRldmVudCkpXCIgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cblxuICAgIDx0Ym9keT5cbiAgICAgIEBpZiAobG9hZGluZykgeyB9IEBlbHNlIHtcbiAgICAgIEBmb3IgKHJvdyBvZiBwYWdlRGF0YSgpOyBsZXQgciA9ICRpbmRleDsgdHJhY2sgcikge1xuICAgICAgPHRyPlxuICAgICAgICBAZm9yIChjb2wgb2YgY29sczsgbGV0IGMgPSAkaW5kZXg7IHRyYWNrIGMpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlOyBlbHNlIGRlc2t0b3BDb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy10YWJsZS10ZC1tb2JpbGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic29ydEljb25zVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY29sOiBjb2wgfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJzZGMtdGFibGUtdGQgc2RjLXRhYmxlLXRkYyBzZGMtdGFibGUtbW9iaWxlLXRkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNkYy10YWJsZS10ZC1jaGVja2JveF09XCJjb2wudHlwZSA9PT0gJ2NoZWNrYm94LXNlbGVjdGlvbidcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2RjLXRhYmxlLWlzLXNlbGVjdGVkXT1cInNvcnRGaWVsZCgpID09PSBjb2wuZmllbGRcIiBbYXR0ci5kYXRhLXRpdGxlXT1cImNvbC5oZWFkZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU29ydChjb2wuZmllbGQhLCBjb2wuc29ydGFibGUgIT09IGZhbHNlKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLXRkLXZhbFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2VsbFRwbFwiXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgY29sOiBjb2wgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVza3RvcENvbnRlbnQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwic2RjLXRhYmxlLXRkIHNkYy10YWJsZS10ZGNcIiBbY2xhc3Muc2RjLXRhYmxlLXRkLWNoZWNrYm94XT1cImNvbC50eXBlID09PSAnY2hlY2tib3gtc2VsZWN0aW9uJ1wiXG4gICAgICAgICAgICBbY2xhc3Muc2RjLXRhYmxlLWlzLXNlbGVjdGVkXT1cInNvcnRGaWVsZCgpID09PSBjb2wuZmllbGRcIiBbYXR0ci5kYXRhLXRpdGxlXT1cImNvbC5oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtdGFibGUtdGQtdmFsXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2VsbFRwbFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIGNvbDogY29sIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cblxuICA8cy1lbXB0eS1zdGF0ZSAqbmdJZj1cIiFsb2FkaW5nICYmIG9wdGlvbnMoKS5lbXB0eT8uc2hvdyAhPT0gZmFsc2UgJiYgdG90YWxSZWNvcmRzKCkgPT09IDBcIiBpZD1cIm15LWVtcHR5LXN0YXRlXCJcbiAgICBpY29uQ2xhc3M9XCJmYSBmYS1pbmJveFwiIFt0aXRsZV09XCJlbXB0eVRpdGxlKClcIiBbZGVzY3JpcHRpb25dPVwiZW1wdHlUZXh0KClcIiBjbGFzcz1cInNkYy10YWJsZS1lbXB0eS1zdGF0ZVwiPlxuICA8L3MtZW1wdHktc3RhdGU+XG5cbiAgPHMtbG9hZGluZy1zdGF0ZSAqbmdJZj1cImxvYWRpbmdcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgW2Jsb2NrV2luZG93XT1cImZhbHNlXCIgY2xhc3M9XCJzZGMtdGFibGUtbG9hZGluZy1zdGF0ZVwiPlxuICA8L3MtbG9hZGluZy1zdGF0ZT5cblxuICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLXBhZ2luYXRvclwiICpuZ0lmPVwic2hvd1BhZ2luYXRvcigpXCI+XG4gICAgPHAtcGFnaW5hdG9yIFtkcm9wZG93bkFwcGVuZFRvXT1cIidib2R5J1wiIFtmaXJzdF09XCJmaXJzdCgpXCIgW3Jvd3NdPVwicm93cygpXCIgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHMoKVwiXG4gICAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cImlzTW9iaWxlID8gdW5kZWZpbmVkIDogcm93c1BlclBhZ2VPcHRpb25zKClcIiBbc2hvd0ZpcnN0TGFzdEljb25dPVwiIWlzTW9iaWxlXCJcbiAgICAgIChvblBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkcm9wZG93bmljb25cIj48aSBjbGFzcz1cImZhcyBmYS1jYXJldC1kb3duXCI+PC9pPjwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZmlyc3RwYWdlbGlua2ljb25cIj48aSBjbGFzcz1cImZhcyBmYS1zdGVwLWZvcndhcmQgZmEtcm90YXRlLTE4MFwiPjwvaT48L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInByZXZpb3VzcGFnZWxpbmtpY29uXCI+PGkgY2xhc3M9XCJmYXMgZmEtY2FyZXQtbGVmdFwiPjwvaT48L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIm5leHRwYWdlbGlua2ljb25cIj48aSBjbGFzcz1cImZhcyBmYS1jYXJldC1yaWdodFwiPjwvaT48L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxhc3RwYWdlbGlua2ljb25cIj48aSBjbGFzcz1cImZhcyBmYS1zdGVwLWZvcndhcmRcIj48L2k+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtcGFnaW5hdG9yPlxuXG4gICAgPHNwYW4gKm5nSWY9XCIhaXNNb2JpbGVcIj5cbiAgICAgIHt7IHRvdGFsUmVjb3Jkc0xhYmVsKCkgfX06IHt7IHRvdGFsUmVjb3JkcygpIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI2NlbGxUcGwgbGV0LXJvdyBsZXQtY29sPVwiIGNvbFwiPlxuICAgIEBzd2l0Y2ggKGNvbC50eXBlKSB7XG4gICAgQGNhc2UgKCdjaGVja2JveC1zZWxlY3Rpb24nKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNlbGxDZmcoJ2NoZWNrYm94JykgYXMgY2hlY2tib3hPcHRpb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLWNoZWNrYm94XCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIiAoY2hhbmdlKT1cIm9uVG9nZ2xlUm93KHJvdywgZ2V0Q2hlY2tlZFZhbHVlKCRldmVudCkpXCIgLz5cbiAgICAgICAgPGxhYmVsPnt7IF8ocm93LCBjb2wuZmllbGQpIH19PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIEBjYXNlICgnZGF0ZScpIHsge3sgZm9ybWF0RGF0ZShfKHJvdywgY29sLmZpZWxkKSwgY29sLmZvcm1hdCB8fCAnc2hvcnREYXRlJykgfX0gfVxuXG4gICAgQGNhc2UgKCdjdXJyZW5jeScpIHsge3sgZm9ybWF0Q3VycmVuY3koXyhyb3csIGNvbC5maWVsZCksIGNvbC5mb3JtYXQgfHwgJ0JSTCcpIH19IH1cblxuICAgIEBjYXNlICgndGFnJykge1xuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsQ2ZnKCd0YWcnKSBhcyB0YWdPcHRpb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLXRhZ3NcIj5cbiAgICAgICAgQGZvciAodGFnIG9mIHRhZ3NPZihyb3csIGNvbCk7IGxldCB0ID0gJGluZGV4OyB0cmFjayB0KSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLXRhYmxlLXRhZ1wiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRhZ09wdGlvbnMuYmFja2dyb3VuZENvbG9yIHx8IG51bGxcIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0YWdPcHRpb25zLmNvbG9yIHx8IG51bGxcIiBbYXR0ci50aXRsZV09XCJ0YWdPcHRpb25zLnRvb2x0aXBcIj5cbiAgICAgICAgICA8aSAqbmdJZj1cInRhZ09wdGlvbnMuaWNvblwiIFtjbGFzc109XCJ0YWdPcHRpb25zLmljb25cIj48L2k+XG4gICAgICAgICAge3sgdGFnIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICBAY2FzZSAoJ2J1dHRvbicpIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjZWxsQ2ZnKCdidXR0b24nKSBhcyBidXR0b25PcHRpb25zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IF9fayBvZiBbYnV0dG9uS2V5KHJvdywgY29sLCBidXR0b25PcHRpb25zKV1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLXRhYmxlLWJ1dHRvblwiPlxuICAgICAgICAgICAgPHNkYy1idXR0b25cbiAgICAgICAgICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDcwJTtcIlxuXG4gICAgICAgICAgICAgIFtzaXplXT1cImJ1dHRvbk9wdGlvbnMuc2l6ZVwiXG4gICAgICAgICAgICAgIFtwcmlvcml0eV09XCJidXR0b25PcHRpb25zLnByaW9yaXR5IHx8ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgIFtpY29uXT1cImJ1dHRvbk9wdGlvbnMuaWNvblwiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJidXR0b25PcHRpb25zLmxhYmVsXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbk9wdGlvbnMuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiYnV0dG9uT3B0aW9ucy50b29sdGlwXCJcblxuICAgICAgICAgICAgICBbYXR0ci5zaXplXT1cImJ1dHRvbk9wdGlvbnMuc2l6ZVwiXG4gICAgICAgICAgICAgIFthdHRyLnByaW9yaXR5XT1cImJ1dHRvbk9wdGlvbnMucHJpb3JpdHkgfHwgJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgW2F0dHIuc2V2ZXJpdHldPVwiYnV0dG9uT3B0aW9ucy5wcmlvcml0eSB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgICAgICBbYXR0ci5pY29uXT1cImJ1dHRvbk9wdGlvbnMuaWNvblwiXG4gICAgICAgICAgICAgIFthdHRyLmxhYmVsXT1cImJ1dHRvbk9wdGlvbnMubGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJidXR0b25PcHRpb25zLmRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiYnV0dG9uT3B0aW9ucy50b29sdGlwIHx8IG51bGxcIlxuXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEta2V5XT1cIl9fa1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25PcHRpb25zLmRpc2FibGVkID8gbnVsbCA6IG9uQnV0dG9uQ2xpY2socm93LCBjb2wpXCI+XG4gICAgICAgICAgICA8L3NkYy1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZhdWx0IHsge3sgXyhyb3csIGNvbC5maWVsZCkgfX0gfVxuICAgIH1cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NvcnRJY29uc1RwbCBsZXQtY29sPVwiY29sXCI+XG4gIDxzcGFuICpuZ0lmPVwiY29sLnNvcnRhYmxlICE9PSBmYWxzZSAmJiBjb2wudHlwZSAhPT0gJ2NoZWNrYm94LXNlbGVjdGlvbidcIiBjbGFzcz1cInNkYy10YWJsZS1zb3J0LWluZGljYXRvclwiPlxuICAgIDxpICpuZ0lmPVwic29ydEZpZWxkKCkgIT09IGNvbC5maWVsZFwiIGNsYXNzPVwiZmFzIGZhLXNvcnQtYWx0IHNkYy10YWJsZS1zb3J0LW5ldXRyYWxcIj48L2k+XG4gICAgPGkgKm5nSWY9XCJzb3J0RmllbGQoKSA9PT0gY29sLmZpZWxkICYmIHNvcnRPcmRlcigpID09PSAxXCJcbiAgICAgIGNsYXNzPVwiZmFzIGZhLXNvcnQtYW1vdW50LXVwLWFsdCBzZGMtdGFibGUtc29ydC1hY3RpdmVcIj48L2k+XG4gICAgPGkgKm5nSWY9XCJzb3J0RmllbGQoKSA9PT0gY29sLmZpZWxkICYmIHNvcnRPcmRlcigpID09PSAtMVwiXG4gICAgICBjbGFzcz1cImZhcyBmYS1zb3J0LWFtb3VudC1kb3duIHNkYy10YWJsZS1zb3J0LWFjdGl2ZVwiPjwvaT5cbiAgPC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cImNvbC5zb3J0YWJsZSA9PT0gZmFsc2UgfHwgY29sLnR5cGUgPT09ICdjaGVja2JveC1zZWxlY3Rpb24nXCJcbiAgICBjbGFzcz1cInNkYy10YWJsZS1zb3J0LWluZGljYXRvciBzZGMtdGFibGUtc29ydC1pbmRpY2F0b3ItcGxhY2Vob2xkZXJcIj48L3NwYW4+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -18,7 +18,7 @@ export class TextboxComponent extends InputsComponent {
|
|
|
18
18
|
useExisting: forwardRef(() => TextboxComponent),
|
|
19
19
|
multi: true
|
|
20
20
|
}
|
|
21
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"
|
|
21
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"sdc-textbox\">\n <div *ngIf=\"label || infoIcon\" class=\"flex align-items-center\">\n <label *ngIf=\"label\" [for]=\"identity.id\">\n <span>{{ label }}</span>\n <span class=\"required-field\" *ngIf=\"required\"> •</span>\n </label>\n <i *ngIf=\"infoIcon\" class=\"fas fa-info-circle ml-3\" \n [pTooltip]=\"tooltipIcon\" \n tooltipZIndex=\"999999999999\"></i>\n </div>\n\n <input\n (input)=\"onInput($event)\"\n [disabled]=\"disabled\"\n [id]=\"identity.id\"\n [name]=\"identity.name\"\n [ngClass]=\"getInvalidClass()\"\n [ngStyle]=\"getInputStyle()\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [value]=\"value\"\n pInputText\n type=\"text\"\n [attr.maxlength]=\"maxlength\"\n [pKeyFilter]=\"keyFilter\"\n />\n\n <small\n *ngIf=\"message\"\n [ngClass]=\"getInvalidMessageClass()\"\n >{{ message }}</small>\n</div>\n", styles: [".sdc-textbox label{display:inline-flex;align-items:center;margin-bottom:0;line-height:1;padding-top:7px;padding-bottom:7px}.sdc-textbox .required-field{margin-left:.25rem}.sdc-textbox ::ng-deep input{border-start-start-radius:var(--sdc-formfield-border-radius)!important;border-end-start-radius:var(--sdc-formfield-border-radius)!important;border-start-end-radius:var(--sdc-formfield-border-radius)!important;border-end-end-radius:var(--sdc-formfield-border-radius)!important;min-height:var(--sdc-formfield-default-height)!important;height:var(--sdc-formfield-default-height)!important;max-height:var(--sdc-formfield-default-height)!important;line-height:var(--sdc-formfield-default-line-height)!important}.sdc-textbox ::ng-deep input:disabled{background-color:var(--sdc-formfield-disabled-bg)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i2.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "ngmodule", type: KeyFilterModule }, { kind: "directive", type: i3.KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] });
|
|
22
22
|
}
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextboxComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
@@ -28,6 +28,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28
28
|
useExisting: forwardRef(() => TextboxComponent),
|
|
29
29
|
multi: true
|
|
30
30
|
}
|
|
31
|
-
], template: "<div class=\"
|
|
31
|
+
], template: "<div class=\"sdc-textbox\">\n <div *ngIf=\"label || infoIcon\" class=\"flex align-items-center\">\n <label *ngIf=\"label\" [for]=\"identity.id\">\n <span>{{ label }}</span>\n <span class=\"required-field\" *ngIf=\"required\"> •</span>\n </label>\n <i *ngIf=\"infoIcon\" class=\"fas fa-info-circle ml-3\" \n [pTooltip]=\"tooltipIcon\" \n tooltipZIndex=\"999999999999\"></i>\n </div>\n\n <input\n (input)=\"onInput($event)\"\n [disabled]=\"disabled\"\n [id]=\"identity.id\"\n [name]=\"identity.name\"\n [ngClass]=\"getInvalidClass()\"\n [ngStyle]=\"getInputStyle()\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [value]=\"value\"\n pInputText\n type=\"text\"\n [attr.maxlength]=\"maxlength\"\n [pKeyFilter]=\"keyFilter\"\n />\n\n <small\n *ngIf=\"message\"\n [ngClass]=\"getInvalidMessageClass()\"\n >{{ message }}</small>\n</div>\n", styles: [".sdc-textbox label{display:inline-flex;align-items:center;margin-bottom:0;line-height:1;padding-top:7px;padding-bottom:7px}.sdc-textbox .required-field{margin-left:.25rem}.sdc-textbox ::ng-deep input{border-start-start-radius:var(--sdc-formfield-border-radius)!important;border-end-start-radius:var(--sdc-formfield-border-radius)!important;border-start-end-radius:var(--sdc-formfield-border-radius)!important;border-end-end-radius:var(--sdc-formfield-border-radius)!important;min-height:var(--sdc-formfield-default-height)!important;height:var(--sdc-formfield-default-height)!important;max-height:var(--sdc-formfield-default-height)!important;line-height:var(--sdc-formfield-default-line-height)!important}.sdc-textbox ::ng-deep input:disabled{background-color:var(--sdc-formfield-disabled-bg)!important}\n"] }]
|
|
32
32
|
}] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQWdCaEQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGVBQXVCO3dHQUFoRCxnQkFBZ0I7NEZBQWhCLGdCQUFnQiwwREFSaEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUMvQyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDcEJILHdnQ0FnQ0EsKzFCRHZCWSxZQUFZLHFUQUFFLFdBQVcsOEJBQUUsbUJBQW1CLDhCQUFFLGVBQWUsMElBQUUsZUFBZSx3S0FBRSxhQUFhOzs0RkFhOUYsZ0JBQWdCO2tCQWQ1QixTQUFTOzhCQUNDLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQyxjQUM5RixJQUFJLFlBQ04sYUFBYSxhQUdaO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDOzRCQUMvQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbnB1dHNDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dHMnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgS2V5RmlsdGVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9rZXlmaWx0ZXInO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW5wdXRUZXh0TW9kdWxlLCBLZXlGaWx0ZXJNb2R1bGUsIFRvb2x0aXBNb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3NkYy10ZXh0Ym94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHRib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vdGV4dGJveC5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGV4dGJveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0Ym94Q29tcG9uZW50IGV4dGVuZHMgSW5wdXRzQ29tcG9uZW50PHN0cmluZz4ge31cbiIsIjxkaXYgY2xhc3M9XCJzZGMtdGV4dGJveFwiPlxuICAgIDxkaXYgKm5nSWY9XCJsYWJlbCB8fCBpbmZvSWNvblwiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkZW50aXR5LmlkXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQtZmllbGRcIiAqbmdJZj1cInJlcXVpcmVkXCI+ICZidWxsOzwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGkgKm5nSWY9XCJpbmZvSWNvblwiIGNsYXNzPVwiZmFzIGZhLWluZm8tY2lyY2xlIG1sLTNcIiBcbiAgICAgICAgW3BUb29sdGlwXT1cInRvb2x0aXBJY29uXCIgXG4gICAgICAgIHRvb2x0aXBaSW5kZXg9XCI5OTk5OTk5OTk5OTlcIj48L2k+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXRcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtpZF09XCJpZGVudGl0eS5pZFwiXG4gICAgICAgIFtuYW1lXT1cImlkZW50aXR5Lm5hbWVcIlxuICAgICAgICBbbmdDbGFzc109XCJnZXRJbnZhbGlkQ2xhc3MoKVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldElucHV0U3R5bGUoKVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgW3BLZXlGaWx0ZXJdPVwia2V5RmlsdGVyXCJcbiAgICAvPlxuXG4gICAgPHNtYWxsXG4gICAgICAgICpuZ0lmPVwibWVzc2FnZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldEludmFsaWRNZXNzYWdlQ2xhc3MoKVwiXG4gICAgPnt7IG1lc3NhZ2UgfX08L3NtYWxsPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,40 +1,48 @@
|
|
|
1
|
-
import { Component, Input,
|
|
2
|
-
import {
|
|
3
|
-
import { ToastModule } from 'primeng/toast';
|
|
1
|
+
import { Component, Input, Output, EventEmitter, HostBinding } from "@angular/core"; // Adicionado HostBinding, OnDestroy
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "
|
|
6
|
-
import * as i2 from "primeng/toast";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
7
5
|
export class ToastComponent {
|
|
8
|
-
$service;
|
|
9
|
-
$subscriptions = [];
|
|
10
|
-
key = CONSTANTS.TOAST_DEFAULT_KEY;
|
|
11
|
-
zIndex = 999999;
|
|
12
6
|
toast;
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
dismiss = new EventEmitter();
|
|
8
|
+
isLeaving = false;
|
|
9
|
+
timer = null;
|
|
10
|
+
startDismissAnimation() {
|
|
11
|
+
this.isLeaving = true;
|
|
12
|
+
setTimeout(() => {
|
|
13
|
+
this.dismiss.emit();
|
|
14
|
+
}, 300);
|
|
15
|
+
}
|
|
16
|
+
dismissToast() {
|
|
17
|
+
if (this.timer) {
|
|
18
|
+
clearTimeout(this.timer);
|
|
19
|
+
}
|
|
20
|
+
this.startDismissAnimation();
|
|
15
21
|
}
|
|
16
22
|
ngOnInit() {
|
|
17
|
-
this
|
|
18
|
-
this
|
|
19
|
-
this.
|
|
20
|
-
})
|
|
21
|
-
|
|
23
|
+
if (!this.toast.sticky && this.toast.duration) {
|
|
24
|
+
this.timer = setTimeout(() => {
|
|
25
|
+
this.startDismissAnimation();
|
|
26
|
+
}, this.toast.duration);
|
|
27
|
+
}
|
|
22
28
|
}
|
|
23
29
|
ngOnDestroy() {
|
|
24
|
-
this
|
|
30
|
+
if (this.timer) {
|
|
31
|
+
clearTimeout(this.timer);
|
|
32
|
+
}
|
|
25
33
|
}
|
|
26
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastComponent, deps: [
|
|
27
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ToastComponent, isStandalone: true, selector: "
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ToastComponent, isStandalone: true, selector: "s-toast", inputs: { toast: "toast" }, outputs: { dismiss: "dismiss" }, host: { properties: { "class.toast--leaving": "this.isLeaving" } }, ngImport: i0, template: "<div\n class=\"toast\"\n [class.toast--info]=\"toast.severity === 'info'\"\n [class.toast--success]=\"toast.severity === 'success'\"\n [class.toast--warning]=\"toast.severity === 'warning'\"\n [class.toast--error]=\"toast.severity === 'error'\"\n>\n <div class=\"toast-content\">\n <i\n class=\"toast-icon fas fa-info\"\n [class.fa-info]=\"toast.severity === 'info'\"\n [class.fa-check]=\"toast.severity === 'success'\"\n [class.fa-exclamation-triangle]=\"toast.severity === 'warning'\"\n [class.fa-times]=\"toast.severity === 'error'\"\n ></i>\n <div class=\"text-container\">\n <span *ngIf=\"toast.title\" class=\"toast-summary\" [innerHTML]=\"toast.title\"></span>\n <span *ngIf=\"toast.text\" [innerHTML]=\"toast.text\"></span>\n </div>\n </div>\n <button *ngIf=\"toast.closable\" class=\"toast-close-button\" (click)=\"dismissToast()\"><i class=\"fas fa-times\"></i></button>\n</div>\n", styles: [":host{display:block}.toast{align-items:center;animation:fadeInDown .3s forwards;border-left:3px solid #428bca;border-radius:3px;box-shadow:0 1px 5px #00000040;color:#212533;display:flex;font-family:\"Open Sans\" sans-serif;font-size:14px;opacity:0;padding:10px 15px;position:relative;transform:translateY(-20px);width:400px}.toast .toast-content{align-items:center;flex-grow:1;display:flex;gap:15px}.toast .toast-content .toast-icon{align-items:center;background-color:#428bca;border-radius:50%;color:#fff;display:flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.toast .toast-content .text-container{display:flex;flex-direction:column}.toast .toast-content .text-container .toast-summary{font-weight:700}.toast--success{background-color:#e0f0f0;border-left:3px solid #0c9348}.toast--success .toast-content .toast-icon{background-color:#0c9348}.toast--error{background-color:#fef0f0;border-left:3px solid #c13018}.toast--error .toast-content .toast-icon{background-color:#c13018}.toast--info{background-color:#f1f7f8;border-left:3px solid #428bca}.toast--info .toast-content .toast-icon{background-color:#428bca}.toast--warning{background-color:#fef4e3;border-left:3px solid #fcbf10}.toast--warning .toast-content .toast-icon{background-color:#fcbf10;color:#212533}.toast-close-button{background:none;border:none;color:#212533;font-size:1rem;cursor:pointer;margin-left:15px;transition:transform .2s ease-in-out}.toast-close-button:hover{transform:scale(1.1)}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-20px)}}:host.toast--leaving{animation:fadeOutUp .3s forwards}@media (max-width: 440px){.toast{width:calc(100% - 40px)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
28
36
|
}
|
|
29
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastComponent, decorators: [{
|
|
30
38
|
type: Component,
|
|
31
|
-
args: [{
|
|
32
|
-
}],
|
|
33
|
-
type: Input
|
|
34
|
-
}], zIndex: [{
|
|
39
|
+
args: [{ selector: "s-toast", standalone: true, imports: [CommonModule], template: "<div\n class=\"toast\"\n [class.toast--info]=\"toast.severity === 'info'\"\n [class.toast--success]=\"toast.severity === 'success'\"\n [class.toast--warning]=\"toast.severity === 'warning'\"\n [class.toast--error]=\"toast.severity === 'error'\"\n>\n <div class=\"toast-content\">\n <i\n class=\"toast-icon fas fa-info\"\n [class.fa-info]=\"toast.severity === 'info'\"\n [class.fa-check]=\"toast.severity === 'success'\"\n [class.fa-exclamation-triangle]=\"toast.severity === 'warning'\"\n [class.fa-times]=\"toast.severity === 'error'\"\n ></i>\n <div class=\"text-container\">\n <span *ngIf=\"toast.title\" class=\"toast-summary\" [innerHTML]=\"toast.title\"></span>\n <span *ngIf=\"toast.text\" [innerHTML]=\"toast.text\"></span>\n </div>\n </div>\n <button *ngIf=\"toast.closable\" class=\"toast-close-button\" (click)=\"dismissToast()\"><i class=\"fas fa-times\"></i></button>\n</div>\n", styles: [":host{display:block}.toast{align-items:center;animation:fadeInDown .3s forwards;border-left:3px solid #428bca;border-radius:3px;box-shadow:0 1px 5px #00000040;color:#212533;display:flex;font-family:\"Open Sans\" sans-serif;font-size:14px;opacity:0;padding:10px 15px;position:relative;transform:translateY(-20px);width:400px}.toast .toast-content{align-items:center;flex-grow:1;display:flex;gap:15px}.toast .toast-content .toast-icon{align-items:center;background-color:#428bca;border-radius:50%;color:#fff;display:flex;flex-shrink:0;height:40px;justify-content:center;width:40px}.toast .toast-content .text-container{display:flex;flex-direction:column}.toast .toast-content .text-container .toast-summary{font-weight:700}.toast--success{background-color:#e0f0f0;border-left:3px solid #0c9348}.toast--success .toast-content .toast-icon{background-color:#0c9348}.toast--error{background-color:#fef0f0;border-left:3px solid #c13018}.toast--error .toast-content .toast-icon{background-color:#c13018}.toast--info{background-color:#f1f7f8;border-left:3px solid #428bca}.toast--info .toast-content .toast-icon{background-color:#428bca}.toast--warning{background-color:#fef4e3;border-left:3px solid #fcbf10}.toast--warning .toast-content .toast-icon{background-color:#fcbf10;color:#212533}.toast-close-button{background:none;border:none;color:#212533;font-size:1rem;cursor:pointer;margin-left:15px;transition:transform .2s ease-in-out}.toast-close-button:hover{transform:scale(1.1)}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-20px)}}:host.toast--leaving{animation:fadeOutUp .3s forwards}@media (max-width: 440px){.toast{width:calc(100% - 40px)}}\n"] }]
|
|
40
|
+
}], propDecorators: { toast: [{
|
|
35
41
|
type: Input
|
|
36
|
-
}],
|
|
37
|
-
type:
|
|
38
|
-
|
|
42
|
+
}], dismiss: [{
|
|
43
|
+
type: Output
|
|
44
|
+
}], isLeaving: [{
|
|
45
|
+
type: HostBinding,
|
|
46
|
+
args: ["class.toast--leaving"]
|
|
39
47
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy90b2FzdC90b2FzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3RvYXN0L3RvYXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFhLE1BQU0sZUFBZSxDQUFDLENBQUMsb0NBQW9DO0FBQ3BJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBVS9DLE1BQU0sT0FBTyxjQUFjO0lBRWhCLEtBQUssQ0FBUztJQUdkLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBR25DLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFakIsS0FBSyxHQUF5QyxJQUFJLENBQUM7SUFFcEQscUJBQXFCO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDekIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDakMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO3dHQXZDUSxjQUFjOzRGQUFkLGNBQWMsb01DWDNCLDYvQkFzQkEsc3pERGZjLFlBQVk7OzRGQUliLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0ksU0FBUyxjQUNQLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzs4QkFNaEIsS0FBSztzQkFEWCxLQUFLO2dCQUlDLE9BQU87c0JBRGIsTUFBTTtnQkFJQSxTQUFTO3NCQURmLFdBQVc7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiOyAvLyBBZGljaW9uYWRvIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3lcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFRvYXN0IH0gZnJvbSBcImxpYi9zcmMvY29yZS90eXBlcy90b2FzdC50eXBlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtdG9hc3RcIixcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vdG9hc3QuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vdG9hc3QuY29tcG9uZW50LnNjc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0b2FzdCE6IFRvYXN0O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRpc21pc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy50b2FzdC0tbGVhdmluZ1wiKVxuICAgIHB1YmxpYyBpc0xlYXZpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgdGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgc3RhcnREaXNtaXNzQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTGVhdmluZyA9IHRydWU7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc21pc3MuZW1pdCgpO1xuICAgICAgICB9LCAzMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNtaXNzVG9hc3QoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFydERpc21pc3NBbmltYXRpb24oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy50b2FzdC5zdGlja3kgJiYgdGhpcy50b2FzdC5kdXJhdGlvbikge1xuICAgICAgICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnREaXNtaXNzQW5pbWF0aW9uKCk7XG4gICAgICAgICAgICB9LCB0aGlzLnRvYXN0LmR1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cInRvYXN0XCJcbiAgICBbY2xhc3MudG9hc3QtLWluZm9dPVwidG9hc3Quc2V2ZXJpdHkgPT09ICdpbmZvJ1wiXG4gICAgW2NsYXNzLnRvYXN0LS1zdWNjZXNzXT1cInRvYXN0LnNldmVyaXR5ID09PSAnc3VjY2VzcydcIlxuICAgIFtjbGFzcy50b2FzdC0td2FybmluZ109XCJ0b2FzdC5zZXZlcml0eSA9PT0gJ3dhcm5pbmcnXCJcbiAgICBbY2xhc3MudG9hc3QtLWVycm9yXT1cInRvYXN0LnNldmVyaXR5ID09PSAnZXJyb3InXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwidG9hc3QtY29udGVudFwiPlxuICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJ0b2FzdC1pY29uIGZhcyBmYS1pbmZvXCJcbiAgICAgICAgICAgIFtjbGFzcy5mYS1pbmZvXT1cInRvYXN0LnNldmVyaXR5ID09PSAnaW5mbydcIlxuICAgICAgICAgICAgW2NsYXNzLmZhLWNoZWNrXT1cInRvYXN0LnNldmVyaXR5ID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgW2NsYXNzLmZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXT1cInRvYXN0LnNldmVyaXR5ID09PSAnd2FybmluZydcIlxuICAgICAgICAgICAgW2NsYXNzLmZhLXRpbWVzXT1cInRvYXN0LnNldmVyaXR5ID09PSAnZXJyb3InXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRvYXN0LnRpdGxlXCIgY2xhc3M9XCJ0b2FzdC1zdW1tYXJ5XCIgW2lubmVySFRNTF09XCJ0b2FzdC50aXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidG9hc3QudGV4dFwiIFtpbm5lckhUTUxdPVwidG9hc3QudGV4dFwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInRvYXN0LmNsb3NhYmxlXCIgY2xhc3M9XCJ0b2FzdC1jbG9zZS1idXR0b25cIiAoY2xpY2spPVwiZGlzbWlzc1RvYXN0KClcIj48aSBjbGFzcz1cImZhcyBmYS10aW1lc1wiPjwvaT48L2J1dHRvbj5cbjwvZGl2PlxuIl19
|