lib-portal-angular 0.0.75 → 0.0.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,13 @@
1
- import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, } from "@angular/core";
1
+ import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, ViewChild, } from "@angular/core";
2
2
  import { ButtonClasses } from "../../enum/ButtonClassesEnum";
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../service/auth-service.service";
5
5
  import * as i2 from "@angular/common";
6
6
  export class ButtonComponent {
7
- constructor(authService, cdr) {
7
+ constructor(authService, cdr, renderer) {
8
8
  this.authService = authService;
9
9
  this.cdr = cdr;
10
+ this.renderer = renderer;
10
11
  this.type = "button";
11
12
  this.label = "Submit";
12
13
  this.btnClass = ButtonClasses.Primary;
@@ -30,6 +31,9 @@ export class ButtonComponent {
30
31
  ngOnInit() {
31
32
  this.validateInputs();
32
33
  }
34
+ ngAfterViewInit() {
35
+ this.addHoverEffect(); // Chama o método para aplicar o efeito de hover
36
+ }
33
37
  ngOnChanges(changes) {
34
38
  if (changes) {
35
39
  this.validateInputs();
@@ -125,6 +129,110 @@ export class ButtonComponent {
125
129
  filter: activeFilter,
126
130
  };
127
131
  }
132
+ addHoverEffect() {
133
+ const buttonElement = this.buttonElement.nativeElement;
134
+ if (buttonElement) {
135
+ // Evento de mouseover para adicionar box-shadow
136
+ this.renderer.listen(buttonElement, "mouseover", () => {
137
+ const hoverColor = this.calculateHoverColor(); // Calcula a cor de hover
138
+ this.renderer.setStyle(buttonElement, "box-shadow", `0 0 0 0.15rem ${hoverColor}`);
139
+ });
140
+ // Evento de mouseout para remover o box-shadow
141
+ this.renderer.listen(buttonElement, "mouseout", () => {
142
+ this.renderer.setStyle(buttonElement, "box-shadow", "none");
143
+ });
144
+ }
145
+ }
146
+ // Calcula a cor de hover com base na classe de botão
147
+ calculateHoverColor() {
148
+ switch (this.btnClass) {
149
+ case ButtonClasses.Primary:
150
+ return getComputedStyle(document.documentElement)
151
+ .getPropertyValue("--primary-color")
152
+ .trim();
153
+ case ButtonClasses.Secondary:
154
+ return getComputedStyle(document.documentElement)
155
+ .getPropertyValue("--secondary-color")
156
+ .trim();
157
+ case ButtonClasses.Success:
158
+ return getComputedStyle(document.documentElement)
159
+ .getPropertyValue("--success-color")
160
+ .trim();
161
+ case ButtonClasses.Danger:
162
+ return getComputedStyle(document.documentElement)
163
+ .getPropertyValue("--danger-color")
164
+ .trim();
165
+ case ButtonClasses.Warning:
166
+ return getComputedStyle(document.documentElement)
167
+ .getPropertyValue("--warning-color")
168
+ .trim();
169
+ case ButtonClasses.Info:
170
+ return getComputedStyle(document.documentElement)
171
+ .getPropertyValue("--info-color")
172
+ .trim();
173
+ case ButtonClasses.Link:
174
+ return getComputedStyle(document.documentElement)
175
+ .getPropertyValue("light-color")
176
+ .trim();
177
+ case ButtonClasses.Light:
178
+ return getComputedStyle(document.documentElement)
179
+ .getPropertyValue("--light-color")
180
+ .trim();
181
+ case ButtonClasses.Dark:
182
+ return getComputedStyle(document.documentElement)
183
+ .getPropertyValue("--dark-color")
184
+ .trim();
185
+ default:
186
+ return getComputedStyle(document.documentElement)
187
+ .getPropertyValue("--primary-color")
188
+ .trim();
189
+ }
190
+ }
191
+ // Calcula a cor de fundo original
192
+ calculateOriginalColor() {
193
+ switch (this.btnClass) {
194
+ case ButtonClasses.Primary:
195
+ return getComputedStyle(document.documentElement)
196
+ .getPropertyValue("--primary-color")
197
+ .trim();
198
+ case ButtonClasses.Secondary:
199
+ return getComputedStyle(document.documentElement)
200
+ .getPropertyValue("--secondary-color")
201
+ .trim();
202
+ case ButtonClasses.Success:
203
+ return getComputedStyle(document.documentElement)
204
+ .getPropertyValue("--success-color")
205
+ .trim();
206
+ case ButtonClasses.Danger:
207
+ return getComputedStyle(document.documentElement)
208
+ .getPropertyValue("--danger-color")
209
+ .trim();
210
+ case ButtonClasses.Warning:
211
+ return getComputedStyle(document.documentElement)
212
+ .getPropertyValue("--warning-color")
213
+ .trim();
214
+ case ButtonClasses.Info:
215
+ return getComputedStyle(document.documentElement)
216
+ .getPropertyValue("--info-color")
217
+ .trim();
218
+ case ButtonClasses.Link:
219
+ return getComputedStyle(document.documentElement)
220
+ .getPropertyValue("transparent")
221
+ .trim();
222
+ case ButtonClasses.Light:
223
+ return getComputedStyle(document.documentElement)
224
+ .getPropertyValue("--light-color")
225
+ .trim();
226
+ case ButtonClasses.Dark:
227
+ return getComputedStyle(document.documentElement)
228
+ .getPropertyValue("--dark-color")
229
+ .trim();
230
+ default:
231
+ return getComputedStyle(document.documentElement)
232
+ .getPropertyValue("--primary-color")
233
+ .trim();
234
+ }
235
+ }
128
236
  hasPermission() {
129
237
  if (!this.permissions || this.permissions.length === 0) {
130
238
  return true;
@@ -150,13 +258,13 @@ export class ButtonComponent {
150
258
  console.log("Save button clicked", event);
151
259
  // Lógica para salvar alterações
152
260
  }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, deps: [{ token: i1.AuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, selector: "argenta-custom-button", inputs: { type: "type", label: "label", btnClass: "btnClass", fontSize: "fontSize", disabled: "disabled", autofocus: "autofocus", form: "form", formaction: "formaction", formenctype: "formenctype", formmethod: "formmethod", formnovalidate: "formnovalidate", formtarget: "formtarget", name: "name", value: "value", permissions: "permissions" }, outputs: { onButtonClick: "onButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"hasPermission()\">\n <button\n [type]=\"type\"\n class=\"btn\"\n [ngClass]=\"btnClass\"\n [ngStyle]=\"dynamicStyles\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate\"\n [attr.formtarget]=\"formtarget\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n </button>\n</ng-container>\n", styles: [".btn{padding:.5rem 1rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;line-height:24px;letter-spacing:.005em;text-align:left;box-shadow:none}.btn:hover{box-shadow:0 0 0 .2rem #7e7e7e40}.btn:active{background-color:#7e7e7e40}.btn:focus{outline:none;box-shadow:0 0 0 .2rem #7e7e7e40}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
261
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, deps: [{ token: i1.AuthService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
262
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, selector: "argenta-custom-button", inputs: { type: "type", label: "label", btnClass: "btnClass", fontSize: "fontSize", disabled: "disabled", autofocus: "autofocus", form: "form", formaction: "formaction", formenctype: "formenctype", formmethod: "formmethod", formnovalidate: "formnovalidate", formtarget: "formtarget", name: "name", value: "value", permissions: "permissions" }, outputs: { onButtonClick: "onButtonClick" }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["buttonElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"hasPermission()\">\n <button\n #buttonElement\n [type]=\"type\"\n class=\"btn\"\n [ngClass]=\"btnClass\"\n [ngStyle]=\"dynamicStyles\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate\"\n [attr.formtarget]=\"formtarget\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.type]=\"type\"\n >\n {{ label }}\n </button>\n</ng-container>\n", styles: [".btn{padding:.5rem 1rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;line-height:24px;letter-spacing:.005em;text-align:left;box-shadow:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
155
263
  }
156
264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, decorators: [{
157
265
  type: Component,
158
- args: [{ selector: "argenta-custom-button", changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"hasPermission()\">\n <button\n [type]=\"type\"\n class=\"btn\"\n [ngClass]=\"btnClass\"\n [ngStyle]=\"dynamicStyles\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate\"\n [attr.formtarget]=\"formtarget\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n </button>\n</ng-container>\n", styles: [".btn{padding:.5rem 1rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;line-height:24px;letter-spacing:.005em;text-align:left;box-shadow:none}.btn:hover{box-shadow:0 0 0 .2rem #7e7e7e40}.btn:active{background-color:#7e7e7e40}.btn:focus{outline:none;box-shadow:0 0 0 .2rem #7e7e7e40}\n"] }]
159
- }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { type: [{
266
+ args: [{ selector: "argenta-custom-button", changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"hasPermission()\">\n <button\n #buttonElement\n [type]=\"type\"\n class=\"btn\"\n [ngClass]=\"btnClass\"\n [ngStyle]=\"dynamicStyles\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.autofocus]=\"autofocus ? true : null\"\n [attr.form]=\"form\"\n [attr.formaction]=\"formaction\"\n [attr.formenctype]=\"formenctype\"\n [attr.formmethod]=\"formmethod\"\n [attr.formnovalidate]=\"formnovalidate\"\n [attr.formtarget]=\"formtarget\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.type]=\"type\"\n >\n {{ label }}\n </button>\n</ng-container>\n", styles: [".btn{padding:.5rem 1rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;line-height:24px;letter-spacing:.005em;text-align:left;box-shadow:none}\n"] }]
267
+ }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, propDecorators: { type: [{
160
268
  type: Input
161
269
  }], label: [{
162
270
  type: Input
@@ -188,5 +296,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
188
296
  type: Input
189
297
  }], onButtonClick: [{
190
298
  type: Output
299
+ }], buttonElement: [{
300
+ type: ViewChild,
301
+ args: ["buttonElement"]
191
302
  }] } });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFJTix1QkFBdUIsR0FFeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBUzdELE1BQU0sT0FBTyxlQUFlO0lBd0IxQixZQUNVLFdBQXdCLEVBQ3hCLEdBQXNCO1FBRHRCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBekJ2QixTQUFJLEdBQVcsUUFBUSxDQUFDO1FBQ3hCLFVBQUssR0FBVyxRQUFRLENBQUM7UUFDekIsYUFBUSxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ2hELGFBQVEsR0FBVyxNQUFNLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUNsQyxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNqQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNqQyxTQUFJLEdBQWtCLElBQUksQ0FBQztRQUMzQixVQUFLLEdBQWtCLElBQUksQ0FB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LFFBQVEsQ0FBQyxLQUFZO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsNkJBQTZCO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBWTtRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLGdDQUFnQztJQUNsQyxDQUFDOytHQXJMVSxlQUFlO21HQUFmLGVBQWUsdWRDcEI1Qix3bEJBcUJBOzs0RkREYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTtrSUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJ1dHRvbkNsYXNzZXMgfSBmcm9tIFwiLi4vLi4vZW51bS9CdXR0b25DbGFzc2VzRW51bVwiO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZS9hdXRoLXNlcnZpY2Uuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXJnZW50YS1jdXN0b20tYnV0dG9uXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYnV0dG9uLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9idXR0b24uY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9IFwiYnV0dG9uXCI7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSBcIlN1Ym1pdFwiO1xuICBASW5wdXQoKSBidG5DbGFzczogQnV0dG9uQ2xhc3NlcyA9IEJ1dHRvbkNsYXNzZXMuUHJpbWFyeTtcbiAgQElucHV0KCkgZm9udFNpemU6IHN0cmluZyA9IFwiMXJlbVwiO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGZvcm1hY3Rpb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBmb3JtZW5jdHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGZvcm1tZXRob2Q6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBmb3Jtbm92YWxpZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3JtdGFyZ2V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgcGVybWlzc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpIG9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gIHByaXZhdGUgaXNIb3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlSW5wdXRzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVJbnB1dHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlSW5wdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkVHlwZXMgPSBbXCJidXR0b25cIiwgXCJzdWJtaXRcIiwgXCJyZXNldFwiXTtcbiAgICBjb25zdCB2YWxpZENsYXNzZXMgPSBPYmplY3QudmFsdWVzKEJ1dHRvbkNsYXNzZXMpO1xuXG4gICAgaWYgKCF2YWxpZFR5cGVzLmluY2x1ZGVzKHRoaXMudHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgdHlwZTogJHt0aGlzLnR5cGV9LiBBbGxvd2VkIHZhbHVlcyBhcmU6ICR7dmFsaWRUeXBlcy5qb2luKFxuICAgICAgICAgIFwiLCBcIlxuICAgICAgICApfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCF2YWxpZENsYXNzZXMuaW5jbHVkZXModGhpcy5idG5DbGFzcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgYnRuQ2xhc3M6ICR7XG4gICAgICAgICAgdGhpcy5idG5DbGFzc1xuICAgICAgICB9LiBBbGxvd2VkIHZhbHVlcyBhcmU6ICR7dmFsaWRDbGFzc2VzLmpvaW4oXCIsIFwiKX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5kaXNhYmxlZCAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgZGlzYWJsZWQgdmFsdWU6ICR7dGhpcy5kaXNhYmxlZH0uIEl0IHNob3VsZCBiZSBhIGJvb2xlYW4uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuYXV0b2ZvY3VzICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBhdXRvZm9jdXMgdmFsdWU6ICR7dGhpcy5hdXRvZm9jdXN9LiBJdCBzaG91bGQgYmUgYSBib29sZWFuLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGVybWlzc2lvbnMgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5wZXJtaXNzaW9ucykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgcGVybWlzc2lvbnMgdmFsdWU6ICR7dGhpcy5wZXJtaXNzaW9uc30uIEl0IHNob3VsZCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzLmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xuICAgIHRoaXMub25CdXR0b25DbGljay5lbWl0KGV2ZW50KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDgwKTtcbiAgfVxuXG4gIGdldCBkeW5hbWljU3R5bGVzKCkge1xuICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZUR5bmFtaWNTdHlsZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlRHluYW1pY1N0eWxlcygpIHtcbiAgICBsZXQgYmFja2dyb3VuZENvbG9yID0gXCJcIjtcbiAgICBsZXQgdGV4dENvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAuZ2V0UHJvcGVydHlWYWx1ZShcIi0tdGV4dC1jb2xvclwiKVxuICAgICAgLnRyaW0oKTsgLy8gQ29yIGRlIHRleHRvIHBhZHLDo29cbiAgICBsZXQgYm9yZGVyQ29sb3IgPSBcIlwiO1xuXG4gICAgY29uc3QgZ2V0Q1NTVmFyaWFibGUgPSAodmFyaWFibGU6IHN0cmluZykgPT5cbiAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSh2YXJpYWJsZSlcbiAgICAgICAgLnRyaW0oKTtcblxuICAgIGlmICh0aGlzLmNsaWNrZWQpIHtcbiAgICAgIGJhY2tncm91bmRDb2xvciA9IFwicmdiYSgxMjYsIDEyNiwgMTI2LCAwLjI1KVwiOyAvLyBDb3IgdGVtcG9yw6FyaWEgYW8gY2xpY2FyXG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAodGhpcy5idG5DbGFzcykge1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuUHJpbWFyeTpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tcHJpbWFyeS1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLlNlY29uZGFyeTpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tc2Vjb25kYXJ5LWNvbG9yXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuU3VjY2VzczpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tc3VjY2Vzcy1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkRhbmdlcjpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tZGFuZ2VyLWNvbG9yXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuV2FybmluZzpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0td2FybmluZy1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkluZm86XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLWluZm8tY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5MaWdodDpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tbGlnaHQtY29sb3JcIik7XG4gICAgICAgICAgdGV4dENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXByaW1hcnktY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5EYXJrOlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1kYXJrLWNvbG9yXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuTGluazpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBcInRyYW5zcGFyZW50XCI7XG4gICAgICAgICAgYm9yZGVyQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tbGluay1ib3JkZXItY29sb3JcIik7XG4gICAgICAgICAgdGV4dENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXByaW1hcnktY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLXByaW1hcnktY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaG92ZXJGaWx0ZXIgPSB0aGlzLmlzSG92ZXJlZCA/IFwiYnJpZ2h0bmVzcyg4MCUpXCIgOiBcIm5vbmVcIjtcbiAgICBjb25zdCBhY3RpdmVGaWx0ZXIgPSB0aGlzLmlzQWN0aXZlID8gXCJicmlnaHRuZXNzKDYwJSlcIiA6IGhvdmVyRmlsdGVyO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIFwiZm9udC1zaXplXCI6IHRoaXMuZm9udFNpemUsXG4gICAgICBcImJhY2tncm91bmQtY29sb3JcIjogYmFja2dyb3VuZENvbG9yLFxuICAgICAgY29sb3I6IHRleHRDb2xvcixcbiAgICAgIGJvcmRlcjogYm9yZGVyQ29sb3IgPyBgMXB4IHNvbGlkICR7Ym9yZGVyQ29sb3J9YCA6IFwibm9uZVwiLFxuICAgICAgdHJhbnNpdGlvbjogXCJiYWNrZ3JvdW5kLWNvbG9yIDAuM3MsIGJvcmRlci1jb2xvciAwLjNzLCBmaWx0ZXIgMC4zc1wiLFxuICAgICAgZmlsdGVyOiBhY3RpdmVGaWx0ZXIsXG4gICAgfTtcbiAgfVxuXG4gIGhhc1Blcm1pc3Npb24oKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnBlcm1pc3Npb25zIHx8IHRoaXMucGVybWlzc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnBlcm1pc3Npb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlBlcm1pc3Npb24gZXJyb3I6XCIsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlVua25vd24gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBlcm1pc3Npb24gY2hlY2tcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBvbkNhbmNlbChldmVudDogRXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhcIkNhbmNlbCBidXR0b24gY2xpY2tlZFwiLCBldmVudCk7XG4gICAgLy8gTMOzZ2ljYSBwYXJhIG8gY2FuY2VsYW1lbnRvXG4gIH1cblxuICBvblNhdmUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc29sZS5sb2coXCJTYXZlIGJ1dHRvbiBjbGlja2VkXCIsIGV2ZW50KTtcbiAgICAvLyBMw7NnaWNhIHBhcmEgc2FsdmFyIGFsdGVyYcOnw7Vlc1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzUGVybWlzc2lvbigpXCI+XG4gIDxidXR0b25cbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBjbGFzcz1cImJ0blwiXG4gICAgW25nQ2xhc3NdPVwiYnRuQ2xhc3NcIlxuICAgIFtuZ1N0eWxlXT1cImR5bmFtaWNTdHlsZXNcIlxuICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIuYXV0b2ZvY3VzXT1cImF1dG9mb2N1cyA/IHRydWUgOiBudWxsXCJcbiAgICBbYXR0ci5mb3JtXT1cImZvcm1cIlxuICAgIFthdHRyLmZvcm1hY3Rpb25dPVwiZm9ybWFjdGlvblwiXG4gICAgW2F0dHIuZm9ybWVuY3R5cGVdPVwiZm9ybWVuY3R5cGVcIlxuICAgIFthdHRyLmZvcm1tZXRob2RdPVwiZm9ybW1ldGhvZFwiXG4gICAgW2F0dHIuZm9ybW5vdmFsaWRhdGVdPVwiZm9ybW5vdmFsaWRhdGVcIlxuICAgIFthdHRyLmZvcm10YXJnZXRdPVwiZm9ybXRhcmdldFwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4gID5cbiAgICB7eyBsYWJlbCB9fVxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuIl19
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFJTix1QkFBdUIsRUFHdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQVM3RCxNQUFNLE9BQU8sZUFBZTtJQXlCMUIsWUFDVSxXQUF3QixFQUN4QixHQUFzQixFQUN0QixRQUFtQjtRQUZuQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBM0JwQixTQUFJLEdBQVcsUUFBUSxDQUFDO1FBQ3hCLFVBQUssR0FBVyxRQUFRLENBQUM7UUFDekIsYUFBUSxHQUFrQixhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ2hELGFBQVEsR0FBVyxNQUFNLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUNsQyxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNqQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNq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O2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDcUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQnV0dG9uQ2xhc3NlcyB9IGZyb20gXCIuLi8uLi9lbnVtL0J1dHRvbkNsYXNzZXNFbnVtXCI7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL2F1dGgtc2VydmljZS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhcmdlbnRhLWN1c3RvbS1idXR0b25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9idXR0b24uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2J1dHRvbi5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nID0gXCJidXR0b25cIjtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9IFwiU3VibWl0XCI7XG4gIEBJbnB1dCgpIGJ0bkNsYXNzOiBCdXR0b25DbGFzc2VzID0gQnV0dG9uQ2xhc3Nlcy5QcmltYXJ5O1xuICBASW5wdXQoKSBmb250U2l6ZTogc3RyaW5nID0gXCIxcmVtXCI7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF1dG9mb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmb3JtOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgZm9ybWFjdGlvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGZvcm1lbmN0eXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgZm9ybW1ldGhvZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGZvcm1ub3ZhbGlkYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvcm10YXJnZXQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBwZXJtaXNzaW9uczogc3RyaW5nW10gPSBbXTtcblxuICBAT3V0cHV0KCkgb25CdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBWaWV3Q2hpbGQoXCJidXR0b25FbGVtZW50XCIpIGJ1dHRvbkVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICBwcml2YXRlIGlzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGlzQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVJbnB1dHMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEhvdmVyRWZmZWN0KCk7IC8vIENoYW1hIG8gbcOpdG9kbyBwYXJhIGFwbGljYXIgbyBlZmVpdG8gZGUgaG92ZXJcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcykge1xuICAgICAgdGhpcy52YWxpZGF0ZUlucHV0cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVJbnB1dHMoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRUeXBlcyA9IFtcImJ1dHRvblwiLCBcInN1Ym1pdFwiLCBcInJlc2V0XCJdO1xuICAgIGNvbnN0IHZhbGlkQ2xhc3NlcyA9IE9iamVjdC52YWx1ZXMoQnV0dG9uQ2xhc3Nlcyk7XG5cbiAgICBpZiAoIXZhbGlkVHlwZXMuaW5jbHVkZXModGhpcy50eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCB0eXBlOiAke3RoaXMudHlwZX0uIEFsbG93ZWQgdmFsdWVzIGFyZTogJHt2YWxpZFR5cGVzLmpvaW4oXG4gICAgICAgICAgXCIsIFwiXG4gICAgICAgICl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXZhbGlkQ2xhc3Nlcy5pbmNsdWRlcyh0aGlzLmJ0bkNsYXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBidG5DbGFzczogJHtcbiAgICAgICAgICB0aGlzLmJ0bkNsYXNzXG4gICAgICAgIH0uIEFsbG93ZWQgdmFsdWVzIGFyZTogJHt2YWxpZENsYXNzZXMuam9pbihcIiwgXCIpfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRpc2FibGVkICE9PSBcImJvb2xlYW5cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBkaXNhYmxlZCB2YWx1ZTogJHt0aGlzLmRpc2FibGVkfS4gSXQgc2hvdWxkIGJlIGEgYm9vbGVhbi5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5hdXRvZm9jdXMgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGF1dG9mb2N1cyB2YWx1ZTogJHt0aGlzLmF1dG9mb2N1c30uIEl0IHNob3VsZCBiZSBhIGJvb2xlYW4uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wZXJtaXNzaW9ucyAmJiAhQXJyYXkuaXNBcnJheSh0aGlzLnBlcm1pc3Npb25zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBwZXJtaXNzaW9ucyB2YWx1ZTogJHt0aGlzLnBlcm1pc3Npb25zfS4gSXQgc2hvdWxkIGJlIGFuIGFycmF5IG9mIHN0cmluZ3MuYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuY2xpY2tlZCA9IHRydWU7XG4gICAgdGhpcy5vbkJ1dHRvbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jbGlja2VkID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgODApO1xuICB9XG5cbiAgZ2V0IGR5bmFtaWNTdHlsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRHluYW1pY1N0eWxlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEeW5hbWljU3R5bGVzKCkge1xuICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSBcIlwiO1xuICAgIGxldCB0ZXh0Q29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS10ZXh0LWNvbG9yXCIpXG4gICAgICAudHJpbSgpOyAvLyBDb3IgZGUgdGV4dG8gcGFkcsOjb1xuICAgIGxldCBib3JkZXJDb2xvciA9IFwiXCI7XG5cbiAgICBjb25zdCBnZXRDU1NWYXJpYWJsZSA9ICh2YXJpYWJsZTogc3RyaW5nKSA9PlxuICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKHZhcmlhYmxlKVxuICAgICAgICAudHJpbSgpO1xuXG4gICAgaWYgKHRoaXMuY2xpY2tlZCkge1xuICAgICAgYmFja2dyb3VuZENvbG9yID0gXCJyZ2JhKDEyNiwgMTI2LCAxMjYsIDAuMjUpXCI7IC8vIENvciB0ZW1wb3LDoXJpYSBhbyBjbGljYXJcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoICh0aGlzLmJ0bkNsYXNzKSB7XG4gICAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5QcmltYXJ5OlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1wcmltYXJ5LWNvbG9yXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuU2Vjb25kYXJ5OlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1zZWNvbmRhcnktY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5TdWNjZXNzOlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1zdWNjZXNzLWNvbG9yXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuRGFuZ2VyOlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1kYW5nZXItY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5XYXJuaW5nOlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS13YXJuaW5nLWNvbG9yXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuSW5mbzpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0taW5mby1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkxpZ2h0OlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1saWdodC1jb2xvclwiKTtcbiAgICAgICAgICB0ZXh0Q29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tcHJpbWFyeS1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkRhcms6XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZ2V0Q1NTVmFyaWFibGUoXCItLWRhcmstY29sb3JcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5MaW5rOlxuICAgICAgICAgIGJhY2tncm91bmRDb2xvciA9IFwidHJhbnNwYXJlbnRcIjtcbiAgICAgICAgICBib3JkZXJDb2xvciA9IGdldENTU1ZhcmlhYmxlKFwiLS1saW5rLWJvcmRlci1jb2xvclwiKTtcbiAgICAgICAgICB0ZXh0Q29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tcHJpbWFyeS1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBnZXRDU1NWYXJpYWJsZShcIi0tcHJpbWFyeS1jb2xvclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBob3ZlckZpbHRlciA9IHRoaXMuaXNIb3ZlcmVkID8gXCJicmlnaHRuZXNzKDgwJSlcIiA6IFwibm9uZVwiO1xuICAgIGNvbnN0IGFjdGl2ZUZpbHRlciA9IHRoaXMuaXNBY3RpdmUgPyBcImJyaWdodG5lc3MoNjAlKVwiIDogaG92ZXJGaWx0ZXI7XG5cbiAgICByZXR1cm4ge1xuICAgICAgXCJmb250LXNpemVcIjogdGhpcy5mb250U2l6ZSxcbiAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBjb2xvcjogdGV4dENvbG9yLFxuICAgICAgYm9yZGVyOiBib3JkZXJDb2xvciA/IGAxcHggc29saWQgJHtib3JkZXJDb2xvcn1gIDogXCJub25lXCIsXG4gICAgICB0cmFuc2l0aW9uOiBcImJhY2tncm91bmQtY29sb3IgMC4zcywgYm9yZGVyLWNvbG9yIDAuM3MsIGZpbHRlciAwLjNzXCIsXG4gICAgICBmaWx0ZXI6IGFjdGl2ZUZpbHRlcixcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIb3ZlckVmZmVjdCgpOiB2b2lkIHtcbiAgICBjb25zdCBidXR0b25FbGVtZW50ID0gdGhpcy5idXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAoYnV0dG9uRWxlbWVudCkge1xuICAgICAgLy8gRXZlbnRvIGRlIG1vdXNlb3ZlciBwYXJhIGFkaWNpb25hciBib3gtc2hhZG93XG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihidXR0b25FbGVtZW50LCBcIm1vdXNlb3ZlclwiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGhvdmVyQ29sb3IgPSB0aGlzLmNhbGN1bGF0ZUhvdmVyQ29sb3IoKTsgLy8gQ2FsY3VsYSBhIGNvciBkZSBob3ZlclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGJ1dHRvbkVsZW1lbnQsXG4gICAgICAgICAgXCJib3gtc2hhZG93XCIsXG4gICAgICAgICAgYDAgMCAwIDAuMTVyZW0gJHtob3ZlckNvbG9yfWBcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBFdmVudG8gZGUgbW91c2VvdXQgcGFyYSByZW1vdmVyIG8gYm94LXNoYWRvd1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oYnV0dG9uRWxlbWVudCwgXCJtb3VzZW91dFwiLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoYnV0dG9uRWxlbWVudCwgXCJib3gtc2hhZG93XCIsIFwibm9uZVwiKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGN1bGEgYSBjb3IgZGUgaG92ZXIgY29tIGJhc2UgbmEgY2xhc3NlIGRlIGJvdMOjb1xuICBwcml2YXRlIGNhbGN1bGF0ZUhvdmVyQ29sb3IoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuYnRuQ2xhc3MpIHtcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5QcmltYXJ5OlxuICAgICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoXCItLXByaW1hcnktY29sb3JcIilcbiAgICAgICAgICAudHJpbSgpO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLlNlY29uZGFyeTpcbiAgICAgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1zZWNvbmRhcnktY29sb3JcIilcbiAgICAgICAgICAudHJpbSgpO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLlN1Y2Nlc3M6XG4gICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZShcIi0tc3VjY2Vzcy1jb2xvclwiKVxuICAgICAgICAgIC50cmltKCk7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuRGFuZ2VyOlxuICAgICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoXCItLWRhbmdlci1jb2xvclwiKVxuICAgICAgICAgIC50cmltKCk7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuV2FybmluZzpcbiAgICAgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS13YXJuaW5nLWNvbG9yXCIpXG4gICAgICAgICAgLnRyaW0oKTtcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5JbmZvOlxuICAgICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoXCItLWluZm8tY29sb3JcIilcbiAgICAgICAgICAudHJpbSgpO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkxpbms6XG4gICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZShcImxpZ2h0LWNvbG9yXCIpXG4gICAgICAgICAgLnRyaW0oKTtcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5MaWdodDpcbiAgICAgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1saWdodC1jb2xvclwiKVxuICAgICAgICAgIC50cmltKCk7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuRGFyazpcbiAgICAgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1kYXJrLWNvbG9yXCIpXG4gICAgICAgICAgLnRyaW0oKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZShcIi0tcHJpbWFyeS1jb2xvclwiKVxuICAgICAgICAgIC50cmltKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsY3VsYSBhIGNvciBkZSBmdW5kbyBvcmlnaW5hbFxuICBwcml2YXRlIGNhbGN1bGF0ZU9yaWdpbmFsQ29sb3IoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuYnRuQ2xhc3MpIHtcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5QcmltYXJ5OlxuICAgICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoXCItLXByaW1hcnktY29sb3JcIilcbiAgICAgICAgICAudHJpbSgpO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLlNlY29uZGFyeTpcbiAgICAgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1zZWNvbmRhcnktY29sb3JcIilcbiAgICAgICAgICAudHJpbSgpO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLlN1Y2Nlc3M6XG4gICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZShcIi0tc3VjY2Vzcy1jb2xvclwiKVxuICAgICAgICAgIC50cmltKCk7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuRGFuZ2VyOlxuICAgICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoXCItLWRhbmdlci1jb2xvclwiKVxuICAgICAgICAgIC50cmltKCk7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuV2FybmluZzpcbiAgICAgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS13YXJuaW5nLWNvbG9yXCIpXG4gICAgICAgICAgLnRyaW0oKTtcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5JbmZvOlxuICAgICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoXCItLWluZm8tY29sb3JcIilcbiAgICAgICAgICAudHJpbSgpO1xuICAgICAgY2FzZSBCdXR0b25DbGFzc2VzLkxpbms6XG4gICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZShcInRyYW5zcGFyZW50XCIpXG4gICAgICAgICAgLnRyaW0oKTtcbiAgICAgIGNhc2UgQnV0dG9uQ2xhc3Nlcy5MaWdodDpcbiAgICAgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1saWdodC1jb2xvclwiKVxuICAgICAgICAgIC50cmltKCk7XG4gICAgICBjYXNlIEJ1dHRvbkNsYXNzZXMuRGFyazpcbiAgICAgICAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1kYXJrLWNvbG9yXCIpXG4gICAgICAgICAgLnRyaW0oKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZShcIi0tcHJpbWFyeS1jb2xvclwiKVxuICAgICAgICAgIC50cmltKCk7XG4gICAgfVxuICB9XG5cbiAgaGFzUGVybWlzc2lvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMucGVybWlzc2lvbnMgfHwgdGhpcy5wZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5oYXNQZXJtaXNzaW9uKHRoaXMucGVybWlzc2lvbnMpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiUGVybWlzc2lvbiBlcnJvcjpcIiwgZXJyb3IubWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVW5rbm93biBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGVybWlzc2lvbiBjaGVja1wiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FuY2VsKGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnNvbGUubG9nKFwiQ2FuY2VsIGJ1dHRvbiBjbGlja2VkXCIsIGV2ZW50KTtcbiAgICAvLyBMw7NnaWNhIHBhcmEgbyBjYW5jZWxhbWVudG9cbiAgfVxuXG4gIG9uU2F2ZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhcIlNhdmUgYnV0dG9uIGNsaWNrZWRcIiwgZXZlbnQpO1xuICAgIC8vIEzDs2dpY2EgcGFyYSBzYWx2YXIgYWx0ZXJhw6fDtWVzXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNQZXJtaXNzaW9uKClcIj5cbiAgPGJ1dHRvblxuICAgICNidXR0b25FbGVtZW50XG4gICAgW3R5cGVdPVwidHlwZVwiXG4gICAgY2xhc3M9XCJidG5cIlxuICAgIFtuZ0NsYXNzXT1cImJ0bkNsYXNzXCJcbiAgICBbbmdTdHlsZV09XCJkeW5hbWljU3R5bGVzXCJcbiAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFthdHRyLmF1dG9mb2N1c109XCJhdXRvZm9jdXMgPyB0cnVlIDogbnVsbFwiXG4gICAgW2F0dHIuZm9ybV09XCJmb3JtXCJcbiAgICBbYXR0ci5mb3JtYWN0aW9uXT1cImZvcm1hY3Rpb25cIlxuICAgIFthdHRyLmZvcm1lbmN0eXBlXT1cImZvcm1lbmN0eXBlXCJcbiAgICBbYXR0ci5mb3JtbWV0aG9kXT1cImZvcm1tZXRob2RcIlxuICAgIFthdHRyLmZvcm1ub3ZhbGlkYXRlXT1cImZvcm1ub3ZhbGlkYXRlXCJcbiAgICBbYXR0ci5mb3JtdGFyZ2V0XT1cImZvcm10YXJnZXRcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gID5cbiAgICB7eyBsYWJlbCB9fVxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -48,11 +48,11 @@ export class TabComponent {
48
48
  }
49
49
  }
50
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabComponent, selector: "argenta-tab", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", componentPermissions: "componentPermissions" }, outputs: { tabChanged: "tabChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:#00444c;border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:#00444c;color:#fff;border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:#2ca58d;color:#fff}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabComponent, selector: "argenta-tab", inputs: { tabs: "tabs", activeTabIndex: "activeTabIndex", componentPermissions: "componentPermissions" }, outputs: { tabChanged: "tabChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
52
  }
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabComponent, decorators: [{
54
54
  type: Component,
55
- args: [{ selector: 'argenta-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:#00444c;border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:#00444c;color:#fff;border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:#2ca58d;color:#fff}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"] }]
55
+ args: [{ selector: 'argenta-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"hasComponentPermission()\">\n <ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\n <li class=\"nav-item\" *ngIf=\"hasPermission(tab.permissions)\">\n <a\n class=\"nav-link\"\n [class.active]=\"i === activeTabIndex\"\n (click)=\"selectTab(i, $event)\"\n href=\"#\"\n >{{ tab.label }}</a\n >\n </li>\n </ng-container>\n </ul>\n <div class=\"tab-content\">\n <div\n *ngFor=\"let tab of tabs; let i = index\"\n class=\"tab-pane fade\"\n [ngClass]=\"{ 'show active': i === activeTabIndex }\"\n >\n <ng-container *ngTemplateOutlet=\"tab.content\"></ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".nav-tabs .nav-item .nav-link{cursor:pointer;font-family:var(--font-family);border-top-left-radius:.3rem;border-top-right-radius:.3rem;font-size:14px;color:var(--primary-color);border:1px solid #ddd;transition:background-color .3s ease,color .3s ease}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--background-color);border-color:transparent}.nav-tabs .nav-item .nav-link:hover{background-color:var(--secondary-color);color:var(--background-color)}.tab-content .tab-pane{padding:1rem;border:1px solid #ddd;border-top:none}.nav-tabs .nav-item .nav-link{color:var(--primary-color)}.nav-tabs .nav-item .nav-link.active{background-color:var(--primary-color);color:var(--text-color)}\n"] }]
56
56
  }], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { tabs: [{
57
57
  type: Input
58
58
  }], activeTabIndex: [{
@@ -169,11 +169,11 @@ export class DataTableComponent {
169
169
  this.onButtonClick.emit(); // Emitindo o evento
170
170
  }
171
171
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AuthService }, { token: i2.RefreshService }], target: i0.ɵɵFactoryTarget.Component }); }
172
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataTableComponent, selector: "argenta-list-data-table", inputs: { columns: "columns", hiddenColumns: "hiddenColumns", defaultItemsPerPage: "defaultItemsPerPage", itemsPerPageLabel: "itemsPerPageLabel", showActionColumn: "showActionColumn", actionColumnLabel: "actionColumnLabel", totalItems: "totalItems", fetchDataFunction: "fetchDataFunction", editPermissions: "editPermissions", deletePermissions: "deletePermissions", viewPermissions: "viewPermissions", showPageInfo: "showPageInfo", pageText: "pageText", ofText: "ofText", filterDescription: "filterDescription", buttonLabel: "buttonLabel" }, outputs: { sortChange: "sortChange", pageChange: "pageChange", itemsPerPageChange: "itemsPerPageChange", onEditTable: "onEditTable", onDeleteTable: "onDeleteTable", onViewTable: "onViewTable", onButtonClick: "onButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"data-table-header\" style=\"margin-top: 2.5rem;\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{ itemsPerPageLabel }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\">\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n </div>\n <div *ngIf=\"buttonLabel && buttonLabel.length > 0\" class=\"right-section\">\n <button class=\"custom-button\" (click)=\"onNewButtonClick()\">\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input id=\"search\" label=\"\" placeholder=\"Buscar\" [(ngModel)]=\"filterDescription\" (search)=\"onSearch($event)\"></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem;\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th *ngIf=\"!isColumnHidden(column.prop)\" (click)=\"onSort(column.prop)\">\n {{ column.label }}\n </th>\n </ng-container>\n <th *ngIf=\"showActionColumn\" class=\"text-end\" style=\"padding-right: 6.3rem;\">{{ actionColumnLabel }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\">\n {{ getNestedProperty(item, column.prop) }}\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div *ngIf=\"hasPermission(editPermissions) && onEditTable.observers.length > 0\" (click)=\"handleAction('edit', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"square-pen\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(viewPermissions) && onViewTable.observers.length > 0\" (click)=\"handleAction('view', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"user-round\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(deletePermissions) && onDeleteTable.observers.length > 0\" (click)=\"handleAction('delete', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <i-lucide name=\"trash-2\" [size]=\"20\" color=\"#F26E6E\" [strokeWidth]=\"1.75\"></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\">\n </custom-pagination>\n</div>\n", styles: ["@charset \"UTF-8\";.clickable-icon{cursor:pointer}:host{font-family:var(--font-family)}.data-table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:-.2rem}.left-section,.right-section{display:flex;align-items:center}.search-input-container{display:flex;justify-content:flex-start}.left-section .form-group{display:flex;align-items:center}.items-per-page-label{font-family:var(--font-family);font-size:14px;color:#666;margin-right:.2rem}.custom-select{font-family:var(--font-family);font-size:14px;color:#666;background:#fff url('data:image/svg+xml;charset=US-ASCII,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 4 5\"><path fill=\"#666\" d=\"M2 0L0 2h4L2 0zM2 5l2-2H0l2 2z\"/></svg>') no-repeat right .75rem center/8px 10px;border:1px solid #ccc;border-radius:.25rem;padding:.375rem 1.75rem .375rem .75rem;appearance:none;-webkit-appearance:none;-moz-appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.table{font-family:var(--font-family);font-size:var(--table-font-size, 14px);color:var(--table-font-color, #737b7b);border-collapse:separate;border-spacing:0;border-radius:8px;overflow:hidden}.table thead tr{height:60px}.table thead th{background-color:var(--primary-color);color:var(--text-color);font-family:var(--font-family);font-size:14px;font-weight:600;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center;line-height:2.5}.table thead th:first-child{text-align:left;padding-left:1.4rem}.table tbody td{font-family:var(--font-family);font-size:14px;color:#737b7b;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center}.table tbody td:first-child{text-align:left;padding-left:1.4rem}.table tbody tr:last-child td{border-bottom:.1rem solid #dcdcdc}.table tbody td{border-right:none;border-left:none}.table thead th:first-child{border-top-left-radius:0}.table thead th:last-child{border-top-right-radius:0}.table tbody tr:last-child td:first-child{border-bottom-left-radius:0}.table tbody tr:last-child td:last-child{border-bottom-right-radius:0}.btn-icon{width:24px;height:24px;background-size:cover;display:inline-block;cursor:pointer;margin-right:16px}.pagination-controls{display:flex;justify-content:center;align-items:center;margin-top:1rem}.custom-button{display:flex;align-items:center;padding:.5rem 1rem .5rem .5rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;height:40px;letter-spacing:.005em;text-align:left;color:#fff;background-color:var(--secondary-color);border:none;cursor:pointer}.custom-button lucide-icon{margin-right:.5rem}.custom-button:hover{box-shadow:0 0 0 .2rem #7e7e7e40}.custom-button:active{background-color:#7e7e7e40}.custom-button:focus{outline:none;box-shadow:0 0 0 .2rem #7e7e7e40}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "component", type: i6.CustomPaginationComponent, selector: "custom-pagination", inputs: ["totalItems", "itemsPerPage", "currentPage", "showPageInfo"], outputs: ["pageChange"] }, { kind: "component", type: i7.SearchInputComponent, selector: "argenta-search-input", inputs: ["id", "label", "type", "placeholder", "value", "disabled", "readonly", "autofocus", "maxlength", "minlength", "required", "pattern", "debounceTime"], outputs: ["search", "inputChange", "change", "focus", "blur", "keyup", "keydown", "keypress"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
172
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataTableComponent, selector: "argenta-list-data-table", inputs: { columns: "columns", hiddenColumns: "hiddenColumns", defaultItemsPerPage: "defaultItemsPerPage", itemsPerPageLabel: "itemsPerPageLabel", showActionColumn: "showActionColumn", actionColumnLabel: "actionColumnLabel", totalItems: "totalItems", fetchDataFunction: "fetchDataFunction", editPermissions: "editPermissions", deletePermissions: "deletePermissions", viewPermissions: "viewPermissions", showPageInfo: "showPageInfo", pageText: "pageText", ofText: "ofText", filterDescription: "filterDescription", buttonLabel: "buttonLabel" }, outputs: { sortChange: "sortChange", pageChange: "pageChange", itemsPerPageChange: "itemsPerPageChange", onEditTable: "onEditTable", onDeleteTable: "onDeleteTable", onViewTable: "onViewTable", onButtonClick: "onButtonClick" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"data-table-header\" style=\"margin-top: 2.5rem;\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{ itemsPerPageLabel }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\">\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n </div>\n <div *ngIf=\"buttonLabel && buttonLabel.length > 0\" class=\"right-section\">\n <button class=\"custom-button\" (click)=\"onNewButtonClick()\">\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input id=\"search\" label=\"\" placeholder=\"Buscar\" [(ngModel)]=\"filterDescription\" (search)=\"onSearch($event)\"></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem;\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th *ngIf=\"!isColumnHidden(column.prop)\" (click)=\"onSort(column.prop)\">\n {{ column.label }}\n </th>\n </ng-container>\n <th *ngIf=\"showActionColumn\" class=\"text-end\" style=\"padding-right: 6.3rem;\">{{ actionColumnLabel }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\">\n {{ getNestedProperty(item, column.prop) }}\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div *ngIf=\"hasPermission(editPermissions) && onEditTable.observers.length > 0\" (click)=\"handleAction('edit', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"square-pen\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(viewPermissions) && onViewTable.observers.length > 0\" (click)=\"handleAction('view', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"user-round\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(deletePermissions) && onDeleteTable.observers.length > 0\" (click)=\"handleAction('delete', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <i-lucide name=\"trash-2\" [size]=\"20\" color=\"#F26E6E\" [strokeWidth]=\"1.75\"></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\">\n </custom-pagination>\n</div>\n", styles: ["@charset \"UTF-8\";.clickable-icon{cursor:pointer}:host{font-family:var(--font-family)}.data-table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:-.2rem}.left-section,.right-section{display:flex;align-items:center}.search-input-container{display:flex;justify-content:flex-start}.left-section .form-group{display:flex;align-items:center}.items-per-page-label{font-family:var(--font-family);font-size:14px;color:#666;margin-right:.2rem}.custom-select{font-family:var(--font-family);font-size:14px;color:#666;background:#fff url('data:image/svg+xml;charset=US-ASCII,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 4 5\"><path fill=\"#666\" d=\"M2 0L0 2h4L2 0zM2 5l2-2H0l2 2z\"/></svg>') no-repeat right .75rem center/8px 10px;border:1px solid #ccc;border-radius:.25rem;padding:.375rem 1.75rem .375rem .75rem;appearance:none;-webkit-appearance:none;-moz-appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.table{font-family:var(--font-family);font-size:var(--table-font-size, 14px);color:var(--table-font-color, #737b7b);border-collapse:separate;border-spacing:0;border-radius:8px;overflow:hidden}.table thead tr{height:60px}.table thead th{background-color:var(--primary-color);color:var(--text-color);font-family:var(--font-family);font-size:14px;font-weight:600;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center;line-height:2.5}.table thead th:first-child{text-align:left;padding-left:1.4rem}.table tbody td{font-family:var(--font-family);font-size:14px;color:#737b7b;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center}.table tbody td:first-child{text-align:left;padding-left:1.4rem}.table tbody tr:last-child td{border-bottom:.1rem solid #dcdcdc}.table tbody td{border-right:none;border-left:none}.table thead th:first-child{border-top-left-radius:0}.table thead th:last-child{border-top-right-radius:0}.table tbody tr:last-child td:first-child{border-bottom-left-radius:0}.table tbody tr:last-child td:last-child{border-bottom-right-radius:0}.btn-icon{width:24px;height:24px;background-size:cover;display:inline-block;cursor:pointer;margin-right:16px}.pagination-controls{display:flex;justify-content:center;align-items:center;margin-top:1rem}.custom-button{display:flex;align-items:center;padding:.5rem 1rem .5rem .5rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;height:40px;letter-spacing:.005em;text-align:left;color:#fff;background-color:var(--secondary-color);border:none;cursor:pointer}.custom-button lucide-icon{margin-right:.5rem}.custom-button:hover{box-shadow:0 0 0 .15rem var(--secondary-color)}.custom-button:active{background-color:var(--secondary-color)}.custom-button:focus{outline:none;box-shadow:0 0 0 .15rem var(--secondary-color)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }, { kind: "component", type: i6.CustomPaginationComponent, selector: "custom-pagination", inputs: ["totalItems", "itemsPerPage", "currentPage", "showPageInfo"], outputs: ["pageChange"] }, { kind: "component", type: i7.SearchInputComponent, selector: "argenta-search-input", inputs: ["id", "label", "type", "placeholder", "value", "disabled", "readonly", "autofocus", "maxlength", "minlength", "required", "pattern", "debounceTime"], outputs: ["search", "inputChange", "change", "focus", "blur", "keyup", "keydown", "keypress"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
173
173
  }
174
174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableComponent, decorators: [{
175
175
  type: Component,
176
- args: [{ selector: 'argenta-list-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-table-header\" style=\"margin-top: 2.5rem;\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{ itemsPerPageLabel }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\">\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n </div>\n <div *ngIf=\"buttonLabel && buttonLabel.length > 0\" class=\"right-section\">\n <button class=\"custom-button\" (click)=\"onNewButtonClick()\">\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input id=\"search\" label=\"\" placeholder=\"Buscar\" [(ngModel)]=\"filterDescription\" (search)=\"onSearch($event)\"></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem;\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th *ngIf=\"!isColumnHidden(column.prop)\" (click)=\"onSort(column.prop)\">\n {{ column.label }}\n </th>\n </ng-container>\n <th *ngIf=\"showActionColumn\" class=\"text-end\" style=\"padding-right: 6.3rem;\">{{ actionColumnLabel }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\">\n {{ getNestedProperty(item, column.prop) }}\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div *ngIf=\"hasPermission(editPermissions) && onEditTable.observers.length > 0\" (click)=\"handleAction('edit', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"square-pen\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(viewPermissions) && onViewTable.observers.length > 0\" (click)=\"handleAction('view', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"user-round\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(deletePermissions) && onDeleteTable.observers.length > 0\" (click)=\"handleAction('delete', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <i-lucide name=\"trash-2\" [size]=\"20\" color=\"#F26E6E\" [strokeWidth]=\"1.75\"></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\">\n </custom-pagination>\n</div>\n", styles: ["@charset \"UTF-8\";.clickable-icon{cursor:pointer}:host{font-family:var(--font-family)}.data-table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:-.2rem}.left-section,.right-section{display:flex;align-items:center}.search-input-container{display:flex;justify-content:flex-start}.left-section .form-group{display:flex;align-items:center}.items-per-page-label{font-family:var(--font-family);font-size:14px;color:#666;margin-right:.2rem}.custom-select{font-family:var(--font-family);font-size:14px;color:#666;background:#fff url('data:image/svg+xml;charset=US-ASCII,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 4 5\"><path fill=\"#666\" d=\"M2 0L0 2h4L2 0zM2 5l2-2H0l2 2z\"/></svg>') no-repeat right .75rem center/8px 10px;border:1px solid #ccc;border-radius:.25rem;padding:.375rem 1.75rem .375rem .75rem;appearance:none;-webkit-appearance:none;-moz-appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.table{font-family:var(--font-family);font-size:var(--table-font-size, 14px);color:var(--table-font-color, #737b7b);border-collapse:separate;border-spacing:0;border-radius:8px;overflow:hidden}.table thead tr{height:60px}.table thead th{background-color:var(--primary-color);color:var(--text-color);font-family:var(--font-family);font-size:14px;font-weight:600;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center;line-height:2.5}.table thead th:first-child{text-align:left;padding-left:1.4rem}.table tbody td{font-family:var(--font-family);font-size:14px;color:#737b7b;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center}.table tbody td:first-child{text-align:left;padding-left:1.4rem}.table tbody tr:last-child td{border-bottom:.1rem solid #dcdcdc}.table tbody td{border-right:none;border-left:none}.table thead th:first-child{border-top-left-radius:0}.table thead th:last-child{border-top-right-radius:0}.table tbody tr:last-child td:first-child{border-bottom-left-radius:0}.table tbody tr:last-child td:last-child{border-bottom-right-radius:0}.btn-icon{width:24px;height:24px;background-size:cover;display:inline-block;cursor:pointer;margin-right:16px}.pagination-controls{display:flex;justify-content:center;align-items:center;margin-top:1rem}.custom-button{display:flex;align-items:center;padding:.5rem 1rem .5rem .5rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;height:40px;letter-spacing:.005em;text-align:left;color:#fff;background-color:var(--secondary-color);border:none;cursor:pointer}.custom-button lucide-icon{margin-right:.5rem}.custom-button:hover{box-shadow:0 0 0 .2rem #7e7e7e40}.custom-button:active{background-color:#7e7e7e40}.custom-button:focus{outline:none;box-shadow:0 0 0 .2rem #7e7e7e40}\n"] }]
176
+ args: [{ selector: 'argenta-list-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-table-header\" style=\"margin-top: 2.5rem;\">\n <div class=\"left-section\">\n <div class=\"form-group\">\n <label for=\"itemsPerPageSelect\" class=\"items-per-page-label\">{{ itemsPerPageLabel }}</label>\n <select\n id=\"itemsPerPageSelect\"\n class=\"form-control form-control-sm d-inline-block w-auto custom-select\"\n [(ngModel)]=\"defaultItemsPerPage\"\n (ngModelChange)=\"onItemsPerPageChange()\">\n <option *ngFor=\"let option of itemsPerPageOptions\" [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n </div>\n <div *ngIf=\"buttonLabel && buttonLabel.length > 0\" class=\"right-section\">\n <button class=\"custom-button\" (click)=\"onNewButtonClick()\">\n <lucide-icon name=\"plus\" [size]=\"28\" [strokeWidth]=\"1.75\"></lucide-icon>\n {{ buttonLabel }}\n </button>\n </div>\n</div>\n\n<div class=\"search-input-container\">\n <argenta-search-input id=\"search\" label=\"\" placeholder=\"Buscar\" [(ngModel)]=\"filterDescription\" (search)=\"onSearch($event)\"></argenta-search-input>\n</div>\n\n<div class=\"table-responsive\" style=\"margin-top: 1rem;\">\n <table class=\"table table-hover\">\n <thead>\n <tr>\n <ng-container *ngFor=\"let column of columns\">\n <th *ngIf=\"!isColumnHidden(column.prop)\" (click)=\"onSort(column.prop)\">\n {{ column.label }}\n </th>\n </ng-container>\n <th *ngIf=\"showActionColumn\" class=\"text-end\" style=\"padding-right: 6.3rem;\">{{ actionColumnLabel }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of pagedData; let i = index\">\n <ng-container *ngFor=\"let column of columns\">\n <td *ngIf=\"!isColumnHidden(column.prop)\">\n {{ getNestedProperty(item, column.prop) }}\n </td>\n </ng-container>\n <td *ngIf=\"showActionColumn\" class=\"text-end\">\n <div class=\"d-flex justify-content-end\">\n <div *ngIf=\"hasPermission(editPermissions) && onEditTable.observers.length > 0\" (click)=\"handleAction('edit', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"square-pen\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(viewPermissions) && onViewTable.observers.length > 0\" (click)=\"handleAction('view', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <lucide-icon name=\"user-round\" [size]=\"20\" color=\"#2CA58D\" [strokeWidth]=\"1.75\"></lucide-icon>\n </div>\n <div *ngIf=\"hasPermission(deletePermissions) && onDeleteTable.observers.length > 0\" (click)=\"handleAction('delete', item, i)\" class=\"clickable-icon\" style=\"margin-right: 1.5rem;\">\n <i-lucide name=\"trash-2\" [size]=\"20\" color=\"#F26E6E\" [strokeWidth]=\"1.75\"></i-lucide>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<div class=\"text-center pagination-controls\">\n <custom-pagination\n [totalItems]=\"totalItems\"\n [itemsPerPage]=\"defaultItemsPerPage\"\n [currentPage]=\"currentPage\"\n [showPageInfo]=\"showPageInfo\"\n (pageChange)=\"onPageChange($event)\">\n </custom-pagination>\n</div>\n", styles: ["@charset \"UTF-8\";.clickable-icon{cursor:pointer}:host{font-family:var(--font-family)}.data-table-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:-.2rem}.left-section,.right-section{display:flex;align-items:center}.search-input-container{display:flex;justify-content:flex-start}.left-section .form-group{display:flex;align-items:center}.items-per-page-label{font-family:var(--font-family);font-size:14px;color:#666;margin-right:.2rem}.custom-select{font-family:var(--font-family);font-size:14px;color:#666;background:#fff url('data:image/svg+xml;charset=US-ASCII,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 4 5\"><path fill=\"#666\" d=\"M2 0L0 2h4L2 0zM2 5l2-2H0l2 2z\"/></svg>') no-repeat right .75rem center/8px 10px;border:1px solid #ccc;border-radius:.25rem;padding:.375rem 1.75rem .375rem .75rem;appearance:none;-webkit-appearance:none;-moz-appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem #007bff40}.table{font-family:var(--font-family);font-size:var(--table-font-size, 14px);color:var(--table-font-color, #737b7b);border-collapse:separate;border-spacing:0;border-radius:8px;overflow:hidden}.table thead tr{height:60px}.table thead th{background-color:var(--primary-color);color:var(--text-color);font-family:var(--font-family);font-size:14px;font-weight:600;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center;line-height:2.5}.table thead th:first-child{text-align:left;padding-left:1.4rem}.table tbody td{font-family:var(--font-family);font-size:14px;color:#737b7b;padding:10px;border-bottom:.1rem solid #dcdcdc;text-align:center}.table tbody td:first-child{text-align:left;padding-left:1.4rem}.table tbody tr:last-child td{border-bottom:.1rem solid #dcdcdc}.table tbody td{border-right:none;border-left:none}.table thead th:first-child{border-top-left-radius:0}.table thead th:last-child{border-top-right-radius:0}.table tbody tr:last-child td:first-child{border-bottom-left-radius:0}.table tbody tr:last-child td:last-child{border-bottom-right-radius:0}.btn-icon{width:24px;height:24px;background-size:cover;display:inline-block;cursor:pointer;margin-right:16px}.pagination-controls{display:flex;justify-content:center;align-items:center;margin-top:1rem}.custom-button{display:flex;align-items:center;padding:.5rem 1rem .5rem .5rem;border-radius:.25rem;transition:background-color .3s,border-color .3s,filter .3s;font-family:var(--font-family);font-size:16px;font-weight:600;height:40px;letter-spacing:.005em;text-align:left;color:#fff;background-color:var(--secondary-color);border:none;cursor:pointer}.custom-button lucide-icon{margin-right:.5rem}.custom-button:hover{box-shadow:0 0 0 .15rem var(--secondary-color)}.custom-button:active{background-color:var(--secondary-color)}.custom-button:focus{outline:none;box-shadow:0 0 0 .15rem var(--secondary-color)}\n"] }]
177
177
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.AuthService }, { type: i2.RefreshService }]; }, propDecorators: { columns: [{
178
178
  type: Input
179
179
  }], hiddenColumns: [{