@schenkerjon/ng-govbr-tw 0.0.4 → 0.0.5

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.
@@ -0,0 +1,137 @@
1
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BrAvatarComponent {
4
+ constructor() {
5
+ this.size = 'medium';
6
+ this.variant = 'primary';
7
+ this.imageFailed = false;
8
+ }
9
+ onImageError() {
10
+ this.imageFailed = true;
11
+ this.src = undefined;
12
+ }
13
+ get initials() {
14
+ if (!this.name)
15
+ return '?';
16
+ const parts = this.name.trim().split(/\s+/);
17
+ if (parts.length === 1)
18
+ return parts[0].charAt(0).toUpperCase();
19
+ return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase();
20
+ }
21
+ get containerClasses() {
22
+ const sizeMap = {
23
+ xsmall: 'w-6 h-6',
24
+ small: 'w-8 h-8',
25
+ medium: 'w-10 h-10',
26
+ large: 'w-14 h-14',
27
+ xlarge: 'w-20 h-20',
28
+ };
29
+ const variantMap = {
30
+ primary: 'bg-govbr-primary text-white',
31
+ neutral: 'bg-govbr-gray-20 text-govbr-gray-80',
32
+ success: 'bg-govbr-success text-white',
33
+ danger: 'bg-govbr-danger text-white',
34
+ warning: 'bg-govbr-warning text-govbr-gray-80',
35
+ };
36
+ return [
37
+ 'relative inline-flex items-center justify-center rounded-full overflow-hidden flex-shrink-0 font-rawline font-semibold',
38
+ sizeMap[this.size],
39
+ this.src ? '' : variantMap[this.variant],
40
+ ].filter(Boolean).join(' ');
41
+ }
42
+ get initialsClasses() {
43
+ const fontMap = {
44
+ xsmall: 'text-[10px]',
45
+ small: 'text-govbr-xs',
46
+ medium: 'text-govbr-sm',
47
+ large: 'text-govbr-lg',
48
+ xlarge: 'text-govbr-2xl',
49
+ };
50
+ return fontMap[this.size];
51
+ }
52
+ get statusClasses() {
53
+ const colorMap = {
54
+ online: 'bg-govbr-success',
55
+ offline: 'bg-govbr-gray-40',
56
+ busy: 'bg-govbr-danger',
57
+ away: 'bg-govbr-warning',
58
+ };
59
+ const dotSize = {
60
+ xsmall: 'w-1.5 h-1.5 border',
61
+ small: 'w-2 h-2 border',
62
+ medium: 'w-2.5 h-2.5 border-2',
63
+ large: 'w-3 h-3 border-2',
64
+ xlarge: 'w-4 h-4 border-2',
65
+ };
66
+ return [
67
+ 'absolute bottom-0 right-0 rounded-full border-white',
68
+ dotSize[this.size],
69
+ colorMap[this.status],
70
+ ].join(' ');
71
+ }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BrAvatarComponent, isStandalone: true, selector: "br-avatar", inputs: { src: "src", name: "name", size: "size", variant: "variant", status: "status" }, ngImport: i0, template: `
74
+ <div [class]="containerClasses" [attr.aria-label]="name || 'Avatar'" role="img">
75
+ @if (src) {
76
+ <img
77
+ [src]="src"
78
+ [alt]="name || 'Avatar'"
79
+ class="w-full h-full object-cover"
80
+ (error)="onImageError()"
81
+ />
82
+ } @else {
83
+ <span [class]="initialsClasses">{{ initials }}</span>
84
+ }
85
+
86
+ @if (status) {
87
+ <span
88
+ [class]="statusClasses"
89
+ [attr.aria-label]="'Status: ' + status"
90
+ role="status"
91
+ ></span>
92
+ }
93
+ </div>
94
+ `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
95
+ }
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrAvatarComponent, decorators: [{
97
+ type: Component,
98
+ args: [{
99
+ selector: 'br-avatar',
100
+ standalone: true,
101
+ imports: [],
102
+ encapsulation: ViewEncapsulation.None,
103
+ template: `
104
+ <div [class]="containerClasses" [attr.aria-label]="name || 'Avatar'" role="img">
105
+ @if (src) {
106
+ <img
107
+ [src]="src"
108
+ [alt]="name || 'Avatar'"
109
+ class="w-full h-full object-cover"
110
+ (error)="onImageError()"
111
+ />
112
+ } @else {
113
+ <span [class]="initialsClasses">{{ initials }}</span>
114
+ }
115
+
116
+ @if (status) {
117
+ <span
118
+ [class]="statusClasses"
119
+ [attr.aria-label]="'Status: ' + status"
120
+ role="status"
121
+ ></span>
122
+ }
123
+ </div>
124
+ `,
125
+ }]
126
+ }], propDecorators: { src: [{
127
+ type: Input
128
+ }], name: [{
129
+ type: Input
130
+ }], size: [{
131
+ type: Input
132
+ }], variant: [{
133
+ type: Input
134
+ }], status: [{
135
+ type: Input
136
+ }] } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnItYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWdvdmJyLXR3L3NyYy9saWIvY29tcG9uZW50cy9hdmF0YXIvYnItYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUErQnBFLE1BQU0sT0FBTyxpQkFBaUI7SUE1QjlCO1FBK0JXLFNBQUksR0FBdUQsUUFBUSxDQUFDO1FBQ3BFLFlBQU8sR0FBNkQsU0FBUyxDQUFDO1FBR3ZGLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0tBd0VyQjtJQXRFQyxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hGLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixNQUFNLE9BQU8sR0FBRztZQUNkLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1lBQ25CLEtBQUssRUFBRSxXQUFXO1lBQ2xCLE1BQU0sRUFBRSxXQUFXO1NBQ1gsQ0FBQztRQUVYLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLE9BQU8sRUFBRSw2QkFBNkI7WUFDdEMsT0FBTyxFQUFFLHFDQUFxQztZQUM5QyxPQUFPLEVBQUUsNkJBQTZCO1lBQ3RDLE1BQU0sRUFBRSw0QkFBNEI7WUFDcEMsT0FBTyxFQUFFLHFDQUFxQztTQUN0QyxDQUFDO1FBRVgsT0FBTztZQUNMLHdIQUF3SDtZQUN4SCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3pDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLGFBQWE7WUFDckIsS0FBSyxFQUFFLGVBQWU7WUFDdEIsTUFBTSxFQUFFLGVBQWU7WUFDdkIsS0FBSyxFQUFFLGVBQWU7WUFDdEIsTUFBTSxFQUFFLGdCQUFnQjtTQUNoQixDQUFDO1FBRVgsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixNQUFNLFFBQVEsR0FBRztZQUNmLE1BQU0sRUFBRSxrQkFBa0I7WUFDMUIsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLElBQUksRUFBRSxrQkFBa0I7U0FDaEIsQ0FBQztRQUVYLE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLG9CQUFvQjtZQUM1QixLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsS0FBSyxFQUFFLGtCQUFrQjtZQUN6QixNQUFNLEVBQUUsa0JBQWtCO1NBQ2xCLENBQUM7UUFFWCxPQUFPO1lBQ0wscURBQXFEO1lBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTyxDQUFDO1NBQ3ZCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQzsrR0E5RVUsaUJBQWlCO21HQUFqQixpQkFBaUIsK0pBdkJsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJUOzs0RkFFVSxpQkFBaUI7a0JBNUI3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJUO2lCQUNGOzhCQUVVLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYnItYXZhdGFyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgW2NsYXNzXT1cImNvbnRhaW5lckNsYXNzZXNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm5hbWUgfHwgJ0F2YXRhcidcIiByb2xlPVwiaW1nXCI+XHJcbiAgICAgIEBpZiAoc3JjKSB7XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgW3NyY109XCJzcmNcIlxyXG4gICAgICAgICAgW2FsdF09XCJuYW1lIHx8ICdBdmF0YXInXCJcclxuICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXJcIlxyXG4gICAgICAgICAgKGVycm9yKT1cIm9uSW1hZ2VFcnJvcigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8c3BhbiBbY2xhc3NdPVwiaW5pdGlhbHNDbGFzc2VzXCI+e3sgaW5pdGlhbHMgfX08L3NwYW4+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpZiAoc3RhdHVzKSB7XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtjbGFzc109XCJzdGF0dXNDbGFzc2VzXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1N0YXR1czogJyArIHN0YXR1c1wiXHJcbiAgICAgICAgICByb2xlPVwic3RhdHVzXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnJBdmF0YXJDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHNyYz86IHN0cmluZztcclxuICBASW5wdXQoKSBuYW1lPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNpemU6ICd4c21hbGwnIHwgJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICd4bGFyZ2UnID0gJ21lZGl1bSc7XHJcbiAgQElucHV0KCkgdmFyaWFudDogJ3ByaW1hcnknIHwgJ25ldXRyYWwnIHwgJ3N1Y2Nlc3MnIHwgJ2RhbmdlcicgfCAnd2FybmluZycgPSAncHJpbWFyeSc7XHJcbiAgQElucHV0KCkgc3RhdHVzPzogJ29ubGluZScgfCAnb2ZmbGluZScgfCAnYnVzeScgfCAnYXdheSc7XHJcblxyXG4gIGltYWdlRmFpbGVkID0gZmFsc2U7XHJcblxyXG4gIG9uSW1hZ2VFcnJvcigpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1hZ2VGYWlsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zcmMgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaW5pdGlhbHMoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5uYW1lKSByZXR1cm4gJz8nO1xyXG4gICAgY29uc3QgcGFydHMgPSB0aGlzLm5hbWUudHJpbSgpLnNwbGl0KC9cXHMrLyk7XHJcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAxKSByZXR1cm4gcGFydHNbMF0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gKHBhcnRzWzBdLmNoYXJBdCgwKSArIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdLmNoYXJBdCgwKSkudG9VcHBlckNhc2UoKTtcclxuICB9XHJcblxyXG4gIGdldCBjb250YWluZXJDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzaXplTWFwID0ge1xyXG4gICAgICB4c21hbGw6ICd3LTYgaC02JyxcclxuICAgICAgc21hbGw6ICd3LTggaC04JyxcclxuICAgICAgbWVkaXVtOiAndy0xMCBoLTEwJyxcclxuICAgICAgbGFyZ2U6ICd3LTE0IGgtMTQnLFxyXG4gICAgICB4bGFyZ2U6ICd3LTIwIGgtMjAnLFxyXG4gICAgfSBhcyBjb25zdDtcclxuXHJcbiAgICBjb25zdCB2YXJpYW50TWFwID0ge1xyXG4gICAgICBwcmltYXJ5OiAnYmctZ292YnItcHJpbWFyeSB0ZXh0LXdoaXRlJyxcclxuICAgICAgbmV1dHJhbDogJ2JnLWdvdmJyLWdyYXktMjAgdGV4dC1nb3Zici1ncmF5LTgwJyxcclxuICAgICAgc3VjY2VzczogJ2JnLWdvdmJyLXN1Y2Nlc3MgdGV4dC13aGl0ZScsXHJcbiAgICAgIGRhbmdlcjogJ2JnLWdvdmJyLWRhbmdlciB0ZXh0LXdoaXRlJyxcclxuICAgICAgd2FybmluZzogJ2JnLWdvdmJyLXdhcm5pbmcgdGV4dC1nb3Zici1ncmF5LTgwJyxcclxuICAgIH0gYXMgY29uc3Q7XHJcblxyXG4gICAgcmV0dXJuIFtcclxuICAgICAgJ3JlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIGZsZXgtc2hyaW5rLTAgZm9udC1yYXdsaW5lIGZvbnQtc2VtaWJvbGQnLFxyXG4gICAgICBzaXplTWFwW3RoaXMuc2l6ZV0sXHJcbiAgICAgIHRoaXMuc3JjID8gJycgOiB2YXJpYW50TWFwW3RoaXMudmFyaWFudF0sXHJcbiAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaW5pdGlhbHNDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmb250TWFwID0ge1xyXG4gICAgICB4c21hbGw6ICd0ZXh0LVsxMHB4XScsXHJcbiAgICAgIHNtYWxsOiAndGV4dC1nb3Zici14cycsXHJcbiAgICAgIG1lZGl1bTogJ3RleHQtZ292YnItc20nLFxyXG4gICAgICBsYXJnZTogJ3RleHQtZ292YnItbGcnLFxyXG4gICAgICB4bGFyZ2U6ICd0ZXh0LWdvdmJyLTJ4bCcsXHJcbiAgICB9IGFzIGNvbnN0O1xyXG5cclxuICAgIHJldHVybiBmb250TWFwW3RoaXMuc2l6ZV07XHJcbiAgfVxyXG5cclxuICBnZXQgc3RhdHVzQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY29sb3JNYXAgPSB7XHJcbiAgICAgIG9ubGluZTogJ2JnLWdvdmJyLXN1Y2Nlc3MnLFxyXG4gICAgICBvZmZsaW5lOiAnYmctZ292YnItZ3JheS00MCcsXHJcbiAgICAgIGJ1c3k6ICdiZy1nb3Zici1kYW5nZXInLFxyXG4gICAgICBhd2F5OiAnYmctZ292YnItd2FybmluZycsXHJcbiAgICB9IGFzIGNvbnN0O1xyXG5cclxuICAgIGNvbnN0IGRvdFNpemUgPSB7XHJcbiAgICAgIHhzbWFsbDogJ3ctMS41IGgtMS41IGJvcmRlcicsXHJcbiAgICAgIHNtYWxsOiAndy0yIGgtMiBib3JkZXInLFxyXG4gICAgICBtZWRpdW06ICd3LTIuNSBoLTIuNSBib3JkZXItMicsXHJcbiAgICAgIGxhcmdlOiAndy0zIGgtMyBib3JkZXItMicsXHJcbiAgICAgIHhsYXJnZTogJ3ctNCBoLTQgYm9yZGVyLTInLFxyXG4gICAgfSBhcyBjb25zdDtcclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAnYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCByb3VuZGVkLWZ1bGwgYm9yZGVyLXdoaXRlJyxcclxuICAgICAgZG90U2l6ZVt0aGlzLnNpemVdLFxyXG4gICAgICBjb2xvck1hcFt0aGlzLnN0YXR1cyFdLFxyXG4gICAgXS5qb2luKCcgJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -5,6 +5,7 @@ export class BrModalComponent {
5
5
  this.isOpen = false;
6
6
  this.title = '';
7
7
  this.size = 'medium';
8
+ this.variant = 'default';
8
9
  this.showCloseButton = true;
9
10
  this.showFooter = true;
10
11
  this.showCancelButton = true;
@@ -22,6 +23,44 @@ export class BrModalComponent {
22
23
  this.titleId = `br-modal-title-${BrModalComponent.nextId++}`;
23
24
  }
24
25
  static { this.nextId = 0; }
26
+ get variantIcon() {
27
+ const icons = {
28
+ default: null,
29
+ danger: 'fa-solid fa-triangle-exclamation',
30
+ warning: 'fa-solid fa-circle-exclamation',
31
+ success: 'fa-solid fa-circle-check',
32
+ };
33
+ return icons[this.variant];
34
+ }
35
+ get variantIconColor() {
36
+ const colors = {
37
+ default: '',
38
+ danger: 'text-govbr-danger',
39
+ warning: 'text-govbr-warning',
40
+ success: 'text-govbr-success',
41
+ };
42
+ return colors[this.variant];
43
+ }
44
+ get headerClasses() {
45
+ const base = 'flex items-center justify-between px-6 py-4 border-b';
46
+ const borderColors = {
47
+ default: 'border-govbr-gray-10',
48
+ danger: 'border-govbr-danger/20',
49
+ warning: 'border-govbr-warning/30',
50
+ success: 'border-govbr-success/20',
51
+ };
52
+ return `${base} ${borderColors[this.variant]}`;
53
+ }
54
+ get primaryButtonClasses() {
55
+ const base = 'px-5 py-2 text-govbr-base font-semibold font-rawline rounded-govbr-pill transition-colors govbr-focus-ring disabled:opacity-50 disabled:cursor-not-allowed';
56
+ const variantStyles = {
57
+ default: 'text-white bg-govbr-primary hover:bg-govbr-primary-dark',
58
+ danger: 'text-white bg-govbr-danger hover:bg-red-700',
59
+ warning: 'text-govbr-gray-80 bg-govbr-warning hover:bg-yellow-500',
60
+ success: 'text-white bg-govbr-success hover:bg-green-700',
61
+ };
62
+ return `${base} ${variantStyles[this.variant]}`;
63
+ }
25
64
  get modalClasses() {
26
65
  const sizes = {
27
66
  xsmall: 'max-w-[220px]',
@@ -57,7 +96,7 @@ export class BrModalComponent {
57
96
  this.canceled.emit();
58
97
  }
59
98
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
60
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BrModalComponent, isStandalone: true, selector: "br-modal", inputs: { isOpen: "isOpen", title: "title", size: "size", showCloseButton: "showCloseButton", showFooter: "showFooter", showCancelButton: "showCancelButton", showPrimaryButton: "showPrimaryButton", primaryText: "primaryText", cancelText: "cancelText", primaryDisabled: "primaryDisabled", loading: "loading", closeOnScrim: "closeOnScrim", closeOnEscape: "closeOnEscape", hasCustomFooter: "hasCustomFooter" }, outputs: { closed: "closed", confirmed: "confirmed", canceled: "canceled" }, host: { listeners: { "document:keydown.escape": "onEscapeKey()" } }, ngImport: i0, template: `
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BrModalComponent, isStandalone: true, selector: "br-modal", inputs: { isOpen: "isOpen", title: "title", size: "size", variant: "variant", showCloseButton: "showCloseButton", showFooter: "showFooter", showCancelButton: "showCancelButton", showPrimaryButton: "showPrimaryButton", primaryText: "primaryText", cancelText: "cancelText", primaryDisabled: "primaryDisabled", loading: "loading", closeOnScrim: "closeOnScrim", closeOnEscape: "closeOnEscape", hasCustomFooter: "hasCustomFooter" }, outputs: { closed: "closed", confirmed: "confirmed", canceled: "canceled" }, host: { listeners: { "document:keydown.escape": "onEscapeKey()" } }, ngImport: i0, template: `
61
100
  <!-- Scrim / Overlay -->
62
101
  @if (isOpen) {
63
102
  <div
@@ -81,13 +120,18 @@ export class BrModalComponent {
81
120
  role="document"
82
121
  >
83
122
  <!-- Header -->
84
- <div class="flex items-center justify-between px-6 py-4 border-b border-govbr-gray-10">
85
- <h4
86
- [id]="titleId"
87
- class="text-govbr-lg font-semibold text-govbr-gray-80 font-rawline truncate pr-4"
88
- >
89
- {{ title }}
90
- </h4>
123
+ <div [class]="headerClasses">
124
+ <div class="flex items-center gap-3 min-w-0 flex-1">
125
+ @if (variantIcon) {
126
+ <i [class]="variantIcon + ' text-xl flex-shrink-0 ' + variantIconColor"></i>
127
+ }
128
+ <h4
129
+ [id]="titleId"
130
+ class="text-govbr-lg font-semibold text-govbr-gray-80 font-rawline truncate"
131
+ >
132
+ {{ title }}
133
+ </h4>
134
+ </div>
91
135
  @if (showCloseButton) {
92
136
  <button
93
137
  type="button"
@@ -131,7 +175,7 @@ export class BrModalComponent {
131
175
  <button
132
176
  type="button"
133
177
  [disabled]="primaryDisabled"
134
- class="px-5 py-2 text-govbr-base font-semibold font-rawline text-white bg-govbr-primary rounded-govbr-pill hover:bg-govbr-primary-dark transition-colors govbr-focus-ring disabled:opacity-50 disabled:cursor-not-allowed"
178
+ [class]="primaryButtonClasses"
135
179
  (click)="confirm()"
136
180
  >
137
181
  {{ primaryText }}
@@ -176,13 +220,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
176
220
  role="document"
177
221
  >
178
222
  <!-- Header -->
179
- <div class="flex items-center justify-between px-6 py-4 border-b border-govbr-gray-10">
180
- <h4
181
- [id]="titleId"
182
- class="text-govbr-lg font-semibold text-govbr-gray-80 font-rawline truncate pr-4"
183
- >
184
- {{ title }}
185
- </h4>
223
+ <div [class]="headerClasses">
224
+ <div class="flex items-center gap-3 min-w-0 flex-1">
225
+ @if (variantIcon) {
226
+ <i [class]="variantIcon + ' text-xl flex-shrink-0 ' + variantIconColor"></i>
227
+ }
228
+ <h4
229
+ [id]="titleId"
230
+ class="text-govbr-lg font-semibold text-govbr-gray-80 font-rawline truncate"
231
+ >
232
+ {{ title }}
233
+ </h4>
234
+ </div>
186
235
  @if (showCloseButton) {
187
236
  <button
188
237
  type="button"
@@ -226,7 +275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
226
275
  <button
227
276
  type="button"
228
277
  [disabled]="primaryDisabled"
229
- class="px-5 py-2 text-govbr-base font-semibold font-rawline text-white bg-govbr-primary rounded-govbr-pill hover:bg-govbr-primary-dark transition-colors govbr-focus-ring disabled:opacity-50 disabled:cursor-not-allowed"
278
+ [class]="primaryButtonClasses"
230
279
  (click)="confirm()"
231
280
  >
232
281
  {{ primaryText }}
@@ -246,6 +295,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
246
295
  type: Input
247
296
  }], size: [{
248
297
  type: Input
298
+ }], variant: [{
299
+ type: Input
249
300
  }], showCloseButton: [{
250
301
  type: Input
251
302
  }], showFooter: [{
@@ -278,4 +329,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
278
329
  type: HostListener,
279
330
  args: ['document:keydown.escape']
280
331
  }] } });
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnItbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZ292YnItdHcvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL2JyLW1vZGFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7O0FBZ0d2QixNQUFNLE9BQU8sZ0JBQWdCO0lBN0Y3QjtRQThGVyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFNBQUksR0FBcUQsUUFBUSxDQUFDO1FBQ2xFLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUN6QixnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUMxQixlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFdkIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDckMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHOUMsWUFBTyxHQUFHLGtCQUFrQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0tBNEN6RDthQTdDZ0IsV0FBTSxHQUFHLENBQUMsQUFBSixDQUFLO0lBRzFCLElBQUksWUFBWTtRQUNkLE1BQU0sS0FBSyxHQUFHO1lBQ1osTUFBTSxFQUFFLGVBQWU7WUFDdkIsS0FBSyxFQUFFLGVBQWU7WUFDdEIsTUFBTSxFQUFFLGVBQWU7WUFDdkIsS0FBSyxFQUFFLGVBQWU7WUFDdEIsSUFBSSxFQUFFLFdBQVc7U0FDVCxDQUFDO1FBRVgsTUFBTSxJQUFJLEdBQUc7WUFDWCw0REFBNEQ7WUFDNUQsY0FBYztZQUNkLGtCQUFrQjtTQUNuQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVaLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUdELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDOytHQWhFVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQiw4bUJBeEZqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FzRlA7OzRGQUVRLGdCQUFnQjtrQkE3RjVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNGUDtpQkFDSjs4QkFFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkF3QlAsV0FBVztzQkFEVixZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdici1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDwhLS0gU2NyaW0gLyBPdmVybGF5IC0tPlxuICAgIEBpZiAoaXNPcGVuKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZml4ZWQgaW5zZXQtMCB6LVsxMDAwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICBbYXR0ci5hcmlhLW1vZGFsXT1cInRydWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVJZFwiXG4gICAgICAgID5cbiAgICAgICAgPCEtLSBCYWNrZHJvcCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1nb3Zici1wcmltYXJ5LWRhcmtlc3QvNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TY3JpbUNsaWNrKClcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uU2NyaW1DbGljaygpXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJGZWNoYXIgbW9kYWxcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwhLS0gTW9kYWwgY29udGFpbmVyIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW2NsYXNzXT1cIm1vZGFsQ2xhc3Nlc1wiXG4gICAgICAgICAgcm9sZT1cImRvY3VtZW50XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC02IHB5LTQgYm9yZGVyLWIgYm9yZGVyLWdvdmJyLWdyYXktMTBcIj5cbiAgICAgICAgICAgIDxoNFxuICAgICAgICAgICAgICBbaWRdPVwidGl0bGVJZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1nb3Zici1sZyBmb250LXNlbWlib2xkIHRleHQtZ292YnItZ3JheS04MCBmb250LXJhd2xpbmUgdHJ1bmNhdGUgcHItNFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICBAaWYgKHNob3dDbG9zZUJ1dHRvbikge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LXNocmluay0wIHctOCBoLTggcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtZ292YnItcHJpbWFyeSBob3ZlcjpiZy1nb3Zici1wcmltYXJ5LWxpZ2h0ZXN0IGdvdmJyLWZvY3VzLXJpbmcgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJGZWNoYXJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS14bWFya1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBCb2R5IC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgb3ZlcmZsb3cteS1hdXRvIHB4LTYgcHktNCBmb250LXJhd2xpbmUgdGV4dC1nb3Zici1iYXNlIHRleHQtZ292YnItZ3JheS04MFwiPlxuICAgICAgICAgICAgPCEtLSBMb2FkaW5nIHN0YXRlIC0tPlxuICAgICAgICAgICAgQGlmIChsb2FkaW5nKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xMFwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtc3Bpbm5lciBmYS1zcGluIHRleHQtZ292YnItcHJpbWFyeSB0ZXh0LTJ4bFwiPjwvaT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKCFsb2FkaW5nKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIEZvb3RlciAtLT5cbiAgICAgICAgICBAaWYgKCFsb2FkaW5nICYmIHNob3dGb290ZXIpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgZ2FwLTMgcHgtNiBweS00IGJvcmRlci10IGJvcmRlci1nb3Zici1ncmF5LTEwXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbW9kYWwtZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgQGlmICghaGFzQ3VzdG9tRm9vdGVyKSB7XG4gICAgICAgICAgICAgICAgQGlmIChzaG93Q2FuY2VsQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB4LTUgcHktMiB0ZXh0LWdvdmJyLWJhc2UgZm9udC1zZW1pYm9sZCBmb250LXJhd2xpbmUgdGV4dC1nb3Zici1wcmltYXJ5IGJnLXRyYW5zcGFyZW50IGJvcmRlciBib3JkZXItZ292YnItcHJpbWFyeSByb3VuZGVkLWdvdmJyLXBpbGwgaG92ZXI6YmctZ292YnItcHJpbWFyeSBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGdvdmJyLWZvY3VzLXJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNhbmNlbFRleHQgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dQcmltYXJ5QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJpbWFyeURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC01IHB5LTIgdGV4dC1nb3Zici1iYXNlIGZvbnQtc2VtaWJvbGQgZm9udC1yYXdsaW5lIHRleHQtd2hpdGUgYmctZ292YnItcHJpbWFyeSByb3VuZGVkLWdvdmJyLXBpbGwgaG92ZXI6YmctZ292YnItcHJpbWFyeS1kYXJrIHRyYW5zaXRpb24tY29sb3JzIGdvdmJyLWZvY3VzLXJpbmcgZGlzYWJsZWQ6b3BhY2l0eS01MCBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcmltYXJ5VGV4dCB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIGAsXG59KVxuZXhwb3J0IGNsYXNzIEJyTW9kYWxDb21wb25lbnQge1xuICBASW5wdXQoKSBpc09wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgc2l6ZTogJ3hzbWFsbCcgfCAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ2F1dG8nID0gJ21lZGl1bSc7XG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dGb290ZXIgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93Q2FuY2VsQnV0dG9uID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1ByaW1hcnlCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBwcmltYXJ5VGV4dCA9ICdDb25maXJtYXInO1xuICBASW5wdXQoKSBjYW5jZWxUZXh0ID0gJ0NhbmNlbGFyJztcbiAgQElucHV0KCkgcHJpbWFyeURpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xvc2VPblNjcmltID0gdHJ1ZTtcbiAgQElucHV0KCkgY2xvc2VPbkVzY2FwZSA9IHRydWU7XG4gIEBJbnB1dCgpIGhhc0N1c3RvbUZvb3RlciA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjb25maXJtZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xuICB0aXRsZUlkID0gYGJyLW1vZGFsLXRpdGxlLSR7QnJNb2RhbENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gIGdldCBtb2RhbENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzaXplcyA9IHtcbiAgICAgIHhzbWFsbDogJ21heC13LVsyMjBweF0nLFxuICAgICAgc21hbGw6ICdtYXgtdy1bMzAwcHhdJyxcbiAgICAgIG1lZGl1bTogJ21heC13LVs1MDBweF0nLFxuICAgICAgbGFyZ2U6ICdtYXgtdy1bNjQwcHhdJyxcbiAgICAgIGF1dG86ICdtYXgtdy1maXQnLFxuICAgIH0gYXMgY29uc3Q7XG5cbiAgICBjb25zdCBiYXNlID0gW1xuICAgICAgJ3JlbGF0aXZlIGZsZXggZmxleC1jb2wgYmctd2hpdGUgc2hhZG93LWxnIHotMTAgdy1mdWxsIG14LTQnLFxuICAgICAgJ21heC1oLVs5MHZoXScsXG4gICAgICAnYW5pbWF0ZS1tb2RhbC1pbicsXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICByZXR1cm4gW2Jhc2UsIHNpemVzW3RoaXMuc2l6ZV1dLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlS2V5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmNsb3NlT25Fc2NhcGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBvblNjcmltQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VPblNjcmltKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgY29uZmlybSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1lZC5lbWl0KCk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxlZC5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnItbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZ292YnItdHcvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL2JyLW1vZGFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7O0FBcUd2QixNQUFNLE9BQU8sZ0JBQWdCO0lBbEc3QjtRQW1HVyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFNBQUksR0FBcUQsUUFBUSxDQUFDO1FBQ2xFLFlBQU8sR0FBaUQsU0FBUyxDQUFDO1FBQ2xFLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUN6QixnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUMxQixlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFdkIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDckMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHOUMsWUFBTyxHQUFHLGtCQUFrQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0tBc0Z6RDthQXZGZ0IsV0FBTSxHQUFHLENBQUMs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QkFsRzVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBMkZQO2lCQUNKOzhCQUVVLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFrRVAsV0FBVztzQkFEVixZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdici1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDwhLS0gU2NyaW0gLyBPdmVybGF5IC0tPlxuICAgIEBpZiAoaXNPcGVuKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZml4ZWQgaW5zZXQtMCB6LVsxMDAwXSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICBbYXR0ci5hcmlhLW1vZGFsXT1cInRydWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVJZFwiXG4gICAgICAgID5cbiAgICAgICAgPCEtLSBCYWNrZHJvcCAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1nb3Zici1wcmltYXJ5LWRhcmtlc3QvNjAgdHJhbnNpdGlvbi1vcGFjaXR5XCJcbiAgICAgICAgICAoY2xpY2spPVwib25TY3JpbUNsaWNrKClcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uU2NyaW1DbGljaygpXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJGZWNoYXIgbW9kYWxcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwhLS0gTW9kYWwgY29udGFpbmVyIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW2NsYXNzXT1cIm1vZGFsQ2xhc3Nlc1wiXG4gICAgICAgICAgcm9sZT1cImRvY3VtZW50XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgICAgICAgPGRpdiBbY2xhc3NdPVwiaGVhZGVyQ2xhc3Nlc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIG1pbi13LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIEBpZiAodmFyaWFudEljb24pIHtcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwidmFyaWFudEljb24gKyAnIHRleHQteGwgZmxleC1zaHJpbmstMCAnICsgdmFyaWFudEljb25Db2xvclwiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8aDRcbiAgICAgICAgICAgICAgICBbaWRdPVwidGl0bGVJZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWdvdmJyLWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1nb3Zici1ncmF5LTgwIGZvbnQtcmF3bGluZSB0cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0Nsb3NlQnV0dG9uKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtc2hyaW5rLTAgdy04IGgtOCByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1nb3Zici1wcmltYXJ5IGhvdmVyOmJnLWdvdmJyLXByaW1hcnktbGlnaHRlc3QgZ292YnItZm9jdXMtcmluZyB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkZlY2hhclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLXhtYXJrXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIEJvZHkgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcHgtNiBweS00IGZvbnQtcmF3bGluZSB0ZXh0LWdvdmJyLWJhc2UgdGV4dC1nb3Zici1ncmF5LTgwXCI+XG4gICAgICAgICAgICA8IS0tIExvYWRpbmcgc3RhdGUgLS0+XG4gICAgICAgICAgICBAaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTEwXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1zcGlubmVyIGZhLXNwaW4gdGV4dC1nb3Zici1wcmltYXJ5IHRleHQtMnhsXCI+PC9pPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgICAgICAgIEBpZiAoIWxvYWRpbmcgJiYgc2hvd0Zvb3Rlcikge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBnYXAtMyBweC02IHB5LTQgYm9yZGVyLXQgYm9yZGVyLWdvdmJyLWdyYXktMTBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttb2RhbC1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICBAaWYgKCFoYXNDdXN0b21Gb290ZXIpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dDYW5jZWxCdXR0b24pIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtNSBweS0yIHRleHQtZ292YnItYmFzZSBmb250LXNlbWlib2xkIGZvbnQtcmF3bGluZSB0ZXh0LWdvdmJyLXByaW1hcnkgYmctdHJhbnNwYXJlbnQgYm9yZGVyIGJvcmRlci1nb3Zici1wcmltYXJ5IHJvdW5kZWQtZ292YnItcGlsbCBob3ZlcjpiZy1nb3Zici1wcmltYXJ5IGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgZ292YnItZm9jdXMtcmluZ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgY2FuY2VsVGV4dCB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd1ByaW1hcnlCdXR0b24pIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmltYXJ5RGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwicHJpbWFyeUJ1dHRvbkNsYXNzZXNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcmltYXJ5VGV4dCB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIGAsXG59KVxuZXhwb3J0IGNsYXNzIEJyTW9kYWxDb21wb25lbnQge1xuICBASW5wdXQoKSBpc09wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgc2l6ZTogJ3hzbWFsbCcgfCAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnIHwgJ2F1dG8nID0gJ21lZGl1bSc7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6ICdkZWZhdWx0JyB8ICdkYW5nZXInIHwgJ3dhcm5pbmcnIHwgJ3N1Y2Nlc3MnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBzaG93Q2xvc2VCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93Rm9vdGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0NhbmNlbEJ1dHRvbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dQcmltYXJ5QnV0dG9uID0gdHJ1ZTtcbiAgQElucHV0KCkgcHJpbWFyeVRleHQgPSAnQ29uZmlybWFyJztcbiAgQElucHV0KCkgY2FuY2VsVGV4dCA9ICdDYW5jZWxhcic7XG4gIEBJbnB1dCgpIHByaW1hcnlEaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsb3NlT25TY3JpbSA9IHRydWU7XG4gIEBJbnB1dCgpIGNsb3NlT25Fc2NhcGUgPSB0cnVlO1xuICBASW5wdXQoKSBoYXNDdXN0b21Gb290ZXIgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY29uZmlybWVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY2FuY2VsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbmV4dElkID0gMDtcbiAgdGl0bGVJZCA9IGBici1tb2RhbC10aXRsZS0ke0JyTW9kYWxDb21wb25lbnQubmV4dElkKyt9YDtcblxuICBnZXQgdmFyaWFudEljb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgaWNvbnMgPSB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgZGFuZ2VyOiAnZmEtc29saWQgZmEtdHJpYW5nbGUtZXhjbGFtYXRpb24nLFxuICAgICAgd2FybmluZzogJ2ZhLXNvbGlkIGZhLWNpcmNsZS1leGNsYW1hdGlvbicsXG4gICAgICBzdWNjZXNzOiAnZmEtc29saWQgZmEtY2lyY2xlLWNoZWNrJyxcbiAgICB9IGFzIGNvbnN0O1xuICAgIHJldHVybiBpY29uc1t0aGlzLnZhcmlhbnRdO1xuICB9XG5cbiAgZ2V0IHZhcmlhbnRJY29uQ29sb3IoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2xvcnMgPSB7XG4gICAgICBkZWZhdWx0OiAnJyxcbiAgICAgIGRhbmdlcjogJ3RleHQtZ292YnItZGFuZ2VyJyxcbiAgICAgIHdhcm5pbmc6ICd0ZXh0LWdvdmJyLXdhcm5pbmcnLFxuICAgICAgc3VjY2VzczogJ3RleHQtZ292YnItc3VjY2VzcycsXG4gICAgfSBhcyBjb25zdDtcbiAgICByZXR1cm4gY29sb3JzW3RoaXMudmFyaWFudF07XG4gIH1cblxuICBnZXQgaGVhZGVyQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2UgPSAnZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTYgcHktNCBib3JkZXItYic7XG4gICAgY29uc3QgYm9yZGVyQ29sb3JzID0ge1xuICAgICAgZGVmYXVsdDogJ2JvcmRlci1nb3Zici1ncmF5LTEwJyxcbiAgICAgIGRhbmdlcjogJ2JvcmRlci1nb3Zici1kYW5nZXIvMjAnLFxuICAgICAgd2FybmluZzogJ2JvcmRlci1nb3Zici13YXJuaW5nLzMwJyxcbiAgICAgIHN1Y2Nlc3M6ICdib3JkZXItZ292YnItc3VjY2Vzcy8yMCcsXG4gICAgfSBhcyBjb25zdDtcbiAgICByZXR1cm4gYCR7YmFzZX0gJHtib3JkZXJDb2xvcnNbdGhpcy52YXJpYW50XX1gO1xuICB9XG5cbiAgZ2V0IHByaW1hcnlCdXR0b25DbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZSA9ICdweC01IHB5LTIgdGV4dC1nb3Zici1iYXNlIGZvbnQtc2VtaWJvbGQgZm9udC1yYXdsaW5lIHJvdW5kZWQtZ292YnItcGlsbCB0cmFuc2l0aW9uLWNvbG9ycyBnb3Zici1mb2N1cy1yaW5nIGRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkJztcbiAgICBjb25zdCB2YXJpYW50U3R5bGVzID0ge1xuICAgICAgZGVmYXVsdDogJ3RleHQtd2hpdGUgYmctZ292YnItcHJpbWFyeSBob3ZlcjpiZy1nb3Zici1wcmltYXJ5LWRhcmsnLFxuICAgICAgZGFuZ2VyOiAndGV4dC13aGl0ZSBiZy1nb3Zici1kYW5nZXIgaG92ZXI6YmctcmVkLTcwMCcsXG4gICAgICB3YXJuaW5nOiAndGV4dC1nb3Zici1ncmF5LTgwIGJnLWdvdmJyLXdhcm5pbmcgaG92ZXI6YmcteWVsbG93LTUwMCcsXG4gICAgICBzdWNjZXNzOiAndGV4dC13aGl0ZSBiZy1nb3Zici1zdWNjZXNzIGhvdmVyOmJnLWdyZWVuLTcwMCcsXG4gICAgfSBhcyBjb25zdDtcbiAgICByZXR1cm4gYCR7YmFzZX0gJHt2YXJpYW50U3R5bGVzW3RoaXMudmFyaWFudF19YDtcbiAgfVxuXG4gIGdldCBtb2RhbENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzaXplcyA9IHtcbiAgICAgIHhzbWFsbDogJ21heC13LVsyMjBweF0nLFxuICAgICAgc21hbGw6ICdtYXgtdy1bMzAwcHhdJyxcbiAgICAgIG1lZGl1bTogJ21heC13LVs1MDBweF0nLFxuICAgICAgbGFyZ2U6ICdtYXgtdy1bNjQwcHhdJyxcbiAgICAgIGF1dG86ICdtYXgtdy1maXQnLFxuICAgIH0gYXMgY29uc3Q7XG5cbiAgICBjb25zdCBiYXNlID0gW1xuICAgICAgJ3JlbGF0aXZlIGZsZXggZmxleC1jb2wgYmctd2hpdGUgc2hhZG93LWxnIHotMTAgdy1mdWxsIG14LTQnLFxuICAgICAgJ21heC1oLVs5MHZoXScsXG4gICAgICAnYW5pbWF0ZS1tb2RhbC1pbicsXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICByZXR1cm4gW2Jhc2UsIHNpemVzW3RoaXMuc2l6ZV1dLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlS2V5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmNsb3NlT25Fc2NhcGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBvblNjcmltQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VPblNjcmltKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgY29uZmlybSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1lZC5lbWl0KCk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxlZC5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,156 @@
1
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BrSkeletonComponent {
4
+ constructor() {
5
+ this.variant = 'line';
6
+ this.rows = 3;
7
+ this.cols = 4;
8
+ }
9
+ get lineClasses() {
10
+ const w = this.width || 'w-full';
11
+ const h = this.height || 'h-4';
12
+ return `br-skeleton-pulse bg-govbr-gray-10 rounded ${w} ${h}`;
13
+ }
14
+ get circleClasses() {
15
+ const size = this.width || 'w-10 h-10';
16
+ return `br-skeleton-pulse bg-govbr-gray-10 rounded-full ${size}`;
17
+ }
18
+ get tableRows() {
19
+ return Array.from({ length: this.rows }, (_, i) => i);
20
+ }
21
+ get tableCols() {
22
+ return Array.from({ length: this.cols }, (_, i) => i);
23
+ }
24
+ get listRows() {
25
+ return Array.from({ length: this.rows }, (_, i) => i);
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BrSkeletonComponent, isStandalone: true, selector: "br-skeleton", inputs: { variant: "variant", width: "width", height: "height", rows: "rows", cols: "cols" }, ngImport: i0, template: `
29
+ @switch (variant) {
30
+ @case ('circle') {
31
+ <div [class]="circleClasses" role="status" aria-label="Carregando">
32
+ <span class="sr-only">Carregando...</span>
33
+ </div>
34
+ }
35
+ @case ('card') {
36
+ <div class="rounded-md overflow-hidden border border-govbr-gray-10" role="status" aria-label="Carregando">
37
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-36"></div>
38
+ <div class="p-4 space-y-3">
39
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-4 rounded w-3/4"></div>
40
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3 rounded w-full"></div>
41
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3 rounded w-5/6"></div>
42
+ </div>
43
+ <span class="sr-only">Carregando...</span>
44
+ </div>
45
+ }
46
+ @case ('table') {
47
+ <div class="border border-govbr-gray-10 rounded-md overflow-hidden" role="status" aria-label="Carregando">
48
+ <div class="bg-govbr-gray-5 px-4 py-3 flex gap-4">
49
+ @for (c of tableCols; track c) {
50
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3 rounded flex-1"></div>
51
+ }
52
+ </div>
53
+ @for (r of tableRows; track r) {
54
+ <div class="px-4 py-3 border-t border-govbr-gray-5 flex gap-4">
55
+ @for (c of tableCols; track c) {
56
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3 rounded flex-1"></div>
57
+ }
58
+ </div>
59
+ }
60
+ <span class="sr-only">Carregando...</span>
61
+ </div>
62
+ }
63
+ @case ('list') {
64
+ <div class="space-y-3" role="status" aria-label="Carregando">
65
+ @for (r of listRows; track r) {
66
+ <div class="flex items-center gap-3">
67
+ <div class="br-skeleton-pulse bg-govbr-gray-10 w-10 h-10 rounded-full flex-shrink-0"></div>
68
+ <div class="flex-1 space-y-2">
69
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3.5 rounded w-2/3"></div>
70
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-2.5 rounded w-1/2"></div>
71
+ </div>
72
+ </div>
73
+ }
74
+ <span class="sr-only">Carregando...</span>
75
+ </div>
76
+ }
77
+ @default {
78
+ <!-- line variant -->
79
+ <div [class]="lineClasses" role="status" aria-label="Carregando">
80
+ <span class="sr-only">Carregando...</span>
81
+ </div>
82
+ }
83
+ }
84
+ `, isInline: true, styles: ["@keyframes br-skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.br-skeleton-pulse{animation:br-skeleton-pulse 1.5s ease-in-out infinite}\n"], encapsulation: i0.ViewEncapsulation.None }); }
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrSkeletonComponent, decorators: [{
87
+ type: Component,
88
+ args: [{ selector: 'br-skeleton', standalone: true, imports: [], encapsulation: ViewEncapsulation.None, template: `
89
+ @switch (variant) {
90
+ @case ('circle') {
91
+ <div [class]="circleClasses" role="status" aria-label="Carregando">
92
+ <span class="sr-only">Carregando...</span>
93
+ </div>
94
+ }
95
+ @case ('card') {
96
+ <div class="rounded-md overflow-hidden border border-govbr-gray-10" role="status" aria-label="Carregando">
97
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-36"></div>
98
+ <div class="p-4 space-y-3">
99
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-4 rounded w-3/4"></div>
100
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3 rounded w-full"></div>
101
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3 rounded w-5/6"></div>
102
+ </div>
103
+ <span class="sr-only">Carregando...</span>
104
+ </div>
105
+ }
106
+ @case ('table') {
107
+ <div class="border border-govbr-gray-10 rounded-md overflow-hidden" role="status" aria-label="Carregando">
108
+ <div class="bg-govbr-gray-5 px-4 py-3 flex gap-4">
109
+ @for (c of tableCols; track c) {
110
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3 rounded flex-1"></div>
111
+ }
112
+ </div>
113
+ @for (r of tableRows; track r) {
114
+ <div class="px-4 py-3 border-t border-govbr-gray-5 flex gap-4">
115
+ @for (c of tableCols; track c) {
116
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3 rounded flex-1"></div>
117
+ }
118
+ </div>
119
+ }
120
+ <span class="sr-only">Carregando...</span>
121
+ </div>
122
+ }
123
+ @case ('list') {
124
+ <div class="space-y-3" role="status" aria-label="Carregando">
125
+ @for (r of listRows; track r) {
126
+ <div class="flex items-center gap-3">
127
+ <div class="br-skeleton-pulse bg-govbr-gray-10 w-10 h-10 rounded-full flex-shrink-0"></div>
128
+ <div class="flex-1 space-y-2">
129
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-3.5 rounded w-2/3"></div>
130
+ <div class="br-skeleton-pulse bg-govbr-gray-10 h-2.5 rounded w-1/2"></div>
131
+ </div>
132
+ </div>
133
+ }
134
+ <span class="sr-only">Carregando...</span>
135
+ </div>
136
+ }
137
+ @default {
138
+ <!-- line variant -->
139
+ <div [class]="lineClasses" role="status" aria-label="Carregando">
140
+ <span class="sr-only">Carregando...</span>
141
+ </div>
142
+ }
143
+ }
144
+ `, styles: ["@keyframes br-skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.br-skeleton-pulse{animation:br-skeleton-pulse 1.5s ease-in-out infinite}\n"] }]
145
+ }], propDecorators: { variant: [{
146
+ type: Input
147
+ }], width: [{
148
+ type: Input
149
+ }], height: [{
150
+ type: Input
151
+ }], rows: [{
152
+ type: Input
153
+ }], cols: [{
154
+ type: Input
155
+ }] } });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnItc2tlbGV0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZ292YnItdHcvc3JjL2xpYi9jb21wb25lbnRzL3NrZWxldG9uL2JyLXNrZWxldG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUEyRXBFLE1BQU0sT0FBTyxtQkFBbUI7SUF4RWhDO1FBeUVXLFlBQU8sR0FBa0QsTUFBTSxDQUFDO1FBR2hFLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxTQUFJLEdBQUcsQ0FBQyxDQUFDO0tBd0JuQjtJQXRCQyxJQUFJLFdBQVc7UUFDYixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQztRQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQztRQUMvQixPQUFPLDhDQUE4QyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksV0FBVyxDQUFDO1FBQ3ZDLE9BQU8sbURBQW1ELElBQUksRUFBRSxDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7K0dBNUJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHFLQW5FcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0RUOzs0RkFXVSxtQkFBbUI7a0JBeEUvQixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsRUFBRSxpQkFDSSxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdEVDs4QkFZUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JyLXNrZWxldG9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIEBzd2l0Y2ggKHZhcmlhbnQpIHtcclxuICAgICAgQGNhc2UgKCdjaXJjbGUnKSB7XHJcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwiY2lyY2xlQ2xhc3Nlc1wiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxhYmVsPVwiQ2FycmVnYW5kb1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2FycmVnYW5kby4uLjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ2NhcmQnKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdW5kZWQtbWQgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlciBib3JkZXItZ292YnItZ3JheS0xMFwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxhYmVsPVwiQ2FycmVnYW5kb1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJyLXNrZWxldG9uLXB1bHNlIGJnLWdvdmJyLWdyYXktMTAgaC0zNlwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtNCBzcGFjZS15LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyLXNrZWxldG9uLXB1bHNlIGJnLWdvdmJyLWdyYXktMTAgaC00IHJvdW5kZWQgdy0zLzRcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyLXNrZWxldG9uLXB1bHNlIGJnLWdvdmJyLWdyYXktMTAgaC0zIHJvdW5kZWQgdy1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJici1za2VsZXRvbi1wdWxzZSBiZy1nb3Zici1ncmF5LTEwIGgtMyByb3VuZGVkIHctNS82XCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNhcnJlZ2FuZG8uLi48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCd0YWJsZScpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci1nb3Zici1ncmF5LTEwIHJvdW5kZWQtbWQgb3ZlcmZsb3ctaGlkZGVuXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGFiZWw9XCJDYXJyZWdhbmRvXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ292YnItZ3JheS01IHB4LTQgcHktMyBmbGV4IGdhcC00XCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGMgb2YgdGFibGVDb2xzOyB0cmFjayBjKSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyLXNrZWxldG9uLXB1bHNlIGJnLWdvdmJyLWdyYXktMTAgaC0zIHJvdW5kZWQgZmxleC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgQGZvciAociBvZiB0YWJsZVJvd3M7IHRyYWNrIHIpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTQgcHktMyBib3JkZXItdCBib3JkZXItZ292YnItZ3JheS01IGZsZXggZ2FwLTRcIj5cclxuICAgICAgICAgICAgICBAZm9yIChjIG9mIHRhYmxlQ29sczsgdHJhY2sgYykge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyLXNrZWxldG9uLXB1bHNlIGJnLWdvdmJyLWdyYXktMTAgaC0zIHJvdW5kZWQgZmxleC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNhcnJlZ2FuZG8uLi48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdsaXN0Jykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTNcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1sYWJlbD1cIkNhcnJlZ2FuZG9cIj5cclxuICAgICAgICAgIEBmb3IgKHIgb2YgbGlzdFJvd3M7IHRyYWNrIHIpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyLXNrZWxldG9uLXB1bHNlIGJnLWdvdmJyLWdyYXktMTAgdy0xMCBoLTEwIHJvdW5kZWQtZnVsbCBmbGV4LXNocmluay0wXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMSBzcGFjZS15LTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJici1za2VsZXRvbi1wdWxzZSBiZy1nb3Zici1ncmF5LTEwIGgtMy41IHJvdW5kZWQgdy0yLzNcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJici1za2VsZXRvbi1wdWxzZSBiZy1nb3Zici1ncmF5LTEwIGgtMi41IHJvdW5kZWQgdy0xLzJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DYXJyZWdhbmRvLi4uPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBkZWZhdWx0IHtcclxuICAgICAgICA8IS0tIGxpbmUgdmFyaWFudCAtLT5cclxuICAgICAgICA8ZGl2IFtjbGFzc109XCJsaW5lQ2xhc3Nlc1wiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxhYmVsPVwiQ2FycmVnYW5kb1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2FycmVnYW5kby4uLjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgQGtleWZyYW1lcyBici1za2VsZXRvbi1wdWxzZSB7XHJcbiAgICAgIDAlLCAxMDAlIHsgb3BhY2l0eTogMTsgfVxyXG4gICAgICA1MCUgeyBvcGFjaXR5OiAwLjQ7IH1cclxuICAgIH1cclxuICAgIC5ici1za2VsZXRvbi1wdWxzZSB7XHJcbiAgICAgIGFuaW1hdGlvbjogYnItc2tlbGV0b24tcHVsc2UgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcclxuICAgIH1cclxuICBgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJyU2tlbGV0b25Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHZhcmlhbnQ6ICdsaW5lJyB8ICdjaXJjbGUnIHwgJ2NhcmQnIHwgJ3RhYmxlJyB8ICdsaXN0JyA9ICdsaW5lJztcclxuICBASW5wdXQoKSB3aWR0aD86IHN0cmluZztcclxuICBASW5wdXQoKSBoZWlnaHQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcm93cyA9IDM7XHJcbiAgQElucHV0KCkgY29scyA9IDQ7XHJcblxyXG4gIGdldCBsaW5lQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdyA9IHRoaXMud2lkdGggfHwgJ3ctZnVsbCc7XHJcbiAgICBjb25zdCBoID0gdGhpcy5oZWlnaHQgfHwgJ2gtNCc7XHJcbiAgICByZXR1cm4gYGJyLXNrZWxldG9uLXB1bHNlIGJnLWdvdmJyLWdyYXktMTAgcm91bmRlZCAke3d9ICR7aH1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNpcmNsZUNsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNpemUgPSB0aGlzLndpZHRoIHx8ICd3LTEwIGgtMTAnO1xyXG4gICAgcmV0dXJuIGBici1za2VsZXRvbi1wdWxzZSBiZy1nb3Zici1ncmF5LTEwIHJvdW5kZWQtZnVsbCAke3NpemV9YDtcclxuICB9XHJcblxyXG4gIGdldCB0YWJsZVJvd3MoKTogbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMucm93cyB9LCAoXywgaSkgPT4gaSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdGFibGVDb2xzKCk6IG51bWJlcltdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLmNvbHMgfSwgKF8sIGkpID0+IGkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxpc3RSb3dzKCk6IG51bWJlcltdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLnJvd3MgfSwgKF8sIGkpID0+IGkpO1xyXG4gIH1cclxufVxyXG4iXX0=