@js-smart/ng-kit 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +297 -0
- package/esm2022/js-smart-ng-kit.mjs +5 -0
- package/esm2022/lib/components/alert/alert.component.mjs +95 -0
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +172 -0
- package/esm2022/lib/components/buttons/base-button/base-button.component.mjs +72 -0
- package/esm2022/lib/components/buttons/bs-link-button/bs-link-button.component.mjs +52 -0
- package/esm2022/lib/components/buttons/delete-button/delete-button.component.mjs +62 -0
- package/esm2022/lib/components/buttons/edit-bs-button/edit-bs-button.component.mjs +55 -0
- package/esm2022/lib/components/buttons/edit-button/edit-button.component.mjs +49 -0
- package/esm2022/lib/components/buttons/edit-svg-icon-button/edit-svg-icon-button.component.mjs +51 -0
- package/esm2022/lib/components/buttons/excel-export-button/excel-export-button.component.mjs +14 -0
- package/esm2022/lib/components/buttons/manage-button/manage-button.component.mjs +49 -0
- package/esm2022/lib/components/buttons/pdf-export-button/pdf-export-button.component.mjs +13 -0
- package/esm2022/lib/components/buttons/primary-button/primary-button.component.mjs +61 -0
- package/esm2022/lib/components/buttons/save-primary-button/save-primary-button.component.mjs +60 -0
- package/esm2022/lib/components/buttons/search-button/search-button.component.mjs +52 -0
- package/esm2022/lib/components/buttons/success-button/success-button.component.mjs +65 -0
- package/esm2022/lib/components/buttons/view-button/view-button.component.mjs +41 -0
- package/esm2022/lib/components/buttons/view-primary-button/view-primary-button.component.mjs +49 -0
- package/esm2022/lib/components/confirm-dialog/confirm-dialog.component.mjs +63 -0
- package/esm2022/lib/components/ngx-spinner/ngx-spinner.component.mjs +195 -0
- package/esm2022/lib/components/ngx-spinner/ngx-spinner.enum.mjs +16 -0
- package/esm2022/lib/components/ngx-spinner/ngx-spinner.service.mjs +71 -0
- package/esm2022/lib/components/ngx-spinner/safe-html.pipe.mjs +24 -0
- package/esm2022/lib/components/snack-bar/error-snack-bar/error-snack-bar.component.mjs +50 -0
- package/esm2022/lib/components/snack-bar/success-snack-bar/success-snack-bar.component.mjs +50 -0
- package/esm2022/lib/components/spinner/spinner.component.mjs +31 -0
- package/esm2022/lib/directives/ngx-print.directive.mjs +255 -0
- package/esm2022/lib/directives/prevent-multiple-clicks.directive.mjs +44 -0
- package/esm2022/lib/pipes/type-of.pipe.mjs +17 -0
- package/esm2022/lib/services/mat-snack-bar.service.mjs +82 -0
- package/esm2022/lib/svg-icons/edit-solid-svg/edit-solid-svg.component.mjs +22 -0
- package/esm2022/lib/types/progress-state.mjs +2 -0
- package/esm2022/lib/util/progress-util.mjs +80 -0
- package/esm2022/public-api.mjs +33 -0
- package/fesm2022/js-smart-ng-kit.mjs +1872 -0
- package/fesm2022/js-smart-ng-kit.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/alert/alert.component.d.ts +73 -0
- package/lib/components/autocomplete/autocomplete.component.d.ts +115 -0
- package/lib/components/buttons/base-button/base-button.component.d.ts +63 -0
- package/lib/components/buttons/bs-link-button/bs-link-button.component.d.ts +10 -0
- package/lib/components/buttons/delete-button/delete-button.component.d.ts +11 -0
- package/lib/components/buttons/edit-bs-button/edit-bs-button.component.d.ts +9 -0
- package/lib/components/buttons/edit-button/edit-button.component.d.ts +10 -0
- package/lib/components/buttons/edit-svg-icon-button/edit-svg-icon-button.component.d.ts +10 -0
- package/lib/components/buttons/excel-export-button/excel-export-button.component.d.ts +5 -0
- package/lib/components/buttons/manage-button/manage-button.component.d.ts +10 -0
- package/lib/components/buttons/pdf-export-button/pdf-export-button.component.d.ts +5 -0
- package/lib/components/buttons/primary-button/primary-button.component.d.ts +12 -0
- package/lib/components/buttons/save-primary-button/save-primary-button.component.d.ts +11 -0
- package/lib/components/buttons/search-button/search-button.component.d.ts +11 -0
- package/lib/components/buttons/success-button/success-button.component.d.ts +11 -0
- package/lib/components/buttons/view-button/view-button.component.d.ts +9 -0
- package/lib/components/buttons/view-primary-button/view-primary-button.component.d.ts +10 -0
- package/lib/components/confirm-dialog/confirm-dialog.component.d.ts +20 -0
- package/lib/components/ngx-spinner/ngx-spinner.component.d.ts +109 -0
- package/lib/components/ngx-spinner/ngx-spinner.enum.d.ts +37 -0
- package/lib/components/ngx-spinner/ngx-spinner.service.d.ts +34 -0
- package/lib/components/ngx-spinner/safe-html.pipe.d.ts +10 -0
- package/lib/components/snack-bar/error-snack-bar/error-snack-bar.component.d.ts +22 -0
- package/lib/components/snack-bar/success-snack-bar/success-snack-bar.component.d.ts +22 -0
- package/lib/components/spinner/spinner.component.d.ts +22 -0
- package/lib/directives/ngx-print.directive.d.ts +157 -0
- package/lib/directives/prevent-multiple-clicks.directive.d.ts +21 -0
- package/lib/pipes/type-of.pipe.d.ts +7 -0
- package/lib/services/mat-snack-bar.service.d.ts +61 -0
- package/lib/svg-icons/edit-solid-svg/edit-solid-svg.component.d.ts +8 -0
- package/lib/types/progress-state.d.ts +7 -0
- package/lib/util/progress-util.d.ts +45 -0
- package/package.json +47 -0
- package/public-api.d.ts +25 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Component, input } from '@angular/core';
|
|
2
|
+
import { BaseButtonComponent } from '../base-button/base-button.component';
|
|
3
|
+
import { NgStyle } from '@angular/common';
|
|
4
|
+
import { MatIcon } from '@angular/material/icon';
|
|
5
|
+
import { MatButton } from '@angular/material/button';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class SavePrimaryButtonComponent extends BaseButtonComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.loadingLabel = input('Saving...');
|
|
11
|
+
this.label = input('Save');
|
|
12
|
+
this.icon = input('save');
|
|
13
|
+
this.classes = input('btn-primary primary-button');
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SavePrimaryButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: SavePrimaryButtonComponent, isStandalone: true, selector: "save-primary-button", inputs: { loadingLabel: { classPropertyName: "loadingLabel", publicName: "loadingLabel", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
17
|
+
<button
|
|
18
|
+
mat-raised-button
|
|
19
|
+
class="btn {{ classes() }}"
|
|
20
|
+
(click)="onClick.emit($event)"
|
|
21
|
+
(focus)="onFocus.emit($event)"
|
|
22
|
+
(blur)="onBlur.emit($event)"
|
|
23
|
+
[disabled]="disabled() || loading()"
|
|
24
|
+
[type]="type()"
|
|
25
|
+
[ngStyle]="style()"
|
|
26
|
+
[attr.data-cy]="'save-primary-button'">
|
|
27
|
+
@if (loading()) {
|
|
28
|
+
<span aria-hidden="true" class="spinner-border spinner-border-sm" role="status"></span>
|
|
29
|
+
}
|
|
30
|
+
@if (!loading()) {
|
|
31
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
32
|
+
}
|
|
33
|
+
{{ loading() ? loadingLabel() : label() }}
|
|
34
|
+
</button>
|
|
35
|
+
`, isInline: true, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SavePrimaryButtonComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{ selector: 'save-primary-button', standalone: true, imports: [MatButton, MatIcon, NgStyle], template: `
|
|
40
|
+
<button
|
|
41
|
+
mat-raised-button
|
|
42
|
+
class="btn {{ classes() }}"
|
|
43
|
+
(click)="onClick.emit($event)"
|
|
44
|
+
(focus)="onFocus.emit($event)"
|
|
45
|
+
(blur)="onBlur.emit($event)"
|
|
46
|
+
[disabled]="disabled() || loading()"
|
|
47
|
+
[type]="type()"
|
|
48
|
+
[ngStyle]="style()"
|
|
49
|
+
[attr.data-cy]="'save-primary-button'">
|
|
50
|
+
@if (loading()) {
|
|
51
|
+
<span aria-hidden="true" class="spinner-border spinner-border-sm" role="status"></span>
|
|
52
|
+
}
|
|
53
|
+
@if (!loading()) {
|
|
54
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
55
|
+
}
|
|
56
|
+
{{ loading() ? loadingLabel() : label() }}
|
|
57
|
+
</button>
|
|
58
|
+
`, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"] }]
|
|
59
|
+
}], ctorParameters: () => [] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1wcmltYXJ5LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbnMvc2F2ZS1wcmltYXJ5LWJ1dHRvbi9zYXZlLXByaW1hcnktYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUE0QnJELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxtQkFBbUI7SUFNbEU7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQU5BLGlCQUFZLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLFVBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsU0FBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixZQUFPLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFJdkQsQ0FBQzs4R0FSVywwQkFBMEI7a0dBQTFCLDBCQUEwQiwwbUJBdEI1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVCwwckJBcEJTLFNBQVMsaUxBQUUsT0FBTywySUFBRSxPQUFPOzsyRkF1QnpCLDBCQUEwQjtrQkExQnRDLFNBQVM7K0JBQ0MscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLFlBQzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtYnV0dG9uL2Jhc2UtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3NhdmUtcHJpbWFyeS1idXR0b24nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbTWF0QnV0dG9uLCBNYXRJY29uLCBOZ1N0eWxlXSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8YnV0dG9uXG5cdFx0XHRtYXQtcmFpc2VkLWJ1dHRvblxuXHRcdFx0Y2xhc3M9XCJidG4ge3sgY2xhc3NlcygpIH19XCJcblx0XHRcdChjbGljayk9XCJvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXG5cdFx0XHQoZm9jdXMpPVwib25Gb2N1cy5lbWl0KCRldmVudClcIlxuXHRcdFx0KGJsdXIpPVwib25CbHVyLmVtaXQoJGV2ZW50KVwiXG5cdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSB8fCBsb2FkaW5nKClcIlxuXHRcdFx0W3R5cGVdPVwidHlwZSgpXCJcblx0XHRcdFtuZ1N0eWxlXT1cInN0eWxlKClcIlxuXHRcdFx0W2F0dHIuZGF0YS1jeV09XCInc2F2ZS1wcmltYXJ5LWJ1dHRvbidcIj5cblx0XHRcdEBpZiAobG9hZGluZygpKSB7XG5cdFx0XHRcdDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+PC9zcGFuPlxuXHRcdFx0fVxuXHRcdFx0QGlmICghbG9hZGluZygpKSB7XG5cdFx0XHRcdDxtYXQtaWNvbj57eyBpY29uKCkgfX08L21hdC1pY29uPlxuXHRcdFx0fVxuXHRcdFx0e3sgbG9hZGluZygpID8gbG9hZGluZ0xhYmVsKCkgOiBsYWJlbCgpIH19XG5cdFx0PC9idXR0b24+XG5cdGAsXG5cdHN0eWxlVXJsczogWycuLi8uLi8uLi8uLi9hc3NldHMvYXBwLWJ1dHRvbnMuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNhdmVQcmltYXJ5QnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUJ1dHRvbkNvbXBvbmVudCB7XG5cdG92ZXJyaWRlIGxvYWRpbmdMYWJlbCA9IGlucHV0KCdTYXZpbmcuLi4nKTtcblx0b3ZlcnJpZGUgbGFiZWwgPSBpbnB1dCgnU2F2ZScpO1xuXHRvdmVycmlkZSBpY29uID0gaW5wdXQoJ3NhdmUnKTtcblx0b3ZlcnJpZGUgY2xhc3NlcyA9IGlucHV0KCdidG4tcHJpbWFyeSBwcmltYXJ5LWJ1dHRvbicpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component, input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { BaseButtonComponent } from '../base-button/base-button.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/button";
|
|
8
|
+
import * as i2 from "@angular/material/icon";
|
|
9
|
+
export class SearchButtonComponent extends BaseButtonComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
this.loadingLabel = input('Searching...');
|
|
13
|
+
this.label = input('Search');
|
|
14
|
+
this.icon = input('search');
|
|
15
|
+
this.classes = input('btn-primary primary-button');
|
|
16
|
+
}
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SearchButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: SearchButtonComponent, isStandalone: true, selector: "search-button", inputs: { loadingLabel: { classPropertyName: "loadingLabel", publicName: "loadingLabel", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
19
|
+
<button
|
|
20
|
+
class="btn btn-primary primary-button {{ loading() || disabled() ? 'disabled' : '' }}"
|
|
21
|
+
mat-raised-button
|
|
22
|
+
type="{{ type() }}"
|
|
23
|
+
data-cy="primary-button">
|
|
24
|
+
@if (loading()) {
|
|
25
|
+
<span aria-hidden="true" class="spinner-border spinner-border-sm" role="status"></span>
|
|
26
|
+
}
|
|
27
|
+
@if (!loading()) {
|
|
28
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
29
|
+
}
|
|
30
|
+
{{ loading() ? loadingLabel() : label() }}
|
|
31
|
+
</button>
|
|
32
|
+
`, isInline: true, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SearchButtonComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'search-button', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], template: `
|
|
37
|
+
<button
|
|
38
|
+
class="btn btn-primary primary-button {{ loading() || disabled() ? 'disabled' : '' }}"
|
|
39
|
+
mat-raised-button
|
|
40
|
+
type="{{ type() }}"
|
|
41
|
+
data-cy="primary-button">
|
|
42
|
+
@if (loading()) {
|
|
43
|
+
<span aria-hidden="true" class="spinner-border spinner-border-sm" role="status"></span>
|
|
44
|
+
}
|
|
45
|
+
@if (!loading()) {
|
|
46
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
47
|
+
}
|
|
48
|
+
{{ loading() ? loadingLabel() : label() }}
|
|
49
|
+
</button>
|
|
50
|
+
`, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"] }]
|
|
51
|
+
}], ctorParameters: () => [] });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbnMvc2VhcmNoLWJ1dHRvbi9zZWFyY2gtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7OztBQXVCM0UsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG1CQUFtQjtJQU03RDtRQUNDLEtBQUssRUFBRSxDQUFDO1FBTkEsaUJBQVksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUl2RCxDQUFDOzhHQVJXLHFCQUFxQjtrR0FBckIscUJBQXFCLG9tQkFqQnZCOzs7Ozs7Ozs7Ozs7OztFQWNULHlyQkFmUyxZQUFZLDhCQUFFLGVBQWUsMk5BQUUsYUFBYTs7MkZBa0IxQyxxQkFBcUI7a0JBckJqQyxTQUFTOytCQUNDLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQyxZQUM3Qzs7Ozs7Ozs7Ozs7Ozs7RUFjVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQmFzZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtYnV0dG9uL2Jhc2UtYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3NlYXJjaC1idXR0b24nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxidXR0b25cblx0XHRcdGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHByaW1hcnktYnV0dG9uIHt7IGxvYWRpbmcoKSB8fCBkaXNhYmxlZCgpID8gJ2Rpc2FibGVkJyA6ICcnIH19XCJcblx0XHRcdG1hdC1yYWlzZWQtYnV0dG9uXG5cdFx0XHR0eXBlPVwie3sgdHlwZSgpIH19XCJcblx0XHRcdGRhdGEtY3k9XCJwcmltYXJ5LWJ1dHRvblwiPlxuXHRcdFx0QGlmIChsb2FkaW5nKCkpIHtcblx0XHRcdFx0PHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIj48L3NwYW4+XG5cdFx0XHR9XG5cdFx0XHRAaWYgKCFsb2FkaW5nKCkpIHtcblx0XHRcdFx0PG1hdC1pY29uPnt7IGljb24oKSB9fTwvbWF0LWljb24+XG5cdFx0XHR9XG5cdFx0XHR7eyBsb2FkaW5nKCkgPyBsb2FkaW5nTGFiZWwoKSA6IGxhYmVsKCkgfX1cblx0XHQ8L2J1dHRvbj5cblx0YCxcblx0c3R5bGVVcmxzOiBbJy4uLy4uLy4uLy4uL2Fzc2V0cy9hcHAtYnV0dG9ucy5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUJ1dHRvbkNvbXBvbmVudCB7XG5cdG92ZXJyaWRlIGxvYWRpbmdMYWJlbCA9IGlucHV0KCdTZWFyY2hpbmcuLi4nKTtcblx0b3ZlcnJpZGUgbGFiZWwgPSBpbnB1dCgnU2VhcmNoJyk7XG5cdG92ZXJyaWRlIGljb24gPSBpbnB1dCgnc2VhcmNoJyk7XG5cdG92ZXJyaWRlIGNsYXNzZXMgPSBpbnB1dCgnYnRuLXByaW1hcnkgcHJpbWFyeS1idXR0b24nKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Component, input } from '@angular/core';
|
|
2
|
+
import { BaseButtonComponent } from '../base-button/base-button.component';
|
|
3
|
+
import { NgStyle } from '@angular/common';
|
|
4
|
+
import { MatButton } from '@angular/material/button';
|
|
5
|
+
import { MatIcon } from '@angular/material/icon';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class SuccessButtonComponent extends BaseButtonComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.loadingLabel = input('Updating...');
|
|
11
|
+
this.label = input('Update');
|
|
12
|
+
this.icon = input('save');
|
|
13
|
+
this.classes = input('success-button');
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SuccessButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: SuccessButtonComponent, isStandalone: true, selector: "success-button", inputs: { loadingLabel: { classPropertyName: "loadingLabel", publicName: "loadingLabel", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
17
|
+
<button
|
|
18
|
+
mat-raised-button
|
|
19
|
+
class="btn {{ classes() }}"
|
|
20
|
+
(click)="onClick.emit($event)"
|
|
21
|
+
(focus)="onFocus.emit($event)"
|
|
22
|
+
(blur)="onBlur.emit($event)"
|
|
23
|
+
[disabled]="disabled() || loading()"
|
|
24
|
+
[type]="type()"
|
|
25
|
+
[ngStyle]="style()"
|
|
26
|
+
[attr.data-cy]="'success-button'">
|
|
27
|
+
@if (loading()) {
|
|
28
|
+
<span aria-hidden="true" class="spinner-border spinner-border-sm" role="status"></span>
|
|
29
|
+
}
|
|
30
|
+
@if (!loading()) {
|
|
31
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
32
|
+
}
|
|
33
|
+
{{ loading() ? loadingLabel() : label() }}
|
|
34
|
+
</button>
|
|
35
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: SuccessButtonComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{
|
|
40
|
+
selector: 'success-button',
|
|
41
|
+
standalone: true,
|
|
42
|
+
imports: [NgStyle, MatButton, MatIcon],
|
|
43
|
+
template: `
|
|
44
|
+
<button
|
|
45
|
+
mat-raised-button
|
|
46
|
+
class="btn {{ classes() }}"
|
|
47
|
+
(click)="onClick.emit($event)"
|
|
48
|
+
(focus)="onFocus.emit($event)"
|
|
49
|
+
(blur)="onBlur.emit($event)"
|
|
50
|
+
[disabled]="disabled() || loading()"
|
|
51
|
+
[type]="type()"
|
|
52
|
+
[ngStyle]="style()"
|
|
53
|
+
[attr.data-cy]="'success-button'">
|
|
54
|
+
@if (loading()) {
|
|
55
|
+
<span aria-hidden="true" class="spinner-border spinner-border-sm" role="status"></span>
|
|
56
|
+
}
|
|
57
|
+
@if (!loading()) {
|
|
58
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
59
|
+
}
|
|
60
|
+
{{ loading() ? loadingLabel() : label() }}
|
|
61
|
+
</button>
|
|
62
|
+
`,
|
|
63
|
+
}]
|
|
64
|
+
}], ctorParameters: () => [] });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VjY2Vzcy1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvY29tcG9uZW50cy9idXR0b25zL3N1Y2Nlc3MtYnV0dG9uL3N1Y2Nlc3MtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUEyQmpELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxtQkFBbUI7SUFNOUQ7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQU5BLGlCQUFZLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsU0FBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixZQUFPLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFJM0MsQ0FBQzs4R0FSVyxzQkFBc0I7a0dBQXRCLHNCQUFzQixxbUJBckJ4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVCw0REFwQlMsT0FBTywyRUFBRSxTQUFTLGlMQUFFLE9BQU87OzJGQXNCekIsc0JBQXNCO2tCQXpCbEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUM7b0JBQ3RDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVDtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWJ1dHRvbi9iYXNlLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzdWNjZXNzLWJ1dHRvbicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtOZ1N0eWxlLCBNYXRCdXR0b24sIE1hdEljb25dLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxidXR0b25cblx0XHRcdG1hdC1yYWlzZWQtYnV0dG9uXG5cdFx0XHRjbGFzcz1cImJ0biB7eyBjbGFzc2VzKCkgfX1cIlxuXHRcdFx0KGNsaWNrKT1cIm9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcblx0XHRcdChmb2N1cyk9XCJvbkZvY3VzLmVtaXQoJGV2ZW50KVwiXG5cdFx0XHQoYmx1cik9XCJvbkJsdXIuZW1pdCgkZXZlbnQpXCJcblx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGxvYWRpbmcoKVwiXG5cdFx0XHRbdHlwZV09XCJ0eXBlKClcIlxuXHRcdFx0W25nU3R5bGVdPVwic3R5bGUoKVwiXG5cdFx0XHRbYXR0ci5kYXRhLWN5XT1cIidzdWNjZXNzLWJ1dHRvbidcIj5cblx0XHRcdEBpZiAobG9hZGluZygpKSB7XG5cdFx0XHRcdDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+PC9zcGFuPlxuXHRcdFx0fVxuXHRcdFx0QGlmICghbG9hZGluZygpKSB7XG5cdFx0XHRcdDxtYXQtaWNvbj57eyBpY29uKCkgfX08L21hdC1pY29uPlxuXHRcdFx0fVxuXHRcdFx0e3sgbG9hZGluZygpID8gbG9hZGluZ0xhYmVsKCkgOiBsYWJlbCgpIH19XG5cdFx0PC9idXR0b24+XG5cdGAsXG59KVxuZXhwb3J0IGNsYXNzIFN1Y2Nlc3NCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBCYXNlQnV0dG9uQ29tcG9uZW50IHtcblx0b3ZlcnJpZGUgbG9hZGluZ0xhYmVsID0gaW5wdXQoJ1VwZGF0aW5nLi4uJyk7XG5cdG92ZXJyaWRlIGxhYmVsID0gaW5wdXQoJ1VwZGF0ZScpO1xuXHRvdmVycmlkZSBpY29uID0gaW5wdXQoJ3NhdmUnKTtcblx0b3ZlcnJpZGUgY2xhc3NlcyA9IGlucHV0KCdzdWNjZXNzLWJ1dHRvbicpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Component, input } from '@angular/core';
|
|
2
|
+
import { MatIcon } from '@angular/material/icon';
|
|
3
|
+
import { MatButton } from '@angular/material/button';
|
|
4
|
+
import { BaseButtonComponent } from '../base-button/base-button.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class ViewButtonComponent extends BaseButtonComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
this.label = input('View');
|
|
10
|
+
this.icon = input('visibility');
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ViewButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.0", type: ViewButtonComponent, isStandalone: true, selector: "view-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
14
|
+
<button
|
|
15
|
+
color="primary"
|
|
16
|
+
(click)="onClick.emit($event)"
|
|
17
|
+
(focus)="onFocus.emit($event)"
|
|
18
|
+
(blur)="onBlur.emit($event)"
|
|
19
|
+
[disabled]="disabled()"
|
|
20
|
+
mat-button>
|
|
21
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
22
|
+
{{ label() }}
|
|
23
|
+
</button>
|
|
24
|
+
`, isInline: true, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ViewButtonComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ selector: 'view-button', standalone: true, imports: [MatButton, MatIcon], template: `
|
|
29
|
+
<button
|
|
30
|
+
color="primary"
|
|
31
|
+
(click)="onClick.emit($event)"
|
|
32
|
+
(focus)="onFocus.emit($event)"
|
|
33
|
+
(blur)="onBlur.emit($event)"
|
|
34
|
+
[disabled]="disabled()"
|
|
35
|
+
mat-button>
|
|
36
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
37
|
+
{{ label() }}
|
|
38
|
+
</button>
|
|
39
|
+
`, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"] }]
|
|
40
|
+
}], ctorParameters: () => [] });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvY29tcG9uZW50cy9idXR0b25zL3ZpZXctYnV0dG9uL3ZpZXctYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQW9CM0UsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG1CQUFtQjtJQUkzRDtRQUNDLEtBQUssRUFBRSxDQUFDO1FBSkEsVUFBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixTQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBSXBDLENBQUM7OEdBTlcsbUJBQW1CO2tHQUFuQixtQkFBbUIsdVZBZHJCOzs7Ozs7Ozs7OztFQVdULDByQkFaUyxTQUFTLGlMQUFFLE9BQU87OzJGQWVoQixtQkFBbUI7a0JBbEIvQixTQUFTOytCQUNDLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFlBQ25COzs7Ozs7Ozs7OztFQVdUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IEJhc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWJ1dHRvbi9iYXNlLWJ1dHRvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICd2aWV3LWJ1dHRvbicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtNYXRCdXR0b24sIE1hdEljb25dLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxidXR0b25cblx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXG5cdFx0XHQoY2xpY2spPVwib25DbGljay5lbWl0KCRldmVudClcIlxuXHRcdFx0KGZvY3VzKT1cIm9uRm9jdXMuZW1pdCgkZXZlbnQpXCJcblx0XHRcdChibHVyKT1cIm9uQmx1ci5lbWl0KCRldmVudClcIlxuXHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuXHRcdFx0bWF0LWJ1dHRvbj5cblx0XHRcdDxtYXQtaWNvbj57eyBpY29uKCkgfX08L21hdC1pY29uPlxuXHRcdFx0e3sgbGFiZWwoKSB9fVxuXHRcdDwvYnV0dG9uPlxuXHRgLFxuXHRzdHlsZVVybHM6IFsnLi4vLi4vLi4vLi4vYXNzZXRzL2FwcC1idXR0b25zLmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3QnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQmFzZUJ1dHRvbkNvbXBvbmVudCB7XG5cdG92ZXJyaWRlIGxhYmVsID0gaW5wdXQoJ1ZpZXcnKTtcblx0b3ZlcnJpZGUgaWNvbiA9IGlucHV0KCd2aXNpYmlsaXR5Jyk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Component, input } from '@angular/core';
|
|
2
|
+
import { NgStyle } from '@angular/common';
|
|
3
|
+
import { MatButton } from '@angular/material/button';
|
|
4
|
+
import { MatIcon } from '@angular/material/icon';
|
|
5
|
+
import { BaseButtonComponent } from '../base-button/base-button.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ViewPrimaryButtonComponent extends BaseButtonComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.label = input('View');
|
|
11
|
+
this.icon = input('visibility');
|
|
12
|
+
this.classes = input('btn-primary primary-button');
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ViewPrimaryButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.0", type: ViewPrimaryButtonComponent, isStandalone: true, selector: "view-primary-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
16
|
+
<button
|
|
17
|
+
mat-raised-button
|
|
18
|
+
class="btn {{ classes() }}"
|
|
19
|
+
(click)="onClick.emit($event)"
|
|
20
|
+
(focus)="onFocus.emit($event)"
|
|
21
|
+
(blur)="onBlur.emit($event)"
|
|
22
|
+
[disabled]="disabled()"
|
|
23
|
+
[type]="type()"
|
|
24
|
+
[ngStyle]="style()"
|
|
25
|
+
[attr.data-cy]="'view-button'">
|
|
26
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
27
|
+
{{ label() }}
|
|
28
|
+
</button>
|
|
29
|
+
`, isInline: true, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ViewPrimaryButtonComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{ selector: 'view-primary-button', standalone: true, imports: [MatButton, MatIcon, NgStyle], template: `
|
|
34
|
+
<button
|
|
35
|
+
mat-raised-button
|
|
36
|
+
class="btn {{ classes() }}"
|
|
37
|
+
(click)="onClick.emit($event)"
|
|
38
|
+
(focus)="onFocus.emit($event)"
|
|
39
|
+
(blur)="onBlur.emit($event)"
|
|
40
|
+
[disabled]="disabled()"
|
|
41
|
+
[type]="type()"
|
|
42
|
+
[ngStyle]="style()"
|
|
43
|
+
[attr.data-cy]="'view-button'">
|
|
44
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
45
|
+
{{ label() }}
|
|
46
|
+
</button>
|
|
47
|
+
`, styles: [".primary-button,.primary-button:hover,.primary-button:active,.primary-button:visited{color:#fff!important;background-color:var(--primary-color)!important}.secondary-button,.secondary-button:hover,.secondary-button:active,.secondary-button:visited{color:#fff!important;background-color:var(--secondary-color)!important}.success-button,.success-button:hover,.success-button:active,.success-button:visited{color:#fff!important;background-color:var(--success-color)!important}.delete-button,.delete-button:hover,.delete-button:active,.success-button:visited{color:#fff!important;background-color:var(--delete-color)!important}\n"] }]
|
|
48
|
+
}], ctorParameters: () => [] });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1wcmltYXJ5LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbnMvdmlldy1wcmltYXJ5LWJ1dHRvbi92aWV3LXByaW1hcnktYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUF1QjNFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxtQkFBbUI7SUFLbEU7UUFDQyxLQUFLLEVBQUUsQ0FBQztRQUxBLFVBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsU0FBSSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFJdkQsQ0FBQzs4R0FQVywwQkFBMEI7a0dBQTFCLDBCQUEwQiw2ZEFqQjVCOzs7Ozs7Ozs7Ozs7OztFQWNULDByQkFmUyxTQUFTLGlMQUFFLE9BQU8sMklBQUUsT0FBTzs7MkZBa0J6QiwwQkFBMEI7a0JBckJ0QyxTQUFTOytCQUNDLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxZQUM1Qjs7Ozs7Ozs7Ozs7Ozs7RUFjVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEJhc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWJ1dHRvbi9iYXNlLWJ1dHRvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICd2aWV3LXByaW1hcnktYnV0dG9uJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW01hdEJ1dHRvbiwgTWF0SWNvbiwgTmdTdHlsZV0sXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGJ1dHRvblxuXHRcdFx0bWF0LXJhaXNlZC1idXR0b25cblx0XHRcdGNsYXNzPVwiYnRuIHt7IGNsYXNzZXMoKSB9fVwiXG5cdFx0XHQoY2xpY2spPVwib25DbGljay5lbWl0KCRldmVudClcIlxuXHRcdFx0KGZvY3VzKT1cIm9uRm9jdXMuZW1pdCgkZXZlbnQpXCJcblx0XHRcdChibHVyKT1cIm9uQmx1ci5lbWl0KCRldmVudClcIlxuXHRcdFx0W2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuXHRcdFx0W3R5cGVdPVwidHlwZSgpXCJcblx0XHRcdFtuZ1N0eWxlXT1cInN0eWxlKClcIlxuXHRcdFx0W2F0dHIuZGF0YS1jeV09XCIndmlldy1idXR0b24nXCI+XG5cdFx0XHQ8bWF0LWljb24+e3sgaWNvbigpIH19PC9tYXQtaWNvbj5cblx0XHRcdHt7IGxhYmVsKCkgfX1cblx0XHQ8L2J1dHRvbj5cblx0YCxcblx0c3R5bGVVcmxzOiBbJy4uLy4uLy4uLy4uL2Fzc2V0cy9hcHAtYnV0dG9ucy5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVmlld1ByaW1hcnlCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBCYXNlQnV0dG9uQ29tcG9uZW50IHtcblx0b3ZlcnJpZGUgbGFiZWwgPSBpbnB1dCgnVmlldycpO1xuXHRvdmVycmlkZSBpY29uID0gaW5wdXQoJ3Zpc2liaWxpdHknKTtcblx0b3ZlcnJpZGUgY2xhc3NlcyA9IGlucHV0KCdidG4tcHJpbWFyeSBwcmltYXJ5LWJ1dHRvbicpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/dialog";
|
|
7
|
+
import * as i2 from "@angular/material/button";
|
|
8
|
+
import * as i3 from "@angular/material/divider";
|
|
9
|
+
export class ConfirmDialogComponent {
|
|
10
|
+
constructor(data, dialogRef) {
|
|
11
|
+
this.data = data;
|
|
12
|
+
this.dialogRef = dialogRef;
|
|
13
|
+
// Update view with given values
|
|
14
|
+
this.title = data.title;
|
|
15
|
+
this.message = data.message;
|
|
16
|
+
}
|
|
17
|
+
onDismiss() {
|
|
18
|
+
// Close the dialog, return true
|
|
19
|
+
this.dialogRef.close(false);
|
|
20
|
+
}
|
|
21
|
+
onConfirm() {
|
|
22
|
+
// Close the dialog, return true
|
|
23
|
+
this.dialogRef.close(true);
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: ConfirmDialogComponent, isStandalone: true, selector: "app-confirm-dialog", ngImport: i0, template: `
|
|
27
|
+
<div class="mat-dialog-title" style="text-align: center">
|
|
28
|
+
<h3 class="m-3 mat-headline-5 ">{{ title }}</h3>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<mat-divider></mat-divider>
|
|
32
|
+
<div mat-dialog-content style="margin: 20px">
|
|
33
|
+
<p>{{ message }}</p>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div align="end" class="modal-footer" mat-dialog-actions>
|
|
37
|
+
<button (click)="onDismiss()" mat-raised-button>No</button>
|
|
38
|
+
<button (click)="onConfirm()" class="primary-button" mat-raised-button>Yes</button>
|
|
39
|
+
</div>
|
|
40
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{ selector: 'app-confirm-dialog', standalone: true, imports: [MatButtonModule, MatDividerModule, MatDialogModule], template: `
|
|
45
|
+
<div class="mat-dialog-title" style="text-align: center">
|
|
46
|
+
<h3 class="m-3 mat-headline-5 ">{{ title }}</h3>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<mat-divider></mat-divider>
|
|
50
|
+
<div mat-dialog-content style="margin: 20px">
|
|
51
|
+
<p>{{ message }}</p>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div align="end" class="modal-footer" mat-dialog-actions>
|
|
55
|
+
<button (click)="onDismiss()" mat-raised-button>No</button>
|
|
56
|
+
<button (click)="onConfirm()" class="primary-button" mat-raised-button>Yes</button>
|
|
57
|
+
</div>
|
|
58
|
+
` }]
|
|
59
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
60
|
+
type: Inject,
|
|
61
|
+
args: [MAT_DIALOG_DATA]
|
|
62
|
+
}] }, { type: i1.MatDialogRef }] });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQXVCN0QsTUFBTSxPQUFPLHNCQUFzQjtJQUlsQyxZQUNpQyxJQUF1QixFQUNoRCxTQUErQztRQUR0QixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUNoRCxjQUFTLEdBQVQsU0FBUyxDQUFzQztRQUV0RCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUztRQUNSLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUztRQUNSLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQXJCVyxzQkFBc0Isa0JBS3pCLGVBQWU7a0dBTFosc0JBQXNCLDhFQWpCeEI7Ozs7Ozs7Ozs7Ozs7O0VBY1QsMkRBZlMsZUFBZSwyTkFBRSxnQkFBZ0Isa0lBQUUsZUFBZTs7MkZBa0JoRCxzQkFBc0I7a0JBckJsQyxTQUFTOytCQUNDLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLFlBQ25EOzs7Ozs7Ozs7Ozs7OztFQWNUOzswQkFRQyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdhcHAtY29uZmlybS1kaWFsb2cnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbTWF0QnV0dG9uTW9kdWxlLCBNYXREaXZpZGVyTW9kdWxlLCBNYXREaWFsb2dNb2R1bGVdLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxkaXYgY2xhc3M9XCJtYXQtZGlhbG9nLXRpdGxlXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj5cblx0XHRcdDxoMyBjbGFzcz1cIm0tMyBtYXQtaGVhZGxpbmUtNVx0XCI+e3sgdGl0bGUgfX08L2gzPlxuXHRcdDwvZGl2PlxuXG5cdFx0PG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cdFx0PGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgc3R5bGU9XCJtYXJnaW46IDIwcHhcIj5cblx0XHRcdDxwPnt7IG1lc3NhZ2UgfX08L3A+XG5cdFx0PC9kaXY+XG5cblx0XHQ8ZGl2IGFsaWduPVwiZW5kXCIgY2xhc3M9XCJtb2RhbC1mb290ZXJcIiBtYXQtZGlhbG9nLWFjdGlvbnM+XG5cdFx0XHQ8YnV0dG9uIChjbGljayk9XCJvbkRpc21pc3MoKVwiIG1hdC1yYWlzZWQtYnV0dG9uPk5vPC9idXR0b24+XG5cdFx0XHQ8YnV0dG9uIChjbGljayk9XCJvbkNvbmZpcm0oKVwiIGNsYXNzPVwicHJpbWFyeS1idXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbj5ZZXM8L2J1dHRvbj5cblx0XHQ8L2Rpdj5cblx0YCxcblx0c3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB7XG5cdHRpdGxlOiBzdHJpbmc7XG5cdG1lc3NhZ2U6IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IENvbmZpcm1EaWFsb2dEYXRhLFxuXHRcdHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDb25maXJtRGlhbG9nQ29tcG9uZW50Pixcblx0KSB7XG5cdFx0Ly8gVXBkYXRlIHZpZXcgd2l0aCBnaXZlbiB2YWx1ZXNcblx0XHR0aGlzLnRpdGxlID0gZGF0YS50aXRsZTtcblx0XHR0aGlzLm1lc3NhZ2UgPSBkYXRhLm1lc3NhZ2U7XG5cdH1cblxuXHRvbkRpc21pc3MoKSB7XG5cdFx0Ly8gQ2xvc2UgdGhlIGRpYWxvZywgcmV0dXJuIHRydWVcblx0XHR0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG5cdH1cblxuXHRvbkNvbmZpcm0oKSB7XG5cdFx0Ly8gQ2xvc2UgdGhlIGRpYWxvZywgcmV0dXJuIHRydWVcblx0XHR0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcblx0fVxufVxuXG4vKipcbiAqIENsYXNzIHRvIHJlcHJlc2VudCBjb25maXJtIGRpYWxvZyBtb2RlbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maXJtRGlhbG9nRGF0YSB7XG5cdHRpdGxlOiBzdHJpbmc7XG5cdG1lc3NhZ2U6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { Component, HostListener, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { DEFAULTS, LOADERS, NgxSpinner, PRIMARY_SPINNER } from './ngx-spinner.enum';
|
|
5
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
6
|
+
import { SafeHtmlPipe } from './safe-html.pipe';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./ngx-spinner.service";
|
|
9
|
+
export class NgxSpinnerComponent {
|
|
10
|
+
/**
|
|
11
|
+
* Creates an instance of NgxSpinnerComponent.
|
|
12
|
+
*/
|
|
13
|
+
constructor(spinnerService, changeDetector) {
|
|
14
|
+
this.spinnerService = spinnerService;
|
|
15
|
+
this.changeDetector = changeDetector;
|
|
16
|
+
/**
|
|
17
|
+
* To enable/disable animation
|
|
18
|
+
*/
|
|
19
|
+
this.disableAnimation = false;
|
|
20
|
+
/**
|
|
21
|
+
* Spinner Object
|
|
22
|
+
*/
|
|
23
|
+
this.spinner = new NgxSpinner();
|
|
24
|
+
/**
|
|
25
|
+
* Unsubscribe from spinner's observable
|
|
26
|
+
**/
|
|
27
|
+
this.ngUnsubscribe = new Subject();
|
|
28
|
+
/**
|
|
29
|
+
* To set default ngx-spinner options
|
|
30
|
+
*/
|
|
31
|
+
this.setDefaultOptions = () => {
|
|
32
|
+
this.spinner = new NgxSpinner({
|
|
33
|
+
name: this.name,
|
|
34
|
+
bdColor: this.bdColor,
|
|
35
|
+
size: this.size,
|
|
36
|
+
color: this.color,
|
|
37
|
+
type: this.type,
|
|
38
|
+
fullScreen: this.fullScreen,
|
|
39
|
+
divArray: this.divArray,
|
|
40
|
+
divCount: this.divCount,
|
|
41
|
+
show: this.show,
|
|
42
|
+
zIndex: this.zIndex,
|
|
43
|
+
template: this.template,
|
|
44
|
+
showSpinner: this.showSpinner,
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
this.bdColor = DEFAULTS.BD_COLOR;
|
|
48
|
+
this.zIndex = DEFAULTS.Z_INDEX;
|
|
49
|
+
this.color = DEFAULTS.SPINNER_COLOR;
|
|
50
|
+
this.type = DEFAULTS.SPINNER_TYPE;
|
|
51
|
+
this.size = 'large';
|
|
52
|
+
this.fullScreen = true;
|
|
53
|
+
this.name = PRIMARY_SPINNER;
|
|
54
|
+
// @ts-ignore
|
|
55
|
+
this.template = null;
|
|
56
|
+
this.showSpinner = false;
|
|
57
|
+
this.divArray = [];
|
|
58
|
+
this.divCount = 0;
|
|
59
|
+
this.show = false;
|
|
60
|
+
}
|
|
61
|
+
handleKeyboardEvent(event) {
|
|
62
|
+
if (this.spinnerDOM && this.spinnerDOM.nativeElement) {
|
|
63
|
+
event.returnValue = false;
|
|
64
|
+
event.preventDefault();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Initialization method
|
|
69
|
+
|
|
70
|
+
*/
|
|
71
|
+
ngOnInit() {
|
|
72
|
+
this.setDefaultOptions();
|
|
73
|
+
this.spinnerService
|
|
74
|
+
.getSpinner(this.name)
|
|
75
|
+
.pipe(takeUntil(this.ngUnsubscribe))
|
|
76
|
+
.subscribe((spinner) => {
|
|
77
|
+
this.setDefaultOptions();
|
|
78
|
+
Object.assign(this.spinner, spinner);
|
|
79
|
+
if (spinner.show) {
|
|
80
|
+
this.onInputChange();
|
|
81
|
+
}
|
|
82
|
+
this.changeDetector.detectChanges();
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* On changes event for input variables
|
|
87
|
+
*/
|
|
88
|
+
ngOnChanges(changes) {
|
|
89
|
+
for (const propName in changes) {
|
|
90
|
+
if (propName) {
|
|
91
|
+
const changedProp = changes[propName];
|
|
92
|
+
if (changedProp.isFirstChange()) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
else if (typeof changedProp.currentValue !== 'undefined' && changedProp.currentValue !== changedProp.previousValue) {
|
|
96
|
+
if (changedProp.currentValue !== '') {
|
|
97
|
+
// @ts-ignore
|
|
98
|
+
this.spinner[propName] = changedProp.currentValue;
|
|
99
|
+
if (propName === 'showSpinner') {
|
|
100
|
+
if (changedProp.currentValue) {
|
|
101
|
+
this.spinnerService.show(this.spinner.name, this.spinner);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this.spinnerService.hide(this.spinner.name);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* To get class for spinner
|
|
114
|
+
*/
|
|
115
|
+
getClass(type, size) {
|
|
116
|
+
// @ts-ignore
|
|
117
|
+
this.spinner.divCount = LOADERS[type];
|
|
118
|
+
this.spinner.divArray = Array(this.spinner.divCount)
|
|
119
|
+
.fill(0)
|
|
120
|
+
.map((x, i) => i);
|
|
121
|
+
let sizeClass = '';
|
|
122
|
+
switch (size.toLowerCase()) {
|
|
123
|
+
case 'small':
|
|
124
|
+
sizeClass = 'la-sm';
|
|
125
|
+
break;
|
|
126
|
+
case 'medium':
|
|
127
|
+
sizeClass = 'la-2x';
|
|
128
|
+
break;
|
|
129
|
+
case 'large':
|
|
130
|
+
sizeClass = 'la-3x';
|
|
131
|
+
break;
|
|
132
|
+
default:
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
return 'la-' + type + ' ' + sizeClass;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check if input variables have changed
|
|
139
|
+
*/
|
|
140
|
+
onInputChange() {
|
|
141
|
+
this.spinner.class = this.getClass(this.spinner.type ?? DEFAULTS.SPINNER_TYPE, this.spinner.size ?? 'default');
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Component destroy event
|
|
145
|
+
*/
|
|
146
|
+
ngOnDestroy() {
|
|
147
|
+
this.ngUnsubscribe.next();
|
|
148
|
+
this.ngUnsubscribe.complete();
|
|
149
|
+
}
|
|
150
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxSpinnerComponent, deps: [{ token: i1.NgxSpinnerService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
151
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: NgxSpinnerComponent, isStandalone: true, selector: "ngx-spinner", inputs: { bdColor: "bdColor", size: "size", color: "color", type: "type", fullScreen: "fullScreen", name: "name", zIndex: "zIndex", template: "template", showSpinner: "showSpinner", disableAnimation: "disableAnimation" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "spinnerDOM", first: true, predicate: ["overlay"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (spinner.show) {\n\t<div\n\t\t#overlay\n\t\t[@.disabled]=\"disableAnimation\"\n\t\t[@fadeIn]=\"'in'\"\n\t\t[style.background-color]=\"spinner.bdColor\"\n\t\t[style.position]=\"spinner.fullScreen ? 'fixed' : 'absolute'\"\n\t\t[style.z-index]=\"spinner.zIndex\"\n\t\tclass=\"ngx-spinner-overlay\">\n\t\t@if (spinner.show) {\n\t\t\t<div [class]=\"spinner.class\" [style.color]=\"spinner.color\">\n\t\t\t\t@for (index of spinner.divArray; track index) {\n\t\t\t\t\t<div></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t\t@if (template) {\n\t\t\t<div [innerHTML]=\"template | safeHtml\"></div>\n\t\t}\n\t\t<div [style.z-index]=\"spinner.zIndex\" class=\"loading-text\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t</div>\n}\n", styles: [".la-ball-clip-rotate,.la-ball-clip-rotate>div{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.la-ball-clip-rotate{display:block;font-size:0;color:#fff}.la-ball-clip-rotate.la-dark{color:#333}.la-ball-clip-rotate>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-ball-clip-rotate{width:32px;height:32px}.la-ball-clip-rotate>div{width:32px;height:32px;background:transparent;border-width:2px;border-bottom-color:transparent;border-radius:100%;-webkit-animation:ball-clip-rotate .75s linear infinite;-moz-animation:ball-clip-rotate .75s linear infinite;-o-animation:ball-clip-rotate .75s linear infinite;animation:ball-clip-rotate .75s linear infinite}.la-ball-clip-rotate.la-sm{width:16px;height:16px}.la-ball-clip-rotate.la-sm>div{width:16px;height:16px;border-width:1px}.la-ball-clip-rotate.la-2x{width:64px;height:64px}.la-ball-clip-rotate.la-2x>div{width:64px;height:64px;border-width:4px}.la-ball-clip-rotate.la-3x{width:96px;height:96px}.la-ball-clip-rotate.la-3x>div{width:96px;height:96px;border-width:6px}@-webkit-keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes ball-clip-rotate{0%{-moz-transform:rotate(0deg);transform:rotate(0)}50%{-moz-transform:rotate(180deg);transform:rotate(180deg)}to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes ball-clip-rotate{0%{-o-transform:rotate(0deg);transform:rotate(0)}50%{-o-transform:rotate(180deg);transform:rotate(180deg)}to{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.ngx-spinner-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ngx-spinner-overlay>div:not(.loading-text){top:50%;left:50%;margin:0;position:absolute;transform:translate(-50%,-50%)}.loading-text{position:absolute;top:60%;left:50%;transform:translate(-50%,-60%)}\n/*!\n * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)\n * Copyright 2015 Daniel Cardoso <@DanielCardoso>\n * Licensed under MIT\n */\n"], dependencies: [{ kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], animations: [
|
|
152
|
+
trigger('fadeIn', [
|
|
153
|
+
state('in', style({ opacity: 1 })),
|
|
154
|
+
transition(':enter', [style({ opacity: 0 }), animate(300)]),
|
|
155
|
+
transition(':leave', animate(200, style({ opacity: 0 }))),
|
|
156
|
+
]),
|
|
157
|
+
] }); }
|
|
158
|
+
}
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxSpinnerComponent, decorators: [{
|
|
160
|
+
type: Component,
|
|
161
|
+
args: [{ selector: 'ngx-spinner', standalone: true, imports: [SafeHtmlPipe], animations: [
|
|
162
|
+
trigger('fadeIn', [
|
|
163
|
+
state('in', style({ opacity: 1 })),
|
|
164
|
+
transition(':enter', [style({ opacity: 0 }), animate(300)]),
|
|
165
|
+
transition(':leave', animate(200, style({ opacity: 0 }))),
|
|
166
|
+
]),
|
|
167
|
+
], template: "@if (spinner.show) {\n\t<div\n\t\t#overlay\n\t\t[@.disabled]=\"disableAnimation\"\n\t\t[@fadeIn]=\"'in'\"\n\t\t[style.background-color]=\"spinner.bdColor\"\n\t\t[style.position]=\"spinner.fullScreen ? 'fixed' : 'absolute'\"\n\t\t[style.z-index]=\"spinner.zIndex\"\n\t\tclass=\"ngx-spinner-overlay\">\n\t\t@if (spinner.show) {\n\t\t\t<div [class]=\"spinner.class\" [style.color]=\"spinner.color\">\n\t\t\t\t@for (index of spinner.divArray; track index) {\n\t\t\t\t\t<div></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t\t@if (template) {\n\t\t\t<div [innerHTML]=\"template | safeHtml\"></div>\n\t\t}\n\t\t<div [style.z-index]=\"spinner.zIndex\" class=\"loading-text\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t</div>\n}\n", styles: [".la-ball-clip-rotate,.la-ball-clip-rotate>div{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.la-ball-clip-rotate{display:block;font-size:0;color:#fff}.la-ball-clip-rotate.la-dark{color:#333}.la-ball-clip-rotate>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-ball-clip-rotate{width:32px;height:32px}.la-ball-clip-rotate>div{width:32px;height:32px;background:transparent;border-width:2px;border-bottom-color:transparent;border-radius:100%;-webkit-animation:ball-clip-rotate .75s linear infinite;-moz-animation:ball-clip-rotate .75s linear infinite;-o-animation:ball-clip-rotate .75s linear infinite;animation:ball-clip-rotate .75s linear infinite}.la-ball-clip-rotate.la-sm{width:16px;height:16px}.la-ball-clip-rotate.la-sm>div{width:16px;height:16px;border-width:1px}.la-ball-clip-rotate.la-2x{width:64px;height:64px}.la-ball-clip-rotate.la-2x>div{width:64px;height:64px;border-width:4px}.la-ball-clip-rotate.la-3x{width:96px;height:96px}.la-ball-clip-rotate.la-3x>div{width:96px;height:96px;border-width:6px}@-webkit-keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes ball-clip-rotate{0%{-moz-transform:rotate(0deg);transform:rotate(0)}50%{-moz-transform:rotate(180deg);transform:rotate(180deg)}to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes ball-clip-rotate{0%{-o-transform:rotate(0deg);transform:rotate(0)}50%{-o-transform:rotate(180deg);transform:rotate(180deg)}to{-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ball-clip-rotate{0%{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0)}50%{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.ngx-spinner-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ngx-spinner-overlay>div:not(.loading-text){top:50%;left:50%;margin:0;position:absolute;transform:translate(-50%,-50%)}.loading-text{position:absolute;top:60%;left:50%;transform:translate(-50%,-60%)}\n/*!\n * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)\n * Copyright 2015 Daniel Cardoso <@DanielCardoso>\n * Licensed under MIT\n */\n"] }]
|
|
168
|
+
}], ctorParameters: () => [{ type: i1.NgxSpinnerService }, { type: i0.ChangeDetectorRef }], propDecorators: { bdColor: [{
|
|
169
|
+
type: Input
|
|
170
|
+
}], size: [{
|
|
171
|
+
type: Input
|
|
172
|
+
}], color: [{
|
|
173
|
+
type: Input
|
|
174
|
+
}], type: [{
|
|
175
|
+
type: Input
|
|
176
|
+
}], fullScreen: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], name: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], zIndex: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}], template: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], showSpinner: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], disableAnimation: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], spinnerDOM: [{
|
|
189
|
+
type: ViewChild,
|
|
190
|
+
args: ['overlay']
|
|
191
|
+
}], handleKeyboardEvent: [{
|
|
192
|
+
type: HostListener,
|
|
193
|
+
args: ['document:keydown', ['$event']]
|
|
194
|
+
}] } });
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNwaW5uZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2l0L3NyYy9saWIvY29tcG9uZW50cy9uZ3gtc3Bpbm5lci9uZ3gtc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raXQvc3JjL2xpYi9jb21wb25lbnRzL25neC1zcGlubmVyL25neC1zcGlubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQThDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6SSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQWdCaEQsTUFBTSxPQUFPLG1CQUFtQjtJQThFL0I7O09BRUc7SUFDSCxZQUNTLGNBQWlDLEVBQ2pDLGNBQWlDO1FBRGpDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFyQzFDOztXQUVHO1FBQ00scUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2xDOztXQUVHO1FBRUgsWUFBTyxHQUFlLElBQUksVUFBVSxFQUFFLENBQUM7UUFjdkM7O1lBRUk7UUFDSixrQkFBYSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FB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LENBQUMsQ0FBQyxDQUFDO2FBQ3pELENBQUM7U0FDRjs7MkZBRVcsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNDLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsY0FHWDt3QkFDWCxPQUFPLENBQUMsUUFBUSxFQUFFOzRCQUNqQixLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNsQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQzNELFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3lCQUN6RCxDQUFDO3FCQUNGO3NIQU9RLE9BQU87c0JBQWYsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkEyQmdCLFVBQVU7c0JBQS9CLFNBQVM7dUJBQUMsU0FBUztnQkF5QnBCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hTcGlubmVyU2VydmljZSB9IGZyb20gJy4vbmd4LXNwaW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBERUZBVUxUUywgTE9BREVSUywgTmd4U3Bpbm5lciwgUFJJTUFSWV9TUElOTkVSLCBTaXplIH0gZnJvbSAnLi9uZ3gtc3Bpbm5lci5lbnVtJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU2FmZUh0bWxQaXBlIH0gZnJvbSAnLi9zYWZlLWh0bWwucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25neC1zcGlubmVyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW1NhZmVIdG1sUGlwZV0sXG5cdHRlbXBsYXRlVXJsOiAnbmd4LXNwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnbmd4LXNwaW5uZXIuY29tcG9uZW50LmNzcyddLFxuXHRhbmltYXRpb25zOiBbXG5cdFx0dHJpZ2dlcignZmFkZUluJywgW1xuXHRcdFx0c3RhdGUoJ2luJywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKSxcblx0XHRcdHRyYW5zaXRpb24oJzplbnRlcicsIFtzdHlsZSh7IG9wYWNpdHk6IDAgfSksIGFuaW1hdGUoMzAwKV0pLFxuXHRcdFx0dHJhbnNpdGlvbignOmxlYXZlJywgYW5pbWF0ZSgyMDAsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSkpLFxuXHRcdF0pLFxuXHRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hTcGlubmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cdC8qKlxuXHQgKiBUbyBzZXQgYmFja2Ryb3AgY29sb3Jcblx0ICogT25seSBzdXBwb3J0cyBSR0JBIGNvbG9yIGZvcm1hdFxuXHQgKi9cblx0QElucHV0KCkgYmRDb2xvcjogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUbyBzZXQgc3Bpbm5lciBzaXplXG5cdCAqL1xuXHRASW5wdXQoKSBzaXplOiBTaXplO1xuXG5cdC8qKlxuXHQgKiBUbyBzZXQgc3Bpbm5lciBjb2xvcihERUZBVUxUUy5TUElOTkVSX0NPTE9SKVxuXHQgKi9cblx0QElucHV0KCkgY29sb3I6IHN0cmluZztcblxuXHQvKipcblx0ICogVG8gc2V0IHR5cGUgb2Ygc3Bpbm5lclxuXHQgKi9cblx0QElucHV0KCkgdHlwZTogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUbyB0b2dnbGUgZnVsbHNjcmVlbiBtb2RlXG5cdCAqL1xuXHRASW5wdXQoKSBmdWxsU2NyZWVuOiBib29sZWFuO1xuXHQvKipcblx0ICogU3Bpbm5lciBuYW1lXG5cdCAqL1xuXHRASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiB6LWluZGV4IHZhbHVlXG5cdCAqL1xuXG5cdEBJbnB1dCgpIHpJbmRleDogbnVtYmVyO1xuXHQvKipcblx0ICogQ3VzdG9tIHRlbXBsYXRlIGZvciBzcGlubmVyL2xvYWRlclxuXHQgKi9cblxuXHRASW5wdXQoKSB0ZW1wbGF0ZTogc3RyaW5nO1xuXHQvKipcblx0ICogU2hvdy9IaWRlIHRoZSBzcGlubmVyXG5cdCAqIEB0eXBlIHtib29sZWFufVxuXHQgKi9cblx0QElucHV0KCkgc2hvd1NwaW5uZXI6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFRvIGVuYWJsZS9kaXNhYmxlIGFuaW1hdGlvblxuXHQgKi9cblx0QElucHV0KCkgZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlO1xuXHQvKipcblx0ICogU3Bpbm5lciBPYmplY3Rcblx0ICovXG5cblx0c3Bpbm5lcjogTmd4U3Bpbm5lciA9IG5ldyBOZ3hTcGlubmVyKCk7XG5cdC8qKlxuXHQgKiBBcnJheSBmb3Igc3Bpbm5lcidzIGRpdlxuXHQgKi9cblx0ZGl2QXJyYXk6IEFycmF5PG51bWJlcj47XG5cdC8qKlxuXHQgKiBDb3VudGVyIGZvciBkaXZcblx0ICovXG5cdGRpdkNvdW50OiBudW1iZXI7XG5cdC8qKlxuXHQgKiBTaG93IHNwaW5uZXJcblx0ICoqL1xuXHRzaG93OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBVbnN1YnNjcmliZSBmcm9tIHNwaW5uZXIncyBvYnNlcnZhYmxlXG5cdCAqKi9cblx0bmdVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cdC8qKlxuXHQgKiBFbGVtZW50IFJlZmVyZW5jZVxuXHQgKi9cblx0Ly8gQHRzLWlnbm9yZVxuXHRAVmlld0NoaWxkKCdvdmVybGF5Jykgc3Bpbm5lckRPTTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBOZ3hTcGlubmVyQ29tcG9uZW50LlxuXHQgKi9cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmd4U3Bpbm5lclNlcnZpY2UsXG5cdFx0cHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG5cdCkge1xuXHRcdHRoaXMuYmRDb2xvciA9IERFRkFVTFRTLkJEX0NPTE9SO1xuXHRcdHRoaXMuekluZGV4ID0gREVGQVVMVFMuWl9JTkRFWDtcblx0XHR0aGlzLmNvbG9yID0gREVGQVVMVFMuU1BJTk5FUl9DT0xPUjtcblx0XHR0aGlzLnR5cGUgPSBERUZBVUxUUy5TUElOTkVSX1RZUEU7XG5cdFx0dGhpcy5zaXplID0gJ2xhcmdlJztcblx0XHR0aGlzLmZ1bGxTY3JlZW4gPSB0cnVlO1xuXHRcdHRoaXMubmFtZSA9IFBSSU1BUllfU1BJTk5FUjtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0dGhpcy50ZW1wbGF0ZSA9IG51bGw7XG5cdFx0dGhpcy5zaG93U3Bpbm5lciA9IGZhbHNlO1xuXHRcdHRoaXMuZGl2QXJyYXkgPSBbXTtcblx0XHR0aGlzLmRpdkNvdW50ID0gMDtcblx0XHR0aGlzLnNob3cgPSBmYWxzZTtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuXHRoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0aWYgKHRoaXMuc3Bpbm5lckRPTSAmJiB0aGlzLnNwaW5uZXJET00ubmF0aXZlRWxlbWVudCkge1xuXHRcdFx0ZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG4gICAqIEluaXRpYWxpemF0aW9uIG1ldGhvZFxuXG4gICAqL1xuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLnNldERlZmF1bHRPcHRpb25zKCk7XG5cdFx0dGhpcy5zcGlubmVyU2VydmljZVxuXHRcdFx0LmdldFNwaW5uZXIodGhpcy5uYW1lKVxuXHRcdFx0LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG5cdFx0XHQuc3Vic2NyaWJlKChzcGlubmVyOiBOZ3hTcGlubmVyKSA9PiB7XG5cdFx0XHRcdHRoaXMuc2V0RGVmYXVsdE9wdGlvbnMoKTtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbih0aGlzLnNwaW5uZXIsIHNwaW5uZXIpO1xuXHRcdFx0XHRpZiAoc3Bpbm5lci5zaG93KSB7XG5cdFx0XHRcdFx0dGhpcy5vbklucHV0Q2hhbmdlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUbyBzZXQgZGVmYXVsdCBuZ3gtc3Bpbm5lciBvcHRpb25zXG5cdCAqL1xuXHRzZXREZWZhdWx0T3B0aW9ucyA9ICgpID0+IHtcblx0XHR0aGlzLnNwaW5uZXIgPSBuZXcgTmd4U3Bpbm5lcih7XG5cdFx0XHRuYW1lOiB0aGlzLm5hbWUsXG5cdFx0XHRiZENvbG9yOiB0aGlzLmJkQ29sb3IsXG5cdFx0XHRzaXplOiB0aGlzLnNpemUsXG5cdFx0XHRjb2xvcjogdGhpcy5jb2xvcixcblx0XHRcdHR5cGU6IHRoaXMudHlwZSxcblx0XHRcdGZ1bGxTY3JlZW46IHRoaXMuZnVsbFNjcmVlbixcblx0XHRcdGRpdkFycmF5OiB0aGlzLmRpdkFycmF5LFxuXHRcdFx0ZGl2Q291bnQ6IHRoaXMuZGl2Q291bnQsXG5cdFx0XHRzaG93OiB0aGlzLnNob3csXG5cdFx0XHR6SW5kZXg6IHRoaXMuekluZGV4LFxuXHRcdFx0dGVtcGxhdGU6IHRoaXMudGVtcGxhdGUsXG5cdFx0XHRzaG93U3Bpbm5lcjogdGhpcy5zaG93U3Bpbm5lcixcblx0XHR9KTtcblx0fTtcblxuXHQvKipcblx0ICogT24gY2hhbmdlcyBldmVudCBmb3IgaW5wdXQgdmFyaWFibGVzXG5cdCAqL1xuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiB7IFtwcm9wS2V5OiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xuXHRcdGZvciAoY29uc3QgcHJvcE5hbWUgaW4gY2hhbmdlcykge1xuXHRcdFx0aWYgKHByb3BOYW1lKSB7XG5cdFx0XHRcdGNvbnN0IGNoYW5nZWRQcm9wID0gY2hhbmdlc1twcm9wTmFtZV07XG5cdFx0XHRcdGlmIChjaGFuZ2VkUHJvcC5pc0ZpcnN0Q2hhbmdlKCkpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNoYW5nZWRQcm9wLmN1cnJlbnRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY2hhbmdlZFByb3AuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VkUHJvcC5wcmV2aW91c1ZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKGNoYW5nZWRQcm9wLmN1cnJlbnRWYWx1ZSAhPT0gJycpIHtcblx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0XHRcdHRoaXMuc3Bpbm5lcltwcm9wTmFtZV0gPSBjaGFuZ2VkUHJvcC5jdXJyZW50VmFsdWU7XG5cdFx0XHRcdFx0XHRpZiAocHJvcE5hbWUgPT09ICdzaG93U3Bpbm5lcicpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGNoYW5nZWRQcm9wLmN1cnJlbnRWYWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdyh0aGlzLnNwaW5uZXIubmFtZSwgdGhpcy5zcGlubmVyKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUodGhpcy5zcGlubmVyLm5hbWUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRvIGdldCBjbGFzcyBmb3Igc3Bpbm5lclxuXHQgKi9cblx0Z2V0Q2xhc3ModHlwZTogc3RyaW5nLCBzaXplOiBTaXplKTogc3RyaW5nIHtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0dGhpcy5zcGlubmVyLmRpdkNvdW50ID0gTE9BREVSU1t0eXBlXTtcblx0XHR0aGlzLnNwaW5uZXIuZGl2QXJyYXkgPSBBcnJheSh0aGlzLnNwaW5uZXIuZGl2Q291bnQpXG5cdFx0XHQuZmlsbCgwKVxuXHRcdFx0Lm1hcCgoeCwgaSkgPT4gaSk7XG5cdFx0bGV0IHNpemVDbGFzcyA9ICcnO1xuXHRcdHN3aXRjaCAoc2l6ZS50b0xvd2VyQ2FzZSgpKSB7XG5cdFx0XHRjYXNlICdzbWFsbCc6XG5cdFx0XHRcdHNpemVDbGFzcyA9ICdsYS1zbSc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbWVkaXVtJzpcblx0XHRcdFx0c2l6ZUNsYXNzID0gJ2xhLTJ4Jztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdsYXJnZSc6XG5cdFx0XHRcdHNpemVDbGFzcyA9ICdsYS0zeCc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiAnbGEtJyArIHR5cGUgKyAnICcgKyBzaXplQ2xhc3M7XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2sgaWYgaW5wdXQgdmFyaWFibGVzIGhhdmUgY2hhbmdlZFxuXHQgKi9cblx0b25JbnB1dENoYW5nZSgpIHtcblx0XHR0aGlzLnNwaW5uZXIuY2xhc3MgPSB0aGlzLmdldENsYXNzKHRoaXMuc3Bpbm5lci50eXBlID8/IERFRkFVTFRTLlNQSU5ORVJfVFlQRSwgdGhpcy5zcGlubmVyLnNpemUgPz8gJ2RlZmF1bHQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb21wb25lbnQgZGVzdHJveSBldmVudFxuXHQgKi9cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcblx0XHR0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblx0fVxufVxuIiwiQGlmIChzcGlubmVyLnNob3cpIHtcblx0PGRpdlxuXHRcdCNvdmVybGF5XG5cdFx0W0AuZGlzYWJsZWRdPVwiZGlzYWJsZUFuaW1hdGlvblwiXG5cdFx0W0BmYWRlSW5dPVwiJ2luJ1wiXG5cdFx0W3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwic3Bpbm5lci5iZENvbG9yXCJcblx0XHRbc3R5bGUucG9zaXRpb25dPVwic3Bpbm5lci5mdWxsU2NyZWVuID8gJ2ZpeGVkJyA6ICdhYnNvbHV0ZSdcIlxuXHRcdFtzdHlsZS56LWluZGV4XT1cInNwaW5uZXIuekluZGV4XCJcblx0XHRjbGFzcz1cIm5neC1zcGlubmVyLW92ZXJsYXlcIj5cblx0XHRAaWYgKHNwaW5uZXIuc2hvdykge1xuXHRcdFx0PGRpdiBbY2xhc3NdPVwic3Bpbm5lci5jbGFzc1wiIFtzdHlsZS5jb2xvcl09XCJzcGlubmVyLmNvbG9yXCI+XG5cdFx0XHRcdEBmb3IgKGluZGV4IG9mIHNwaW5uZXIuZGl2QXJyYXk7IHRyYWNrIGluZGV4KSB7XG5cdFx0XHRcdFx0PGRpdj48L2Rpdj5cblx0XHRcdFx0fVxuXHRcdFx0PC9kaXY+XG5cdFx0fVxuXHRcdEBpZiAodGVtcGxhdGUpIHtcblx0XHRcdDxkaXYgW2lubmVySFRNTF09XCJ0ZW1wbGF0ZSB8IHNhZmVIdG1sXCI+PC9kaXY+XG5cdFx0fVxuXHRcdDxkaXYgW3N0eWxlLnotaW5kZXhdPVwic3Bpbm5lci56SW5kZXhcIiBjbGFzcz1cImxvYWRpbmctdGV4dFwiPlxuXHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbn1cbiJdfQ==
|