@cqa-lib/cqa-ui 1.1.528 → 1.1.530

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/esm2020/lib/audit-log-drawer/audit-log-drawer.component.mjs +146 -0
  2. package/esm2020/lib/audit-log-drawer/audit-log-drawer.models.mjs +2 -0
  3. package/esm2020/lib/audit-log-drawer/audit-log-drawer.service.mjs +84 -0
  4. package/esm2020/lib/audit-log-drawer/audit-log-entry-card.component.mjs +30 -0
  5. package/esm2020/lib/dialog/dialog.component.mjs +15 -3
  6. package/esm2020/lib/dialog/dialog.models.mjs +1 -1
  7. package/esm2020/lib/manage-columns-dialog/manage-columns-dialog.component.mjs +133 -0
  8. package/esm2020/lib/manage-columns-dialog/manage-columns-dialog.models.mjs +2 -0
  9. package/esm2020/lib/templates/modular-table-template/dialogs/move-to-folder-dialog.component.mjs +38 -13
  10. package/esm2020/lib/templates/modular-table-template/dialogs/new-folder-dialog.component.mjs +79 -87
  11. package/esm2020/lib/templates/modular-table-template/folder-sidebar/folder-sidebar.component.mjs +21 -4
  12. package/esm2020/lib/templates/modular-table-template/modular-table-template.component.mjs +3 -1
  13. package/esm2020/lib/templates/modular-table-template/modular-table-template.models.mjs +3 -1
  14. package/esm2020/lib/ui-kit.module.mjs +16 -1
  15. package/esm2020/public-api.mjs +7 -1
  16. package/fesm2015/cqa-lib-cqa-ui.mjs +536 -105
  17. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  18. package/fesm2020/cqa-lib-cqa-ui.mjs +531 -103
  19. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  20. package/lib/audit-log-drawer/audit-log-drawer.component.d.ts +34 -0
  21. package/lib/audit-log-drawer/audit-log-drawer.models.d.ts +43 -0
  22. package/lib/audit-log-drawer/audit-log-drawer.service.d.ts +13 -0
  23. package/lib/audit-log-drawer/audit-log-entry-card.component.d.ts +10 -0
  24. package/lib/dialog/dialog.component.d.ts +1 -0
  25. package/lib/dialog/dialog.models.d.ts +4 -0
  26. package/lib/manage-columns-dialog/manage-columns-dialog.component.d.ts +32 -0
  27. package/lib/manage-columns-dialog/manage-columns-dialog.models.d.ts +11 -0
  28. package/lib/templates/modular-table-template/dialogs/move-to-folder-dialog.component.d.ts +12 -2
  29. package/lib/templates/modular-table-template/dialogs/new-folder-dialog.component.d.ts +23 -30
  30. package/lib/templates/modular-table-template/folder-sidebar/folder-sidebar.component.d.ts +4 -0
  31. package/lib/templates/modular-table-template/modular-table-template.models.d.ts +2 -0
  32. package/lib/ui-kit.module.d.ts +92 -89
  33. package/package.json +1 -1
  34. package/public-api.d.ts +6 -0
  35. package/styles.css +1 -1
