@progressio_resources/gravity-design-system 2.1.0 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,15 +4,30 @@ import * as i1 from "@angular/common";
4
4
  import * as i2 from "../gravity-button/gravity-button.component";
5
5
  export class GravityAttachFileComponent {
6
6
  constructor() {
7
- this.fileValueResponse = new EventEmitter();
7
+ this.fileValueAsBase64StringResponse = new EventEmitter();
8
8
  this.currentLang = 'en';
9
+ this.inputId = '';
9
10
  this.state = "enabled";
11
+ this.supportedTypes = '';
12
+ }
13
+ ngAfterViewInit() {
14
+ if (this.supportedDocumentTypes) {
15
+ this.supportedDocumentTypes.forEach((value, index) => {
16
+ this.supportedTypes += value;
17
+ if (index != this.supportedDocumentTypes.length - 1) {
18
+ this.supportedTypes += ',';
19
+ }
20
+ });
21
+ }
22
+ else {
23
+ this.supportedTypes = "*";
24
+ }
10
25
  }
11
26
  handleFileInput($event) {
12
27
  this.file = $event.target.files[0];
13
28
  if (this.file) {
14
29
  GravityAttachFileComponent.convertFileToBase64(this.file).then((base64String) => {
15
- this.fileValueResponse.emit(base64String);
30
+ this.fileValueAsBase64StringResponse.emit(base64String);
16
31
  }).catch((error) => {
17
32
  console.error('Error loading file:', error.message);
18
33
  });
@@ -34,30 +49,34 @@ export class GravityAttachFileComponent {
34
49
  }
35
50
  removeFile() {
36
51
  this.file = null;
37
- this.fileValueResponse.emit('');
52
+ this.fileValueAsBase64StringResponse.emit('');
38
53
  }
39
54
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityAttachFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityAttachFileComponent, selector: "gravity-attach-file", inputs: { currentLang: "currentLang", cypressTag: "cypressTag", label: "label", required: "required", state: "state", supportTextContent: "supportTextContent", supportTextType: "supportTextType" }, outputs: { fileValueResponse: "response" }, ngImport: i0, template: "<label class=\"hr-body-text sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- S\u00F3lo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput\" type=\"file\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3>{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body-text sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n", styles: [".text-negative{color:var(--negative-primary)}.text-neutro{color:var(--text-primary)}.text-positive{color:var(--positive-primary)}.support-text{margin-left:0;margin-top:.3125rem;padding-inline:1rem}:host{display:block}label{color:var(--text-field-label-color);margin-inline:1rem}label.empty.enabled{--text-field-label-color: var(--label-text-empty-enabled-primary)}label.empty.disabled{--text-field-label-color: var(--label-text-empty-disabled-primary)}label.full-input.enabled{--text-field-label-color: var(--label-text-full-enabled-primary)}label.full-input.disabled{--text-field-label-color: var(--label-text-full-disabled-primary)}label.full-input.readonly{--text-field-label-color: var(--label-text-full-read-only-primary)}.gravity-attach-file{align-items:center;display:flex}.gravity-attach-file label{cursor:pointer}.gravity-attach-file label:hover gravity-button ::ng-deep button{--button-background-color: var(--bg-button-hover-tertiary);--button-border-color: var(--bg-button-hover-tertiary);--button-text-color: var(--on-bg-button-hover-tertiary)}gravity-button,gravity-button ::ng-deep button{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityAttachFileComponent, selector: "gravity-attach-file", inputs: { currentLang: "currentLang", cypressTag: "cypressTag", inputId: "inputId", label: "label", required: "required", state: "state", supportedDocumentTypes: "supportedDocumentTypes", supportTextContent: "supportTextContent", supportTextType: "supportTextType" }, outputs: { fileValueAsBase64StringResponse: "response" }, ngImport: i0, template: "<label class=\"hr-body-text sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- S\u00F3lo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput-{{inputId}}\" type=\"file\"\n [accept]=\"supportedTypes\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput-{{inputId}}\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3 class=\"hr-body-text sm-bold\">{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body-text sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n", styles: [".text-negative{color:var(--negative-primary)}.text-neutro{color:var(--text-primary)}.text-positive{color:var(--positive-primary)}.support-text{margin-left:0;margin-top:.3125rem;padding-inline:1rem}:host{display:block}label{color:var(--text-field-label-color);margin-inline:1rem}label.empty.enabled{--text-field-label-color: var(--label-text-empty-enabled-primary)}label.empty.disabled{--text-field-label-color: var(--label-text-empty-disabled-primary)}label.full-input.enabled{--text-field-label-color: var(--label-text-full-enabled-primary)}label.full-input.disabled{--text-field-label-color: var(--label-text-full-disabled-primary)}label.full-input.readonly{--text-field-label-color: var(--label-text-full-read-only-primary)}.gravity-attach-file{align-items:center;display:flex}.gravity-attach-file label{cursor:pointer}.gravity-attach-file label:hover gravity-button ::ng-deep button{--button-background-color: var(--bg-button-hover-tertiary);--button-border-color: var(--bg-button-hover-tertiary);--button-text-color: var(--on-bg-button-hover-tertiary)}gravity-button,gravity-button ::ng-deep button{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
41
56
  }
42
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityAttachFileComponent, decorators: [{
43
58
  type: Component,
44
- args: [{ selector: 'gravity-attach-file', template: "<label class=\"hr-body-text sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- S\u00F3lo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput\" type=\"file\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3>{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body-text sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n", styles: [".text-negative{color:var(--negative-primary)}.text-neutro{color:var(--text-primary)}.text-positive{color:var(--positive-primary)}.support-text{margin-left:0;margin-top:.3125rem;padding-inline:1rem}:host{display:block}label{color:var(--text-field-label-color);margin-inline:1rem}label.empty.enabled{--text-field-label-color: var(--label-text-empty-enabled-primary)}label.empty.disabled{--text-field-label-color: var(--label-text-empty-disabled-primary)}label.full-input.enabled{--text-field-label-color: var(--label-text-full-enabled-primary)}label.full-input.disabled{--text-field-label-color: var(--label-text-full-disabled-primary)}label.full-input.readonly{--text-field-label-color: var(--label-text-full-read-only-primary)}.gravity-attach-file{align-items:center;display:flex}.gravity-attach-file label{cursor:pointer}.gravity-attach-file label:hover gravity-button ::ng-deep button{--button-background-color: var(--bg-button-hover-tertiary);--button-border-color: var(--bg-button-hover-tertiary);--button-text-color: var(--on-bg-button-hover-tertiary)}gravity-button,gravity-button ::ng-deep button{pointer-events:none}\n"] }]
45
- }], propDecorators: { fileValueResponse: [{
59
+ args: [{ selector: 'gravity-attach-file', template: "<label class=\"hr-body-text sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- S\u00F3lo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput-{{inputId}}\" type=\"file\"\n [accept]=\"supportedTypes\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput-{{inputId}}\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3 class=\"hr-body-text sm-bold\">{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body-text sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n", styles: [".text-negative{color:var(--negative-primary)}.text-neutro{color:var(--text-primary)}.text-positive{color:var(--positive-primary)}.support-text{margin-left:0;margin-top:.3125rem;padding-inline:1rem}:host{display:block}label{color:var(--text-field-label-color);margin-inline:1rem}label.empty.enabled{--text-field-label-color: var(--label-text-empty-enabled-primary)}label.empty.disabled{--text-field-label-color: var(--label-text-empty-disabled-primary)}label.full-input.enabled{--text-field-label-color: var(--label-text-full-enabled-primary)}label.full-input.disabled{--text-field-label-color: var(--label-text-full-disabled-primary)}label.full-input.readonly{--text-field-label-color: var(--label-text-full-read-only-primary)}.gravity-attach-file{align-items:center;display:flex}.gravity-attach-file label{cursor:pointer}.gravity-attach-file label:hover gravity-button ::ng-deep button{--button-background-color: var(--bg-button-hover-tertiary);--button-border-color: var(--bg-button-hover-tertiary);--button-text-color: var(--on-bg-button-hover-tertiary)}gravity-button,gravity-button ::ng-deep button{pointer-events:none}\n"] }]
60
+ }], propDecorators: { fileValueAsBase64StringResponse: [{
46
61
  type: Output,
47
62
  args: ['response']
48
63
  }], currentLang: [{
49
64
  type: Input
50
65
  }], cypressTag: [{
51
66
  type: Input
67
+ }], inputId: [{
68
+ type: Input
52
69
  }], label: [{
53
70
  type: Input
54
71
  }], required: [{
55
72
  type: Input
56
73
  }], state: [{
57
74
  type: Input
75
+ }], supportedDocumentTypes: [{
76
+ type: Input
58
77
  }], supportTextContent: [{
59
78
  type: Input
60
79
  }], supportTextType: [{
61
80
  type: Input
62
81
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1hdHRhY2gtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktYXR0YWNoLWZpbGUvZ3Jhdml0eS1hdHRhY2gtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktYXR0YWNoLWZpbGUvZ3Jhdml0eS1hdHRhY2gtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7O0FBT3JFLE1BQU0sT0FBTywwQkFBMEI7SUFMdkM7UUFNNkIsc0JBQWlCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEUsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFJM0IsVUFBSyxHQUF3QyxTQUFTLENBQUM7S0F1Q3hFO0lBakNRLGVBQWUsQ0FBQyxNQUFXO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsMEJBQTBCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQW9CLEVBQUUsRUFBRTtnQkFDdEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBVTtRQUMxQyxPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFFaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQ25CLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO2dCQUM3QyxNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO2dCQUNwQixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQzsrR0E3Q1UsMEJBQTBCO21HQUExQiwwQkFBMEIsNlNDUHZDLGkvREF5Q0E7OzRGRGxDYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UscUJBQXFCOzhCQUtKLGlCQUFpQjtzQkFBM0MsTUFBTTt1QkFBQyxVQUFVO2dCQUVGLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdncmF2aXR5LWF0dGFjaC1maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXZpdHktYXR0YWNoLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LWF0dGFjaC1maWxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR3Jhdml0eUF0dGFjaEZpbGVDb21wb25lbnQge1xuICBAT3V0cHV0KCdyZXNwb25zZScpIHB1YmxpYyBmaWxlVmFsdWVSZXNwb25zZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCkgcHVibGljIGN1cnJlbnRMYW5nOiBzdHJpbmcgPSAnZW4nO1xuICBASW5wdXQoKSBwdWJsaWMgY3lwcmVzc1RhZzogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgc3RhdGU6ICdyZWFkb25seScgfCAnZGlzYWJsZWQnIHwgJ2VuYWJsZWQnID0gXCJlbmFibGVkXCI7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdXBwb3J0VGV4dENvbnRlbnQ6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHN1cHBvcnRUZXh0VHlwZTogJ25ldXRybycgfCAnbmVnYXRpdmUnIHwgJ3Bvc2l0aXZlJztcblxuICBwdWJsaWMgZmlsZTogRmlsZTtcblxuICBwdWJsaWMgaGFuZGxlRmlsZUlucHV0KCRldmVudDogYW55KSB7XG4gICAgdGhpcy5maWxlID0gJGV2ZW50LnRhcmdldC5maWxlc1swXTtcbiAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICBHcmF2aXR5QXR0YWNoRmlsZUNvbXBvbmVudC5jb252ZXJ0RmlsZVRvQmFzZTY0KHRoaXMuZmlsZSkudGhlbigoYmFzZTY0U3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5maWxlVmFsdWVSZXNwb25zZS5lbWl0KGJhc2U2NFN0cmluZyk7XG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBmaWxlOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RmlsZVRvQmFzZTY0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2U2NFN0cmluZyA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCBiYXNlNjRXaXRob3V0UHJlZml4ID0gYmFzZTY0U3RyaW5nLnNwbGl0KCcsJylbMV07XG4gICAgICAgIHJlc29sdmUoYmFzZTY0V2l0aG91dFByZWZpeCk7XG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHJlYWQgdGhlIGZpbGUuJykpO1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgIHRoaXMuZmlsZVZhbHVlUmVzcG9uc2UuZW1pdCgnJyk7XG4gIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImhyLWJvZHktdGV4dCBzbS1yZWd1bGFyIHt7c3RhdGV9fVwiIFtjbGFzcy5lbXB0eV09XCIhZmlsZVwiIFtjbGFzcy5mdWxsLWlucHV0XT1cImZpbGVcIiAqbmdJZj1cImxhYmVsXCI+XG4gIHt7bGFiZWx9fVxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVxdWlyZWRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudExhbmcgPT0gJ2VzJ1wiPi0gUmVxdWVyaWRvIDxzcGFuIGNsYXNzPVwidGV4dC1uZWdhdGl2ZVwiPio8L3NwYW4+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRMYW5nID09ICdlbidcIj4tIFJlcXVpcmVkIDxzcGFuIGNsYXNzPVwidGV4dC1uZWdhdGl2ZVwiPio8L3NwYW4+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGUgPT0gJ3JlYWRvbmx5J1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50TGFuZyA9PSAnZXMnXCI+LSBTw7NsbyBsZWN0dXJhPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRMYW5nID09ICdlbidcIj4tIFJlYWRvbmx5PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGUgPT0gJ2Rpc2FibGVkJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50TGFuZyA9PSAnZXMnXCI+LSBEZXNoYWJpbGl0YWRvPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRMYW5nID09ICdlbidcIj4tIERpc2FibGVkPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9sYWJlbD5cbjxkaXYgY2xhc3M9XCJncmF2aXR5LWF0dGFjaC1maWxlIHt7c3RhdGV9fVwiIFtjbGFzcy5lbXB0eV09XCIhZmlsZVwiIFtjbGFzcy5mdWxsLWlucHV0XT1cImZpbGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWxlXCI+XG4gICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiIGNsYXNzPVwiaHItbGFiZWwgbWQtcmVndWxhclwiIGhpZGRlbiBpZD1cImZpbGVJbnB1dFwiIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnXCJcbiAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwic3RhdGUgPT0gJ2Rpc2FibGVkJyA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwic3RhdGUgPT0gJ3JlYWRvbmx5JyA/IHRydWUgOiBudWxsXCJcblxuICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUZpbGVJbnB1dCgkZXZlbnQpXCI+XG4gICAgPGxhYmVsIGZvcj1cImZpbGVJbnB1dFwiPlxuICAgICAgPGdyYXZpdHktYnV0dG9uIFtpY29uTmFtZV09XCInY2xpcCdcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ21kJ1wiPlxuICAgICAgICB7e2xhYmVsfX1cbiAgICAgIDwvZ3Jhdml0eS1idXR0b24+XG4gICAgPC9sYWJlbD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlXCI+XG4gICAgPGxhYmVsPlxuICAgICAgPGdyYXZpdHktYnV0dG9uIChjbGljayk9XCJyZW1vdmVGaWxlKClcIiBbaWNvbk5hbWVdPVwiJ2NsaXAnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidtZCdcIj5cbiAgICAgICAge3tjdXJyZW50TGFuZyA9PSAnZW4nID8gJ1JlbW92ZSBmaWxlJyA6ICdSZW1vdmVyIGFyY2hpdm8nfX1cbiAgICAgIDwvZ3Jhdml0eS1idXR0b24+XG4gICAgPC9sYWJlbD5cbiAgICA8aDM+e3tjdXJyZW50TGFuZyA9PSAnZW4nID8gJ0ZpbGUnIDogJ0FyY2hpdm8nfX06IHt7ZmlsZS5uYW1lfX08L2gzPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPHAgY2xhc3M9XCJoci1ib2R5LXRleHQgc20tcmVndWxhciBzdXBwb3J0LXRleHQgdGV4dC17e3N1cHBvcnRUZXh0VHlwZX19XCIgKm5nSWY9XCJzdXBwb3J0VGV4dENvbnRlbnRcIj5cbiAge3tzdXBwb3J0VGV4dENvbnRlbnR9fVxuPC9wPlxuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1hdHRhY2gtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktYXR0YWNoLWZpbGUvZ3Jhdml0eS1hdHRhY2gtZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktYXR0YWNoLWZpbGUvZ3Jhdml0eS1hdHRhY2gtZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQU9wRixNQUFNLE9BQU8sMEJBQTBCO0lBTHZDO1FBTTZCLG9DQUErQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXRGLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBRTNCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFHckIsVUFBSyxHQUF3QyxTQUFTLENBQUM7UUFNaEUsbUJBQWMsR0FBVyxFQUFFLENBQUM7S0FpRHBDO0lBL0NDLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxFQUFFO2dCQUNuRSxJQUFJLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQztnQkFFN0IsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ25ELElBQUksQ0FBQyxjQUFjLElBQUksR0FBRyxDQUFDO2lCQUM1QjtZQUNILENBQUMsQ0FBQyxDQUFBO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVNLGVBQWUsQ0FBQyxNQUFXO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsMEJBQTBCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQW9CLEVBQUUsRUFBRTtnQkFDdEYsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxRCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBVTtRQUMxQyxPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFFaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQ25CLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO2dCQUM3QyxNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO2dCQUNwQixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQztZQUVGLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQzsrR0E5RFUsMEJBQTBCO21HQUExQiwwQkFBMEIsaVlDUHZDLGdsRUEwQ0E7OzRGRG5DYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UscUJBQXFCOzhCQUtKLCtCQUErQjtzQkFBekQsTUFBTTt1QkFBQyxVQUFVO2dCQUVGLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLHNCQUFzQjtzQkFBckMsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdncmF2aXR5LWF0dGFjaC1maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXZpdHktYXR0YWNoLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LWF0dGFjaC1maWxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR3Jhdml0eUF0dGFjaEZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQE91dHB1dCgncmVzcG9uc2UnKSBwdWJsaWMgZmlsZVZhbHVlQXNCYXNlNjRTdHJpbmdSZXNwb25zZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCkgcHVibGljIGN1cnJlbnRMYW5nOiBzdHJpbmcgPSAnZW4nO1xuICBASW5wdXQoKSBwdWJsaWMgY3lwcmVzc1RhZzogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgaW5wdXRJZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBzdGF0ZTogJ3JlYWRvbmx5JyB8ICdkaXNhYmxlZCcgfCAnZW5hYmxlZCcgPSBcImVuYWJsZWRcIjtcbiAgQElucHV0KCkgcHVibGljIHN1cHBvcnRlZERvY3VtZW50VHlwZXM6ICgnKicgfCAnLnBkZicgfCAnLmRvYycgfCAnLmRvY3gnIHwgJy5qcGcnIHwgJy5wbmcnIHwgJy5qcGVnJyB8ICdhdWRpby8qJyB8ICd2aWRlby8qJyB8ICdpbWFnZS8qJylbXTtcbiAgQElucHV0KCkgcHVibGljIHN1cHBvcnRUZXh0Q29udGVudDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc3VwcG9ydFRleHRUeXBlOiAnbmV1dHJvJyB8ICduZWdhdGl2ZScgfCAncG9zaXRpdmUnO1xuXG4gIHB1YmxpYyBmaWxlOiBGaWxlO1xuICBwdWJsaWMgc3VwcG9ydGVkVHlwZXM6IHN0cmluZyA9ICcnO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdXBwb3J0ZWREb2N1bWVudFR5cGVzKSB7XG4gICAgICB0aGlzLnN1cHBvcnRlZERvY3VtZW50VHlwZXMuZm9yRWFjaCgodmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICB0aGlzLnN1cHBvcnRlZFR5cGVzICs9IHZhbHVlO1xuXG4gICAgICAgIGlmIChpbmRleCAhPSB0aGlzLnN1cHBvcnRlZERvY3VtZW50VHlwZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMuc3VwcG9ydGVkVHlwZXMgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1cHBvcnRlZFR5cGVzID0gXCIqXCI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUZpbGVJbnB1dCgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsZSA9ICRldmVudC50YXJnZXQuZmlsZXNbMF07XG4gICAgaWYgKHRoaXMuZmlsZSkge1xuICAgICAgR3Jhdml0eUF0dGFjaEZpbGVDb21wb25lbnQuY29udmVydEZpbGVUb0Jhc2U2NCh0aGlzLmZpbGUpLnRoZW4oKGJhc2U2NFN0cmluZzogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuZmlsZVZhbHVlQXNCYXNlNjRTdHJpbmdSZXNwb25zZS5lbWl0KGJhc2U2NFN0cmluZyk7XG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBmaWxlOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0RmlsZVRvQmFzZTY0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2U2NFN0cmluZyA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCBiYXNlNjRXaXRob3V0UHJlZml4ID0gYmFzZTY0U3RyaW5nLnNwbGl0KCcsJylbMV07XG4gICAgICAgIHJlc29sdmUoYmFzZTY0V2l0aG91dFByZWZpeCk7XG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIHJlYWQgdGhlIGZpbGUuJykpO1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgIHRoaXMuZmlsZVZhbHVlQXNCYXNlNjRTdHJpbmdSZXNwb25zZS5lbWl0KCcnKTtcbiAgfVxufVxuIiwiPGxhYmVsIGNsYXNzPVwiaHItYm9keS10ZXh0IHNtLXJlZ3VsYXIge3tzdGF0ZX19XCIgW2NsYXNzLmVtcHR5XT1cIiFmaWxlXCIgW2NsYXNzLmZ1bGwtaW5wdXRdPVwiZmlsZVwiICpuZ0lmPVwibGFiZWxcIj5cbiAge3tsYWJlbH19XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXF1aXJlZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50TGFuZyA9PSAnZXMnXCI+LSBSZXF1ZXJpZG8gPHNwYW4gY2xhc3M9XCJ0ZXh0LW5lZ2F0aXZlXCI+Kjwvc3Bhbj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudExhbmcgPT0gJ2VuJ1wiPi0gUmVxdWlyZWQgPHNwYW4gY2xhc3M9XCJ0ZXh0LW5lZ2F0aXZlXCI+Kjwvc3Bhbj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0ZSA9PSAncmVhZG9ubHknXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRMYW5nID09ICdlcydcIj4tIFPDs2xvIGxlY3R1cmE8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudExhbmcgPT0gJ2VuJ1wiPi0gUmVhZG9ubHk8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0ZSA9PSAnZGlzYWJsZWQnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRMYW5nID09ICdlcydcIj4tIERlc2hhYmlsaXRhZG88L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudExhbmcgPT0gJ2VuJ1wiPi0gRGlzYWJsZWQ8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2xhYmVsPlxuPGRpdiBjbGFzcz1cImdyYXZpdHktYXR0YWNoLWZpbGUge3tzdGF0ZX19XCIgW2NsYXNzLmVtcHR5XT1cIiFmaWxlXCIgW2NsYXNzLmZ1bGwtaW5wdXRdPVwiZmlsZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpbGVcIj5cbiAgICA8aW5wdXQgYXV0b2NvbXBsZXRlPVwib2ZmXCIgY2xhc3M9XCJoci1sYWJlbCBtZC1yZWd1bGFyXCIgaGlkZGVuIGlkPVwiZmlsZUlucHV0LXt7aW5wdXRJZH19XCIgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICBbYWNjZXB0XT1cInN1cHBvcnRlZFR5cGVzXCJcbiAgICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCJjeXByZXNzVGFnXCJcbiAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwic3RhdGUgPT0gJ2Rpc2FibGVkJyA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgW2F0dHIucmVhZG9ubHldPVwic3RhdGUgPT0gJ3JlYWRvbmx5JyA/IHRydWUgOiBudWxsXCJcblxuICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUZpbGVJbnB1dCgkZXZlbnQpXCI+XG4gICAgPGxhYmVsIGZvcj1cImZpbGVJbnB1dC17e2lucHV0SWR9fVwiPlxuICAgICAgPGdyYXZpdHktYnV0dG9uIFtpY29uTmFtZV09XCInY2xpcCdcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ21kJ1wiPlxuICAgICAgICB7e2xhYmVsfX1cbiAgICAgIDwvZ3Jhdml0eS1idXR0b24+XG4gICAgPC9sYWJlbD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWxlXCI+XG4gICAgPGxhYmVsPlxuICAgICAgPGdyYXZpdHktYnV0dG9uIChjbGljayk9XCJyZW1vdmVGaWxlKClcIiBbaWNvbk5hbWVdPVwiJ2NsaXAnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidtZCdcIj5cbiAgICAgICAge3tjdXJyZW50TGFuZyA9PSAnZW4nID8gJ1JlbW92ZSBmaWxlJyA6ICdSZW1vdmVyIGFyY2hpdm8nfX1cbiAgICAgIDwvZ3Jhdml0eS1idXR0b24+XG4gICAgPC9sYWJlbD5cbiAgICA8aDMgY2xhc3M9XCJoci1ib2R5LXRleHQgc20tYm9sZFwiPnt7Y3VycmVudExhbmcgPT0gJ2VuJyA/ICdGaWxlJyA6ICdBcmNoaXZvJ319OiB7e2ZpbGUubmFtZX19PC9oMz5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxwIGNsYXNzPVwiaHItYm9keS10ZXh0IHNtLXJlZ3VsYXIgc3VwcG9ydC10ZXh0IHRleHQte3tzdXBwb3J0VGV4dFR5cGV9fVwiICpuZ0lmPVwic3VwcG9ydFRleHRDb250ZW50XCI+XG4gIHt7c3VwcG9ydFRleHRDb250ZW50fX1cbjwvcD5cbiJdfQ==
@@ -4,10 +4,11 @@ import * as i1 from "../gravity-button/gravity-button.component";
4
4
  export class GravityTableComponent {
5
5
  constructor(renderer) {
6
6
  this.renderer = renderer;
7
- this.type = "standard";
7
+ this.tableDensity = "standard";
8
+ this.tableSizeInput = "auto";
8
9
  this.firstTime = true;
9
10
  this.tableElement = null;
10
- this.tableSize = '';
11
+ this.tableSize = 'xl';
11
12
  let milliseconds = new Date().getTime();
12
13
  let randomNumber = Math.random() * 10;
13
14
  this.tableId = '' + (milliseconds * randomNumber / 2);
@@ -17,10 +18,30 @@ export class GravityTableComponent {
17
18
  this.renderer.setAttribute(this.tableElement, 'table-id', this.tableId);
18
19
  let tableHeaders = this.getTableHeaders();
19
20
  this.initializeTable(tableHeaders);
20
- this.adjustTableType();
21
+ this.adjustTableDensity(this.tableDensity);
21
22
  this.adjustButtonsSize();
22
23
  this.onResize();
23
24
  }
25
+ ngOnChanges(changes) {
26
+ if (this.tableElement) {
27
+ if (changes['tableDensity']) {
28
+ this.adjustTableDensity(changes['tableDensity'].currentValue);
29
+ }
30
+ if (changes['tableSizeInput']) {
31
+ this.tableSizeInput = changes['tableSizeInput'].currentValue;
32
+ this.onResize();
33
+ }
34
+ }
35
+ }
36
+ ngAfterContentChecked() {
37
+ if (this.tableElement) {
38
+ let tableHeaders = this.getTableHeaders();
39
+ this.initializeTable(tableHeaders);
40
+ this.adjustTableDensity(this.tableDensity);
41
+ this.adjustButtonsSize();
42
+ this.onResize();
43
+ }
44
+ }
24
45
  getTableHeaders() {
25
46
  let tableHeaderItems = document.querySelectorAll('thead tr th');
26
47
  let tableHeaders = [];
@@ -75,10 +96,10 @@ export class GravityTableComponent {
75
96
  });
76
97
  }
77
98
  }
78
- adjustTableType() {
99
+ adjustTableDensity(densityValue) {
79
100
  this.renderer.removeClass(this.tableElement, 'standard-table');
80
101
  this.renderer.removeClass(this.tableElement, 'compressed-table');
81
- this.renderer.addClass(this.tableElement, this.type + '-table');
102
+ this.renderer.addClass(this.tableElement, densityValue + '-table');
82
103
  }
83
104
  adjustButtonsSize() {
84
105
  let actionsColumns = document.querySelectorAll('table[table-id="' + this.tableId + '"] .actions-column');
@@ -116,6 +137,9 @@ export class GravityTableComponent {
116
137
  this.renderer.removeClass(this.tableElement, 'md-table');
117
138
  this.renderer.removeClass(this.tableElement, 'lg-table');
118
139
  this.renderer.removeClass(this.tableElement, 'xl-table');
140
+ if (this.tableSizeInput != 'auto') {
141
+ this.tableSize = this.tableSizeInput;
142
+ }
119
143
  this.renderer.addClass(this.tableElement, this.tableSize + '-table');
120
144
  this.adjustTable();
121
145
  }
@@ -168,12 +192,14 @@ export class GravityTableComponent {
168
192
  }
169
193
  }
170
194
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
171
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTableComponent, selector: "gravity-table", inputs: { type: "type" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], ngImport: i0, template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [".table-container{overflow-x:auto}\n"], dependencies: [{ kind: "component", type: i1.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTableComponent, selector: "gravity-table", inputs: { tableDensity: "tableDensity", tableSizeInput: "tableSizeInput" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [".table-container{overflow-x:auto}\n"], dependencies: [{ kind: "component", type: i1.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
172
196
  }
173
197
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, decorators: [{
174
198
  type: Component,
175
199
  args: [{ selector: 'gravity-table', template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [".table-container{overflow-x:auto}\n"] }]
176
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { type: [{
200
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { tableDensity: [{
201
+ type: Input
202
+ }], tableSizeInput: [{
177
203
  type: Input
178
204
  }], tableContainer: [{
179
205
  type: ViewChild,
@@ -182,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
182
208
  type: HostListener,
183
209
  args: ['window:resize', ['$event']]
184
210
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdGFibGUvZ3Jhdml0eS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdGFibGUvZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBTzlHLE1BQU0sT0FBTyxxQkFBcUI7SUFTaEMsWUFBNkIsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVJoQyxTQUFJLEdBQThCLFVBQVUsQ0FBQztRQUdyRCxjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGlCQUFZLEdBQWUsSUFBSSxDQUFDO1FBRWpDLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFHNUIsSUFBSSxZQUFZLEdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRCxJQUFJLFlBQVksR0FBVyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRTlDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLENBQUMsWUFBWSxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUks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Y2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdncmF2aXR5LXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXZpdHktdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR3Jhdml0eVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiAnc3RhbmRhcmQnIHwgJ2NvbXByZXNzZWQnID0gXCJzdGFuZGFyZFwiO1xuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRhaW5lcicpIHB1YmxpYyByZWFkb25seSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIGZpcnN0VGltZTogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgdGFibGVFbGVtZW50OiBFbGVtZW50UmVmID0gbnVsbDtcbiAgcHVibGljIHRhYmxlSWQ6IHN0cmluZztcbiAgcHVibGljIHRhYmxlU2l6ZTogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgbGV0IG1pbGxpc2Vjb25kczogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgbGV0IHJhbmRvbU51bWJlcjogbnVtYmVyID0gTWF0aC5yYW5kb20oKSAqIDEwO1xuXG4gICAgdGhpcy50YWJsZUlkID0gJycgKyAobWlsbGlzZWNvbmRzICogcmFuZG9tTnVtYmVyIC8gMik7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50YWJsZUVsZW1lbnQgPSB0aGlzLnRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5jaGlsZE5vZGVzWzBdO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudGFibGVFbGVtZW50LCAndGFibGUtaWQnLCB0aGlzLnRhYmxlSWQpO1xuXG4gICAgbGV0IHRhYmxlSGVhZGVyczogc3RyaW5nW10gPSB0aGlzLmdldFRhYmxlSGVhZGVycygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRhYmxlKHRhYmxlSGVhZGVycyk7XG4gICAgdGhpcy5hZGp1c3RUYWJsZVR5cGUoKTtcbiAgICB0aGlzLmFkanVzdEJ1dHRvbnNTaXplKCk7XG4gICAgdGhpcy5vblJlc2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJsZUhlYWRlcnMoKTogc3RyaW5nW10ge1xuICAgIGxldCB0YWJsZUhlYWRlckl0ZW1zOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoZWFkIHRyIHRoJyk7XG4gICAgbGV0IHRhYmxlSGVhZGVyczogc3RyaW5nW10gPSBbXTtcblxuICAgIHRhYmxlSGVhZGVySXRlbXMuZm9yRWFjaCgodGFibGVIZWFkZXJJdGVtOiBOb2RlKSA9PiB7XG4gICAgICB0YWJsZUhlYWRlcnMucHVzaCh0YWJsZUhlYWRlckl0ZW0uY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhYmxlSGVhZGVycztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRhYmxlKHRhYmxlSGVhZGVyczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maXJzdFRpbWUpIHtcbiAgICAgIHRoaXMuZmlyc3RUaW1lID0gZmFsc2U7XG5cbiAgICAgIC8vU2V0IGNvcnJlc3BvbmRpbmcgdGFibGVIZWFkZXIgYXMgYW4gYXR0cmlidXRlIG9mIGVhY2ggdGRcbiAgICAgIGxldCB0YWJsZUJvZHk6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0ciB0ZCcpO1xuICAgICAgdGFibGVCb2R5LmZvckVhY2goKHRhYmxlQm9keVJvdzogTm9kZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0YWJsZUJvZHlSb3csICdoZWFkZXItbmFtZScsIHRhYmxlSGVhZGVyc1tpbmRleCAlIHRhYmxlSGVhZGVycy5sZW5ndGhdKTtcbiAgICAgIH0pO1xuXG4gICAgICAvL0NyZWF0ZXMgYSBjb3B5IG9mIG1vYmlsZS1tZW51LXRyaWdnZXIgZWxlbWVudCBmb3IgZWFjaCB0clxuICAgICAgbGV0IHRhYmxlQm9keVJvd3M6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0cicpO1xuICAgICAgbGV0IGNsb3NlQnV0dG9uczogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdncmF2aXR5LWJ1dHRvbltpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIl0nKTtcblxuICAgICAgdGFibGVCb2R5Um93cy5mb3JFYWNoKCh0cjogTm9kZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBsZXQgbW9iaWxlTWVudVRyaWdnZXI6IEhUTUxEaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobW9iaWxlTWVudVRyaWdnZXIsICdtb2JpbGUtbWVudS10cmlnZ2VyJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKG1vYmlsZU1lbnVUcmlnZ2VyLCAnY2xvbmVkLW5vZGUnLCAndHJ1ZScpO1xuXG4gICAgICAgIGxldCBtZW51VG9nZ2xlOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKG1lbnVUb2dnbGUsICdtZW51LXRvZ2dsZScpO1xuICAgICAgICBtZW51VG9nZ2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7XG4gICAgICAgIG1lbnVUb2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTtcbiAgICAgICAgbWVudVRvZ2dsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpO1xuICAgICAgICBtZW51VG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKG1lbnVUb2dnbGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdvcGVuJykpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobWVudVRvZ2dsZSwgJ29wZW4nKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobWVudVRvZ2dsZS5wYXJlbnRFbGVtZW50Lmxhc3RFbGVtZW50Q2hpbGQsICdvcGVuJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobWVudVRvZ2dsZSwgJ29wZW4nKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobWVudVRvZ2dsZS5wYXJlbnRFbGVtZW50Lmxhc3RFbGVtZW50Q2hpbGQsICdvcGVuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbW9iaWxlTWVudVRyaWdnZXIuYXBwZW5kQ2hpbGQobWVudVRvZ2dsZSk7XG5cbiAgICAgICAgbGV0IHBhbmVsOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHBhbmVsLCAncGFuZWwnKTtcblxuICAgICAgICBsZXQgY2xvc2VCdXR0b25Gcm9tTm9kZUxpc3Q6IE5vZGUgPSBjbG9zZUJ1dHRvbnMuaXRlbShpbmRleCk7XG4gICAgICAgIGxldCBjbG9zZUJ1dHRvblJlbW92ZWQ6IE5vZGUgPSBjbG9zZUJ1dHRvbkZyb21Ob2RlTGlzdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb3NlQnV0dG9uRnJvbU5vZGVMaXN0KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoY2xvc2VCdXR0b25SZW1vdmVkLCAnY2xvbmVkLWJ1dHRvbicsICd0cnVlJyk7XG4gICAgICAgIGNsb3NlQnV0dG9uUmVtb3ZlZC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobWVudVRvZ2dsZSwgJ29wZW4nKTtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG1lbnVUb2dnbGUucGFyZW50RWxlbWVudC5sYXN0RWxlbWVudENoaWxkLCAnb3BlbicpO1xuICAgICAgICB9KTtcblxuICAgICAgICBwYW5lbC5hcHBlbmQoY2xvc2VCdXR0b25SZW1vdmVkKTtcblxuICAgICAgICBtb2JpbGVNZW51VHJpZ2dlci5hcHBlbmRDaGlsZChwYW5lbCk7XG5cbiAgICAgICAgdHIuaW5zZXJ0QmVmb3JlKG1vYmlsZU1lbnVUcmlnZ2VyLCB0ci5maXJzdENoaWxkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0VGFibGVUeXBlKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsICdzdGFuZGFyZC10YWJsZScpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsICdjb21wcmVzc2VkLXRhYmxlJyk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudGFibGVFbGVtZW50LCB0aGlzLnR5cGUgKyAnLXRhYmxlJyk7XG4gIH1cblxuICBwcml2YXRlIGFkanVzdEJ1dHRvbnNTaXplKCk6IHZvaWQge1xuICAgIGxldCBhY3Rpb25zQ29sdW1uczogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVt0YWJsZS1pZD1cIicgKyB0aGlzLnRhYmxlSWQgKyAnXCJdIC5hY3Rpb25zLWNvbHVtbicpO1xuICAgIGFjdGlvbnNDb2x1bW5zLmZvckVhY2goKGFjdGlvbnNDb2x1bW46IE5vZGUpID0+IHtcbiAgICAgIGFjdGlvbnNDb2x1bW4uY2hpbGROb2Rlcy5mb3JFYWNoKChncmF2aXR5QnV0dG9uOiBOb2RlKSA9PiB7XG4gICAgICAgIGxldCBidXR0b246IE5vZGUgPSBncmF2aXR5QnV0dG9uLmNoaWxkTm9kZXNbMF07XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdncmF2aXR5LXNpemUtbGcnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdncmF2aXR5LXNpemUtbWQnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdncmF2aXR5LXNpemUtc20nKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdsZy1ib2xkJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYnV0dG9uLCAnbWQtYm9sZCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGJ1dHRvbiwgJ3NtLWJvbGQnKTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGJ1dHRvbiwgJ2dyYXZpdHktc2l6ZS1zbScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGJ1dHRvbiwgJ3NtLWJvbGQnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25SZXNpemUoKTogdm9pZCB7XG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDU3Nikge1xuICAgICAgdGhpcy50YWJsZVNpemUgPSAnc20nO1xuICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPD0gOTkyKSB7XG4gICAgICB0aGlzLnRhYmxlU2l6ZSA9ICdtZCc7XG4gICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSAxNDQwKSB7XG4gICAgICB0aGlzLnRhYmxlU2l6ZSA9ICdsZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFibGVTaXplID0gJ3hsJztcbiAgICB9XG5cbiAgICB0aGlzLmFkanVzdFRhYmxlU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RUYWJsZVNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ3NtLXRhYmxlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ21kLXRhYmxlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ2xnLXRhYmxlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ3hsLXRhYmxlJyk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudGFibGVFbGVtZW50LCB0aGlzLnRhYmxlU2l6ZSArICctdGFibGUnKTtcblxuICAgIHRoaXMuYWRqdXN0VGFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0VGFibGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGFibGVTaXplID09ICdtZCcgfHwgdGhpcy50YWJsZVNpemUgPT0gJ3NtJykge1xuICAgICAgbGV0IHRhYmxlQm9keVJvd3M6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0cicpO1xuICAgICAgbGV0IHRhYmxlQm9keVJvd3NBY3Rpb25zOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHIgdGQuYWN0aW9ucy1jb2x1bW4nKTtcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzTWVudVRyaWdnZXI6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0ciAubW9iaWxlLW1lbnUtdHJpZ2dlcltjbG9uZWQtbm9kZT1cInRydWVcIl0nKTtcblxuICAgICAgdGFibGVCb2R5Um93cy5mb3JFYWNoKCh0cjogTm9kZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBsZXQgbW9iaWxlTWVudVRyaWdnZXI6IE5vZGUgPSB0YWJsZUJvZHlSb3dzTWVudVRyaWdnZXIuaXRlbShpbmRleCk7XG4gICAgICAgIGxldCBtb2JpbGVNZW51VHJpZ2dlclBhbmVsOiBOb2RlID0gbW9iaWxlTWVudVRyaWdnZXIubGFzdENoaWxkO1xuXG4gICAgICAgIGlmICh0YWJsZUJvZHlSb3dzQWN0aW9ucy5pdGVtKGluZGV4KSAmJiBtb2JpbGVNZW51VHJpZ2dlclBhbmVsKSB7XG4gICAgICAgICAgdGhpcy5hcHBlbmROb2Rlc0xpc3QobW9iaWxlTWVudVRyaWdnZXJQYW5lbCwgdGFibGVCb2R5Um93c0FjdGlvbnMuaXRlbShpbmRleCkuY2hpbGROb2Rlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRhYmxlU2l6ZSA9PSAnbGcnIHx8IHRoaXMudGFibGVTaXplID09ICd4bCcpIHtcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHInKTtcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzQWN0aW9uczogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVt0YWJsZS1pZD1cIicgKyB0aGlzLnRhYmxlSWQgKyAnXCJdIHRib2R5IHRyIHRkLmFjdGlvbnMtY29sdW1uJyk7XG4gICAgICBsZXQgdGFibGVCb2R5Um93c01lbnVUcmlnZ2VyOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHIgLm1vYmlsZS1tZW51LXRyaWdnZXJbY2xvbmVkLW5vZGU9XCJ0cnVlXCJdJyk7XG5cbiAgICAgIHRhYmxlQm9keVJvd3MuZm9yRWFjaCgodHI6IE5vZGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHRhYmxlQm9keVJvd3NBY3Rpb25zLml0ZW0oaW5kZXgpKSB7XG4gICAgICAgICAgdGhpcy5hcHBlbmROb2Rlc0xpc3QodGFibGVCb2R5Um93c0FjdGlvbnMuaXRlbShpbmRleCksIHRhYmxlQm9keVJvd3NNZW51VHJpZ2dlci5pdGVtKGluZGV4KS5sYXN0Q2hpbGQuY2hpbGROb2Rlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kTm9kZXNMaXN0KGVsZW1lbnRUb0FwcGVuZDogTm9kZSwgbm9kZXNMaXN0OiBOb2RlTGlzdE9mPENoaWxkTm9kZT4pOiBOb2RlIHtcbiAgICBpZiAodGhpcy50YWJsZVNpemUgPT0gJ21kJyB8fCB0aGlzLnRhYmxlU2l6ZSA9PSAnc20nKSB7XG4gICAgICBsZXQgbm9kZUxpc3RJbmRleDogbnVtYmVyID0gbm9kZXNMaXN0Lmxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChub2Rlc0xpc3QubGVuZ3RoICE9IDApIHtcbiAgICAgICAgbGV0IHJlbW92ZWROb2RlOiBOb2RlID0gbm9kZXNMaXN0Lml0ZW0obm9kZUxpc3RJbmRleCkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2Rlc0xpc3QuaXRlbShub2RlTGlzdEluZGV4KSk7XG4gICAgICAgIGVsZW1lbnRUb0FwcGVuZC5pbnNlcnRCZWZvcmUocmVtb3ZlZE5vZGUsIGVsZW1lbnRUb0FwcGVuZC5maXJzdENoaWxkKTtcbiAgICAgICAgbm9kZUxpc3RJbmRleC0tO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWxlbWVudFRvQXBwZW5kO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRhYmxlU2l6ZSA9PSAnbGcnIHx8IHRoaXMudGFibGVTaXplID09ICd4bCcpIHtcbiAgICAgIGxldCBub2RlTGlzdEluZGV4OiBudW1iZXIgPSBub2Rlc0xpc3QubGVuZ3RoIC0gMTtcblxuICAgICAgd2hpbGUgKG5vZGVzTGlzdC5sZW5ndGggIT0gMSkge1xuICAgICAgICBsZXQgaXRlbTogTm9kZSA9IG5vZGVzTGlzdC5pdGVtKG5vZGVMaXN0SW5kZXgpO1xuICAgICAgICBsZXQgY2xvc2VCdXR0b25Ob2RlOiBOb2RlID0gaXRlbS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJ2dyYXZpdHktYnV0dG9uW2lkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiXScpLml0ZW0oMCk7XG5cbiAgICAgICAgaWYgKGl0ZW0gIT0gY2xvc2VCdXR0b25Ob2RlKSB7XG4gICAgICAgICAgbGV0IHJlbW92ZWROb2RlOiBOb2RlID0gaXRlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGl0ZW0pO1xuICAgICAgICAgIGVsZW1lbnRUb0FwcGVuZC5pbnNlcnRCZWZvcmUocmVtb3ZlZE5vZGUsIGVsZW1lbnRUb0FwcGVuZC5maXJzdENoaWxkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vZGVMaXN0SW5kZXgtLTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZW1lbnRUb0FwcGVuZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXIge3t0YWJsZVNpemV9fVwiICN0YWJsZUNvbnRhaW5lcj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbiJdfQ==
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdGFibGUvZ3Jhdml0eS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktdGFibGUvZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBSUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkIsTUFBTSxPQUFPLHFCQUFxQjtJQVVoQyxZQUE2QixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBVGhDLGlCQUFZLEdBQThCLFVBQVUsQ0FBQztRQUNyRCxtQkFBYyxHQUF1QyxNQUFNLENBQUM7UUFHcEUsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixpQkFBWSxHQUFlLElBQUksQ0FBQztRQUVqQyxjQUFTLEdBQThCLElBQUksQ0FBQztRQUdqRCxJQUFJLFlBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hELElBQUksWUFBWSxHQUFXLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQyxZQUFZLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxD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U0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUNwRCxJQUFJLGFBQWEsR0FBVyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUVqRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUM1QixJQUFJLElBQUksR0FBUyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLGVBQWUsR0FBUyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLDZDQUE2QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVwSCxJQUFJLElBQUksSUFBSSxlQUFlLEVBQUU7b0JBQzNCLElBQUksV0FBVyxHQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMxRCxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3ZFO2dCQUVELGFBQWEsRUFBRSxDQUFDO2FBQ2pCO1lBRUQsT0FBTyxlQUFlLENBQUM7U0FDeEI7SUFDSCxDQUFDOytHQXZPVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixzVUNsQmxDLG8xQ0FhQTs7NEZES2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7Z0dBS1QsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUN1QyxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGdCQUFnQjtnQkE2SW5CLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYXZpdHktdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3Jhdml0eS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyYXZpdHktdGFibGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHcmF2aXR5VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBASW5wdXQoKSBwdWJsaWMgdGFibGVEZW5zaXR5OiAnc3RhbmRhcmQnIHwgJ2NvbXByZXNzZWQnID0gXCJzdGFuZGFyZFwiO1xuICBASW5wdXQoKSBwdWJsaWMgdGFibGVTaXplSW5wdXQ6ICd4bCcgfCAnbGcnIHwgJ21kJyB8ICdzbScgfCAnYXV0bycgPSBcImF1dG9cIjtcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSBwdWJsaWMgcmVhZG9ubHkgdGFibGVDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBmaXJzdFRpbWU6IGJvb2xlYW4gPSB0cnVlO1xuICBwcml2YXRlIHRhYmxlRWxlbWVudDogRWxlbWVudFJlZiA9IG51bGw7XG4gIHB1YmxpYyB0YWJsZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyB0YWJsZVNpemU6ICd4bCcgfCAnbGcnIHwgJ21kJyB8ICdzbScgPSAneGwnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIGxldCBtaWxsaXNlY29uZHM6IG51bWJlciA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGxldCByYW5kb21OdW1iZXI6IG51bWJlciA9IE1hdGgucmFuZG9tKCkgKiAxMDtcblxuICAgIHRoaXMudGFibGVJZCA9ICcnICsgKG1pbGxpc2Vjb25kcyAqIHJhbmRvbU51bWJlciAvIDIpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFibGVFbGVtZW50ID0gdGhpcy50YWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8uY2hpbGROb2Rlc1swXTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnRhYmxlRWxlbWVudCwgJ3RhYmxlLWlkJywgdGhpcy50YWJsZUlkKTtcblxuICAgIGxldCB0YWJsZUhlYWRlcnM6IHN0cmluZ1tdID0gdGhpcy5nZXRUYWJsZUhlYWRlcnMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVUYWJsZSh0YWJsZUhlYWRlcnMpO1xuICAgIHRoaXMuYWRqdXN0VGFibGVEZW5zaXR5KHRoaXMudGFibGVEZW5zaXR5KTtcbiAgICB0aGlzLmFkanVzdEJ1dHRvbnNTaXplKCk7XG4gICAgdGhpcy5vblJlc2l6ZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLnRhYmxlRWxlbWVudCkge1xuICAgICAgaWYgKGNoYW5nZXNbJ3RhYmxlRGVuc2l0eSddKSB7XG4gICAgICAgIHRoaXMuYWRqdXN0VGFibGVEZW5zaXR5KGNoYW5nZXNbJ3RhYmxlRGVuc2l0eSddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzWyd0YWJsZVNpemVJbnB1dCddKSB7XG4gICAgICAgIHRoaXMudGFibGVTaXplSW5wdXQgPSBjaGFuZ2VzWyd0YWJsZVNpemVJbnB1dCddLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgdGhpcy5vblJlc2l6ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICBpZiAodGhpcy50YWJsZUVsZW1lbnQpIHtcbiAgICAgIGxldCB0YWJsZUhlYWRlcnM6IHN0cmluZ1tdID0gdGhpcy5nZXRUYWJsZUhlYWRlcnMoKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhYmxlKHRhYmxlSGVhZGVycyk7XG4gICAgICB0aGlzLmFkanVzdFRhYmxlRGVuc2l0eSh0aGlzLnRhYmxlRGVuc2l0eSk7XG4gICAgICB0aGlzLmFkanVzdEJ1dHRvbnNTaXplKCk7XG4gICAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJsZUhlYWRlcnMoKTogc3RyaW5nW10ge1xuICAgIGxldCB0YWJsZUhlYWRlckl0ZW1zOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RoZWFkIHRyIHRoJyk7XG4gICAgbGV0IHRhYmxlSGVhZGVyczogc3RyaW5nW10gPSBbXTtcblxuICAgIHRhYmxlSGVhZGVySXRlbXMuZm9yRWFjaCgodGFibGVIZWFkZXJJdGVtOiBOb2RlKSA9PiB7XG4gICAgICB0YWJsZUhlYWRlcnMucHVzaCh0YWJsZUhlYWRlckl0ZW0uY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhYmxlSGVhZGVycztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRhYmxlKHRhYmxlSGVhZGVyczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maXJzdFRpbWUpIHtcbiAgICAgIHRoaXMuZmlyc3RUaW1lID0gZmFsc2U7XG5cbiAgICAgIC8vU2V0IGNvcnJlc3BvbmRpbmcgdGFibGVIZWFkZXIgYXMgYW4gYXR0cmlidXRlIG9mIGVhY2ggdGRcbiAgICAgIGxldCB0YWJsZUJvZHk6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0ciB0ZCcpO1xuICAgICAgdGFibGVCb2R5LmZvckVhY2goKHRhYmxlQm9keVJvdzogTm9kZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0YWJsZUJvZHlSb3csICdoZWFkZXItbmFtZScsIHRhYmxlSGVhZGVyc1tpbmRleCAlIHRhYmxlSGVhZGVycy5sZW5ndGhdKTtcbiAgICAgIH0pO1xuXG4gICAgICAvL0NyZWF0ZXMgYSBjb3B5IG9mIG1vYmlsZS1tZW51LXRyaWdnZXIgZWxlbWVudCBmb3IgZWFjaCB0clxuICAgICAgbGV0IHRhYmxlQm9keVJvd3M6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0cicpO1xuICAgICAgbGV0IGNsb3NlQnV0dG9uczogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdncmF2aXR5LWJ1dHRvbltpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIl0nKTtcblxuICAgICAgdGFibGVCb2R5Um93cy5mb3JFYWNoKCh0cjogTm9kZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBsZXQgbW9iaWxlTWVudVRyaWdnZXI6IEhUTUxEaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobW9iaWxlTWVudVRyaWdnZXIsICdtb2JpbGUtbWVudS10cmlnZ2VyJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKG1vYmlsZU1lbnVUcmlnZ2VyLCAnY2xvbmVkLW5vZGUnLCAndHJ1ZScpO1xuXG4gICAgICAgIGxldCBtZW51VG9nZ2xlOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKG1lbnVUb2dnbGUsICdtZW51LXRvZ2dsZScpO1xuICAgICAgICBtZW51VG9nZ2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7XG4gICAgICAgIG1lbnVUb2dnbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTtcbiAgICAgICAgbWVudVRvZ2dsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpO1xuICAgICAgICBtZW51VG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKG1lbnVUb2dnbGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdvcGVuJykpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobWVudVRvZ2dsZSwgJ29wZW4nKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobWVudVRvZ2dsZS5wYXJlbnRFbGVtZW50Lmxhc3RFbGVtZW50Q2hpbGQsICdvcGVuJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobWVudVRvZ2dsZSwgJ29wZW4nKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobWVudVRvZ2dsZS5wYXJlbnRFbGVtZW50Lmxhc3RFbGVtZW50Q2hpbGQsICdvcGVuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbW9iaWxlTWVudVRyaWdnZXIuYXBwZW5kQ2hpbGQobWVudVRvZ2dsZSk7XG5cbiAgICAgICAgbGV0IHBhbmVsOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHBhbmVsLCAncGFuZWwnKTtcblxuICAgICAgICBsZXQgY2xvc2VCdXR0b25Gcm9tTm9kZUxpc3Q6IE5vZGUgPSBjbG9zZUJ1dHRvbnMuaXRlbShpbmRleCk7XG4gICAgICAgIGxldCBjbG9zZUJ1dHRvblJlbW92ZWQ6IE5vZGUgPSBjbG9zZUJ1dHRvbkZyb21Ob2RlTGlzdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb3NlQnV0dG9uRnJvbU5vZGVMaXN0KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoY2xvc2VCdXR0b25SZW1vdmVkLCAnY2xvbmVkLWJ1dHRvbicsICd0cnVlJyk7XG4gICAgICAgIGNsb3NlQnV0dG9uUmVtb3ZlZC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobWVudVRvZ2dsZSwgJ29wZW4nKTtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG1lbnVUb2dnbGUucGFyZW50RWxlbWVudC5sYXN0RWxlbWVudENoaWxkLCAnb3BlbicpO1xuICAgICAgICB9KTtcblxuICAgICAgICBwYW5lbC5hcHBlbmQoY2xvc2VCdXR0b25SZW1vdmVkKTtcblxuICAgICAgICBtb2JpbGVNZW51VHJpZ2dlci5hcHBlbmRDaGlsZChwYW5lbCk7XG5cbiAgICAgICAgdHIuaW5zZXJ0QmVmb3JlKG1vYmlsZU1lbnVUcmlnZ2VyLCB0ci5maXJzdENoaWxkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0VGFibGVEZW5zaXR5KGRlbnNpdHlWYWx1ZTogJ3N0YW5kYXJkJyB8ICdjb21wcmVzc2VkJyk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsICdzdGFuZGFyZC10YWJsZScpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50YWJsZUVsZW1lbnQsICdjb21wcmVzc2VkLXRhYmxlJyk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudGFibGVFbGVtZW50LCBkZW5zaXR5VmFsdWUgKyAnLXRhYmxlJyk7XG4gIH1cblxuICBwcml2YXRlIGFkanVzdEJ1dHRvbnNTaXplKCk6IHZvaWQge1xuICAgIGxldCBhY3Rpb25zQ29sdW1uczogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVt0YWJsZS1pZD1cIicgKyB0aGlzLnRhYmxlSWQgKyAnXCJdIC5hY3Rpb25zLWNvbHVtbicpO1xuICAgIGFjdGlvbnNDb2x1bW5zLmZvckVhY2goKGFjdGlvbnNDb2x1bW46IE5vZGUpID0+IHtcbiAgICAgIGFjdGlvbnNDb2x1bW4uY2hpbGROb2Rlcy5mb3JFYWNoKChncmF2aXR5QnV0dG9uOiBOb2RlKSA9PiB7XG4gICAgICAgIGxldCBidXR0b246IE5vZGUgPSBncmF2aXR5QnV0dG9uLmNoaWxkTm9kZXNbMF07XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdncmF2aXR5LXNpemUtbGcnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdncmF2aXR5LXNpemUtbWQnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdncmF2aXR5LXNpemUtc20nKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhidXR0b24sICdsZy1ib2xkJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYnV0dG9uLCAnbWQtYm9sZCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGJ1dHRvbiwgJ3NtLWJvbGQnKTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGJ1dHRvbiwgJ2dyYXZpdHktc2l6ZS1zbScpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGJ1dHRvbiwgJ3NtLWJvbGQnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25SZXNpemUoKTogdm9pZCB7XG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDU3Nikge1xuICAgICAgdGhpcy50YWJsZVNpemUgPSAnc20nO1xuICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPD0gOTkyKSB7XG4gICAgICB0aGlzLnRhYmxlU2l6ZSA9ICdtZCc7XG4gICAgfSBlbHNlIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSAxNDQwKSB7XG4gICAgICB0aGlzLnRhYmxlU2l6ZSA9ICdsZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFibGVTaXplID0gJ3hsJztcbiAgICB9XG5cbiAgICB0aGlzLmFkanVzdFRhYmxlU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RUYWJsZVNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ3NtLXRhYmxlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ21kLXRhYmxlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ2xnLXRhYmxlJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRhYmxlRWxlbWVudCwgJ3hsLXRhYmxlJyk7XG5cbiAgICBpZiAodGhpcy50YWJsZVNpemVJbnB1dCAhPSAnYXV0bycpIHtcbiAgICAgIHRoaXMudGFibGVTaXplID0gdGhpcy50YWJsZVNpemVJbnB1dDtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudGFibGVFbGVtZW50LCB0aGlzLnRhYmxlU2l6ZSArICctdGFibGUnKTtcbiAgICB0aGlzLmFkanVzdFRhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGFkanVzdFRhYmxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhYmxlU2l6ZSA9PSAnbWQnIHx8IHRoaXMudGFibGVTaXplID09ICdzbScpIHtcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHInKTtcbiAgICAgIGxldCB0YWJsZUJvZHlSb3dzQWN0aW9uczogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVt0YWJsZS1pZD1cIicgKyB0aGlzLnRhYmxlSWQgKyAnXCJdIHRib2R5IHRyIHRkLmFjdGlvbnMtY29sdW1uJyk7XG4gICAgICBsZXQgdGFibGVCb2R5Um93c01lbnVUcmlnZ2VyOiBOb2RlTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlW3RhYmxlLWlkPVwiJyArIHRoaXMudGFibGVJZCArICdcIl0gdGJvZHkgdHIgLm1vYmlsZS1tZW51LXRyaWdnZXJbY2xvbmVkLW5vZGU9XCJ0cnVlXCJdJyk7XG5cbiAgICAgIHRhYmxlQm9keVJvd3MuZm9yRWFjaCgodHI6IE5vZGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgbGV0IG1vYmlsZU1lbnVUcmlnZ2VyOiBOb2RlID0gdGFibGVCb2R5Um93c01lbnVUcmlnZ2VyLml0ZW0oaW5kZXgpO1xuICAgICAgICBsZXQgbW9iaWxlTWVudVRyaWdnZXJQYW5lbDogTm9kZSA9IG1vYmlsZU1lbnVUcmlnZ2VyLmxhc3RDaGlsZDtcblxuICAgICAgICBpZiAodGFibGVCb2R5Um93c0FjdGlvbnMuaXRlbShpbmRleCkgJiYgbW9iaWxlTWVudVRyaWdnZXJQYW5lbCkge1xuICAgICAgICAgIHRoaXMuYXBwZW5kTm9kZXNMaXN0KG1vYmlsZU1lbnVUcmlnZ2VyUGFuZWwsIHRhYmxlQm9keVJvd3NBY3Rpb25zLml0ZW0oaW5kZXgpLmNoaWxkTm9kZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZVNpemUgPT0gJ2xnJyB8fCB0aGlzLnRhYmxlU2l6ZSA9PSAneGwnKSB7XG4gICAgICBsZXQgdGFibGVCb2R5Um93czogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVt0YWJsZS1pZD1cIicgKyB0aGlzLnRhYmxlSWQgKyAnXCJdIHRib2R5IHRyJyk7XG4gICAgICBsZXQgdGFibGVCb2R5Um93c0FjdGlvbnM6IE5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGVbdGFibGUtaWQ9XCInICsgdGhpcy50YWJsZUlkICsgJ1wiXSB0Ym9keSB0ciB0ZC5hY3Rpb25zLWNvbHVtbicpO1xuICAgICAgbGV0IHRhYmxlQm9keVJvd3NNZW51VHJpZ2dlcjogTm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZVt0YWJsZS1pZD1cIicgKyB0aGlzLnRhYmxlSWQgKyAnXCJdIHRib2R5IHRyIC5tb2JpbGUtbWVudS10cmlnZ2VyW2Nsb25lZC1ub2RlPVwidHJ1ZVwiXScpO1xuXG4gICAgICB0YWJsZUJvZHlSb3dzLmZvckVhY2goKHRyOiBOb2RlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmICh0YWJsZUJvZHlSb3dzQWN0aW9ucy5pdGVtKGluZGV4KSkge1xuICAgICAgICAgIHRoaXMuYXBwZW5kTm9kZXNMaXN0KHRhYmxlQm9keVJvd3NBY3Rpb25zLml0ZW0oaW5kZXgpLCB0YWJsZUJvZHlSb3dzTWVudVRyaWdnZXIuaXRlbShpbmRleCkubGFzdENoaWxkLmNoaWxkTm9kZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGVuZE5vZGVzTGlzdChlbGVtZW50VG9BcHBlbmQ6IE5vZGUsIG5vZGVzTGlzdDogTm9kZUxpc3RPZjxDaGlsZE5vZGU+KTogTm9kZSB7XG4gICAgaWYgKHRoaXMudGFibGVTaXplID09ICdtZCcgfHwgdGhpcy50YWJsZVNpemUgPT0gJ3NtJykge1xuICAgICAgbGV0IG5vZGVMaXN0SW5kZXg6IG51bWJlciA9IG5vZGVzTGlzdC5sZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAobm9kZXNMaXN0Lmxlbmd0aCAhPSAwKSB7XG4gICAgICAgIGxldCByZW1vdmVkTm9kZTogTm9kZSA9IG5vZGVzTGlzdC5pdGVtKG5vZGVMaXN0SW5kZXgpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZXNMaXN0Lml0ZW0obm9kZUxpc3RJbmRleCkpO1xuICAgICAgICBlbGVtZW50VG9BcHBlbmQuaW5zZXJ0QmVmb3JlKHJlbW92ZWROb2RlLCBlbGVtZW50VG9BcHBlbmQuZmlyc3RDaGlsZCk7XG4gICAgICAgIG5vZGVMaXN0SW5kZXgtLTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsZW1lbnRUb0FwcGVuZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZVNpemUgPT0gJ2xnJyB8fCB0aGlzLnRhYmxlU2l6ZSA9PSAneGwnKSB7XG4gICAgICBsZXQgbm9kZUxpc3RJbmRleDogbnVtYmVyID0gbm9kZXNMaXN0Lmxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChub2Rlc0xpc3QubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgbGV0IGl0ZW06IE5vZGUgPSBub2Rlc0xpc3QuaXRlbShub2RlTGlzdEluZGV4KTtcbiAgICAgICAgbGV0IGNsb3NlQnV0dG9uTm9kZTogTm9kZSA9IGl0ZW0ucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKCdncmF2aXR5LWJ1dHRvbltpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIl0nKS5pdGVtKDApO1xuXG4gICAgICAgIGlmIChpdGVtICE9IGNsb3NlQnV0dG9uTm9kZSkge1xuICAgICAgICAgIGxldCByZW1vdmVkTm9kZTogTm9kZSA9IGl0ZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpdGVtKTtcbiAgICAgICAgICBlbGVtZW50VG9BcHBlbmQuaW5zZXJ0QmVmb3JlKHJlbW92ZWROb2RlLCBlbGVtZW50VG9BcHBlbmQuZmlyc3RDaGlsZCk7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlTGlzdEluZGV4LS07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGVtZW50VG9BcHBlbmQ7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIHt7dGFibGVTaXplfX1cIiAjdGFibGVDb250YWluZXI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG48Z3Jhdml0eS1idXR0b24gaWQtcmVmZXJlbmNlPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25OYW1lXT1cIid1bnN1Y2Nlc3MnXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtzaXplXT1cIidzbSdcIj5DbG9zZSBtZW51PC9ncmF2aXR5LWJ1dHRvbj5cbjxncmF2aXR5LWJ1dHRvbiBpZC1yZWZlcmVuY2U9XCJjbG9zZS1idXR0b25cIiBbaWNvbk5hbWVdPVwiJ3Vuc3VjY2VzcydcIiBbdHlwZV09XCIndGVydGlhcnknXCIgW3NpemVdPVwiJ3NtJ1wiPkNsb3NlIG1lbnU8L2dyYXZpdHktYnV0dG9uPlxuPGdyYXZpdHktYnV0dG9uIGlkLXJlZmVyZW5jZT1cImNsb3NlLWJ1dHRvblwiIFtpY29uTmFtZV09XCIndW5zdWNjZXNzJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbc2l6ZV09XCInc20nXCI+Q2xvc2UgbWVudTwvZ3Jhdml0eS1idXR0b24+XG4iXX0=
@@ -1442,15 +1442,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1442
1442
 
1443
1443
  class GravityAttachFileComponent {
1444
1444
  constructor() {
1445
- this.fileValueResponse = new EventEmitter();
1445
+ this.fileValueAsBase64StringResponse = new EventEmitter();
1446
1446
  this.currentLang = 'en';
1447
+ this.inputId = '';
1447
1448
  this.state = "enabled";
1449
+ this.supportedTypes = '';
1450
+ }
1451
+ ngAfterViewInit() {
1452
+ if (this.supportedDocumentTypes) {
1453
+ this.supportedDocumentTypes.forEach((value, index) => {
1454
+ this.supportedTypes += value;
1455
+ if (index != this.supportedDocumentTypes.length - 1) {
1456
+ this.supportedTypes += ',';
1457
+ }
1458
+ });
1459
+ }
1460
+ else {
1461
+ this.supportedTypes = "*";
1462
+ }
1448
1463
  }
1449
1464
  handleFileInput($event) {
1450
1465
  this.file = $event.target.files[0];
1451
1466
  if (this.file) {
1452
1467
  GravityAttachFileComponent.convertFileToBase64(this.file).then((base64String) => {
1453
- this.fileValueResponse.emit(base64String);
1468
+ this.fileValueAsBase64StringResponse.emit(base64String);
1454
1469
  }).catch((error) => {
1455
1470
  console.error('Error loading file:', error.message);
1456
1471
  });
@@ -1472,27 +1487,31 @@ class GravityAttachFileComponent {
1472
1487
  }
1473
1488
  removeFile() {
1474
1489
  this.file = null;
1475
- this.fileValueResponse.emit('');
1490
+ this.fileValueAsBase64StringResponse.emit('');
1476
1491
  }
1477
1492
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityAttachFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1478
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityAttachFileComponent, selector: "gravity-attach-file", inputs: { currentLang: "currentLang", cypressTag: "cypressTag", label: "label", required: "required", state: "state", supportTextContent: "supportTextContent", supportTextType: "supportTextType" }, outputs: { fileValueResponse: "response" }, ngImport: i0, template: "<label class=\"hr-body-text sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- S\u00F3lo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput\" type=\"file\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3>{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body-text sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n", styles: [".text-negative{color:var(--negative-primary)}.text-neutro{color:var(--text-primary)}.text-positive{color:var(--positive-primary)}.support-text{margin-left:0;margin-top:.3125rem;padding-inline:1rem}:host{display:block}label{color:var(--text-field-label-color);margin-inline:1rem}label.empty.enabled{--text-field-label-color: var(--label-text-empty-enabled-primary)}label.empty.disabled{--text-field-label-color: var(--label-text-empty-disabled-primary)}label.full-input.enabled{--text-field-label-color: var(--label-text-full-enabled-primary)}label.full-input.disabled{--text-field-label-color: var(--label-text-full-disabled-primary)}label.full-input.readonly{--text-field-label-color: var(--label-text-full-read-only-primary)}.gravity-attach-file{align-items:center;display:flex}.gravity-attach-file label{cursor:pointer}.gravity-attach-file label:hover gravity-button ::ng-deep button{--button-background-color: var(--bg-button-hover-tertiary);--button-border-color: var(--bg-button-hover-tertiary);--button-text-color: var(--on-bg-button-hover-tertiary)}gravity-button,gravity-button ::ng-deep button{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
1493
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityAttachFileComponent, selector: "gravity-attach-file", inputs: { currentLang: "currentLang", cypressTag: "cypressTag", inputId: "inputId", label: "label", required: "required", state: "state", supportedDocumentTypes: "supportedDocumentTypes", supportTextContent: "supportTextContent", supportTextType: "supportTextType" }, outputs: { fileValueAsBase64StringResponse: "response" }, ngImport: i0, template: "<label class=\"hr-body-text sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- S\u00F3lo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput-{{inputId}}\" type=\"file\"\n [accept]=\"supportedTypes\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput-{{inputId}}\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3 class=\"hr-body-text sm-bold\">{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body-text sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n", styles: [".text-negative{color:var(--negative-primary)}.text-neutro{color:var(--text-primary)}.text-positive{color:var(--positive-primary)}.support-text{margin-left:0;margin-top:.3125rem;padding-inline:1rem}:host{display:block}label{color:var(--text-field-label-color);margin-inline:1rem}label.empty.enabled{--text-field-label-color: var(--label-text-empty-enabled-primary)}label.empty.disabled{--text-field-label-color: var(--label-text-empty-disabled-primary)}label.full-input.enabled{--text-field-label-color: var(--label-text-full-enabled-primary)}label.full-input.disabled{--text-field-label-color: var(--label-text-full-disabled-primary)}label.full-input.readonly{--text-field-label-color: var(--label-text-full-read-only-primary)}.gravity-attach-file{align-items:center;display:flex}.gravity-attach-file label{cursor:pointer}.gravity-attach-file label:hover gravity-button ::ng-deep button{--button-background-color: var(--bg-button-hover-tertiary);--button-border-color: var(--bg-button-hover-tertiary);--button-text-color: var(--on-bg-button-hover-tertiary)}gravity-button,gravity-button ::ng-deep button{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
1479
1494
  }
1480
1495
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityAttachFileComponent, decorators: [{
1481
1496
  type: Component,
1482
- args: [{ selector: 'gravity-attach-file', template: "<label class=\"hr-body-text sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- S\u00F3lo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput\" type=\"file\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3>{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body-text sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n", styles: [".text-negative{color:var(--negative-primary)}.text-neutro{color:var(--text-primary)}.text-positive{color:var(--positive-primary)}.support-text{margin-left:0;margin-top:.3125rem;padding-inline:1rem}:host{display:block}label{color:var(--text-field-label-color);margin-inline:1rem}label.empty.enabled{--text-field-label-color: var(--label-text-empty-enabled-primary)}label.empty.disabled{--text-field-label-color: var(--label-text-empty-disabled-primary)}label.full-input.enabled{--text-field-label-color: var(--label-text-full-enabled-primary)}label.full-input.disabled{--text-field-label-color: var(--label-text-full-disabled-primary)}label.full-input.readonly{--text-field-label-color: var(--label-text-full-read-only-primary)}.gravity-attach-file{align-items:center;display:flex}.gravity-attach-file label{cursor:pointer}.gravity-attach-file label:hover gravity-button ::ng-deep button{--button-background-color: var(--bg-button-hover-tertiary);--button-border-color: var(--bg-button-hover-tertiary);--button-text-color: var(--on-bg-button-hover-tertiary)}gravity-button,gravity-button ::ng-deep button{pointer-events:none}\n"] }]
1483
- }], propDecorators: { fileValueResponse: [{
1497
+ args: [{ selector: 'gravity-attach-file', template: "<label class=\"hr-body-text sm-regular {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\" *ngIf=\"label\">\n {{label}}\n <ng-container *ngIf=\"required\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Requerido <span class=\"text-negative\">*</span></ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Required <span class=\"text-negative\">*</span></ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'readonly'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- S\u00F3lo lectura</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Readonly</ng-container>\n </ng-container>\n <ng-container *ngIf=\"state == 'disabled'\">\n <ng-container *ngIf=\"currentLang == 'es'\">- Deshabilitado</ng-container>\n <ng-container *ngIf=\"currentLang == 'en'\">- Disabled</ng-container>\n </ng-container>\n</label>\n<div class=\"gravity-attach-file {{state}}\" [class.empty]=\"!file\" [class.full-input]=\"file\">\n <ng-container *ngIf=\"!file\">\n <input autocomplete=\"off\" class=\"hr-label md-regular\" hidden id=\"fileInput-{{inputId}}\" type=\"file\"\n [accept]=\"supportedTypes\"\n [attr.data-cy]=\"cypressTag\"\n [attr.disabled]=\"state == 'disabled' ? true : null\"\n [attr.readonly]=\"state == 'readonly' ? true : null\"\n\n (change)=\"handleFileInput($event)\">\n <label for=\"fileInput-{{inputId}}\">\n <gravity-button [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{label}}\n </gravity-button>\n </label>\n </ng-container>\n <ng-container *ngIf=\"file\">\n <label>\n <gravity-button (click)=\"removeFile()\" [iconName]=\"'clip'\" [type]=\"'tertiary'\" [size]=\"'md'\">\n {{currentLang == 'en' ? 'Remove file' : 'Remover archivo'}}\n </gravity-button>\n </label>\n <h3 class=\"hr-body-text sm-bold\">{{currentLang == 'en' ? 'File' : 'Archivo'}}: {{file.name}}</h3>\n </ng-container>\n</div>\n<p class=\"hr-body-text sm-regular support-text text-{{supportTextType}}\" *ngIf=\"supportTextContent\">\n {{supportTextContent}}\n</p>\n", styles: [".text-negative{color:var(--negative-primary)}.text-neutro{color:var(--text-primary)}.text-positive{color:var(--positive-primary)}.support-text{margin-left:0;margin-top:.3125rem;padding-inline:1rem}:host{display:block}label{color:var(--text-field-label-color);margin-inline:1rem}label.empty.enabled{--text-field-label-color: var(--label-text-empty-enabled-primary)}label.empty.disabled{--text-field-label-color: var(--label-text-empty-disabled-primary)}label.full-input.enabled{--text-field-label-color: var(--label-text-full-enabled-primary)}label.full-input.disabled{--text-field-label-color: var(--label-text-full-disabled-primary)}label.full-input.readonly{--text-field-label-color: var(--label-text-full-read-only-primary)}.gravity-attach-file{align-items:center;display:flex}.gravity-attach-file label{cursor:pointer}.gravity-attach-file label:hover gravity-button ::ng-deep button{--button-background-color: var(--bg-button-hover-tertiary);--button-border-color: var(--bg-button-hover-tertiary);--button-text-color: var(--on-bg-button-hover-tertiary)}gravity-button,gravity-button ::ng-deep button{pointer-events:none}\n"] }]
1498
+ }], propDecorators: { fileValueAsBase64StringResponse: [{
1484
1499
  type: Output,
1485
1500
  args: ['response']
1486
1501
  }], currentLang: [{
1487
1502
  type: Input
1488
1503
  }], cypressTag: [{
1489
1504
  type: Input
1505
+ }], inputId: [{
1506
+ type: Input
1490
1507
  }], label: [{
1491
1508
  type: Input
1492
1509
  }], required: [{
1493
1510
  type: Input
1494
1511
  }], state: [{
1495
1512
  type: Input
1513
+ }], supportedDocumentTypes: [{
1514
+ type: Input
1496
1515
  }], supportTextContent: [{
1497
1516
  type: Input
1498
1517
  }], supportTextType: [{
@@ -1502,10 +1521,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1502
1521
  class GravityTableComponent {
1503
1522
  constructor(renderer) {
1504
1523
  this.renderer = renderer;
1505
- this.type = "standard";
1524
+ this.tableDensity = "standard";
1525
+ this.tableSizeInput = "auto";
1506
1526
  this.firstTime = true;
1507
1527
  this.tableElement = null;
1508
- this.tableSize = '';
1528
+ this.tableSize = 'xl';
1509
1529
  let milliseconds = new Date().getTime();
1510
1530
  let randomNumber = Math.random() * 10;
1511
1531
  this.tableId = '' + (milliseconds * randomNumber / 2);
@@ -1515,10 +1535,30 @@ class GravityTableComponent {
1515
1535
  this.renderer.setAttribute(this.tableElement, 'table-id', this.tableId);
1516
1536
  let tableHeaders = this.getTableHeaders();
1517
1537
  this.initializeTable(tableHeaders);
1518
- this.adjustTableType();
1538
+ this.adjustTableDensity(this.tableDensity);
1519
1539
  this.adjustButtonsSize();
1520
1540
  this.onResize();
1521
1541
  }
1542
+ ngOnChanges(changes) {
1543
+ if (this.tableElement) {
1544
+ if (changes['tableDensity']) {
1545
+ this.adjustTableDensity(changes['tableDensity'].currentValue);
1546
+ }
1547
+ if (changes['tableSizeInput']) {
1548
+ this.tableSizeInput = changes['tableSizeInput'].currentValue;
1549
+ this.onResize();
1550
+ }
1551
+ }
1552
+ }
1553
+ ngAfterContentChecked() {
1554
+ if (this.tableElement) {
1555
+ let tableHeaders = this.getTableHeaders();
1556
+ this.initializeTable(tableHeaders);
1557
+ this.adjustTableDensity(this.tableDensity);
1558
+ this.adjustButtonsSize();
1559
+ this.onResize();
1560
+ }
1561
+ }
1522
1562
  getTableHeaders() {
1523
1563
  let tableHeaderItems = document.querySelectorAll('thead tr th');
1524
1564
  let tableHeaders = [];
@@ -1573,10 +1613,10 @@ class GravityTableComponent {
1573
1613
  });
1574
1614
  }
1575
1615
  }
1576
- adjustTableType() {
1616
+ adjustTableDensity(densityValue) {
1577
1617
  this.renderer.removeClass(this.tableElement, 'standard-table');
1578
1618
  this.renderer.removeClass(this.tableElement, 'compressed-table');
1579
- this.renderer.addClass(this.tableElement, this.type + '-table');
1619
+ this.renderer.addClass(this.tableElement, densityValue + '-table');
1580
1620
  }
1581
1621
  adjustButtonsSize() {
1582
1622
  let actionsColumns = document.querySelectorAll('table[table-id="' + this.tableId + '"] .actions-column');
@@ -1614,6 +1654,9 @@ class GravityTableComponent {
1614
1654
  this.renderer.removeClass(this.tableElement, 'md-table');
1615
1655
  this.renderer.removeClass(this.tableElement, 'lg-table');
1616
1656
  this.renderer.removeClass(this.tableElement, 'xl-table');
1657
+ if (this.tableSizeInput != 'auto') {
1658
+ this.tableSize = this.tableSizeInput;
1659
+ }
1617
1660
  this.renderer.addClass(this.tableElement, this.tableSize + '-table');
1618
1661
  this.adjustTable();
1619
1662
  }
@@ -1666,12 +1709,14 @@ class GravityTableComponent {
1666
1709
  }
1667
1710
  }
1668
1711
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
1669
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTableComponent, selector: "gravity-table", inputs: { type: "type" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], ngImport: i0, template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [".table-container{overflow-x:auto}\n"], dependencies: [{ kind: "component", type: GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
1712
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTableComponent, selector: "gravity-table", inputs: { tableDensity: "tableDensity", tableSizeInput: "tableSizeInput" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tableContainer", first: true, predicate: ["tableContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [".table-container{overflow-x:auto}\n"], dependencies: [{ kind: "component", type: GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconName", "isLoading", "showContent", "size", "type"] }] }); }
1670
1713
  }
1671
1714
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTableComponent, decorators: [{
1672
1715
  type: Component,
1673
1716
  args: [{ selector: 'gravity-table', template: "<div class=\"table-container {{tableSize}}\" #tableContainer>\n <ng-content></ng-content>\n</div>\n\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n<gravity-button id-reference=\"close-button\" [iconName]=\"'unsuccess'\" [type]=\"'tertiary'\" [size]=\"'sm'\">Close menu</gravity-button>\n", styles: [".table-container{overflow-x:auto}\n"] }]
1674
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { type: [{
1717
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { tableDensity: [{
1718
+ type: Input
1719
+ }], tableSizeInput: [{
1675
1720
  type: Input
1676
1721
  }], tableContainer: [{
1677
1722
  type: ViewChild,