@@ -0,0 +1,146 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { ALL_FILTER_VALUE, } from './audit-log-drawer.models';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/icon";
8
+ import * as i2 from "../dynamic-select/dynamic-select-field.component";
9
+ import * as i3 from "../full-table-loader/full-table-loader.component";
10
+ import * as i4 from "../empty-state/empty-state.component";
11
+ import * as i5 from "./audit-log-entry-card.component";
12
+ import * as i6 from "@angular/common";
13
+ export class AuditLogDrawerComponent {
14
+ constructor() {
15
+ this.entries = [];
16
+ this.entityTypeOptions = [];
17
+ this.envOptions = [];
18
+ this.userOptions = [];
19
+ this.defaultRange = '7d';
20
+ this.isLoading = false;
21
+ this.filterChange = new EventEmitter();
22
+ this.close = new EventEmitter();
23
+ this.ALL = ALL_FILTER_VALUE;
24
+ this.filtersForm = new FormGroup({
25
+ entityType: new FormControl(ALL_FILTER_VALUE),
26
+ env: new FormControl(ALL_FILTER_VALUE),
27
+ user: new FormControl(ALL_FILTER_VALUE),
28
+ range: new FormControl('7d'),
29
+ });
30
+ this.trackById = (_, e) => e.id;
31
+ this.destroy$ = new Subject();
32
+ this.rangeMs = {
33
+ '24h': 24 * 60 * 60 * 1000,
34
+ '7d': 7 * 24 * 60 * 60 * 1000,
35
+ '30d': 30 * 24 * 60 * 60 * 1000,
36
+ 'all': Number.POSITIVE_INFINITY,
37
+ };
38
+ }
39
+ ngOnInit() {
40
+ this.filtersForm.patchValue({ range: this.defaultRange });
41
+ this.entityConfig = this.buildSelectConfig('entityType', 'All entity types', this.entityTypeOptions);
42
+ this.envConfig = this.buildSelectConfig('env', 'All environments', this.envOptions);
43
+ this.userConfig = this.buildSelectConfig('user', 'All users', this.userOptions);
44
+ this.rangeConfig = this.buildSelectConfig('range', 'Last 7 days', [
45
+ { value: '24h', label: 'Last 24h' },
46
+ { value: '7d', label: 'Last 7 days' },
47
+ { value: '30d', label: 'Last 30 days' },
48
+ { value: 'all', label: 'All time' },
49
+ ], false);
50
+ this.filtersForm.valueChanges
51
+ .pipe(takeUntil(this.destroy$))
52
+ .subscribe(() => this.filterChange.emit(this.currentFilterState()));
53
+ }
54
+ ngOnDestroy() {
55
+ this.destroy$.next();
56
+ this.destroy$.complete();
57
+ }
58
+ get filteredEntries() {
59
+ const f = this.currentFilterState();
60
+ const cutoff = this.rangeMs[f.range];
61
+ const now = Date.now();
62
+ return (this.entries || []).filter(e => {
63
+ if (f.entityType !== ALL_FILTER_VALUE && e.entityType !== f.entityType) {
64
+ return false;
65
+ }
66
+ if (f.env !== ALL_FILTER_VALUE && !this.entryMatchesEnv(e, f.env)) {
67
+ return false;
68
+ }
69
+ if (f.user !== ALL_FILTER_VALUE && e.user !== f.user) {
70
+ return false;
71
+ }
72
+ if (cutoff !== Number.POSITIVE_INFINITY) {
73
+ const ts = this.parseTs(e.ts);
74
+ if (ts != null && now - ts > cutoff) {
75
+ return false;
76
+ }
77
+ }
78
+ return true;
79
+ });
80
+ }
81
+ onClose() {
82
+ this.close.emit();
83
+ }
84
+ entryMatchesEnv(entry, env) {
85
+ return (entry.entityName || '').toLowerCase().includes(env.toLowerCase());
86
+ }
87
+ parseTs(ts) {
88
+ if (!ts) {
89
+ return null;
90
+ }
91
+ const t = Date.parse(ts);
92
+ return Number.isNaN(t) ? null : t;
93
+ }
94
+ currentFilterState() {
95
+ const v = this.filtersForm.value;
96
+ return {
97
+ entityType: v.entityType ?? ALL_FILTER_VALUE,
98
+ env: v.env ?? ALL_FILTER_VALUE,
99
+ user: v.user ?? ALL_FILTER_VALUE,
100
+ range: v.range ?? '7d',
101
+ };
102
+ }
103
+ buildSelectConfig(key, placeholder, items, includeAll = true) {
104
+ const options = [];
105
+ if (includeAll) {
106
+ options.push({ id: ALL_FILTER_VALUE, value: ALL_FILTER_VALUE, name: placeholder, label: placeholder });
107
+ }
108
+ for (const it of items) {
109
+ options.push({ id: it.value, value: it.value, name: it.label, label: it.label });
110
+ }
111
+ return {
112
+ key,
113
+ label: '',
114
+ placeholder,
115
+ multiple: false,
116
+ searchable: false,
117
+ options,
118
+ };
119
+ }
120
+ }
121
+ AuditLogDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuditLogDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
122
+ AuditLogDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AuditLogDrawerComponent, selector: "cqa-audit-log-drawer", inputs: { entries: "entries", entityTypeOptions: "entityTypeOptions", envOptions: "envOptions", userOptions: "userOptions", defaultRange: "defaultRange", isLoading: "isLoading" }, outputs: { filterChange: "filterChange", close: "close" }, host: { styleAttribute: "display:flex;flex-direction:column;height:100%;width:560px;max-width:100vw;background:#fff;box-shadow:-8px 0 32px rgba(15,23,42,.12);", classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<header class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-3 cqa-px-[22px] cqa-py-[18px] cqa-border-b cqa-border-[#E5E7EB] cqa-flex-shrink-0 cqa-font-inter\">\n <div class=\"cqa-min-w-0\">\n <h3 class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-m-0 cqa-text-[15px] cqa-font-semibold cqa-text-[#0F172A]\">\n <mat-icon class=\"cqa-text-primary\" style=\"font-size:18px;width:18px;height:18px;line-height:18px;color:#3F43EE;\">history</mat-icon>\n Audit log\n </h3>\n <p class=\"cqa-text-xs cqa-text-[#64748B] cqa-mt-0.5 cqa-mb-0\">\n All changes across environments, profiles, and globals. Read-only, append-only.\n </p>\n </div>\n <button type=\"button\" class=\"cqa-audit-log-close-btn\" (click)=\"onClose()\" aria-label=\"Close audit log\">\n <mat-icon>close</mat-icon>\n </button>\n</header>\n\n<section class=\"cqa-grid cqa-gap-2 cqa-px-[22px] cqa-py-3 cqa-border-b cqa-border-[#E5E7EB] cqa-flex-shrink-0\"\n style=\"grid-template-columns: repeat(4, minmax(0, 1fr)); background:#FAFBFC;\">\n <cqa-dynamic-select [form]=\"filtersForm\" [config]=\"entityConfig\"></cqa-dynamic-select>\n <cqa-dynamic-select [form]=\"filtersForm\" [config]=\"envConfig\"></cqa-dynamic-select>\n <cqa-dynamic-select [form]=\"filtersForm\" [config]=\"userConfig\"></cqa-dynamic-select>\n <cqa-dynamic-select [form]=\"filtersForm\" [config]=\"rangeConfig\"></cqa-dynamic-select>\n</section>\n\n<div class=\"cqa-flex-1 cqa-overflow-y-auto\">\n <cqa-full-table-loader *ngIf=\"isLoading\"></cqa-full-table-loader>\n <ng-container *ngIf=\"!isLoading\">\n <cqa-empty-state\n *ngIf=\"filteredEntries.length === 0; else listTpl\"\n title=\"No entries match your filters\"\n description=\"Adjust the filters above to widen the search.\">\n </cqa-empty-state>\n <ng-template #listTpl>\n <cqa-audit-log-entry-card\n *ngFor=\"let e of filteredEntries; trackBy: trackById\"\n [entry]=\"e\">\n </cqa-audit-log-entry-card>\n </ng-template>\n </ng-container>\n</div>\n", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.DynamicSelectFieldComponent, selector: "cqa-dynamic-select", inputs: ["form", "config"], outputs: ["selectionChange", "selectClick", "searchChange", "loadMore", "addCustomValue"] }, { type: i3.FullTableLoaderComponent, selector: "cqa-full-table-loader", inputs: ["label"] }, { type: i4.EmptyStateComponent, selector: "cqa-empty-state", inputs: ["preset", "imageUrl", "title", "description", "actions"], outputs: ["actionClick"] }, { type: i5.AuditLogEntryCardComponent, selector: "cqa-audit-log-entry-card", inputs: ["entry"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuditLogDrawerComponent, decorators: [{
124
+ type: Component,
125
+ args: [{ selector: 'cqa-audit-log-drawer', host: {
126
+ class: 'cqa-ui-root',
127
+ style: 'display:flex;flex-direction:column;height:100%;width:560px;max-width:100vw;background:#fff;box-shadow:-8px 0 32px rgba(15,23,42,.12);',
128
+ }, template: "<header class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-3 cqa-px-[22px] cqa-py-[18px] cqa-border-b cqa-border-[#E5E7EB] cqa-flex-shrink-0 cqa-font-inter\">\n <div class=\"cqa-min-w-0\">\n <h3 class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-m-0 cqa-text-[15px] cqa-font-semibold cqa-text-[#0F172A]\">\n <mat-icon class=\"cqa-text-primary\" style=\"font-size:18px;width:18px;height:18px;line-height:18px;color:#3F43EE;\">history</mat-icon>\n Audit log\n </h3>\n <p class=\"cqa-text-xs cqa-text-[#64748B] cqa-mt-0.5 cqa-mb-0\">\n All changes across environments, profiles, and globals. Read-only, append-only.\n </p>\n </div>\n <button type=\"button\" class=\"cqa-audit-log-close-btn\" (click)=\"onClose()\" aria-label=\"Close audit log\">\n <mat-icon>close</mat-icon>\n </button>\n</header>\n\n<section class=\"cqa-grid cqa-gap-2 cqa-px-[22px] cqa-py-3 cqa-border-b cqa-border-[#E5E7EB] cqa-flex-shrink-0\"\n style=\"grid-template-columns: repeat(4, minmax(0, 1fr)); background:#FAFBFC;\">\n <cqa-dynamic-select [form]=\"filtersForm\" [config]=\"entityConfig\"></cqa-dynamic-select>\n <cqa-dynamic-select [form]=\"filtersForm\" [config]=\"envConfig\"></cqa-dynamic-select>\n <cqa-dynamic-select [form]=\"filtersForm\" [config]=\"userConfig\"></cqa-dynamic-select>\n <cqa-dynamic-select [form]=\"filtersForm\" [config]=\"rangeConfig\"></cqa-dynamic-select>\n</section>\n\n<div class=\"cqa-flex-1 cqa-overflow-y-auto\">\n <cqa-full-table-loader *ngIf=\"isLoading\"></cqa-full-table-loader>\n <ng-container *ngIf=\"!isLoading\">\n <cqa-empty-state\n *ngIf=\"filteredEntries.length === 0; else listTpl\"\n title=\"No entries match your filters\"\n description=\"Adjust the filters above to widen the search.\">\n </cqa-empty-state>\n <ng-template #listTpl>\n <cqa-audit-log-entry-card\n *ngFor=\"let e of filteredEntries; trackBy: trackById\"\n [entry]=\"e\">\n </cqa-audit-log-entry-card>\n </ng-template>\n </ng-container>\n</div>\n" }]
129
+ }], propDecorators: { entries: [{
130
+ type: Input
131
+ }], entityTypeOptions: [{
132
+ type: Input
133
+ }], envOptions: [{
134
+ type: Input
135
+ }], userOptions: [{
136
+ type: Input
137
+ }], defaultRange: [{
138
+ type: Input
139
+ }], isLoading: [{
140
+ type: Input
141
+ }], filterChange: [{
142
+ type: Output
143
+ }], close: [{
144
+ type: Output
145
+ }] } });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWRyYXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1ZGl0LWxvZy1kcmF3ZXIvYXVkaXQtbG9nLWRyYXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1ZGl0LWxvZy1kcmF3ZXIvYXVkaXQtbG9nLWRyYXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFDTCxnQkFBZ0IsR0FLakIsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFVbkMsTUFBTSxPQUFPLHVCQUF1QjtJQVJwQztRQVNXLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBQzNCLHNCQUFpQixHQUF3QixFQUFFLENBQUM7UUFDNUMsZUFBVSxHQUF3QixFQUFFLENBQUM7UUFDckMsZ0JBQVcsR0FBd0IsRUFBRSxDQUFDO1FBQ3RDLGlCQUFZLEdBQW1CLElBQUksQ0FBQztRQUNwQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFDdkQsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFM0IsUUFBRyxHQUFHLGdCQUFnQixDQUFDO1FBRXZCLGdCQUFXLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDMUMsVUFBVSxFQUFFLElBQUksV0FBVyxDQUFDLGdCQUFnQixDQUFDO1lBQzdDLEdBQUcsRUFBUyxJQUFJ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OzJGRGpCYSx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0Usc0JBQXNCLFFBRTFCO3dCQUNKLEtBQUssRUFBRSxhQUFhO3dCQUNwQixLQUFLLEVBQUUsdUlBQXVJO3FCQUMvSTs4QkFHUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZywgU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFMTF9GSUxURVJfVkFMVUUsXG4gIEF1ZGl0RGF0ZVJhbmdlLFxuICBBdWRpdEVudHJ5LFxuICBBdWRpdEZpbHRlck9wdGlvbixcbiAgQXVkaXRMb2dGaWx0ZXJTdGF0ZSxcbn0gZnJvbSAnLi9hdWRpdC1sb2ctZHJhd2VyLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1hdWRpdC1sb2ctZHJhd2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LWxvZy1kcmF3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdjcWEtdWktcm9vdCcsXG4gICAgc3R5bGU6ICdkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlO3dpZHRoOjU2MHB4O21heC13aWR0aDoxMDB2dztiYWNrZ3JvdW5kOiNmZmY7Ym94LXNoYWRvdzotOHB4IDAgMzJweCByZ2JhKDE1LDIzLDQyLC4xMik7JyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQXVkaXRMb2dEcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGVudHJpZXM6IEF1ZGl0RW50cnlbXSA9IFtdO1xuICBASW5wdXQoKSBlbnRpdHlUeXBlT3B0aW9uczogQXVkaXRGaWx0ZXJPcHRpb25bXSA9IFtdO1xuICBASW5wdXQoKSBlbnZPcHRpb25zOiBBdWRpdEZpbHRlck9wdGlvbltdID0gW107XG4gIEBJbnB1dCgpIHVzZXJPcHRpb25zOiBBdWRpdEZpbHRlck9wdGlvbltdID0gW107XG4gIEBJbnB1dCgpIGRlZmF1bHRSYW5nZTogQXVkaXREYXRlUmFuZ2UgPSAnN2QnO1xuICBASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBdWRpdExvZ0ZpbHRlclN0YXRlPigpO1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IEFMTCA9IEFMTF9GSUxURVJfVkFMVUU7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlcnNGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgZW50aXR5VHlwZTogbmV3IEZvcm1Db250cm9sKEFMTF9GSUxURVJfVkFMVUUpLFxuICAgIGVudjogICAgICAgIG5ldyBGb3JtQ29udHJvbChBTExfRklMVEVSX1ZBTFVFKSxcbiAgICB1c2VyOiAgICAgICBuZXcgRm9ybUNvbnRyb2woQUxMX0ZJTFRFUl9WQUxVRSksXG4gICAgcmFuZ2U6ICAgICAgbmV3IEZvcm1Db250cm9sKCc3ZCcgYXMgQXVkaXREYXRlUmFuZ2UpLFxuICB9KTtcblxuICBwdWJsaWMgZW50aXR5Q29uZmlnITogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnO1xuICBwdWJsaWMgZW52Q29uZmlnITogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnO1xuICBwdWJsaWMgdXNlckNvbmZpZyE6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZztcbiAgcHVibGljIHJhbmdlQ29uZmlnITogRHluYW1pY1NlbGVjdEZpZWxkQ29uZmlnO1xuXG4gIHB1YmxpYyB0cmFja0J5SWQgPSAoXzogbnVtYmVyLCBlOiBBdWRpdEVudHJ5KTogc3RyaW5nID0+IGUuaWQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmFuZ2VNczogUmVjb3JkPEF1ZGl0RGF0ZVJhbmdlLCBudW1iZXI+ID0ge1xuICAgICcyNGgnOiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgICc3ZCc6ICA3ICAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgJzMwZCc6IDMwICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICAnYWxsJzogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICB9O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyc0Zvcm0ucGF0Y2hWYWx1ZSh7IHJhbmdlOiB0aGlzLmRlZmF1bHRSYW5nZSB9KTtcblxuICAgIHRoaXMuZW50aXR5Q29uZmlnID0gdGhpcy5idWlsZFNlbGVjdENvbmZpZygnZW50aXR5VHlwZScsICdBbGwgZW50aXR5IHR5cGVzJywgdGhpcy5lbnRpdHlUeXBlT3B0aW9ucyk7XG4gICAgdGhpcy5lbnZDb25maWcgICAgPSB0aGlzLmJ1aWxkU2VsZWN0Q29uZmlnKCdlbnYnLCAgICAgICAgJ0FsbCBlbnZpcm9ubWVudHMnLCB0aGlzLmVudk9wdGlvbnMpO1xuICAgIHRoaXMudXNlckNvbmZpZyAgID0gdGhpcy5idWlsZFNlbGVjdENvbmZpZygndXNlcicsICAgICAgICdBbGwgdXNlcnMnLCAgICAgICAgdGhpcy51c2VyT3B0aW9ucyk7XG4gICAgdGhpcy5yYW5nZUNvbmZpZyAgPSB0aGlzLmJ1aWxkU2VsZWN0Q29uZmlnKCdyYW5nZScsICdMYXN0IDcgZGF5cycsIFtcbiAgICAgIHsgdmFsdWU6ICcyNGgnLCBsYWJlbDogJ0xhc3QgMjRoJyB9LFxuICAgICAgeyB2YWx1ZTogJzdkJywgIGxhYmVsOiAnTGFzdCA3IGRheXMnIH0sXG4gICAgICB7IHZhbHVlOiAnMzBkJywgbGFiZWw6ICdMYXN0IDMwIGRheXMnIH0sXG4gICAgICB7IHZhbHVlOiAnYWxsJywgbGFiZWw6ICdBbGwgdGltZScgfSxcbiAgICBdLCBmYWxzZSk7XG5cbiAgICB0aGlzLmZpbHRlcnNGb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMuY3VycmVudEZpbHRlclN0YXRlKCkpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyZWRFbnRyaWVzKCk6IEF1ZGl0RW50cnlbXSB7XG4gICAgY29uc3QgZiA9IHRoaXMuY3VycmVudEZpbHRlclN0YXRlKCk7XG4gICAgY29uc3QgY3V0b2ZmID0gdGhpcy5yYW5nZU1zW2YucmFuZ2VdO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgcmV0dXJuICh0aGlzLmVudHJpZXMgfHwgW10pLmZpbHRlcihlID0+IHtcbiAgICAgIGlmIChmLmVudGl0eVR5cGUgIT09IEFMTF9GSUxURVJfVkFMVUUgJiYgZS5lbnRpdHlUeXBlICE9PSBmLmVudGl0eVR5cGUpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICBpZiAoZi5lbnYgIT09IEFMTF9GSUxURVJfVkFMVUUgJiYgIXRoaXMuZW50cnlNYXRjaGVzRW52KGUsIGYuZW52KSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgIGlmIChmLnVzZXIgIT09IEFMTF9GSUxURVJfVkFMVUUgJiYgZS51c2VyICE9PSBmLnVzZXIpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICBpZiAoY3V0b2ZmICE9PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpIHtcbiAgICAgICAgY29uc3QgdHMgPSB0aGlzLnBhcnNlVHMoZS50cyk7XG4gICAgICAgIGlmICh0cyAhPSBudWxsICYmIG5vdyAtIHRzID4gY3V0b2ZmKSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW50cnlNYXRjaGVzRW52KGVudHJ5OiBBdWRpdEVudHJ5LCBlbnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoZW50cnkuZW50aXR5TmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhlbnYudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlVHModHM6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICghdHMpIHsgcmV0dXJuIG51bGw7IH1cbiAgICBjb25zdCB0ID0gRGF0ZS5wYXJzZSh0cyk7XG4gICAgcmV0dXJuIE51bWJlci5pc05hTih0KSA/IG51bGwgOiB0O1xuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50RmlsdGVyU3RhdGUoKTogQXVkaXRMb2dGaWx0ZXJTdGF0ZSB7XG4gICAgY29uc3QgdiA9IHRoaXMuZmlsdGVyc0Zvcm0udmFsdWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudGl0eVR5cGU6IHYuZW50aXR5VHlwZSA/PyBBTExfRklMVEVSX1ZBTFVFLFxuICAgICAgZW52OiAgICAgICAgdi5lbnYgICAgICAgID8/IEFMTF9GSUxURVJfVkFMVUUsXG4gICAgICB1c2VyOiAgICAgICB2LnVzZXIgICAgICAgPz8gQUxMX0ZJTFRFUl9WQUxVRSxcbiAgICAgIHJhbmdlOiAgICAgICh2LnJhbmdlIGFzIEF1ZGl0RGF0ZVJhbmdlKSA/PyAnN2QnLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2VsZWN0Q29uZmlnKFxuICAgIGtleTogc3RyaW5nLFxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgaXRlbXM6IEF1ZGl0RmlsdGVyT3B0aW9uW10sXG4gICAgaW5jbHVkZUFsbDogYm9vbGVhbiA9IHRydWUsXG4gICk6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZyB7XG4gICAgY29uc3Qgb3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgICBpZiAoaW5jbHVkZUFsbCkge1xuICAgICAgb3B0aW9ucy5wdXNoKHsgaWQ6IEFMTF9GSUxURVJfVkFMVUUsIHZhbHVlOiBBTExfRklMVEVSX1ZBTFVFLCBuYW1lOiBwbGFjZWhvbGRlciwgbGFiZWw6IHBsYWNlaG9sZGVyIH0pO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGl0IG9mIGl0ZW1zKSB7XG4gICAgICBvcHRpb25zLnB1c2goeyBpZDogaXQudmFsdWUsIHZhbHVlOiBpdC52YWx1ZSwgbmFtZTogaXQubGFiZWwsIGxhYmVsOiBpdC5sYWJlbCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleSxcbiAgICAgIGxhYmVsOiAnJyxcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICBvcHRpb25zLFxuICAgIH07XG4gIH1cbn1cbiIsIjxoZWFkZXIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTMgY3FhLXB4LVsyMnB4XSBjcWEtcHktWzE4cHhdIGNxYS1ib3JkZXItYiBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtZmxleC1zaHJpbmstMCBjcWEtZm9udC1pbnRlclwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLW1pbi13LTBcIj5cbiAgICA8aDMgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtbS0wIGNxYS10ZXh0LVsxNXB4XSBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bIzBGMTcyQV1cIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS10ZXh0LXByaW1hcnlcIiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4O3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7bGluZS1oZWlnaHQ6MThweDtjb2xvcjojM0Y0M0VFO1wiPmhpc3Rvcnk8L21hdC1pY29uPlxuICAgICAgQXVkaXQgbG9nXG4gICAgPC9oMz5cbiAgICA8cCBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjQ3NDhCXSBjcWEtbXQtMC41IGNxYS1tYi0wXCI+XG4gICAgICBBbGwgY2hhbmdlcyBhY3Jvc3MgZW52aXJvbm1lbnRzLCBwcm9maWxlcywgYW5kIGdsb2JhbHMuIFJlYWQtb25seSwgYXBwZW5kLW9ubHkuXG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcWEtYXVkaXQtbG9nLWNsb3NlLWJ0blwiIChjbGljayk9XCJvbkNsb3NlKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2UgYXVkaXQgbG9nXCI+XG4gICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2hlYWRlcj5cblxuPHNlY3Rpb24gY2xhc3M9XCJjcWEtZ3JpZCBjcWEtZ2FwLTIgY3FhLXB4LVsyMnB4XSBjcWEtcHktMyBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLWZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgc3R5bGU9XCJncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7IGJhY2tncm91bmQ6I0ZBRkJGQztcIj5cbiAgPGNxYS1keW5hbWljLXNlbGVjdCBbZm9ybV09XCJmaWx0ZXJzRm9ybVwiIFtjb25maWddPVwiZW50aXR5Q29uZmlnXCI+PC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gIDxjcWEtZHluYW1pYy1zZWxlY3QgW2Zvcm1dPVwiZmlsdGVyc0Zvcm1cIiBbY29uZmlnXT1cImVudkNvbmZpZ1wiPjwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICA8Y3FhLWR5bmFtaWMtc2VsZWN0IFtmb3JtXT1cImZpbHRlcnNGb3JtXCIgW2NvbmZpZ109XCJ1c2VyQ29uZmlnXCI+PC9jcWEtZHluYW1pYy1zZWxlY3Q+XG4gIDxjcWEtZHluYW1pYy1zZWxlY3QgW2Zvcm1dPVwiZmlsdGVyc0Zvcm1cIiBbY29uZmlnXT1cInJhbmdlQ29uZmlnXCI+PC9jcWEtZHluYW1pYy1zZWxlY3Q+XG48L3NlY3Rpb24+XG5cbjxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1vdmVyZmxvdy15LWF1dG9cIj5cbiAgPGNxYS1mdWxsLXRhYmxlLWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiPjwvY3FhLWZ1bGwtdGFibGUtbG9hZGVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxuICAgIDxjcWEtZW1wdHktc3RhdGVcbiAgICAgICpuZ0lmPVwiZmlsdGVyZWRFbnRyaWVzLmxlbmd0aCA9PT0gMDsgZWxzZSBsaXN0VHBsXCJcbiAgICAgIHRpdGxlPVwiTm8gZW50cmllcyBtYXRjaCB5b3VyIGZpbHRlcnNcIlxuICAgICAgZGVzY3JpcHRpb249XCJBZGp1c3QgdGhlIGZpbHRlcnMgYWJvdmUgdG8gd2lkZW4gdGhlIHNlYXJjaC5cIj5cbiAgICA8L2NxYS1lbXB0eS1zdGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2xpc3RUcGw+XG4gICAgICA8Y3FhLWF1ZGl0LWxvZy1lbnRyeS1jYXJkXG4gICAgICAgICpuZ0Zvcj1cImxldCBlIG9mIGZpbHRlcmVkRW50cmllczsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICAgICAgW2VudHJ5XT1cImVcIj5cbiAgICAgIDwvY3FhLWF1ZGl0LWxvZy1lbnRyeS1jYXJkPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export const ALL_FILTER_VALUE = '__all__';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWRyYXdlci5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1ZGl0LWxvZy1kcmF3ZXIvYXVkaXQtbG9nLWRyYXdlci5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkNBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgQXVkaXRFbnRpdHlUeXBlID0gJ0Vudmlyb25tZW50IFZhcmlhYmxlJyB8ICdUZXN0IERhdGEgUHJvZmlsZScgfCAnR2xvYmFsIERhdGEnO1xuZXhwb3J0IHR5cGUgQXVkaXREYXRlUmFuZ2UgPSAnMjRoJyB8ICc3ZCcgfCAnMzBkJyB8ICdhbGwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0RW50cnkge1xuICBpZDogc3RyaW5nO1xuICB0czogc3RyaW5nO1xuICB1c2VyOiBzdHJpbmc7XG4gIGVudGl0eVR5cGU6IEF1ZGl0RW50aXR5VHlwZTtcbiAgZW50aXR5TmFtZTogc3RyaW5nO1xuICBjaGFuZ2U6IHN0cmluZztcbiAgYmVmb3JlPzogc3RyaW5nIHwgbnVsbDtcbiAgYWZ0ZXI/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0RmlsdGVyT3B0aW9uIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdWRpdExvZ0RyYXdlcklucHV0cyB7XG4gIGVudHJpZXM6IEF1ZGl0RW50cnlbXTtcbiAgZW50aXR5VHlwZU9wdGlvbnM/OiBBdWRpdEZpbHRlck9wdGlvbltdO1xuICBlbnZPcHRpb25zPzogQXVkaXRGaWx0ZXJPcHRpb25bXTtcbiAgdXNlck9wdGlvbnM/OiBBdWRpdEZpbHRlck9wdGlvbltdO1xuICBkZWZhdWx0UmFuZ2U/OiBBdWRpdERhdGVSYW5nZTtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdWRpdExvZ0ZpbHRlclN0YXRlIHtcbiAgZW50aXR5VHlwZTogc3RyaW5nO1xuICBlbnY6IHN0cmluZztcbiAgdXNlcjogc3RyaW5nO1xuICByYW5nZTogQXVkaXREYXRlUmFuZ2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRMb2dEcmF3ZXJSZWYge1xuICBmaWx0ZXJDaGFuZ2UkOiBPYnNlcnZhYmxlPEF1ZGl0TG9nRmlsdGVyU3RhdGU+O1xuICBhZnRlckNsb3NlZCQ6IE9ic2VydmFibGU8dm9pZD47XG4gIGNsb3NlKCk6IHZvaWQ7XG4gIHVwZGF0ZUVudHJpZXMoZW50cmllczogQXVkaXRFbnRyeVtdKTogdm9pZDtcbiAgdXBkYXRlTG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQUxMX0ZJTFRFUl9WQUxVRSA9ICdfX2FsbF9fJztcblxuZXhwb3J0IGludGVyZmFjZSBBdWRpdExvZ0RyYXdlckludGVybmFsUmVmIGV4dGVuZHMgQXVkaXRMb2dEcmF3ZXJSZWYge1xuICByZWFkb25seSBmaWx0ZXJDaGFuZ2U6IFN1YmplY3Q8QXVkaXRMb2dGaWx0ZXJTdGF0ZT47XG4gIHJlYWRvbmx5IGFmdGVyQ2xvc2VkOiBTdWJqZWN0PHZvaWQ+O1xufVxuIl19
@@ -0,0 +1,84 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { OverlayConfig } from '@angular/cdk/overlay';
3
+ import { ComponentPortal } from '@angular/cdk/portal';
4
+ import { Subject } from 'rxjs';
5
+ import { filter } from 'rxjs/operators';
6
+ import { AuditLogDrawerComponent } from './audit-log-drawer.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/cdk/overlay";
9
+ export class AuditLogDrawerService {
10
+ constructor(overlay, injector) {
11
+ this.overlay = overlay;
12
+ this.injector = injector;
13
+ this.currentOverlayRef = null;
14
+ }
15
+ open(inputs) {
16
+ if (this.currentOverlayRef) {
17
+ this.currentOverlayRef.dispose();
18
+ this.currentOverlayRef = null;
19
+ }
20
+ const positionStrategy = this.overlay.position()
21
+ .global()
22
+ .right('0')
23
+ .top('0')
24
+ .bottom('0');
25
+ const overlayRef = this.overlay.create(new OverlayConfig({
26
+ hasBackdrop: true,
27
+ backdropClass: ['cqa-audit-log-drawer-backdrop'],
28
+ scrollStrategy: this.overlay.scrollStrategies.block(),
29
+ positionStrategy,
30
+ panelClass: ['cqa-audit-log-drawer-panel', 'cqa-ui-root'],
31
+ maxWidth: '100vw',
32
+ height: '100%',
33
+ }));
34
+ const portal = new ComponentPortal(AuditLogDrawerComponent, null, this.injector);
35
+ const componentRef = overlayRef.attach(portal);
36
+ const instance = componentRef.instance;
37
+ instance.entries = inputs.entries ?? [];
38
+ instance.entityTypeOptions = inputs.entityTypeOptions ?? [];
39
+ instance.envOptions = inputs.envOptions ?? [];
40
+ instance.userOptions = inputs.userOptions ?? [];
41
+ instance.defaultRange = inputs.defaultRange ?? '7d';
42
+ instance.isLoading = !!inputs.isLoading;
43
+ componentRef.changeDetectorRef.markForCheck();
44
+ const filterChange = new Subject();
45
+ const afterClosed = new Subject();
46
+ instance.filterChange.subscribe((s) => filterChange.next(s));
47
+ const closeAll = () => {
48
+ if (!this.currentOverlayRef) {
49
+ return;
50
+ }
51
+ overlayRef.dispose();
52
+ this.currentOverlayRef = null;
53
+ afterClosed.next();
54
+ afterClosed.complete();
55
+ filterChange.complete();
56
+ };
57
+ instance.close.subscribe(() => closeAll());
58
+ overlayRef.backdropClick().subscribe(() => closeAll());
59
+ overlayRef.keydownEvents()
60
+ .pipe(filter((e) => e.key === 'Escape' || e.key === 'Esc'))
61
+ .subscribe(() => closeAll());
62
+ this.currentOverlayRef = overlayRef;
63
+ return {
64
+ filterChange$: filterChange.asObservable(),
65
+ afterClosed$: afterClosed.asObservable(),
66
+ close: () => closeAll(),
67
+ updateEntries: (entries) => {
68
+ instance.entries = entries ?? [];
69
+ componentRef.changeDetectorRef.markForCheck();
70
+ },
71
+ updateLoading: (isLoading) => {
72
+ instance.isLoading = !!isLoading;
73
+ componentRef.changeDetectorRef.markForCheck();
74
+ },
75
+ };
76
+ }
77
+ }
78
+ AuditLogDrawerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuditLogDrawerService, deps: [{ token: i1.Overlay }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
79
+ AuditLogDrawerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuditLogDrawerService, providedIn: 'root' });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuditLogDrawerService, decorators: [{
81
+ type: Injectable,
82
+ args: [{ providedIn: 'root' }]
83
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Injector }]; } });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWRyYXdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hdWRpdC1sb2ctZHJhd2VyL2F1ZGl0LWxvZy1kcmF3ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVF2RSxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQTZCLE9BQWdCLEVBQW1CLFFBQWtCO1FBQXJELFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBbUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUYxRSxzQkFBaUIsR0FBc0IsSUFBSSxDQUFDO0lBRWlDLENBQUM7SUFFL0UsSUFBSSxDQUFDLE1BQTRCO1FBQ3RDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQy9CO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTthQUM3QyxNQUFNLEVBQUU7YUFDUixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsR0FBRyxDQUFDLEdBQUcsQ0FBQzthQUNSLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVmLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENB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RUFBRTtnQkFDekIsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO2dCQUNqQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEQsQ0FBQztZQUNELGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMzQixRQUFRLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2pDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7O2tIQTFFVSxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQURSLE1BQU07MkZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdWRpdExvZ0RyYXdlckNvbXBvbmVudCB9IGZyb20gJy4vYXVkaXQtbG9nLWRyYXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQXVkaXRMb2dEcmF3ZXJJbnB1dHMsXG4gIEF1ZGl0TG9nRHJhd2VyUmVmLFxuICBBdWRpdExvZ0ZpbHRlclN0YXRlLFxufSBmcm9tICcuL2F1ZGl0LWxvZy1kcmF3ZXIubW9kZWxzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdWRpdExvZ0RyYXdlclNlcnZpY2Uge1xuICBwcml2YXRlIGN1cnJlbnRPdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBwdWJsaWMgb3BlbihpbnB1dHM6IEF1ZGl0TG9nRHJhd2VySW5wdXRzKTogQXVkaXRMb2dEcmF3ZXJSZWYge1xuICAgIGlmICh0aGlzLmN1cnJlbnRPdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLmN1cnJlbnRPdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuY3VycmVudE92ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxuICAgICAgLmdsb2JhbCgpXG4gICAgICAucmlnaHQoJzAnKVxuICAgICAgLnRvcCgnMCcpXG4gICAgICAuYm90dG9tKCcwJyk7XG5cbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnY3FhLWF1ZGl0LWxvZy1kcmF3ZXItYmFja2Ryb3AnXSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnY3FhLWF1ZGl0LWxvZy1kcmF3ZXItcGFuZWwnLCAnY3FhLXVpLXJvb3QnXSxcbiAgICAgIG1heFdpZHRoOiAnMTAwdncnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChBdWRpdExvZ0RyYXdlckNvbXBvbmVudCwgbnVsbCwgdGhpcy5pbmplY3Rvcik7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcblxuICAgIGluc3RhbmNlLmVudHJpZXMgPSBpbnB1dHMuZW50cmllcyA/PyBbXTtcbiAgICBpbnN0YW5jZS5lbnRpdHlUeXBlT3B0aW9ucyA9IGlucHV0cy5lbnRpdHlUeXBlT3B0aW9ucyA/PyBbXTtcbiAgICBpbnN0YW5jZS5lbnZPcHRpb25zID0gaW5wdXRzLmVudk9wdGlvbnMgPz8gW107XG4gICAgaW5zdGFuY2UudXNlck9wdGlvbnMgPSBpbnB1dHMudXNlck9wdGlvbnMgPz8gW107XG4gICAgaW5zdGFuY2UuZGVmYXVsdFJhbmdlID0gaW5wdXRzLmRlZmF1bHRSYW5nZSA/PyAnN2QnO1xuICAgIGluc3RhbmNlLmlzTG9hZGluZyA9ICEhaW5wdXRzLmlzTG9hZGluZztcbiAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICBjb25zdCBmaWx0ZXJDaGFuZ2UgPSBuZXcgU3ViamVjdDxBdWRpdExvZ0ZpbHRlclN0YXRlPigpO1xuICAgIGNvbnN0IGFmdGVyQ2xvc2VkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGluc3RhbmNlLmZpbHRlckNoYW5nZS5zdWJzY3JpYmUoKHM6IEF1ZGl0TG9nRmlsdGVyU3RhdGUpID0+IGZpbHRlckNoYW5nZS5uZXh0KHMpKTtcblxuICAgIGNvbnN0IGNsb3NlQWxsID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmN1cnJlbnRPdmVybGF5UmVmKSB7IHJldHVybjsgfVxuICAgICAgb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmN1cnJlbnRPdmVybGF5UmVmID0gbnVsbDtcbiAgICAgIGFmdGVyQ2xvc2VkLm5leHQoKTtcbiAgICAgIGFmdGVyQ2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgICBmaWx0ZXJDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB9O1xuXG4gICAgaW5zdGFuY2UuY2xvc2Uuc3Vic2NyaWJlKCgpID0+IGNsb3NlQWxsKCkpO1xuICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiBjbG9zZUFsbCgpKTtcbiAgICBvdmVybGF5UmVmLmtleWRvd25FdmVudHMoKVxuICAgICAgLnBpcGUoZmlsdGVyKChlOiBLZXlib2FyZEV2ZW50KSA9PiBlLmtleSA9PT0gJ0VzY2FwZScgfHwgZS5rZXkgPT09ICdFc2MnKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gY2xvc2VBbGwoKSk7XG5cbiAgICB0aGlzLmN1cnJlbnRPdmVybGF5UmVmID0gb3ZlcmxheVJlZjtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXJDaGFuZ2UkOiBmaWx0ZXJDaGFuZ2UuYXNPYnNlcnZhYmxlKCksXG4gICAgICBhZnRlckNsb3NlZCQ6IGFmdGVyQ2xvc2VkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgY2xvc2U6ICgpID0+IGNsb3NlQWxsKCksXG4gICAgICB1cGRhdGVFbnRyaWVzOiAoZW50cmllcykgPT4ge1xuICAgICAgICBpbnN0YW5jZS5lbnRyaWVzID0gZW50cmllcyA/PyBbXTtcbiAgICAgICAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZUxvYWRpbmc6IChpc0xvYWRpbmcpID0+IHtcbiAgICAgICAgaW5zdGFuY2UuaXNMb2FkaW5nID0gISFpc0xvYWRpbmc7XG4gICAgICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,30 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class AuditLogEntryCardComponent {
5
+ get userShortName() {
6
+ const u = this.entry?.user || '';
7
+ const idx = u.indexOf('@');
8
+ return idx > 0 ? u.substring(0, idx) : u;
9
+ }
10
+ get etypeClass() {
11
+ switch (this.entry?.entityType) {
12
+ case 'Environment Variable': return 'cqa-audit-log-etype-ev';
13
+ case 'Test Data Profile': return 'cqa-audit-log-etype-tdp';
14
+ case 'Global Data': return 'cqa-audit-log-etype-gd';
15
+ default: return '';
16
+ }
17
+ }
18
+ get hasDiff() {
19
+ return this.entry?.before != null || this.entry?.after != null;
20
+ }
21
+ }
22
+ AuditLogEntryCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuditLogEntryCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
+ AuditLogEntryCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AuditLogEntryCardComponent, selector: "cqa-audit-log-entry-card", inputs: { entry: "entry" }, host: { classAttribute: "cqa-ui-root cqa-audit-log-row" }, ngImport: i0, template: "<div class=\"cqa-audit-log-meta cqa-font-inter\">\n <div class=\"cqa-audit-log-ts\">{{ entry?.ts }}</div>\n <div class=\"cqa-audit-log-user\">{{ userShortName }}</div>\n</div>\n<div class=\"cqa-min-w-0\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-flex-wrap cqa-mb-1\">\n <span class=\"cqa-audit-log-etype\" [ngClass]=\"etypeClass\">{{ entry?.entityType }}</span>\n <span class=\"cqa-text-[13px] cqa-font-medium cqa-text-[#0F172A]\">{{ entry?.entityName }}</span>\n </div>\n <div class=\"cqa-text-xs cqa-text-[#64748B]\">{{ entry?.change }}</div>\n <div *ngIf=\"hasDiff\" class=\"cqa-audit-log-diff\">\n <span class=\"cqa-audit-log-before\">{{ entry?.before || '\u2014' }}</span>\n <span class=\"cqa-audit-log-arrow\">\u2192</span>\n <span class=\"cqa-audit-log-after\">{{ entry?.after || '\u2014' }}</span>\n </div>\n</div>\n", directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuditLogEntryCardComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'cqa-audit-log-entry-card', host: { class: 'cqa-ui-root cqa-audit-log-row' }, template: "<div class=\"cqa-audit-log-meta cqa-font-inter\">\n <div class=\"cqa-audit-log-ts\">{{ entry?.ts }}</div>\n <div class=\"cqa-audit-log-user\">{{ userShortName }}</div>\n</div>\n<div class=\"cqa-min-w-0\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-flex-wrap cqa-mb-1\">\n <span class=\"cqa-audit-log-etype\" [ngClass]=\"etypeClass\">{{ entry?.entityType }}</span>\n <span class=\"cqa-text-[13px] cqa-font-medium cqa-text-[#0F172A]\">{{ entry?.entityName }}</span>\n </div>\n <div class=\"cqa-text-xs cqa-text-[#64748B]\">{{ entry?.change }}</div>\n <div *ngIf=\"hasDiff\" class=\"cqa-audit-log-diff\">\n <span class=\"cqa-audit-log-before\">{{ entry?.before || '\u2014' }}</span>\n <span class=\"cqa-audit-log-arrow\">\u2192</span>\n <span class=\"cqa-audit-log-after\">{{ entry?.after || '\u2014' }}</span>\n </div>\n</div>\n" }]
27
+ }], propDecorators: { entry: [{
28
+ type: Input
29
+ }] } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWVudHJ5LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hdWRpdC1sb2ctZHJhd2VyL2F1ZGl0LWxvZy1lbnRyeS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYXVkaXQtbG9nLWRyYXdlci9hdWRpdC1sb2ctZW50cnktY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUWpELE1BQU0sT0FBTywwQkFBMEI7SUFHckMsSUFBVyxhQUFhO1FBQ3RCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDOUIsS0FBSyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sd0JBQXdCLENBQUM7WUFDN0QsS0FBSyxtQkFBbUIsQ0FBQyxDQUFJLE9BQU8seUJBQXlCLENBQUM7WUFDOUQsS0FBSyxhQUFhLENBQUMsQ0FBVSxPQUFPLHdCQUF3QixDQUFDO1lBQzdELE9BQU8sQ0FBQyxDQUFxQixPQUFPLEVBQUUsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDO0lBQ2pFLENBQUM7O3VIQXBCVSwwQkFBMEI7MkdBQTFCLDBCQUEwQix1SkNSdkMsODFCQWdCQTsyRkRSYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsMEJBQTBCLFFBRTlCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFOzhCQUd2QyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdWRpdEVudHJ5IH0gZnJvbSAnLi9hdWRpdC1sb2ctZHJhd2VyLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1hdWRpdC1sb2ctZW50cnktY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdWRpdC1sb2ctZW50cnktY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCBjcWEtYXVkaXQtbG9nLXJvdycgfSxcbn0pXG5leHBvcnQgY2xhc3MgQXVkaXRMb2dFbnRyeUNhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSBlbnRyeSE6IEF1ZGl0RW50cnk7XG5cbiAgcHVibGljIGdldCB1c2VyU2hvcnROYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdSA9IHRoaXMuZW50cnk/LnVzZXIgfHwgJyc7XG4gICAgY29uc3QgaWR4ID0gdS5pbmRleE9mKCdAJyk7XG4gICAgcmV0dXJuIGlkeCA+IDAgPyB1LnN1YnN0cmluZygwLCBpZHgpIDogdTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXR5cGVDbGFzcygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5lbnRyeT8uZW50aXR5VHlwZSkge1xuICAgICAgY2FzZSAnRW52aXJvbm1lbnQgVmFyaWFibGUnOiByZXR1cm4gJ2NxYS1hdWRpdC1sb2ctZXR5cGUtZXYnO1xuICAgICAgY2FzZSAnVGVzdCBEYXRhIFByb2ZpbGUnOiAgICByZXR1cm4gJ2NxYS1hdWRpdC1sb2ctZXR5cGUtdGRwJztcbiAgICAgIGNhc2UgJ0dsb2JhbCBEYXRhJzogICAgICAgICAgcmV0dXJuICdjcWEtYXVkaXQtbG9nLWV0eXBlLWdkJztcbiAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzRGlmZigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbnRyeT8uYmVmb3JlICE9IG51bGwgfHwgdGhpcy5lbnRyeT8uYWZ0ZXIgIT0gbnVsbDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNxYS1hdWRpdC1sb2ctbWV0YSBjcWEtZm9udC1pbnRlclwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWF1ZGl0LWxvZy10c1wiPnt7IGVudHJ5Py50cyB9fTwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY3FhLWF1ZGl0LWxvZy11c2VyXCI+e3sgdXNlclNob3J0TmFtZSB9fTwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY3FhLW1pbi13LTBcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1mbGV4LXdyYXAgY3FhLW1iLTFcIj5cbiAgICA8c3BhbiBjbGFzcz1cImNxYS1hdWRpdC1sb2ctZXR5cGVcIiBbbmdDbGFzc109XCJldHlwZUNsYXNzXCI+e3sgZW50cnk/LmVudGl0eVR5cGUgfX08L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bMTNweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjMEYxNzJBXVwiPnt7IGVudHJ5Py5lbnRpdHlOYW1lIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LVsjNjQ3NDhCXVwiPnt7IGVudHJ5Py5jaGFuZ2UgfX08L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImhhc0RpZmZcIiBjbGFzcz1cImNxYS1hdWRpdC1sb2ctZGlmZlwiPlxuICAgIDxzcGFuIGNsYXNzPVwiY3FhLWF1ZGl0LWxvZy1iZWZvcmVcIj57eyBlbnRyeT8uYmVmb3JlIHx8ICfigJQnIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiY3FhLWF1ZGl0LWxvZy1hcnJvd1wiPuKGkjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImNxYS1hdWRpdC1sb2ctYWZ0ZXJcIj57eyBlbnRyeT8uYWZ0ZXIgfHwgJ+KAlCcgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -89,6 +89,18 @@ export class DialogComponent {
89
89
  return 'filled';
90
90
  }
91
91
  }
92
+ isButtonDisabled(button) {
93
+ const d = button.disabled;
94
+ if (typeof d === 'function') {
95
+ try {
96
+ return !!d(this.dialogRef);
97
+ }
98
+ catch {
99
+ return false;
100
+ }
101
+ }
102
+ return !!d;
103
+ }
92
104
  buttonHostClasses(button) {
93
105
  const role = this.normalizeRole(button.role);
94
106
  if (role === 'warn') {
@@ -116,12 +128,12 @@ export class DialogComponent {
116
128
  }
117
129
  }
118
130
  DialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DialogComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
119
- DialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DialogComponent, selector: "cqa-dialog", host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }], ngImport: i0, template: "<div class=\"cqa-ui-root\">\n <div class=\"cqa-flex cqa-w-full cqa-justify-center cqa-px-4 sm:cqa-px-6\">\n <div [ngClass]=\"panelClassList\" [ngStyle]=\"panelStyles\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-5\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-text-lg cqa-font-semibold cqa-text-dialog\">\n {{ config.title }}\n </h2>\n\n <p *ngIf=\"config.description\" class=\"cqa-text-sm cqa-leading-6 cqa-text-dialog-secondary\">\n {{ config.description }}\n </p>\n\n <div *ngIf=\"config.warning\"\n class=\"cqa-rounded-xl cqa-border cqa-border-red-200 cqa-bg-red-50 cqa-px-4 cqa-py-3 cqa-text-sm cqa-leading-5 cqa-text-red-700\">\n {{ config.warning }}\n </div>\n </div>\n\n <div class=\"cqa-text-sm cqa-text-dialog\" [class.hidden]=\"!contentAttached\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div class=\"cqa-mt-4 cqa-flex cqa-flex-wrap cqa-gap-3\" [ngClass]=\"buttonAlignmentClass\">\n <cqa-button *ngFor=\"let button of config.buttons\" type=\"button\" [variant]=\"buttonVariant(button)\"\n [ngClass]=\"buttonHostClasses(button)\" (clicked)=\"onButtonClick(button)\">\n {{ button.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n</div>", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "loading", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
131
+ DialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DialogComponent, selector: "cqa-dialog", host: { classAttribute: "cqa-ui-root" }, viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }], ngImport: i0, template: "<div class=\"cqa-ui-root\">\n <div class=\"cqa-flex cqa-w-full cqa-justify-center cqa-px-4 sm:cqa-px-6\">\n <div [ngClass]=\"panelClassList\" [ngStyle]=\"panelStyles\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-5\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-text-lg cqa-font-semibold cqa-text-dialog\">\n {{ config.title }}\n </h2>\n\n <p *ngIf=\"config.description\" class=\"cqa-text-sm cqa-leading-6 cqa-text-dialog-secondary\">\n {{ config.description }}\n </p>\n\n <div *ngIf=\"config.warning\"\n class=\"cqa-rounded-xl cqa-border cqa-border-red-200 cqa-bg-red-50 cqa-px-4 cqa-py-3 cqa-text-sm cqa-leading-5 cqa-text-red-700\">\n {{ config.warning }}\n </div>\n </div>\n\n <div class=\"cqa-text-sm cqa-text-dialog\" [class.hidden]=\"!contentAttached\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div class=\"cqa-mt-4 cqa-flex cqa-flex-wrap cqa-gap-3\" [ngClass]=\"buttonAlignmentClass\">\n <cqa-button *ngFor=\"let button of config.buttons\" type=\"button\" [variant]=\"buttonVariant(button)\"\n [disabled]=\"isButtonDisabled(button)\"\n [ngClass]=\"buttonHostClasses(button)\" (clicked)=\"onButtonClick(button)\">\n {{ button.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n</div>", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "loading", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
120
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DialogComponent, decorators: [{
121
133
  type: Component,
122
- args: [{ selector: 'cqa-dialog', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\">\n <div class=\"cqa-flex cqa-w-full cqa-justify-center cqa-px-4 sm:cqa-px-6\">\n <div [ngClass]=\"panelClassList\" [ngStyle]=\"panelStyles\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-5\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-text-lg cqa-font-semibold cqa-text-dialog\">\n {{ config.title }}\n </h2>\n\n <p *ngIf=\"config.description\" class=\"cqa-text-sm cqa-leading-6 cqa-text-dialog-secondary\">\n {{ config.description }}\n </p>\n\n <div *ngIf=\"config.warning\"\n class=\"cqa-rounded-xl cqa-border cqa-border-red-200 cqa-bg-red-50 cqa-px-4 cqa-py-3 cqa-text-sm cqa-leading-5 cqa-text-red-700\">\n {{ config.warning }}\n </div>\n </div>\n\n <div class=\"cqa-text-sm cqa-text-dialog\" [class.hidden]=\"!contentAttached\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div class=\"cqa-mt-4 cqa-flex cqa-flex-wrap cqa-gap-3\" [ngClass]=\"buttonAlignmentClass\">\n <cqa-button *ngFor=\"let button of config.buttons\" type=\"button\" [variant]=\"buttonVariant(button)\"\n [ngClass]=\"buttonHostClasses(button)\" (clicked)=\"onButtonClick(button)\">\n {{ button.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
134
+ args: [{ selector: 'cqa-dialog', changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'cqa-ui-root' }, template: "<div class=\"cqa-ui-root\">\n <div class=\"cqa-flex cqa-w-full cqa-justify-center cqa-px-4 sm:cqa-px-6\">\n <div [ngClass]=\"panelClassList\" [ngStyle]=\"panelStyles\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-5\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-text-lg cqa-font-semibold cqa-text-dialog\">\n {{ config.title }}\n </h2>\n\n <p *ngIf=\"config.description\" class=\"cqa-text-sm cqa-leading-6 cqa-text-dialog-secondary\">\n {{ config.description }}\n </p>\n\n <div *ngIf=\"config.warning\"\n class=\"cqa-rounded-xl cqa-border cqa-border-red-200 cqa-bg-red-50 cqa-px-4 cqa-py-3 cqa-text-sm cqa-leading-5 cqa-text-red-700\">\n {{ config.warning }}\n </div>\n </div>\n\n <div class=\"cqa-text-sm cqa-text-dialog\" [class.hidden]=\"!contentAttached\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div class=\"cqa-mt-4 cqa-flex cqa-flex-wrap cqa-gap-3\" [ngClass]=\"buttonAlignmentClass\">\n <cqa-button *ngFor=\"let button of config.buttons\" type=\"button\" [variant]=\"buttonVariant(button)\"\n [disabled]=\"isButtonDisabled(button)\"\n [ngClass]=\"buttonHostClasses(button)\" (clicked)=\"onButtonClick(button)\">\n {{ button.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
123
135
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { portalOutlet: [{
124
136
  type: ViewChild,
125
137
  args: [CdkPortalOutlet, { static: true }]
126
138
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBR1QsU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQW1CLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVl2RixNQUFNLE9BQU8sZUFBZTtJQVMxQixZQUE2QixnQkFBa0MsRUFBbUIsR0FBc0I7UUFBM0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFtQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUZ4RyxvQkFBZSxHQUFHLEtBQUssQ0FBQztJQUVtRixDQUFDO0lBRTVHLGNBQWMsQ0FBQyxRQUE4QixFQUFFLE9BQWlDO1FBQzlFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLE9BQU87U0FDUjtRQUVELE1BQU0sZUFBZSxHQUNuQixPQUFPO1lBQ1A7Z0JBQ0UsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSTtnQkFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSTthQUN4QixDQUFDO1FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBbUM7UUFDakQsSUFBSSxDQUFDLElBQUks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QUM7SUFDWixDQUFDO0lBRU8sbUJBQW1CLENBQUMsU0FBZ0M7UUFDMUQsUUFBUSxTQUFTLEVBQUU7WUFDakIsS0FBSyxNQUFNO2dCQUNULE9BQU8sbUJBQW1CLENBQUM7WUFDN0IsS0FBSyxRQUFRO2dCQUNYLE9BQU8sb0JBQW9CLENBQUM7WUFDOUIsS0FBSyxPQUFPLENBQUM7WUFDYjtnQkFDRSxPQUFPLGlCQUFpQixDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBd0I7UUFDNUMsT0FBTyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7NEdBeklVLGVBQWU7Z0dBQWYsZUFBZSx5SUFFZixlQUFlLDhEQ3ZCNUIsbzRDQWdDTTsyRkRYTyxlQUFlO2tCQVAzQixTQUFTOytCQUNFLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTSxRQUN6QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7dUlBSWdCLFlBQVk7c0JBQXpELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrUG9ydGFsT3V0bGV0LCBDb21wb25lbnRQb3J0YWwsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBEaWFsb2dCdXR0b25BbGlnbm1lbnQsIERpYWxvZ0J1dHRvbkNvbmZpZywgRGlhbG9nQ29uZmlnLCBEaWFsb2dDb250ZW50Q29uZmlnIH0gZnJvbSAnLi9kaWFsb2cubW9kZWxzJztcbmltcG9ydCB7IEJ1dHRvblZhcmlhbnQgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICcuL2RpYWxvZy1yZWYnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ0NvbXBvbmVudDxUUmVzdWx0ID0gdW5rbm93bj4ge1xuXG4gIEBWaWV3Q2hpbGQoQ2RrUG9ydGFsT3V0bGV0LCB7IHN0YXRpYzogdHJ1ZSB9KSBwb3J0YWxPdXRsZXQ/OiBDZGtQb3J0YWxPdXRsZXQ7XG5cbiAgY29uZmlnITogRGlhbG9nQ29uZmlnPERpYWxvZ0NvbnRlbnRDb25maWcsIFRSZXN1bHQ+O1xuICBkaWFsb2dSZWYhOiBEaWFsb2dSZWY8VFJlc3VsdD47XG5cbiAgY29udGVudEF0dGFjaGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgYXR0YWNoVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+LCBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucG9ydGFsT3V0bGV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGVtcGxhdGVDb250ZXh0ID1cbiAgICAgIGNvbnRleHQgPz9cbiAgICAgIHtcbiAgICAgICAgJGltcGxpY2l0OiB0aGlzLmNvbmZpZz8uZGF0YSxcbiAgICAgICAgZGF0YTogdGhpcy5jb25maWc/LmRhdGEsXG4gICAgICB9O1xuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0ZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmLCB0ZW1wbGF0ZUNvbnRleHQpO1xuICAgIHRoaXMucG9ydGFsT3V0bGV0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHBvcnRhbCk7XG4gICAgdGhpcy5tYXJrQ29udGVudEF0dGFjaGVkKCk7XG4gIH1cblxuICBhdHRhY2hDb21wb25lbnQoY29tcG9uZW50OiBDb21wb25lbnRQb3J0YWw8dW5rbm93bj4pOiBDb21wb25lbnRSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5wb3J0YWxPdXRsZXQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5wb3J0YWxPdXRsZXQuYXR0YWNoQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudCk7XG4gICAgdGhpcy5tYXJrQ29udGVudEF0dGFjaGVkKCk7XG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIGFzeW5jIG9uQnV0dG9uQ2xpY2soYnV0dG9uOiBEaWFsb2dCdXR0b25Db25maWc8VFJlc3VsdD4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjbG9zZU9uQ2xpY2sgPSBidXR0b24uY2xvc2VPbkNsaWNrID8/IHRydWU7XG4gICAgbGV0IGhhbmRsZXJSZXN1bHQ6IFRSZXN1bHQgfCBmYWxzZSB8IHZvaWQgfCBQcm9taXNlPFRSZXN1bHQgfCBmYWxzZSB8IHZvaWQ+ID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKGJ1dHRvbi5oYW5kbGVyKSB7XG4gICAgICBoYW5kbGVyUmVzdWx0ID0gYnV0dG9uLmhhbmRsZXIodGhpcy5kaWFsb2dSZWYpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc29sdmVkID0gaGFuZGxlclJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UgPyBhd2FpdCBoYW5kbGVyUmVzdWx0IDogaGFuZGxlclJlc3VsdDtcblxuICAgIGlmICghY2xvc2VPbkNsaWNrIHx8IHJlc29sdmVkID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc29sdmVkIGFzIFRSZXN1bHQgfCB1bmRlZmluZWQpO1xuICB9XG5cbiAgZ2V0IGJ1dHRvbkFsaWdubWVudENsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYWxpZ25tZW50ID0gdGhpcy5jb25maWc/LmJ1dHRvbkFsaWdubWVudCA/PyAncmlnaHQnO1xuICAgIHJldHVybiB0aGlzLm1hcEFsaWdubWVudFRvQ2xhc3MoYWxpZ25tZW50KTtcbiAgfVxuXG4gIGdldCBwYW5lbENsYXNzTGlzdCgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYmFzZUNsYXNzZXMgPSBbXG4gICAgICAnY3FhLXJlbGF0aXZlJyxcbiAgICAgICdjcWEtdy1mdWxsJyxcbiAgICAgICdjcWEtYmctd2hpdGUnLFxuICAgICAgJ2NxYS1yb3VuZGVkLTJ4bCcsXG4gICAgICAnY3FhLXNoYWRvdy1tZCcsXG4gICAgICAnY3FhLWJvcmRlcicsXG4gICAgICAnY3FhLWJvcmRlci1ib3JkZXItZGVmYXVsdCcsXG4gICAgICAnY3FhLXAtNicsXG4gICAgICAnY3FhLXRleHQtbGVmdCcsXG4gICAgXTtcblxuICAgIGNvbnN0IGN1c3RvbSA9IHRoaXMuY29uZmlnPy5wYW5lbENsYXNzO1xuXG4gICAgaWYgKCFjdXN0b20pIHtcbiAgICAgIHJldHVybiBiYXNlQ2xhc3NlcztcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjdXN0b20pID8gWy4uLmJhc2VDbGFzc2VzLCAuLi5jdXN0b21dIDogWy4uLmJhc2VDbGFzc2VzLCBjdXN0b21dO1xuICB9XG5cbiAgZ2V0IHBhbmVsU3R5bGVzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogdGhpcy5jb25maWc/LndpZHRoLFxuICAgICAgbWF4V2lkdGg6IHRoaXMuY29uZmlnPy5tYXhXaWR0aCA/PyAnNDgwcHgnLFxuICAgIH07XG4gIH1cblxuICBidXR0b25WYXJpYW50KGJ1dHRvbjogRGlhbG9nQnV0dG9uQ29uZmlnPFRSZXN1bHQ+KTogQnV0dG9uVmFyaWFudCB7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMubm9ybWFsaXplUm9sZShidXR0b24ucm9sZSk7XG5cbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgJ3NlY29uZGFyeSc6XG4gICAgICAgIHJldHVybiAnb3V0bGluZWQnO1xuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIHJldHVybiAndGV4dCc7XG4gICAgICBjYXNlICd0b25hbCc6XG4gICAgICAgIHJldHVybiAndG9uYWwnO1xuICAgICAgY2FzZSAnZWxldmF0ZWQnOlxuICAgICAgICByZXR1cm4gJ2VsZXZhdGVkJztcbiAgICAgIGNhc2UgJ2ZpbGxlZCc6XG4gICAgICBjYXNlICdwcmltYXJ5JzpcbiAgICAgIGNhc2UgJ3dhcm4nOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmaWxsZWQnO1xuICAgIH1cbiAgfVxuXG4gIGJ1dHRvbkhvc3RDbGFzc2VzKGJ1dHRvbjogRGlhbG9nQnV0dG9uQ29uZmlnPFRSZXN1bHQ+KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm5vcm1hbGl6ZVJvbGUoYnV0dG9uLnJvbGUpO1xuXG4gICAgaWYgKHJvbGUgPT09ICd3YXJuJykge1xuICAgICAgcmV0dXJuIFsnY3FhLWRpYWxvZy1idG4td2FybiddO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwQWxpZ25tZW50VG9DbGFzcyhhbGlnbm1lbnQ6IERpYWxvZ0J1dHRvbkFsaWdubWVudCk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChhbGlnbm1lbnQpIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4gJ2NxYS1qdXN0aWZ5LXN0YXJ0JztcbiAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgIHJldHVybiAnY3FhLWp1c3RpZnktY2VudGVyJztcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWp1c3RpZnktZW5kJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcmtDb250ZW50QXR0YWNoZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZW50QXR0YWNoZWQgPSB0cnVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVSb2xlKHJvbGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChyb2xlID8/ICdzZWNvbmRhcnknKS50cmltKCkuc3BsaXQoL1xccysvKVswXTtcbiAgfVxufVxuXG5cbiIsIjxkaXYgY2xhc3M9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLXctZnVsbCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXB4LTQgc206Y3FhLXB4LTZcIj5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInBhbmVsQ2xhc3NMaXN0XCIgW25nU3R5bGVdPVwicGFuZWxTdHlsZXNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC01XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiY3FhLXRleHQtbGcgY3FhLWZvbnQtc2VtaWJvbGQgY3FhLXRleHQtZGlhbG9nXCI+XG4gICAgICAgICAgICB7eyBjb25maWcudGl0bGUgfX1cbiAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgPHAgKm5nSWY9XCJjb25maWcuZGVzY3JpcHRpb25cIiBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLTYgY3FhLXRleHQtZGlhbG9nLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAge3sgY29uZmlnLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbmZpZy53YXJuaW5nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXJvdW5kZWQteGwgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXJlZC0yMDAgY3FhLWJnLXJlZC01MCBjcWEtcHgtNCBjcWEtcHktMyBjcWEtdGV4dC1zbSBjcWEtbGVhZGluZy01IGNxYS10ZXh0LXJlZC03MDBcIj5cbiAgICAgICAgICAgIHt7IGNvbmZpZy53YXJuaW5nIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtdGV4dC1kaWFsb2dcIiBbY2xhc3MuaGlkZGVuXT1cIiFjb250ZW50QXR0YWNoZWRcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0PjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtbXQtNCBjcWEtZmxleCBjcWEtZmxleC13cmFwIGNxYS1nYXAtM1wiIFtuZ0NsYXNzXT1cImJ1dHRvbkFsaWdubWVudENsYXNzXCI+XG4gICAgICAgICAgPGNxYS1idXR0b24gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBjb25maWcuYnV0dG9uc1wiIHR5cGU9XCJidXR0b25cIiBbdmFyaWFudF09XCJidXR0b25WYXJpYW50KGJ1dHRvbilcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiYnV0dG9uSG9zdENsYXNzZXMoYnV0dG9uKVwiIChjbGlja2VkKT1cIm9uQnV0dG9uQ2xpY2soYnV0dG9uKVwiPlxuICAgICAgICAgICAge3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBR1QsU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQW1CLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVl2RixNQUFNLE9BQU8sZUFBZTtJQVMxQixZQUE2QixnQkFBa0MsRUFBbUIsR0FBc0I7UUFBM0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFtQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUZ4RyxvQkFBZSxHQUFHLEtBQUssQ0FBQztJQUVtRixDQUFDO0lBRTVHLGNBQWMsQ0FBQyxRQUE4QixFQUFFLE9BQWlDO1FBQzlFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLE9BQU87U0FDUjtRQUVELE1BQU0sZUFBZSxHQUNuQixPQUFPO1lBQ1A7Z0JBQ0UsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSTtnQkFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSTthQUN4QixDQUFDO1FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBbUM7UUFDakQsSUFBSSxDQUFDLElBQUks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bnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXQsIENvbXBvbmVudFBvcnRhbCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IERpYWxvZ0J1dHRvbkFsaWdubWVudCwgRGlhbG9nQnV0dG9uQ29uZmlnLCBEaWFsb2dDb25maWcsIERpYWxvZ0NvbnRlbnRDb25maWcgfSBmcm9tICcuL2RpYWxvZy5tb2RlbHMnO1xuaW1wb3J0IHsgQnV0dG9uVmFyaWFudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJy4vZGlhbG9nLXJlZic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nQ29tcG9uZW50PFRSZXN1bHQgPSB1bmtub3duPiB7XG5cbiAgQFZpZXdDaGlsZChDZGtQb3J0YWxPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIHBvcnRhbE91dGxldD86IENka1BvcnRhbE91dGxldDtcblxuICBjb25maWchOiBEaWFsb2dDb25maWc8RGlhbG9nQ29udGVudENvbmZpZywgVFJlc3VsdD47XG4gIGRpYWxvZ1JlZiE6IERpYWxvZ1JlZjxUUmVzdWx0PjtcblxuICBjb250ZW50QXR0YWNoZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBhdHRhY2hUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4sIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5wb3J0YWxPdXRsZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZUNvbnRleHQgPVxuICAgICAgY29udGV4dCA/P1xuICAgICAge1xuICAgICAgICAkaW1wbGljaXQ6IHRoaXMuY29uZmlnPy5kYXRhLFxuICAgICAgICBkYXRhOiB0aGlzLmNvbmZpZz8uZGF0YSxcbiAgICAgIH07XG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYsIHRlbXBsYXRlQ29udGV4dCk7XG4gICAgdGhpcy5wb3J0YWxPdXRsZXQuYXR0YWNoVGVtcGxhdGVQb3J0YWwocG9ydGFsKTtcbiAgICB0aGlzLm1hcmtDb250ZW50QXR0YWNoZWQoKTtcbiAgfVxuXG4gIGF0dGFjaENvbXBvbmVudChjb21wb25lbnQ6IENvbXBvbmVudFBvcnRhbDx1bmtub3duPik6IENvbXBvbmVudFJlZjx1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnBvcnRhbE91dGxldCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnBvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwoY29tcG9uZW50KTtcbiAgICB0aGlzLm1hcmtDb250ZW50QXR0YWNoZWQoKTtcbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICB9XG5cbiAgYXN5bmMgb25CdXR0b25DbGljayhidXR0b246IERpYWxvZ0J1dHRvbkNvbmZpZzxUUmVzdWx0Pik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNsb3NlT25DbGljayA9IGJ1dHRvbi5jbG9zZU9uQ2xpY2sgPz8gdHJ1ZTtcbiAgICBsZXQgaGFuZGxlclJlc3VsdDogVFJlc3VsdCB8IGZhbHNlIHwgdm9pZCB8IFByb21pc2U8VFJlc3VsdCB8IGZhbHNlIHwgdm9pZD4gPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAoYnV0dG9uLmhhbmRsZXIpIHtcbiAgICAgIGhhbmRsZXJSZXN1bHQgPSBidXR0b24uaGFuZGxlcih0aGlzLmRpYWxvZ1JlZik7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb2x2ZWQgPSBoYW5kbGVyUmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSA/IGF3YWl0IGhhbmRsZXJSZXN1bHQgOiBoYW5kbGVyUmVzdWx0O1xuXG4gICAgaWYgKCFjbG9zZU9uQ2xpY2sgfHwgcmVzb2x2ZWQgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzb2x2ZWQgYXMgVFJlc3VsdCB8IHVuZGVmaW5lZCk7XG4gIH1cblxuICBnZXQgYnV0dG9uQWxpZ25tZW50Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbGlnbm1lbnQgPSB0aGlzLmNvbmZpZz8uYnV0dG9uQWxpZ25tZW50ID8/ICdyaWdodCc7XG4gICAgcmV0dXJuIHRoaXMubWFwQWxpZ25tZW50VG9DbGFzcyhhbGlnbm1lbnQpO1xuICB9XG5cbiAgZ2V0IHBhbmVsQ2xhc3NMaXN0KCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IFtcbiAgICAgICdjcWEtcmVsYXRpdmUnLFxuICAgICAgJ2NxYS13LWZ1bGwnLFxuICAgICAgJ2NxYS1iZy13aGl0ZScsXG4gICAgICAnY3FhLXJvdW5kZWQtMnhsJyxcbiAgICAgICdjcWEtc2hhZG93LW1kJyxcbiAgICAgICdjcWEtYm9yZGVyJyxcbiAgICAgICdjcWEtYm9yZGVyLWJvcmRlci1kZWZhdWx0JyxcbiAgICAgICdjcWEtcC02JyxcbiAgICAgICdjcWEtdGV4dC1sZWZ0JyxcbiAgICBdO1xuXG4gICAgY29uc3QgY3VzdG9tID0gdGhpcy5jb25maWc/LnBhbmVsQ2xhc3M7XG5cbiAgICBpZiAoIWN1c3RvbSkge1xuICAgICAgcmV0dXJuIGJhc2VDbGFzc2VzO1xuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGN1c3RvbSkgPyBbLi4uYmFzZUNsYXNzZXMsIC4uLmN1c3RvbV0gOiBbLi4uYmFzZUNsYXNzZXMsIGN1c3RvbV07XG4gIH1cblxuICBnZXQgcGFuZWxTdHlsZXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB0aGlzLmNvbmZpZz8ud2lkdGgsXG4gICAgICBtYXhXaWR0aDogdGhpcy5jb25maWc/Lm1heFdpZHRoID8/ICc0ODBweCcsXG4gICAgfTtcbiAgfVxuXG4gIGJ1dHRvblZhcmlhbnQoYnV0dG9uOiBEaWFsb2dCdXR0b25Db25maWc8VFJlc3VsdD4pOiBCdXR0b25WYXJpYW50IHtcbiAgICBjb25zdCByb2xlID0gdGhpcy5ub3JtYWxpemVSb2xlKGJ1dHRvbi5yb2xlKTtcblxuICAgIHN3aXRjaCAocm9sZSkge1xuICAgICAgY2FzZSAnc2Vjb25kYXJ5JzpcbiAgICAgICAgcmV0dXJuICdvdXRsaW5lZCc7XG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgcmV0dXJuICd0ZXh0JztcbiAgICAgIGNhc2UgJ3RvbmFsJzpcbiAgICAgICAgcmV0dXJuICd0b25hbCc7XG4gICAgICBjYXNlICdlbGV2YXRlZCc6XG4gICAgICAgIHJldHVybiAnZWxldmF0ZWQnO1xuICAgICAgY2FzZSAnZmlsbGVkJzpcbiAgICAgIGNhc2UgJ3ByaW1hcnknOlxuICAgICAgY2FzZSAnd2Fybic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZpbGxlZCc7XG4gICAgfVxuICB9XG5cbiAgaXNCdXR0b25EaXNhYmxlZChidXR0b246IERpYWxvZ0J1dHRvbkNvbmZpZzxUUmVzdWx0Pik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGQgPSBidXR0b24uZGlzYWJsZWQ7XG4gICAgaWYgKHR5cGVvZiBkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0cnkgeyByZXR1cm4gISFkKHRoaXMuZGlhbG9nUmVmKTsgfSBjYXRjaCB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gISFkO1xuICB9XG5cbiAgYnV0dG9uSG9zdENsYXNzZXMoYnV0dG9uOiBEaWFsb2dCdXR0b25Db25maWc8VFJlc3VsdD4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMubm9ybWFsaXplUm9sZShidXR0b24ucm9sZSk7XG5cbiAgICBpZiAocm9sZSA9PT0gJ3dhcm4nKSB7XG4gICAgICByZXR1cm4gWydjcWEtZGlhbG9nLWJ0bi13YXJuJ107XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBBbGlnbm1lbnRUb0NsYXNzKGFsaWdubWVudDogRGlhbG9nQnV0dG9uQWxpZ25tZW50KTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHJldHVybiAnY3FhLWp1c3RpZnktc3RhcnQnO1xuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgcmV0dXJuICdjcWEtanVzdGlmeS1jZW50ZXInO1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjcWEtanVzdGlmeS1lbmQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFya0NvbnRlbnRBdHRhY2hlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRlbnRBdHRhY2hlZCA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVJvbGUocm9sZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHJvbGUgPz8gJ3NlY29uZGFyeScpLnRyaW0oKS5zcGxpdCgvXFxzKy8pWzBdO1xuICB9XG59XG5cblxuIiwiPGRpdiBjbGFzcz1cImNxYS11aS1yb290XCI+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtdy1mdWxsIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcHgtNCBzbTpjcWEtcHgtNlwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwicGFuZWxDbGFzc0xpc3RcIiBbbmdTdHlsZV09XCJwYW5lbFN0eWxlc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTNcIj5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJjcWEtdGV4dC1sZyBjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1kaWFsb2dcIj5cbiAgICAgICAgICAgIHt7IGNvbmZpZy50aXRsZSB9fVxuICAgICAgICAgIDwvaDI+XG5cbiAgICAgICAgICA8cCAqbmdJZj1cImNvbmZpZy5kZXNjcmlwdGlvblwiIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWxlYWRpbmctNiBjcWEtdGV4dC1kaWFsb2ctc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICB7eyBjb25maWcuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLndhcm5pbmdcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtcm91bmRlZC14bCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItcmVkLTIwMCBjcWEtYmctcmVkLTUwIGNxYS1weC00IGNxYS1weS0zIGNxYS10ZXh0LXNtIGNxYS1sZWFkaW5nLTUgY3FhLXRleHQtcmVkLTcwMFwiPlxuICAgICAgICAgICAge3sgY29uZmlnLndhcm5pbmcgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS10ZXh0LWRpYWxvZ1wiIFtjbGFzcy5oaWRkZW5dPVwiIWNvbnRlbnRBdHRhY2hlZFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWxPdXRsZXQ+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1tdC00IGNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0zXCIgW25nQ2xhc3NdPVwiYnV0dG9uQWxpZ25tZW50Q2xhc3NcIj5cbiAgICAgICAgICA8Y3FhLWJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGNvbmZpZy5idXR0b25zXCIgdHlwZT1cImJ1dHRvblwiIFt2YXJpYW50XT1cImJ1dHRvblZhcmlhbnQoYnV0dG9uKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNCdXR0b25EaXNhYmxlZChidXR0b24pXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImJ1dHRvbkhvc3RDbGFzc2VzKGJ1dHRvbilcIiAoY2xpY2tlZCk9XCJvbkJ1dHRvbkNsaWNrKGJ1dHRvbilcIj5cbiAgICAgICAgICAgIHt7IGJ1dHRvbi5sYWJlbCB9fVxuICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICcuL2RpYWxvZy1yZWYnO1xuXG5leHBvcnQgdHlwZSBEaWFsb2dCdXR0b25Sb2xlID0gJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnd2FybicgfCAoc3RyaW5nICYge30pO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0J1dHRvbkNvbmZpZzxUUmVzdWx0ID0gdW5rbm93bj4ge1xuICBsYWJlbDogc3RyaW5nO1xuICByb2xlPzogRGlhbG9nQnV0dG9uUm9sZTtcbiAgaGFuZGxlcj86IChkaWFsb2dSZWY6IERpYWxvZ1JlZjxUUmVzdWx0PikgPT4gVFJlc3VsdCB8IHZvaWQgfCBQcm9taXNlPFRSZXN1bHQgfCB2b2lkPjtcbiAgY2xvc2VPbkNsaWNrPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgRGlhbG9nQnV0dG9uQWxpZ25tZW50ID0gJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlRGlhbG9nQ29udGVudDxUQ29udGV4dCA9IGFueT4ge1xuICB0eXBlOiAndGVtcGxhdGUnO1xuICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8VENvbnRleHQ+O1xuICBjb250ZXh0PzogVENvbnRleHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGlhbG9nQ29udGVudDxUSW5wdXRzID0gUmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICB0eXBlOiAnY29tcG9uZW50JztcbiAgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+O1xuICBpbnB1dHM/OiBUSW5wdXRzO1xufVxuXG5leHBvcnQgdHlwZSBEaWFsb2dDb250ZW50Q29uZmlnID1cbiAgfCBUZW1wbGF0ZURpYWxvZ0NvbnRlbnRcbiAgfCBDb21wb25lbnREaWFsb2dDb250ZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0NvbmZpZzxUQ29udGVudCBleHRlbmRzIERpYWxvZ0NvbnRlbnRDb25maWcgPSBEaWFsb2dDb250ZW50Q29uZmlnLCBUUmVzdWx0ID0gdW5rbm93bj4ge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgd2FybmluZz86IHN0cmluZztcbiAgY29udGVudD86IFRDb250ZW50O1xuICBkYXRhPzogdW5rbm93bjtcbiAgYnV0dG9uczogRGlhbG9nQnV0dG9uQ29uZmlnPFRSZXN1bHQ+W107XG4gIGJ1dHRvbkFsaWdubWVudD86IERpYWxvZ0J1dHRvbkFsaWdubWVudDtcbiAgcGFuZWxDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICB3aWR0aD86IHN0cmluZztcbiAgbWF4V2lkdGg/OiBzdHJpbmc7XG4gIGRpc2FibGVDbG9zZT86IGJvb2xlYW47XG59XG5cblxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGlhbG9nL2RpYWxvZy5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICcuL2RpYWxvZy1yZWYnO1xuXG5leHBvcnQgdHlwZSBEaWFsb2dCdXR0b25Sb2xlID0gJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnd2FybicgfCAoc3RyaW5nICYge30pO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0J1dHRvbkNvbmZpZzxUUmVzdWx0ID0gdW5rbm93bj4ge1xuICBsYWJlbDogc3RyaW5nO1xuICByb2xlPzogRGlhbG9nQnV0dG9uUm9sZTtcbiAgaGFuZGxlcj86IChkaWFsb2dSZWY6IERpYWxvZ1JlZjxUUmVzdWx0PikgPT4gVFJlc3VsdCB8IHZvaWQgfCBQcm9taXNlPFRSZXN1bHQgfCB2b2lkPjtcbiAgY2xvc2VPbkNsaWNrPzogYm9vbGVhbjtcbiAgLyoqIFN0YXRpYyBvciBkeW5hbWljIGRpc2FibGVkIHN0YXRlLiBXaGVuIGEgZnVuY3Rpb24sIGl0IHJlY2VpdmVzIHRoZSBkaWFsb2cgcmVmXG4gICAqICAoc28gY29uc3VtZXJzIGNhbiByZWFkIHRoZSByZW5kZXJlZCBjb21wb25lbnQgaW5zdGFuY2UgdmlhIGBnZXRDb21wb25lbnRJbnN0YW5jZWApXG4gICAqICBhbmQgaXMgcmUtZXZhbHVhdGVkIG9uIGV2ZXJ5IGNoYW5nZS1kZXRlY3Rpb24gcGFzcy4gKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgKChkaWFsb2dSZWY6IERpYWxvZ1JlZjxUUmVzdWx0PikgPT4gYm9vbGVhbik7XG59XG5cbmV4cG9ydCB0eXBlIERpYWxvZ0J1dHRvbkFsaWdubWVudCA9ICdsZWZ0JyB8ICdyaWdodCcgfCAnY2VudGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZURpYWxvZ0NvbnRlbnQ8VENvbnRleHQgPSBhbnk+IHtcbiAgdHlwZTogJ3RlbXBsYXRlJztcbiAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPFRDb250ZXh0PjtcbiAgY29udGV4dD86IFRDb250ZXh0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERpYWxvZ0NvbnRlbnQ8VElucHV0cyA9IFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgdHlwZTogJ2NvbXBvbmVudCc7XG4gIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPjtcbiAgaW5wdXRzPzogVElucHV0cztcbn1cblxuZXhwb3J0IHR5cGUgRGlhbG9nQ29udGVudENvbmZpZyA9XG4gIHwgVGVtcGxhdGVEaWFsb2dDb250ZW50XG4gIHwgQ29tcG9uZW50RGlhbG9nQ29udGVudDtcblxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dDb25maWc8VENvbnRlbnQgZXh0ZW5kcyBEaWFsb2dDb250ZW50Q29uZmlnID0gRGlhbG9nQ29udGVudENvbmZpZywgVFJlc3VsdCA9IHVua25vd24+IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHdhcm5pbmc/OiBzdHJpbmc7XG4gIGNvbnRlbnQ/OiBUQ29udGVudDtcbiAgZGF0YT86IHVua25vd247XG4gIGJ1dHRvbnM6IERpYWxvZ0J1dHRvbkNvbmZpZzxUUmVzdWx0PltdO1xuICBidXR0b25BbGlnbm1lbnQ/OiBEaWFsb2dCdXR0b25BbGlnbm1lbnQ7XG4gIHBhbmVsQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIG1heFdpZHRoPzogc3RyaW5nO1xuICBkaXNhYmxlQ2xvc2U/OiBib29sZWFuO1xufVxuXG5cbiJdfQ==