design-angular-kit 1.0.0-15 → 1.0.0-16
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 +29 -3
- package/esm2020/lib/components/core/callout/callout.component.mjs +3 -3
- package/esm2020/lib/components/core/pagination/pagination.component.mjs +1 -1
- package/esm2020/lib/components/form/input/input.component.mjs +13 -3
- package/esm2020/lib/components/form/password-input/password-input.component.mjs +2 -2
- package/esm2020/lib/components/utils/error-page/error-page.component.mjs +2 -2
- package/esm2020/lib/components/utils/icon/icon.component.mjs +13 -5
- package/esm2020/lib/design-angular-kit-config.mjs +15 -0
- package/esm2020/lib/design-angular-kit.module.mjs +13 -1
- package/esm2020/lib/interfaces/design-angular-kit-init.mjs +2 -0
- package/esm2020/public_api.mjs +4 -1
- package/fesm2015/design-angular-kit.mjs +57 -13
- package/fesm2015/design-angular-kit.mjs.map +1 -1
- package/fesm2020/design-angular-kit.mjs +54 -13
- package/fesm2020/design-angular-kit.mjs.map +1 -1
- package/lib/components/form/input/input.component.d.ts +12 -1
- package/lib/components/utils/icon/icon.component.d.ts +3 -0
- package/lib/design-angular-kit-config.d.ts +16 -0
- package/lib/design-angular-kit.module.d.ts +3 -0
- package/lib/interfaces/design-angular-kit-init.d.ts +7 -0
- package/package.json +2 -2
- package/public_api.d.ts +2 -0
package/README.md
CHANGED
|
@@ -63,13 +63,39 @@ npm install design-angular-kit@unstable --save
|
|
|
63
63
|
Procedi a registrare `DesignAngularKitModule` nel tuo **app.module.ts**.
|
|
64
64
|
|
|
65
65
|
```typescript
|
|
66
|
+
import {DesignAngularKitModule} from 'design-angular-kit';
|
|
67
|
+
|
|
66
68
|
@NgModule({
|
|
67
69
|
imports: [
|
|
68
70
|
...
|
|
69
|
-
DesignAngularKitModule
|
|
71
|
+
DesignAngularKitModule.forRoot() // .forRoot obbligatorio
|
|
70
72
|
]
|
|
71
73
|
})
|
|
72
74
|
```
|
|
75
|
+
<details>
|
|
76
|
+
<summary>Configurazione della libreria</summary>
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
import {DesignAngularKitModule, DesignAngularKitInit} from 'design-angular-kit';
|
|
80
|
+
|
|
81
|
+
// Puoi aggiungere alla libreria una configurazione iniziale
|
|
82
|
+
const initConfig: DesignAngularKitInit | undefined = {
|
|
83
|
+
/**
|
|
84
|
+
* The initial path in the `href` attribute in the `IconComponent` component
|
|
85
|
+
* @default './bootstrap-italia/dist/svg/sprites.svg'
|
|
86
|
+
*/
|
|
87
|
+
iconHref: string | undefined,
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
@NgModule({
|
|
91
|
+
imports: [
|
|
92
|
+
...
|
|
93
|
+
DesignAngularKitModule.forRoot(initConfig) // .forRoot obbligatorio
|
|
94
|
+
]
|
|
95
|
+
})
|
|
96
|
+
```
|
|
97
|
+
</details>
|
|
98
|
+
|
|
73
99
|
|
|
74
100
|
### Importazione stili bootstrap-italia
|
|
75
101
|
Configura gli stili richiesti nel file `styles.scss`. Importa la libreria SCSS come mostrato nell'esempio qui sotto.
|
|
@@ -171,7 +197,7 @@ Modifica nel tuo `app.module.ts`:
|
|
|
171
197
|
},
|
|
172
198
|
defaultLanguage: 'it'
|
|
173
199
|
}),
|
|
174
|
-
DesignAngularKitModule
|
|
200
|
+
DesignAngularKitModule.forRoot()
|
|
175
201
|
]
|
|
176
202
|
})
|
|
177
203
|
```
|
|
@@ -188,7 +214,7 @@ Se non utilizzi i file di localizzazione nella tua app, devi aggiungere il provi
|
|
|
188
214
|
@NgModule({
|
|
189
215
|
imports: [
|
|
190
216
|
...
|
|
191
|
-
DesignAngularKitModule,
|
|
217
|
+
DesignAngularKitModule.forRoot(),
|
|
192
218
|
],
|
|
193
219
|
providers: [
|
|
194
220
|
TranslateStore
|
|
@@ -39,10 +39,10 @@ export class CalloutComponent {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
CalloutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: CalloutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
42
|
-
CalloutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: CalloutComponent, selector: "it-callout", inputs: { label: "label", hiddenLabel: "hiddenLabel", color: "color", appearance: "appearance", icon: "icon" }, ngImport: i0, template: "<div class=\"callout {{color}}\" [class.callout-highlight]=\"appearance === 'highlight'\"\n [class.callout-more]=\"appearance === 'more'\">\n <div class=\"callout-title\" *ngIf=\"label\">\n <it-icon [name]=\"iconName\"></it-icon>\n <span *ngIf=\"hiddenLabel\" class=\"visually-hidden\">{{ hiddenLabel }}</span>\n <span>{{ label }}</span>\n </div>\n <p class=\"callout-big-text\">\n <ng-content select=\"[bigText]\"></ng-content>\n </p>\n <ng-content></ng-content>\n</
|
|
42
|
+
CalloutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: CalloutComponent, selector: "it-callout", inputs: { label: "label", hiddenLabel: "hiddenLabel", color: "color", appearance: "appearance", icon: "icon" }, ngImport: i0, template: "<div class=\"callout {{color}}\" [class.callout-highlight]=\"appearance === 'highlight'\"\n [class.callout-more]=\"appearance === 'more'\">\n\n <div *ngIf=\"appearance === 'default'; else inner\" class=\"callout-inner\">\n <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n </div>\n</div>\n\n<ng-template #inner>\n <div class=\"callout-title\" *ngIf=\"label\">\n <it-icon [name]=\"iconName\"></it-icon>\n <span *ngIf=\"hiddenLabel\" class=\"visually-hidden\">{{ hiddenLabel }}</span>\n <span class=\"text\">{{ label }}</span>\n </div>\n <p class=\"callout-big-text\">\n <ng-content select=\"[bigText]\"></ng-content>\n </p>\n <ng-content></ng-content>\n</ng-template>\n", styles: [".callout-big-text:empty{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
43
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: CalloutComponent, decorators: [{
|
|
44
44
|
type: Component,
|
|
45
|
-
args: [{ selector: 'it-callout', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"callout {{color}}\" [class.callout-highlight]=\"appearance === 'highlight'\"\n [class.callout-more]=\"appearance === 'more'\">\n <div class=\"callout-title\" *ngIf=\"label\">\n <it-icon [name]=\"iconName\"></it-icon>\n <span *ngIf=\"hiddenLabel\" class=\"visually-hidden\">{{ hiddenLabel }}</span>\n <span>{{ label }}</span>\n </div>\n <p class=\"callout-big-text\">\n <ng-content select=\"[bigText]\"></ng-content>\n </p>\n <ng-content></ng-content>\n</
|
|
45
|
+
args: [{ selector: 'it-callout', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"callout {{color}}\" [class.callout-highlight]=\"appearance === 'highlight'\"\n [class.callout-more]=\"appearance === 'more'\">\n\n <div *ngIf=\"appearance === 'default'; else inner\" class=\"callout-inner\">\n <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n </div>\n</div>\n\n<ng-template #inner>\n <div class=\"callout-title\" *ngIf=\"label\">\n <it-icon [name]=\"iconName\"></it-icon>\n <span *ngIf=\"hiddenLabel\" class=\"visually-hidden\">{{ hiddenLabel }}</span>\n <span class=\"text\">{{ label }}</span>\n </div>\n <p class=\"callout-big-text\">\n <ng-content select=\"[bigText]\"></ng-content>\n </p>\n <ng-content></ng-content>\n</ng-template>\n", styles: [".callout-big-text:empty{display:none}\n"] }]
|
|
46
46
|
}], propDecorators: { label: [{
|
|
47
47
|
type: Input
|
|
48
48
|
}], hiddenLabel: [{
|
|
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
54
54
|
}], icon: [{
|
|
55
55
|
type: Input
|
|
56
56
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbG91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvY2FsbG91dC9jYWxsb3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9jYWxsb3V0L2NhbGxvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFJMUU7OztHQUdHO0FBV0gsTUFBTSxPQUFPLGdCQUFnQjtJQVY3QjtRQW1DRTs7Ozs7O1dBTUc7UUFDTSxlQUFVLEdBQXNCLFNBQVMsQ0FBQztLQStCcEQ7SUF2QkMsSUFBYyxRQUFRO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUNsQjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxNQUFNLEVBQUU7WUFDOUIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssU0FBUztnQkFDWixPQUFPLGFBQWEsQ0FBQztZQUN2QixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxNQUFNLENBQUM7WUFDWjtnQkFDRSxPQUFPLGFBQWEsQ0FBQztTQUN4QjtJQUNILENBQUM7OzZHQTdEVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixrS0NsQjdCLCtyQkFtQkE7MkZERGEsZ0JBQWdCO2tCQVY1QixTQUFTOytCQUNFLFlBQVksbUJBT0wsdUJBQXVCLENBQUMsTUFBTTs4QkFRdEMsS0FBSztzQkFBYixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBV0csS0FBSztzQkFBYixLQUFLO2dCQVNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGxvdXRBcHBlYXJhbmNlLCBDYWxsb3V0Q29sb3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2ljb24nO1xuXG4vKipcbiAqIENhbGxvdXRcbiAqIEBkZXNjcmlwdGlvbiBDYWxsb3V0cyBjYW4gYmUgdXNlZCB0byBoaWdobGlnaHQgY2VydGFpbiBwYXJ0cyBvZiB0aGUgdGV4dCB0aGF0IHJlcXVpcmUgcGFydGljdWxhciBhdHRlbnRpb24uIFRoZXkgbWF5IGNvbnRhaW4gZXJyb3IgbWVzc2FnZXMsIHdhcm5pbmdzLCBoaW50cywgZXRjLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpdC1jYWxsb3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGxvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtgXG4gICAgLmNhbGxvdXQtYmlnLXRleHQ6ZW1wdHkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIGBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDYWxsb3V0Q29tcG9uZW50IHtcblxuICAvKipcbiAgICogQ2FsbG91dCBsYWJlbFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDYWxsb3V0IGhpZGRlbkxhYmVsXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgaGlkZGVuTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENhbGxvdXQgY29sb3JcbiAgICogLSA8Yj5zdWNjZXNzPC9iPlxuICAgKiAtIDxiPmRhbmdlcjwvYj5cbiAgICogLSA8Yj53YXJuaW5nPC9iPlxuICAgKiAtIDxiPmltcG9ydGFudDwvYj5cbiAgICogLSA8Yj5ub3RlPC9iPlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yPzogQ2FsbG91dENvbG9yO1xuXG4gIC8qKlxuICAgKiBDYWxsb3V0IGFwcGVhcmFuY2VcbiAgICogLSA8Yj5kZWZhdWx0PC9iPlxuICAgKiAtIDxiPmhpZ2hsaWdodDwvYj46IENhbGxvdXQgdmVyc2lvbiB3aXRoIGJvcmRlciBvbmx5IG9uIHRoZSBsZWZ0IHNpZGVcbiAgICogLSA8Yj5tb3JlPC9iPjogSXQgbG9va3MgcmFkaWNhbGx5IGRpZmZlcmVudCBmcm9tIHRoZSBvdGhlciBzdHlsZXMgYXZhaWxhYmxlIGFuZCBpcyBzdWl0YWJsZSBmb3IgbW9yZSBleHRlbnNpdmUgdGV4dHNcbiAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgKi9cbiAgQElucHV0KCkgYXBwZWFyYW5jZTogQ2FsbG91dEFwcGVhcmFuY2UgPSAnZGVmYXVsdCc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBpY29uXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgaWNvbj86IEljb25OYW1lO1xuXG4gIHByb3RlY3RlZCBnZXQgaWNvbk5hbWUoKTogSWNvbk5hbWUge1xuICAgIGlmICh0aGlzLmljb24pIHtcbiAgICAgIHJldHVybiB0aGlzLmljb247XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSA9PT0gJ21vcmUnKSB7XG4gICAgICByZXR1cm4gJ3pvb20taW4nO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5jb2xvcikge1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiAnY2hlY2stY2lyY2xlJztcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2hlbHAtY2lyY2xlJztcbiAgICAgIGNhc2UgJ2Rhbmdlcic6XG4gICAgICAgIHJldHVybiAnY2xvc2UtY2lyY2xlJztcbiAgICAgIGNhc2UgJ2ltcG9ydGFudCc6XG4gICAgICBjYXNlICdub3RlJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnaW5mby1jaXJjbGUnO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FsbG91dCB7e2NvbG9yfX1cIiBbY2xhc3MuY2FsbG91dC1oaWdobGlnaHRdPVwiYXBwZWFyYW5jZSA9PT0gJ2hpZ2hsaWdodCdcIlxuICBbY2xhc3MuY2FsbG91dC1tb3JlXT1cImFwcGVhcmFuY2UgPT09ICdtb3JlJ1wiPlxuXG4gIDxkaXYgKm5nSWY9XCJhcHBlYXJhbmNlID09PSAnZGVmYXVsdCc7IGVsc2UgaW5uZXJcIiBjbGFzcz1cImNhbGxvdXQtaW5uZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpbm5lcj5cbiAgPGRpdiBjbGFzcz1cImNhbGxvdXQtdGl0bGVcIiAqbmdJZj1cImxhYmVsXCI+XG4gICAgPGl0LWljb24gW25hbWVdPVwiaWNvbk5hbWVcIj48L2l0LWljb24+XG4gICAgPHNwYW4gKm5nSWY9XCJoaWRkZW5MYWJlbFwiIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3sgaGlkZGVuTGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8cCBjbGFzcz1cImNhbGxvdXQtYmlnLXRleHRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmlnVGV4dF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvcD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -101,7 +101,7 @@ export class PaginationComponent {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
-
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: PaginationComponent, selector: "it-pagination[currentPage][pageNumbers]", inputs: { currentPage: "currentPage", pageNumbers: "pageNumbers", visiblePages: "visiblePages", alignment: "alignment", simpleMode: "simpleMode", textLinks: "textLinks", currentChanger: "currentChanger", changerValues: "changerValues", showJumpToPage: "showJumpToPage" }, outputs: { pageEvent: "pageEvent", changerEvent: "changerEvent" }, usesOnChanges: true, ngImport: i0, template: "<nav class=\"pagination-wrapper\"\n [class.justify-content-center]=\"alignment==='center'\"\n [class.justify-content-end]=\"alignment==='end'\"\n [class.pagination-total]=\"totalNumberText.hasChildNodes()\">\n\n <ul *ngIf=\"pages.length\" class=\"pagination\">\n <li class=\"page-item\" [class.disabled]=\"currentPage < 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage)\">\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-left\" color=\"primary\"></it-icon>\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.previous-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.previous' | translate}}</ng-container>\n </a>\n </li>\n\n <ng-container *ngIf=\"isSimpleMode; else defaultView\">\n <li class=\"page-item\"><span class=\"page-link\" aria-current=\"page\">{{currentPage + 1}}</span></li>\n <li class=\"page-item\"><span class=\"page-link\">/</span></li>\n <li class=\"page-item\"><span class=\"page-link\">{{pageNumbers}}</span></li>\n <li class=\"page-item visually-hidden\">\n <a class=\"page-link\" href=\"#\" aria-current=\"page\">\n {{'it.core.page-of-total'|translate : {page: (currentPage + 1), total: pageNumbers} }}\n </a>\n </li>\n </ng-container>\n <ng-template #defaultView>\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[0] >= 2\">\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, 1)\">1</a>\n </li>\n <li class=\"page-item\" *ngIf=\"pages[0] >= 3\">\n <span class=\"page-link\">...</span>\n </li>\n </ng-container>\n\n <li class=\"page-item\" *ngFor=\"let page of pages\">\n <a class=\"page-link\" aria-current=\"page\" *ngIf=\"page === (currentPage + 1); else inactivePage\">\n <span class=\"d-inline-block d-sm-none\">{{'it.core.page'|translate}}</span> {{page}}\n </a>\n <ng-template #inactivePage>\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, page)\">{{page}}</a>\n </ng-template>\n </li>\n\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[pages.length - 1] < pageNumbers\">\n <li class=\"page-item\" *ngIf=\"pages[pages.length - 1] < (pageNumbers - 1)\">\n <span class=\"page-link\">...</span>\n </li>\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, pageNumbers)\">{{pageNumbers}}</a>\n </li>\n </ng-container>\n </ng-template>\n\n <li class=\"page-item\" [class.disabled]=\"currentPage >= pageNumbers - 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage + 2)\">\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.next-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.next' | translate}}</ng-container>\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-right\" color=\"primary\"></it-icon>\n </a>\n </li>\n </ul>\n\n <it-dropdown *ngIf=\"currentChanger !== undefined\">\n <span button>{{currentChanger}} / {{'it.core.page' | translate | lowercase}}</span>\n <ng-container list>\n <it-dropdown-item *ngFor=\"let value of changerValues\" href=\"#\" externalLink=\"true\"\n (click)=\"changerChange($event, value)\">\n {{value}} / {{'it.core.page' | translate | lowercase}}\n </it-dropdown-item>\n </ng-container>\n </it-dropdown>\n\n <it-input *ngIf=\"isShowJumpToPage\" type=\"number\" [min]=\"1\" [max]=\"pageNumbers\"\n [label]=\"('it.core.go-to' | translate) + '...'\" [formControl]=\"jumpToPage\"></it-input>\n\n <p [class.d-none]=\"!totalNumberText.hasChildNodes()\" #totalNumberText>\n <ng-content></ng-content>\n </p>\n</nav>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.DropdownComponent, selector: "it-dropdown", inputs: ["color", "direction", "fullWidth", "dark"], outputs: ["showEvent", "shownEvent", "hideEvent", "hiddenEvent"], exportAs: ["itDropdown"] }, { kind: "component", type: i4.DropdownItemComponent, selector: "it-dropdown-item", inputs: ["divider", "active", "large", "iconName", "iconPosition"] }, { kind: "component", type: i5.InputComponent, selector: "it-input", inputs: ["type", "placeholder", "description", "readonly", "max", "min", "step", "currency", "percentage", "adaptive", "autocompleteData", "autocompleteDebounceTime"], outputs: ["autocompleteSelectedEvent"] }, { kind: "component", type: i6.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
104
|
+
PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: PaginationComponent, selector: "it-pagination[currentPage][pageNumbers]", inputs: { currentPage: "currentPage", pageNumbers: "pageNumbers", visiblePages: "visiblePages", alignment: "alignment", simpleMode: "simpleMode", textLinks: "textLinks", currentChanger: "currentChanger", changerValues: "changerValues", showJumpToPage: "showJumpToPage" }, outputs: { pageEvent: "pageEvent", changerEvent: "changerEvent" }, usesOnChanges: true, ngImport: i0, template: "<nav class=\"pagination-wrapper\"\n [class.justify-content-center]=\"alignment==='center'\"\n [class.justify-content-end]=\"alignment==='end'\"\n [class.pagination-total]=\"totalNumberText.hasChildNodes()\">\n\n <ul *ngIf=\"pages.length\" class=\"pagination\">\n <li class=\"page-item\" [class.disabled]=\"currentPage < 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage)\">\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-left\" color=\"primary\"></it-icon>\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.previous-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.previous' | translate}}</ng-container>\n </a>\n </li>\n\n <ng-container *ngIf=\"isSimpleMode; else defaultView\">\n <li class=\"page-item\"><span class=\"page-link\" aria-current=\"page\">{{currentPage + 1}}</span></li>\n <li class=\"page-item\"><span class=\"page-link\">/</span></li>\n <li class=\"page-item\"><span class=\"page-link\">{{pageNumbers}}</span></li>\n <li class=\"page-item visually-hidden\">\n <a class=\"page-link\" href=\"#\" aria-current=\"page\">\n {{'it.core.page-of-total'|translate : {page: (currentPage + 1), total: pageNumbers} }}\n </a>\n </li>\n </ng-container>\n <ng-template #defaultView>\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[0] >= 2\">\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, 1)\">1</a>\n </li>\n <li class=\"page-item\" *ngIf=\"pages[0] >= 3\">\n <span class=\"page-link\">...</span>\n </li>\n </ng-container>\n\n <li class=\"page-item\" *ngFor=\"let page of pages\">\n <a class=\"page-link\" aria-current=\"page\" *ngIf=\"page === (currentPage + 1); else inactivePage\">\n <span class=\"d-inline-block d-sm-none\">{{'it.core.page'|translate}}</span> {{page}}\n </a>\n <ng-template #inactivePage>\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, page)\">{{page}}</a>\n </ng-template>\n </li>\n\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[pages.length - 1] < pageNumbers\">\n <li class=\"page-item\" *ngIf=\"pages[pages.length - 1] < (pageNumbers - 1)\">\n <span class=\"page-link\">...</span>\n </li>\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, pageNumbers)\">{{pageNumbers}}</a>\n </li>\n </ng-container>\n </ng-template>\n\n <li class=\"page-item\" [class.disabled]=\"currentPage >= pageNumbers - 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage + 2)\">\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.next-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.next' | translate}}</ng-container>\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-right\" color=\"primary\"></it-icon>\n </a>\n </li>\n </ul>\n\n <it-dropdown *ngIf=\"currentChanger !== undefined\">\n <span button>{{currentChanger}} / {{'it.core.page' | translate | lowercase}}</span>\n <ng-container list>\n <it-dropdown-item *ngFor=\"let value of changerValues\" href=\"#\" externalLink=\"true\"\n (click)=\"changerChange($event, value)\">\n {{value}} / {{'it.core.page' | translate | lowercase}}\n </it-dropdown-item>\n </ng-container>\n </it-dropdown>\n\n <it-input *ngIf=\"isShowJumpToPage\" type=\"number\" [min]=\"1\" [max]=\"pageNumbers\"\n [label]=\"('it.core.go-to' | translate) + '...'\" [formControl]=\"jumpToPage\"></it-input>\n\n <p [class.d-none]=\"!totalNumberText.hasChildNodes()\" #totalNumberText>\n <ng-content></ng-content>\n </p>\n</nav>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.DropdownComponent, selector: "it-dropdown", inputs: ["color", "direction", "fullWidth", "dark"], outputs: ["showEvent", "shownEvent", "hideEvent", "hiddenEvent"], exportAs: ["itDropdown"] }, { kind: "component", type: i4.DropdownItemComponent, selector: "it-dropdown-item", inputs: ["divider", "active", "large", "iconName", "iconPosition"] }, { kind: "component", type: i5.InputComponent, selector: "it-input", inputs: ["type", "placeholder", "description", "readonly", "maxDate", "minDate", "max", "min", "step", "currency", "percentage", "adaptive", "autocompleteData", "autocompleteDebounceTime"], outputs: ["autocompleteSelectedEvent"] }, { kind: "component", type: i6.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "pipe", type: i1.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
105
105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
106
106
|
type: Component,
|
|
107
107
|
args: [{ selector: 'it-pagination[currentPage][pageNumbers]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"pagination-wrapper\"\n [class.justify-content-center]=\"alignment==='center'\"\n [class.justify-content-end]=\"alignment==='end'\"\n [class.pagination-total]=\"totalNumberText.hasChildNodes()\">\n\n <ul *ngIf=\"pages.length\" class=\"pagination\">\n <li class=\"page-item\" [class.disabled]=\"currentPage < 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage)\">\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-left\" color=\"primary\"></it-icon>\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.previous-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.previous' | translate}}</ng-container>\n </a>\n </li>\n\n <ng-container *ngIf=\"isSimpleMode; else defaultView\">\n <li class=\"page-item\"><span class=\"page-link\" aria-current=\"page\">{{currentPage + 1}}</span></li>\n <li class=\"page-item\"><span class=\"page-link\">/</span></li>\n <li class=\"page-item\"><span class=\"page-link\">{{pageNumbers}}</span></li>\n <li class=\"page-item visually-hidden\">\n <a class=\"page-link\" href=\"#\" aria-current=\"page\">\n {{'it.core.page-of-total'|translate : {page: (currentPage + 1), total: pageNumbers} }}\n </a>\n </li>\n </ng-container>\n <ng-template #defaultView>\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[0] >= 2\">\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, 1)\">1</a>\n </li>\n <li class=\"page-item\" *ngIf=\"pages[0] >= 3\">\n <span class=\"page-link\">...</span>\n </li>\n </ng-container>\n\n <li class=\"page-item\" *ngFor=\"let page of pages\">\n <a class=\"page-link\" aria-current=\"page\" *ngIf=\"page === (currentPage + 1); else inactivePage\">\n <span class=\"d-inline-block d-sm-none\">{{'it.core.page'|translate}}</span> {{page}}\n </a>\n <ng-template #inactivePage>\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, page)\">{{page}}</a>\n </ng-template>\n </li>\n\n <ng-container *ngIf=\"pageNumbers > visiblePages && pages[pages.length - 1] < pageNumbers\">\n <li class=\"page-item\" *ngIf=\"pages[pages.length - 1] < (pageNumbers - 1)\">\n <span class=\"page-link\">...</span>\n </li>\n <li class=\"page-item\">\n <a class=\"page-link\" href=\"#\" (click)=\"pageChange($event, pageNumbers)\">{{pageNumbers}}</a>\n </li>\n </ng-container>\n </ng-template>\n\n <li class=\"page-item\" [class.disabled]=\"currentPage >= pageNumbers - 1\">\n <a class=\"page-link\" [class.text]=\"isTextLinks\" href=\"#\" (click)=\"pageChange($event, currentPage + 2)\">\n <span class=\"visually-hidden\">\n {{(isTextLinks ? 'it.core.page' : 'it.core.next-page') | translate}}\n </span>\n <ng-container *ngIf=\"isTextLinks\">{{'it.core.next' | translate}}</ng-container>\n <it-icon *ngIf=\"!isTextLinks\" name=\"chevron-right\" color=\"primary\"></it-icon>\n </a>\n </li>\n </ul>\n\n <it-dropdown *ngIf=\"currentChanger !== undefined\">\n <span button>{{currentChanger}} / {{'it.core.page' | translate | lowercase}}</span>\n <ng-container list>\n <it-dropdown-item *ngFor=\"let value of changerValues\" href=\"#\" externalLink=\"true\"\n (click)=\"changerChange($event, value)\">\n {{value}} / {{'it.core.page' | translate | lowercase}}\n </it-dropdown-item>\n </ng-container>\n </it-dropdown>\n\n <it-input *ngIf=\"isShowJumpToPage\" type=\"number\" [min]=\"1\" [max]=\"pageNumbers\"\n [label]=\"('it.core.go-to' | translate) + '...'\" [formControl]=\"jumpToPage\"></it-input>\n\n <p [class.d-none]=\"!totalNumberText.hasChildNodes()\" #totalNumberText>\n <ng-content></ng-content>\n </p>\n</nav>\n" }]
|
|
@@ -21,6 +21,12 @@ export class InputComponent extends AbstractFormComponent {
|
|
|
21
21
|
* The input placeholder
|
|
22
22
|
*/
|
|
23
23
|
this.placeholder = '';
|
|
24
|
+
/**
|
|
25
|
+
* The max date value [Used only in type = 'date']
|
|
26
|
+
* @default '9999-12-31'
|
|
27
|
+
* @example 'yyyy-mm-dd'
|
|
28
|
+
*/
|
|
29
|
+
this.maxDate = '9999-12-31';
|
|
24
30
|
/**
|
|
25
31
|
* Time span [ms] has passed without another source emission, to delay data filtering.
|
|
26
32
|
* Useful when the user is typing multiple letters
|
|
@@ -188,10 +194,10 @@ export class InputComponent extends AbstractFormComponent {
|
|
|
188
194
|
}
|
|
189
195
|
}
|
|
190
196
|
InputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: InputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
191
|
-
InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: InputComponent, selector: "it-input", inputs: { type: "type", placeholder: "placeholder", description: "description", readonly: "readonly", max: "max", min: "min", step: "step", currency: "currency", percentage: "percentage", adaptive: "adaptive", autocompleteData: "autocompleteData", autocompleteDebounceTime: "autocompleteDebounceTime" }, outputs: { autocompleteSelectedEvent: "autocompleteSelectedEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\" [class.d-none]=\"!prependText.hasChildNodes() && !prepend.hasChildNodes()\">\n <div #prepend>\n <ng-content select=\"[prepend]\"></ng-content>\n </div>\n <div class=\"input-group-text\" #prependText>\n <ng-content select=\"[prependText]\"></ng-content>\n </div>\n </div>\n\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"isActiveLabel\"\n [class.empty-prepend-label]=\"!prependText.hasChildNodes() && !prepend.hasChildNodes()\">\n {{label}}\n </label>\n\n <span *ngIf=\"type === 'number'\"\n class=\"input-number\"\n [class.input-number-currency]=\"currency\"\n [class.input-number-percentage]=\"percentage\"\n [class.input-number-adaptive]=\"adaptive\">\n\n <input type=\"number\"\n [id]=\"id\"\n [step]=\"step ?? null\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\" />\n\n <button type=\"button\" class=\"input-number-add\" (click)=\"incrementNumber()\">\n <span class=\"visually-hidden\">{{'it.form.increase-value'}}</span>\n </button>\n <button type=\"button\" class=\"input-number-sub\" (click)=\"incrementNumber(true)\">\n <span class=\"visually-hidden\">{{'it.form.decrease-value'}}</span>\n </button>\n </span>\n\n <input *ngIf=\"type !== 'number'\"\n [id]=\"id\"\n [type]=\"type\"\n [class.form-control]=\"readonly !== 'plaintext'\"\n [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n (keydown)=\"onKeyDown()\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\">\n\n <div class=\"input-group-append\">\n <ng-content select=\"[append]\"></ng-content>\n\n <div class=\"input-group-text\">\n <ng-content select=\"[appendText]\"></ng-content>\n </div>\n </div>\n </div>\n\n <small *ngIf=\"description\" [id]=\"id + '-description'\" class=\"form-text\">{{description}}</small>\n\n <!-- INIZIO gestione AUTOCOMPLETAMENTO -->\n <ng-container *ngIf=\"type === 'search'\">\n <!-- Icona lente per autocompletamento -->\n <span class=\"autocomplete-icon\" aria-hidden=\"true\">\n <it-icon name=\"search\" size=\"sm\"></it-icon>\n </span>\n\n <ng-container *ngIf=\"autocompleteResults$ | async as autocomplete\">\n <!-- Lista di autocompletamento -->\n <ul class=\"autocomplete-list\" [class.autocomplete-list-show]=\"autocomplete.relatedEntries?.length && showAutocompletion\">\n <li *ngFor=\"let entry of autocomplete.relatedEntries; trackBy: autocompleteItemTrackByValueFn\"\n (click)=\"onEntryClick(entry, $event)\">\n <a [href]=\"entry.link\">\n <ng-container *ngTemplateOutlet=\"autocompleteItemTemplate\"></ng-container>\n </a>\n <ng-template #autocompleteItemTemplate>\n <div class=\"avatar size-sm\" *ngIf=\"entry.avatarSrcPath\">\n <img [src]=\"entry.avatarSrcPath\" [alt]=\"entry.avatarAltText\">\n </div>\n <it-icon *ngIf=\"entry.icon\" [name]=\"entry.icon\" size=\"sm\"></it-icon>\n <span class=\"autocomplete-list-text\">\n <span [innerHTML]=\"entry.value | markMatchingText: autocomplete.searchedValue\"></span>\n <em *ngIf=\"entry.label\">{{entry.label}}</em>\n </span>\n </ng-template>\n </li>\n </ul>\n </ng-container>\n </ng-container>\n <!-- FINE gestione AUTOCOMPLETAMENTO -->\n\n <div *ngIf=\"isInvalid\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</div>\n", styles: [".form-group label{z-index:1000}.form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}.form-group .input-number button.input-number-add{top:0}.form-group .input-number button.input-number-sub{bottom:0}.form-group .input-group-text:empty{display:none}.form-group label.empty-prepend-label{left:auto!important;max-width:100%!important}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.MarkMatchingTextPipe, name: "markMatchingText" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
197
|
+
InputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: InputComponent, selector: "it-input", inputs: { type: "type", placeholder: "placeholder", description: "description", readonly: "readonly", maxDate: "maxDate", minDate: "minDate", max: "max", min: "min", step: "step", currency: "currency", percentage: "percentage", adaptive: "adaptive", autocompleteData: "autocompleteData", autocompleteDebounceTime: "autocompleteDebounceTime" }, outputs: { autocompleteSelectedEvent: "autocompleteSelectedEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\" [class.d-none]=\"!prependText.hasChildNodes() && !prepend.hasChildNodes()\">\n <div #prepend>\n <ng-content select=\"[prepend]\"></ng-content>\n </div>\n <div class=\"input-group-text\" #prependText>\n <ng-content select=\"[prependText]\"></ng-content>\n </div>\n </div>\n\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"isActiveLabel\"\n [class.empty-prepend-label]=\"!prependText.hasChildNodes() && !prepend.hasChildNodes()\">\n {{label}}\n </label>\n\n <span *ngIf=\"type === 'number'\"\n class=\"input-number\"\n [class.input-number-currency]=\"currency\"\n [class.input-number-percentage]=\"percentage\"\n [class.input-number-adaptive]=\"adaptive\">\n\n <input type=\"number\"\n [id]=\"id\"\n [step]=\"step ?? null\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\" />\n\n <button type=\"button\" class=\"input-number-add\" (click)=\"incrementNumber()\">\n <span class=\"visually-hidden\">{{'it.form.increase-value'}}</span>\n </button>\n <button type=\"button\" class=\"input-number-sub\" (click)=\"incrementNumber(true)\">\n <span class=\"visually-hidden\">{{'it.form.decrease-value'}}</span>\n </button>\n </span>\n\n <input *ngIf=\"type !== 'number'\"\n [id]=\"id\"\n [type]=\"type\"\n [max]=\"type === 'date' ? maxDate : undefined\"\n [min]=\"type === 'date' ? minDate : undefined\"\n [class.form-control]=\"readonly !== 'plaintext'\"\n [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n (keydown)=\"onKeyDown()\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\">\n\n <div class=\"input-group-append\">\n <ng-content select=\"[append]\"></ng-content>\n\n <div class=\"input-group-text\">\n <ng-content select=\"[appendText]\"></ng-content>\n </div>\n </div>\n </div>\n\n <small *ngIf=\"description\" [id]=\"id + '-description'\" class=\"form-text\">{{description}}</small>\n\n <!-- INIZIO gestione AUTOCOMPLETAMENTO -->\n <ng-container *ngIf=\"type === 'search'\">\n <!-- Icona lente per autocompletamento -->\n <span class=\"autocomplete-icon\" aria-hidden=\"true\">\n <it-icon name=\"search\" size=\"sm\"></it-icon>\n </span>\n\n <ng-container *ngIf=\"autocompleteResults$ | async as autocomplete\">\n <!-- Lista di autocompletamento -->\n <ul class=\"autocomplete-list\" [class.autocomplete-list-show]=\"autocomplete.relatedEntries?.length && showAutocompletion\">\n <li *ngFor=\"let entry of autocomplete.relatedEntries; trackBy: autocompleteItemTrackByValueFn\"\n (click)=\"onEntryClick(entry, $event)\">\n <a [href]=\"entry.link\">\n <ng-container *ngTemplateOutlet=\"autocompleteItemTemplate\"></ng-container>\n </a>\n <ng-template #autocompleteItemTemplate>\n <div class=\"avatar size-sm\" *ngIf=\"entry.avatarSrcPath\">\n <img [src]=\"entry.avatarSrcPath\" [alt]=\"entry.avatarAltText\">\n </div>\n <it-icon *ngIf=\"entry.icon\" [name]=\"entry.icon\" size=\"sm\"></it-icon>\n <span class=\"autocomplete-list-text\">\n <span [innerHTML]=\"entry.value | markMatchingText: autocomplete.searchedValue\"></span>\n <em *ngIf=\"entry.label\">{{entry.label}}</em>\n </span>\n </ng-template>\n </li>\n </ul>\n </ng-container>\n </ng-container>\n <!-- FINE gestione AUTOCOMPLETAMENTO -->\n\n <div *ngIf=\"isInvalid\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</div>\n", styles: [".form-group label{z-index:1000}.form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}.form-group .input-number button.input-number-add{top:0}.form-group .input-number button.input-number-sub{bottom:0}.form-group .input-group-text:empty{display:none}.form-group label.empty-prepend-label{left:auto!important;max-width:100%!important}.form-group label:not(.active):has(+ input:-webkit-autofill){transform:translateY(-75%)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.MarkMatchingTextPipe, name: "markMatchingText" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
192
198
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: InputComponent, decorators: [{
|
|
193
199
|
type: Component,
|
|
194
|
-
args: [{ selector: 'it-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\" [class.d-none]=\"!prependText.hasChildNodes() && !prepend.hasChildNodes()\">\n <div #prepend>\n <ng-content select=\"[prepend]\"></ng-content>\n </div>\n <div class=\"input-group-text\" #prependText>\n <ng-content select=\"[prependText]\"></ng-content>\n </div>\n </div>\n\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"isActiveLabel\"\n [class.empty-prepend-label]=\"!prependText.hasChildNodes() && !prepend.hasChildNodes()\">\n {{label}}\n </label>\n\n <span *ngIf=\"type === 'number'\"\n class=\"input-number\"\n [class.input-number-currency]=\"currency\"\n [class.input-number-percentage]=\"percentage\"\n [class.input-number-adaptive]=\"adaptive\">\n\n <input type=\"number\"\n [id]=\"id\"\n [step]=\"step ?? null\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\" />\n\n <button type=\"button\" class=\"input-number-add\" (click)=\"incrementNumber()\">\n <span class=\"visually-hidden\">{{'it.form.increase-value'}}</span>\n </button>\n <button type=\"button\" class=\"input-number-sub\" (click)=\"incrementNumber(true)\">\n <span class=\"visually-hidden\">{{'it.form.decrease-value'}}</span>\n </button>\n </span>\n\n <input *ngIf=\"type !== 'number'\"\n [id]=\"id\"\n [type]=\"type\"\n [class.form-control]=\"readonly !== 'plaintext'\"\n [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n (keydown)=\"onKeyDown()\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\">\n\n <div class=\"input-group-append\">\n <ng-content select=\"[append]\"></ng-content>\n\n <div class=\"input-group-text\">\n <ng-content select=\"[appendText]\"></ng-content>\n </div>\n </div>\n </div>\n\n <small *ngIf=\"description\" [id]=\"id + '-description'\" class=\"form-text\">{{description}}</small>\n\n <!-- INIZIO gestione AUTOCOMPLETAMENTO -->\n <ng-container *ngIf=\"type === 'search'\">\n <!-- Icona lente per autocompletamento -->\n <span class=\"autocomplete-icon\" aria-hidden=\"true\">\n <it-icon name=\"search\" size=\"sm\"></it-icon>\n </span>\n\n <ng-container *ngIf=\"autocompleteResults$ | async as autocomplete\">\n <!-- Lista di autocompletamento -->\n <ul class=\"autocomplete-list\" [class.autocomplete-list-show]=\"autocomplete.relatedEntries?.length && showAutocompletion\">\n <li *ngFor=\"let entry of autocomplete.relatedEntries; trackBy: autocompleteItemTrackByValueFn\"\n (click)=\"onEntryClick(entry, $event)\">\n <a [href]=\"entry.link\">\n <ng-container *ngTemplateOutlet=\"autocompleteItemTemplate\"></ng-container>\n </a>\n <ng-template #autocompleteItemTemplate>\n <div class=\"avatar size-sm\" *ngIf=\"entry.avatarSrcPath\">\n <img [src]=\"entry.avatarSrcPath\" [alt]=\"entry.avatarAltText\">\n </div>\n <it-icon *ngIf=\"entry.icon\" [name]=\"entry.icon\" size=\"sm\"></it-icon>\n <span class=\"autocomplete-list-text\">\n <span [innerHTML]=\"entry.value | markMatchingText: autocomplete.searchedValue\"></span>\n <em *ngIf=\"entry.label\">{{entry.label}}</em>\n </span>\n </ng-template>\n </li>\n </ul>\n </ng-container>\n </ng-container>\n <!-- FINE gestione AUTOCOMPLETAMENTO -->\n\n <div *ngIf=\"isInvalid\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</div>\n", styles: [".form-group label{z-index:1000}.form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}.form-group .input-number button.input-number-add{top:0}.form-group .input-number button.input-number-sub{bottom:0}.form-group .input-group-text:empty{display:none}.form-group label.empty-prepend-label{left:auto!important;max-width:100%!important}\n"] }]
|
|
200
|
+
args: [{ selector: 'it-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\" [class.d-none]=\"!prependText.hasChildNodes() && !prepend.hasChildNodes()\">\n <div #prepend>\n <ng-content select=\"[prepend]\"></ng-content>\n </div>\n <div class=\"input-group-text\" #prependText>\n <ng-content select=\"[prependText]\"></ng-content>\n </div>\n </div>\n\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"isActiveLabel\"\n [class.empty-prepend-label]=\"!prependText.hasChildNodes() && !prepend.hasChildNodes()\">\n {{label}}\n </label>\n\n <span *ngIf=\"type === 'number'\"\n class=\"input-number\"\n [class.input-number-currency]=\"currency\"\n [class.input-number-percentage]=\"percentage\"\n [class.input-number-adaptive]=\"adaptive\">\n\n <input type=\"number\"\n [id]=\"id\"\n [step]=\"step ?? null\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\" />\n\n <button type=\"button\" class=\"input-number-add\" (click)=\"incrementNumber()\">\n <span class=\"visually-hidden\">{{'it.form.increase-value'}}</span>\n </button>\n <button type=\"button\" class=\"input-number-sub\" (click)=\"incrementNumber(true)\">\n <span class=\"visually-hidden\">{{'it.form.decrease-value'}}</span>\n </button>\n </span>\n\n <input *ngIf=\"type !== 'number'\"\n [id]=\"id\"\n [type]=\"type\"\n [max]=\"type === 'date' ? maxDate : undefined\"\n [min]=\"type === 'date' ? minDate : undefined\"\n [class.form-control]=\"readonly !== 'plaintext'\"\n [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n (keydown)=\"onKeyDown()\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\">\n\n <div class=\"input-group-append\">\n <ng-content select=\"[append]\"></ng-content>\n\n <div class=\"input-group-text\">\n <ng-content select=\"[appendText]\"></ng-content>\n </div>\n </div>\n </div>\n\n <small *ngIf=\"description\" [id]=\"id + '-description'\" class=\"form-text\">{{description}}</small>\n\n <!-- INIZIO gestione AUTOCOMPLETAMENTO -->\n <ng-container *ngIf=\"type === 'search'\">\n <!-- Icona lente per autocompletamento -->\n <span class=\"autocomplete-icon\" aria-hidden=\"true\">\n <it-icon name=\"search\" size=\"sm\"></it-icon>\n </span>\n\n <ng-container *ngIf=\"autocompleteResults$ | async as autocomplete\">\n <!-- Lista di autocompletamento -->\n <ul class=\"autocomplete-list\" [class.autocomplete-list-show]=\"autocomplete.relatedEntries?.length && showAutocompletion\">\n <li *ngFor=\"let entry of autocomplete.relatedEntries; trackBy: autocompleteItemTrackByValueFn\"\n (click)=\"onEntryClick(entry, $event)\">\n <a [href]=\"entry.link\">\n <ng-container *ngTemplateOutlet=\"autocompleteItemTemplate\"></ng-container>\n </a>\n <ng-template #autocompleteItemTemplate>\n <div class=\"avatar size-sm\" *ngIf=\"entry.avatarSrcPath\">\n <img [src]=\"entry.avatarSrcPath\" [alt]=\"entry.avatarAltText\">\n </div>\n <it-icon *ngIf=\"entry.icon\" [name]=\"entry.icon\" size=\"sm\"></it-icon>\n <span class=\"autocomplete-list-text\">\n <span [innerHTML]=\"entry.value | markMatchingText: autocomplete.searchedValue\"></span>\n <em *ngIf=\"entry.label\">{{entry.label}}</em>\n </span>\n </ng-template>\n </li>\n </ul>\n </ng-container>\n </ng-container>\n <!-- FINE gestione AUTOCOMPLETAMENTO -->\n\n <div *ngIf=\"isInvalid\" class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n</div>\n", styles: [".form-group label{z-index:1000}.form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}.form-group .input-number button.input-number-add{top:0}.form-group .input-number button.input-number-sub{bottom:0}.form-group .input-group-text:empty{display:none}.form-group label.empty-prepend-label{left:auto!important;max-width:100%!important}.form-group label:not(.active):has(+ input:-webkit-autofill){transform:translateY(-75%)}\n"] }]
|
|
195
201
|
}], propDecorators: { type: [{
|
|
196
202
|
type: Input
|
|
197
203
|
}], placeholder: [{
|
|
@@ -200,6 +206,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
200
206
|
type: Input
|
|
201
207
|
}], readonly: [{
|
|
202
208
|
type: Input
|
|
209
|
+
}], maxDate: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}], minDate: [{
|
|
212
|
+
type: Input
|
|
203
213
|
}], max: [{
|
|
204
214
|
type: Input
|
|
205
215
|
}], min: [{
|
|
@@ -219,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
219
229
|
}], autocompleteSelectedEvent: [{
|
|
220
230
|
type: Output
|
|
221
231
|
}] } });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRW5GLE9BQU8sRUFBZ0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUTFGLE1BQU0sT0FBTyxjQUFlLFNBQVEscUJBQXNDO0lBTjFFOztRQVFFOzs7V0FHRztRQUNNLFNBQUksR0FBcUIsTUFBTSxDQUFDO1FBRXpDOztXQUVHO1FBQ00sZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFrRGxDOzs7O1dBSUc7UUFDTSw2QkFBd0IsR0FBVyxHQUFHLENBQUM7UUFFaEQ7O1dBRUc7UUFDTyw4QkFBeUIsR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUvRSx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUEwRXJDLDJFQUEy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QUUsQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELDhCQUE4QixDQUFDLEtBQWEsRUFBRSxJQUFzQjtRQUNsRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7SUFDbkQsQ0FBQzs7MkdBalFVLGNBQWM7K0ZBQWQsY0FBYyw0YkNkM0IseXlJQXdHQTsyRkQxRmEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07OEJBUXRDLElBQUk7c0JBQVosS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBT0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUtJLHlCQUF5QjtzQkFBbEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlSXRlbSwgSW5wdXRDb250cm9sVHlwZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZm9ybSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSXRWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vLi4vdmFsaWRhdG9ycy9pdC12YWxpZGF0b3JzJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0Rm9ybUNvbXBvbmVudDxzdHJpbmcgfCBudW1iZXI+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvKipcbiAgICogVGhlIGlucHV0IHR5cGVcbiAgICogQGRlZmF1bHQgdGV4dFxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogSW5wdXRDb250cm9sVHlwZSA9ICd0ZXh0JztcblxuICAvKipcbiAgICogVGhlIGlucHV0IHBsYWNlaG9sZGVyXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBkZXNjcmlwdGlvblxuICAgKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvIHByZXZlbnQgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250YWluZWQgdmFsdWUuXG4gICAqIC0gPGI+cGxhaW50ZXh0PC9iPjogUmVhZG9ubHkgZmllbGQgaW4gdGhlIGZvcm0gc3R5bGl6ZWQgYXMgcGxhaW4gdGV4dFxuICAgKi9cbiAgQElucHV0KCkgcmVhZG9ubHk/OiBCb29sZWFuSW5wdXQgfCAncGxhaW50ZXh0JztcblxuICAvKipcbiAgICogVGhlIG1heCB2YWx1ZSBbVXNlZCBvbmx5IGluIHR5cGUgPSAnbnVtYmVyJ11cbiAgICovXG4gIEBJbnB1dCgpIG1heD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbiB2YWx1ZSBbVXNlZCBvbmx5IGluIHR5cGUgPSAnbnVtYmVyJ11cbiAgICovXG4gIEBJbnB1dCgpIG1pbj86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0ZXAgdmFsdWUgW1VzZWQgb25seSBpbiB0eXBlID0gJ251bWJlciddXG4gICAqL1xuICBASW5wdXQoKSBzdGVwPzogbnVtYmVyIHwgJ2FueSc7XG5cbiAgLyoqXG4gICAqIElmIGlzIGEgY3VycmVuY3kgbnVtYmVyIFtVc2VkIG9ubHkgaW4gdHlwZSA9ICdudW1iZXInXVxuICAgKi9cbiAgQElucHV0KCkgY3VycmVuY3k/OiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIElmIGlzIGEgcGVyY2VudGFnZSBudW1iZXIgW1VzZWQgb25seSBpbiB0eXBlID0gJ251bWJlciddXG4gICAqL1xuICBASW5wdXQoKSBwZXJjZW50YWdlPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBUbyBtYWtlIHRoZSBudW1lcmljIGZpZWxkIGF1dG9tYXRpY2FsbHkgcmVzaXplIGFjY29yZGluZyB0byB0aGUgdmFsdWUgY29udGFpbmVkIGluIGl0LiBbVXNlZCBvbmx5IGluIHR5cGUgPSAnbnVtYmVyJ11cbiAgICovXG4gIEBJbnB1dCgpIGFkYXB0aXZlPzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGxpc3Qgb2Ygc2VhcmNoYWJsZSBlbGVtZW50cyBvbiB3aGljaCB0byBiYXNlIHRoZSBpbnB1dCBhdXRvY29tcGxldGUgc3lzdGVtIFtPcHRpb25hbC4gVXNlZCBvbmx5IGluIHR5cGUgPSAnc2VhcmNoJ11cbiAgICogSWYgeW91IG5lZWQgdG8gcmV0cmlldmUgaXRlbXMgdmlhIEFQSSwgY2FuIHBhc3MgYSBmdW5jdGlvbiBvZiBPYnNlcnZhYmxlXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlRGF0YT86IEFycmF5PEF1dG9jb21wbGV0ZUl0ZW0+IHwgKChzZWFyY2g/OiBzdHJpbmcpID0+IE9ic2VydmFibGU8QXJyYXk8QXV0b2NvbXBsZXRlSXRlbT4+KTtcblxuICAvKipcbiAgICogVGltZSBzcGFuIFttc10gaGFzIHBhc3NlZCB3aXRob3V0IGFub3RoZXIgc291cmNlIGVtaXNzaW9uLCB0byBkZWxheSBkYXRhIGZpbHRlcmluZy5cbiAgICogVXNlZnVsIHdoZW4gdGhlIHVzZXIgaXMgdHlwaW5nIG11bHRpcGxlIGxldHRlcnNcbiAgICogQGRlZmF1bHQgMzAwIFttc11cbiAgICovXG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZURlYm91bmNlVGltZTogbnVtYmVyID0gMzAwO1xuXG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBBdXRvY29tcGxldGUgSXRlbSBoYXMgYmVlbiBzZWxlY3RlZFxuICAgKi9cbiAgQE91dHB1dCgpIGF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQ6IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcm90ZWN0ZWQgc2hvd0F1dG9jb21wbGV0aW9uID0gZmFsc2U7XG5cblxuICBnZXQgaXNBY3RpdmVMYWJlbCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcbiAgICBpZiAoKCEhdmFsdWUgJiYgdmFsdWUgIT09IDApIHx8IHZhbHVlID09PSAwIHx8ICEhdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ251bWJlcicgJiYgKGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLmN1cnJlbmN5KSB8fCBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5wZXJjZW50YWdlKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdkYXRlJyB8fCB0aGlzLnR5cGUgPT09ICd0aW1lJyB8fCB0aGlzLnR5cGUgPT09ICdjb2xvcic7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaXMgcmVhZG9ubHkgZmllbGRcbiAgICovXG4gIGdldCBpc1JlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5ID09PSAncGxhaW50ZXh0JyB8fCBpc1RydWVCb29sZWFuSW5wdXQodGhpcy5yZWFkb25seSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpbnZhbGlkIG1lc3NhZ2Ugc3RyaW5nIGZyb20gVHJhbnNsYXRlU2VydmljZVxuICAgKi9cbiAgb3ZlcnJpZGUgZ2V0IGludmFsaWRNZXNzYWdlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ21pbicpICYmIHRoaXMubWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5taW4taW52YWxpZCcsIHtcbiAgICAgICAgbWluOiB0aGlzLm1pblxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdtYXgnKSAmJiB0aGlzLm1heCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMubWF4LWludmFsaWQnLCB7XG4gICAgICAgIG1heDogdGhpcy5tYXhcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5nZXRFcnJvcignbWlubGVuZ3RoJyk7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5taW4tbGVuZ3RoLWludmFsaWQnLCB7IG1pbjogZXJyb3IucmVxdWlyZWRMZW5ndGggfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSkge1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmdldEVycm9yKCdtYXhsZW5ndGgnKTtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLm1heC1sZW5ndGgtaW52YWxpZCcsIHsgbWF4OiBlcnJvci5yZXF1aXJlZExlbmd0aCB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ2VtYWlsJykgfHwgdGhpcy5oYXNFcnJvcignaW52YWxpZEVtYWlsJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLmVtYWlsLWludmFsaWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ2ludmFsaWRUZWwnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMudGVsLWludmFsaWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ2ludmFsaWRVcmwnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMudXJsLWludmFsaWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ2ludmFsaWRUYXhDb2RlJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnRheC1jb2RlLWludmFsaWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ2ludmFsaWRWYXROdW1iZXInKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMudmF0LW51bWJlci1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkQ2FwJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLmNhcC1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkUmVnZXgnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMucmVnZXgtaW52YWxpZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcigncGF0dGVybicpKSB7XG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuZ2V0RXJyb3IoJ3BhdHRlcm4nKTtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnBhdHRlcm4taW52YWxpZCcsIHsgcGF0dGVybjogZXJyb3IucmVxdWlyZWRQYXR0ZXJuIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5pbnZhbGlkTWVzc2FnZTtcbiAgfVxuXG4gIC8qKiBPYnNlcnZhYmxlIGRhIGN1aSB2ZW5nb25vIGVtZXNzaSBpIHJpc3VsdGF0aSBkZWxsJ2F1dG8gY29tcGxldGFtZW50byAqL1xuICBhdXRvY29tcGxldGVSZXN1bHRzJDogT2JzZXJ2YWJsZTx7XG4gICAgc2VhcmNoZWRWYWx1ZTogc3RyaW5nLFxuICAgIHJlbGF0ZWRFbnRyaWVzOiBBcnJheTxBdXRvY29tcGxldGVJdGVtPlxuICB9PiA9IG5ldyBPYnNlcnZhYmxlKCk7XG5cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgY29uc3QgdmFsaWRhdG9yczogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIGlmIChpc1RydWVCb29sZWFuSW5wdXQodGhpcy5wZXJjZW50YWdlKSkge1xuICAgICAgICAgIHRoaXMubWluID0gdGhpcy5taW4gfHwgMDtcbiAgICAgICAgICB0aGlzLm1heCA9IHRoaXMubWF4IHx8IDEwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIER5bmFtaWMgbWluL21heCB2YWxpZGF0b3JzXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB0aGlzLm1pbiA/IFZhbGlkYXRvcnMubWluKHRoaXMubWluKShjb250cm9sKSA6IG51bGwpO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gdGhpcy5tYXggPyBWYWxpZGF0b3JzLm1heCh0aGlzLm1heCkoY29udHJvbCkgOiBudWxsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChJdFZhbGlkYXRvcnMuZW1haWwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RlbCc6XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChJdFZhbGlkYXRvcnMudGVsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1cmwnOlxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goSXRWYWxpZGF0b3JzLnVybCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuYWRkVmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVJlc3VsdHMkID0gdGhpcy5nZXRBdXRvY29tcGxldGVSZXN1bHRzJCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluY3JlbWVudCBvciBkZWNyZWFzZSB0aGUgaW5wdXQgbnVtYmVyIHZhbHVlIG9mIHN0ZXBcbiAgICogQHBhcmFtIGRlY3JlYXNlIHRydWUgdG8gZGVjcmVhc2UgdmFsdWVcbiAgICovXG4gIGluY3JlbWVudE51bWJlcihkZWNyZWFzZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3RlcCA9ICh0aGlzLnN0ZXAgPT09ICdhbnknID8gMSA6ICh0aGlzLnN0ZXAgPz8gMSkpO1xuICAgIGxldCB2YWx1ZSA9IE51bWJlcih0aGlzLmNvbnRyb2wudmFsdWUpO1xuICAgIHZhbHVlID0gKGlzTmFOKHZhbHVlKSA/IDAgOiB2YWx1ZSkgKyAoZGVjcmVhc2UgPyAtc3RlcCA6IHN0ZXApO1xuICAgIHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSAqIDFlMTIpIC8gMWUxMjsgLy8gcHJldmVudCBqcyBkZWNpbWFsIGVycm9yXG5cbiAgICBpZiAodGhpcy5taW4gIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubWluO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tYXggIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubWF4O1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIGF1dG9jb21wbGV0ZSBsaXN0XG4gICAqL1xuICBwcml2YXRlIGdldEF1dG9jb21wbGV0ZVJlc3VsdHMkKCk6IE9ic2VydmFibGU8eyBzZWFyY2hlZFZhbHVlOiBzdHJpbmcsIHJlbGF0ZWRFbnRyaWVzOiBBcnJheTxBdXRvY29tcGxldGVJdGVtPiB9PiB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ3NlYXJjaCcpIHtcbiAgICAgIHJldHVybiBvZih7IHNlYXJjaGVkVmFsdWU6ICcnLCByZWxhdGVkRW50cmllczogW10gfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5hdXRvY29tcGxldGVEZWJvdW5jZVRpbWUpLCAvLyBEZWxheSBmaWx0ZXIgZGF0YSBhZnRlciB0aW1lIHNwYW4gaGFzIHBhc3NlZCB3aXRob3V0IGFub3RoZXIgc291cmNlIGVtaXNzaW9uLCB1c2VmdWwgd2hlbiB0aGUgdXNlciBpcyB0eXBpbmcgbXVsdGlwbGUgbGV0dGVyc1xuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgLy8gT25seSBpZiBzZWFyY2hWYWx1ZSBpcyBkaXN0aW5jdCBpbiBjb21wYXJpc29uIHRvIHRoZSBsYXN0IHZhbHVlXG4gICAgICBzd2l0Y2hNYXAoc2VhcmNoZWRWYWx1ZSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5hdXRvY29tcGxldGVEYXRhKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHsgc2VhcmNoZWRWYWx1ZSwgcmVsYXRlZEVudHJpZXM6IFtdIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXV0b0NvbXBsZXRlRGF0YSQgPSBBcnJheS5pc0FycmF5KHRoaXMuYXV0b2NvbXBsZXRlRGF0YSkgPyBvZih0aGlzLmF1dG9jb21wbGV0ZURhdGEpIDogdGhpcy5hdXRvY29tcGxldGVEYXRhKHNlYXJjaGVkVmFsdWUpO1xuICAgICAgICByZXR1cm4gYXV0b0NvbXBsZXRlRGF0YSQucGlwZShcbiAgICAgICAgICBtYXAoYXV0b2NvbXBsZXRlRGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAoIXNlYXJjaGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgc2VhcmNoZWRWYWx1ZSwgcmVsYXRlZEVudHJpZXM6IFtdIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxvd2VyY2FzZVZhbHVlID0gc2VhcmNoZWRWYWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZEVudHJpZXMgPSBhdXRvY29tcGxldGVEYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udmFsdWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJjYXNlVmFsdWUpKTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgc2VhcmNoZWRWYWx1ZSwgcmVsYXRlZEVudHJpZXMgfTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb25FbnRyeUNsaWNrKGVudHJ5OiBBdXRvY29tcGxldGVJdGVtLCBldmVudDogRXZlbnQpIHtcbiAgICAvLyBTZSBub24gw6ggc3RhdG8gZGVmaW5pdG8gdW4gbGluayBhc3NvY2lhdG8gYWxsJ2VsZW1lbnRvIGRlbGwnYXV0b2NvbXBsZXRlLCBwcm9iYWJpbG1lbnRlIGlsIGRlc2lkZXJhdGFcbiAgICAvLyBub24gw6ggZWZmZXR0dWFyZSBsYSBuYXZpZ2F6aW9uZSBhbCBkZWZhdWx0ICcjJywgcGVydGFudG8gaW4gdGFsIGNhc28gbWVnbGlvIGFubnVsbGFyZSBsYSBuYXZpZ2F6aW9uZS5cbiAgICBpZiAoIWVudHJ5LmxpbmspIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5hdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50Lm5leHQoZW50cnkpO1xuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShlbnRyeS52YWx1ZSk7XG4gICAgdGhpcy5zaG93QXV0b2NvbXBsZXRpb24gPSBmYWxzZTtcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUl0ZW1UcmFja0J5VmFsdWVGbihpbmRleDogbnVtYmVyLCBpdGVtOiBBdXRvY29tcGxldGVJdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBvbktleURvd24oKSB7XG4gICAgdGhpcy5zaG93QXV0b2NvbXBsZXRpb24gPSB0aGlzLnR5cGUgPT09ICdzZWFyY2gnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtcHJlcGVuZFwiIFtjbGFzcy5kLW5vbmVdPVwiIXByZXBlbmRUZXh0Lmhhc0NoaWxkTm9kZXMoKSAmJiAhcHJlcGVuZC5oYXNDaGlsZE5vZGVzKClcIj5cbiAgICAgIDxkaXYgI3ByZXBlbmQ+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwcmVwZW5kXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiAjcHJlcGVuZFRleHQ+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwcmVwZW5kVGV4dF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW2Zvcl09XCJpZFwiIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3RpdmVMYWJlbFwiXG4gICAgICAgICAgIFtjbGFzcy5lbXB0eS1wcmVwZW5kLWxhYmVsXT1cIiFwcmVwZW5kVGV4dC5oYXNDaGlsZE5vZGVzKCkgJiYgIXByZXBlbmQuaGFzQ2hpbGROb2RlcygpXCI+XG4gICAgICB7e2xhYmVsfX1cbiAgICA8L2xhYmVsPlxuXG4gICAgPHNwYW4gKm5nSWY9XCJ0eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgY2xhc3M9XCJpbnB1dC1udW1iZXJcIlxuICAgICAgICAgIFtjbGFzcy5pbnB1dC1udW1iZXItY3VycmVuY3ldPVwiY3VycmVuY3lcIlxuICAgICAgICAgIFtjbGFzcy5pbnB1dC1udW1iZXItcGVyY2VudGFnZV09XCJwZXJjZW50YWdlXCJcbiAgICAgICAgICBbY2xhc3MuaW5wdXQtbnVtYmVyLWFkYXB0aXZlXT1cImFkYXB0aXZlXCI+XG5cbiAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgIFtzdGVwXT1cInN0ZXAgPz8gbnVsbFwiXG4gICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgICAgICAgICAgICBbY2xhc3MuaXMtdmFsaWRdPVwiaXNWYWxpZFwiXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZG9ubHlcIlxuICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWQgKyAnLWRlc2NyaXB0aW9uJ1wiXG4gICAgICAgICAgICAgKGJsdXIpPVwibWFya0FzVG91Y2hlZCgpXCIgLz5cblxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpbnB1dC1udW1iZXItYWRkXCIgKGNsaWNrKT1cImluY3JlbWVudE51bWJlcigpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3snaXQuZm9ybS5pbmNyZWFzZS12YWx1ZSd9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpbnB1dC1udW1iZXItc3ViXCIgKGNsaWNrKT1cImluY3JlbWVudE51bWJlcih0cnVlKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2l0LmZvcm0uZGVjcmVhc2UtdmFsdWUnfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3NwYW4+XG5cbiAgICA8aW5wdXQgKm5nSWY9XCJ0eXBlICE9PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICAgICBbY2xhc3MuZm9ybS1jb250cm9sXT1cInJlYWRvbmx5ICE9PSAncGxhaW50ZXh0J1wiXG4gICAgICAgICAgIFtjbGFzcy5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0XT1cInJlYWRvbmx5ID09PSAncGxhaW50ZXh0J1wiXG4gICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImlzSW52YWxpZFwiXG4gICAgICAgICAgIFtjbGFzcy5pcy12YWxpZF09XCJpc1ZhbGlkXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNSZWFkb25seVwiXG4gICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigpXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZCArICctZGVzY3JpcHRpb24nXCJcbiAgICAgICAgICAgKGJsdXIpPVwibWFya0FzVG91Y2hlZCgpXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYXBwZW5kXVwiPjwvbmctY29udGVudD5cblxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FwcGVuZFRleHRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxzbWFsbCAqbmdJZj1cImRlc2NyaXB0aW9uXCIgW2lkXT1cImlkICsgJy1kZXNjcmlwdGlvbidcIiBjbGFzcz1cImZvcm0tdGV4dFwiPnt7ZGVzY3JpcHRpb259fTwvc21hbGw+XG5cbiAgPCEtLSBJTklaSU8gZ2VzdGlvbmUgQVVUT0NPTVBMRVRBTUVOVE8gLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAnc2VhcmNoJ1wiPlxuICAgIDwhLS0gSWNvbmEgbGVudGUgcGVyIGF1dG9jb21wbGV0YW1lbnRvIC0tPlxuICAgIDxzcGFuIGNsYXNzPVwiYXV0b2NvbXBsZXRlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgIDxpdC1pY29uIG5hbWU9XCJzZWFyY2hcIiBzaXplPVwic21cIj48L2l0LWljb24+XG4gICAgPC9zcGFuPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF1dG9jb21wbGV0ZVJlc3VsdHMkIHwgYXN5bmMgYXMgYXV0b2NvbXBsZXRlXCI+XG4gICAgICA8IS0tIExpc3RhIGRpIGF1dG9jb21wbGV0YW1lbnRvIC0tPlxuICAgICAgPHVsIGNsYXNzPVwiYXV0b2NvbXBsZXRlLWxpc3RcIiBbY2xhc3MuYXV0b2NvbXBsZXRlLWxpc3Qtc2hvd109XCJhdXRvY29tcGxldGUucmVsYXRlZEVudHJpZXM/Lmxlbmd0aCAmJiBzaG93QXV0b2NvbXBsZXRpb25cIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBhdXRvY29tcGxldGUucmVsYXRlZEVudHJpZXM7IHRyYWNrQnk6IGF1dG9jb21wbGV0ZUl0ZW1UcmFja0J5VmFsdWVGblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25FbnRyeUNsaWNrKGVudHJ5LCAkZXZlbnQpXCI+XG4gICAgICAgICAgPGEgW2hyZWZdPVwiZW50cnkubGlua1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2F1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXIgc2l6ZS1zbVwiICpuZ0lmPVwiZW50cnkuYXZhdGFyU3JjUGF0aFwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZW50cnkuYXZhdGFyU3JjUGF0aFwiIFthbHRdPVwiZW50cnkuYXZhdGFyQWx0VGV4dFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aXQtaWNvbiAqbmdJZj1cImVudHJ5Lmljb25cIiBbbmFtZV09XCJlbnRyeS5pY29uXCIgc2l6ZT1cInNtXCI+PC9pdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRvY29tcGxldGUtbGlzdC10ZXh0XCI+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVudHJ5LnZhbHVlIHwgbWFya01hdGNoaW5nVGV4dDogYXV0b2NvbXBsZXRlLnNlYXJjaGVkVmFsdWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8ZW0gKm5nSWY9XCJlbnRyeS5sYWJlbFwiPnt7ZW50cnkubGFiZWx9fTwvZW0+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPCEtLSBGSU5FIGdlc3Rpb25lIEFVVE9DT01QTEVUQU1FTlRPIC0tPlxuXG4gIDxkaXYgKm5nSWY9XCJpc0ludmFsaWRcIiBjbGFzcz1cImZvcm0tZmVlZGJhY2sganVzdC12YWxpZGF0ZS1lcnJvci1sYWJlbFwiIFtpZF09XCJpZCArICctZXJyb3InXCI+XG4gICAgPGRpdiAjY3VzdG9tRXJyb3I+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXJyb3JdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tRXJyb3IuaGFzQ2hpbGROb2RlcygpXCI+e3tpbnZhbGlkTWVzc2FnZSB8IGFzeW5jfX08L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRW5GLE9BQU8sRUFBZ0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUTFGLE1BQU0sT0FBTyxjQUFlLFNBQVEscUJBQXNDO0lBTjFFOztRQVFFOzs7V0FHRztRQUNNLFNBQUksR0FBcUIsTUFBTSxDQUFDO1FBRXpDOztXQUVHO1FBQ00sZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFhbEM7Ozs7V0FJRztRQUNNLFlBQU8sR0FBWSxZQUFZLENBQUM7UUE2Q3pDOzs7O1dBSUc7UUFDTSw2QkFBd0IsR0FBVyxHQUFHLENBQUM7UUFFaEQ7O1dBRUc7UUFDTyw4QkFBeUIsR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztR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UjtRQUNELE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0QsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLDJCQUEyQjtRQUVwRSxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzlDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNyRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNsQjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFHRDs7T0FFRztJQUNLLHVCQUF1QjtRQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzFCLE9BQU8sRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUN0RDtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNuQyxZQUFZLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsZ0lBQWdJO1FBQzdLLG9CQUFvQixFQUFFLEVBQUUsa0VBQWtFO1FBQzFGLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQixPQUFPLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNsRDtZQUVELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbEksT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQzNCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNsQixPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDOUM7Z0JBRUQsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuRCxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUUzRyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxLQUF1QixFQUFFLEtBQVk7UUFDaEQsd0dBQXdHO1FBQ3hHLHdHQUF3RztRQUN4RyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNmLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELDhCQUE4QixDQUFDLEtBQWEsRUFBRSxJQUFzQjtRQUNsRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7SUFDbkQsQ0FBQzs7MkdBOVFVLGNBQWM7K0ZBQWQsY0FBYyxvZUNkM0IsaTZJQTBHQTsyRkQ1RmEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07OEJBUXRDLElBQUk7c0JBQVosS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxPQUFPO3NCQUFmLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBS0kseUJBQXlCO3NCQUFsQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVJdGVtLCBJbnB1dENvbnRyb2xUeXBlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9mb3JtJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJdFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi8uLi92YWxpZGF0b3JzL2l0LXZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBpc1RydWVCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ib29sZWFuLWlucHV0JztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpdC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2lucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIElucHV0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGb3JtQ29tcG9uZW50PHN0cmluZyB8IG51bWJlcj4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgdHlwZVxuICAgKiBAZGVmYXVsdCB0ZXh0XG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBJbnB1dENvbnRyb2xUeXBlID0gJ3RleHQnO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgcGxhY2Vob2xkZXJcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogVGhlIGlucHV0IGRlc2NyaXB0aW9uXG4gICAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVG8gcHJldmVudCBtb2RpZmljYXRpb24gb2YgdGhlIGNvbnRhaW5lZCB2YWx1ZS5cbiAgICogLSA8Yj5wbGFpbnRleHQ8L2I+OiBSZWFkb25seSBmaWVsZCBpbiB0aGUgZm9ybSBzdHlsaXplZCBhcyBwbGFpbiB0ZXh0XG4gICAqL1xuICBASW5wdXQoKSByZWFkb25seT86IEJvb2xlYW5JbnB1dCB8ICdwbGFpbnRleHQnO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4IGRhdGUgdmFsdWUgW1VzZWQgb25seSBpbiB0eXBlID0gJ2RhdGUnXVxuICAgKiBAZGVmYXVsdCAnOTk5OS0xMi0zMSdcbiAgICogQGV4YW1wbGUgJ3l5eXktbW0tZGQnXG4gICAqL1xuICBASW5wdXQoKSBtYXhEYXRlPzogc3RyaW5nID0gJzk5OTktMTItMzEnO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluIGRhdGUgdmFsdWUgW1VzZWQgb25seSBpbiB0eXBlID0gJ2RhdGUnXVxuICAgKiBAZXhhbXBsZSAneXl5eS1tbS1kZCdcbiAgICovXG4gIEBJbnB1dCgpIG1pbkRhdGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXggdmFsdWUgW1VzZWQgb25seSBpbiB0eXBlID0gJ251bWJlciddXG4gICAqL1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW4gdmFsdWUgW1VzZWQgb25seSBpbiB0eXBlID0gJ251bWJlciddXG4gICAqL1xuICBASW5wdXQoKSBtaW4/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGVwIHZhbHVlIFtVc2VkIG9ubHkgaW4gdHlwZSA9ICdudW1iZXInXVxuICAgKi9cbiAgQElucHV0KCkgc3RlcD86IG51bWJlciB8ICdhbnknO1xuXG4gIC8qKlxuICAgKiBJZiBpcyBhIGN1cnJlbmN5IG51bWJlciBbVXNlZCBvbmx5IGluIHR5cGUgPSAnbnVtYmVyJ11cbiAgICovXG4gIEBJbnB1dCgpIGN1cnJlbmN5PzogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBJZiBpcyBhIHBlcmNlbnRhZ2UgbnVtYmVyIFtVc2VkIG9ubHkgaW4gdHlwZSA9ICdudW1iZXInXVxuICAgKi9cbiAgQElucHV0KCkgcGVyY2VudGFnZT86IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogVG8gbWFrZSB0aGUgbnVtZXJpYyBmaWVsZCBhdXRvbWF0aWNhbGx5IHJlc2l6ZSBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlIGNvbnRhaW5lZCBpbiBpdC4gW1VzZWQgb25seSBpbiB0eXBlID0gJ251bWJlciddXG4gICAqL1xuICBASW5wdXQoKSBhZGFwdGl2ZT86IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBsaXN0IG9mIHNlYXJjaGFibGUgZWxlbWVudHMgb24gd2hpY2ggdG8gYmFzZSB0aGUgaW5wdXQgYXV0b2NvbXBsZXRlIHN5c3RlbSBbT3B0aW9uYWwuIFVzZWQgb25seSBpbiB0eXBlID0gJ3NlYXJjaCddXG4gICAqIElmIHlvdSBuZWVkIHRvIHJldHJpZXZlIGl0ZW1zIHZpYSBBUEksIGNhbiBwYXNzIGEgZnVuY3Rpb24gb2YgT2JzZXJ2YWJsZVxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZURhdGE/OiBBcnJheTxBdXRvY29tcGxldGVJdGVtPiB8ICgoc2VhcmNoPzogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPEFycmF5PEF1dG9jb21wbGV0ZUl0ZW0+Pik7XG5cbiAgLyoqXG4gICAqIFRpbWUgc3BhbiBbbXNdIGhhcyBwYXNzZWQgd2l0aG91dCBhbm90aGVyIHNvdXJjZSBlbWlzc2lvbiwgdG8gZGVsYXkgZGF0YSBmaWx0ZXJpbmcuXG4gICAqIFVzZWZ1bCB3aGVuIHRoZSB1c2VyIGlzIHR5cGluZyBtdWx0aXBsZSBsZXR0ZXJzXG4gICAqIEBkZWZhdWx0IDMwMCBbbXNdXG4gICAqL1xuICBASW5wdXQoKSBhdXRvY29tcGxldGVEZWJvdW5jZVRpbWU6IG51bWJlciA9IDMwMDtcblxuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgQXV0b2NvbXBsZXRlIEl0ZW0gaGFzIGJlZW4gc2VsZWN0ZWRcbiAgICovXG4gIEBPdXRwdXQoKSBhdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50OiBFdmVudEVtaXR0ZXI8QXV0b2NvbXBsZXRlSXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJvdGVjdGVkIHNob3dBdXRvY29tcGxldGlvbiA9IGZhbHNlO1xuXG5cbiAgZ2V0IGlzQWN0aXZlTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCghIXZhbHVlICYmIHZhbHVlICE9PSAwKSB8fCB2YWx1ZSA9PT0gMCB8fCAhIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdudW1iZXInICYmIChpc1RydWVCb29sZWFuSW5wdXQodGhpcy5jdXJyZW5jeSkgfHwgaXNUcnVlQm9vbGVhbklucHV0KHRoaXMucGVyY2VudGFnZSkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50eXBlID09PSAnZGF0ZScgfHwgdGhpcy50eXBlID09PSAndGltZScgfHwgdGhpcy50eXBlID09PSAnY29sb3InO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlzIHJlYWRvbmx5IGZpZWxkXG4gICAqL1xuICBnZXQgaXNSZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSA9PT0gJ3BsYWludGV4dCcgfHwgaXNUcnVlQm9vbGVhbklucHV0KHRoaXMucmVhZG9ubHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgaW52YWxpZCBtZXNzYWdlIHN0cmluZyBmcm9tIFRyYW5zbGF0ZVNlcnZpY2VcbiAgICovXG4gIG92ZXJyaWRlIGdldCBpbnZhbGlkTWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdtaW4nKSAmJiB0aGlzLm1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMubWluLWludmFsaWQnLCB7XG4gICAgICAgIG1pbjogdGhpcy5taW5cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcignbWF4JykgJiYgdGhpcy5tYXgpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLm1heC1pbnZhbGlkJywge1xuICAgICAgICBtYXg6IHRoaXMubWF4XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSB7XG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuZ2V0RXJyb3IoJ21pbmxlbmd0aCcpO1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMubWluLWxlbmd0aC1pbnZhbGlkJywgeyBtaW46IGVycm9yLnJlcXVpcmVkTGVuZ3RoIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5nZXRFcnJvcignbWF4bGVuZ3RoJyk7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5tYXgtbGVuZ3RoLWludmFsaWQnLCB7IG1heDogZXJyb3IucmVxdWlyZWRMZW5ndGggfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdlbWFpbCcpIHx8IHRoaXMuaGFzRXJyb3IoJ2ludmFsaWRFbWFpbCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5lbWFpbC1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkVGVsJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnRlbC1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkVXJsJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnVybC1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkVGF4Q29kZScpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy50YXgtY29kZS1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkVmF0TnVtYmVyJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnZhdC1udW1iZXItaW52YWxpZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcignaW52YWxpZENhcCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5jYXAtaW52YWxpZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcignaW52YWxpZFJlZ2V4JykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnJlZ2V4LWludmFsaWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ3BhdHRlcm4nKSkge1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmdldEVycm9yKCdwYXR0ZXJuJyk7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5wYXR0ZXJuLWludmFsaWQnLCB7IHBhdHRlcm46IGVycm9yLnJlcXVpcmVkUGF0dGVybiB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuaW52YWxpZE1lc3NhZ2U7XG4gIH1cblxuICAvKiogT2JzZXJ2YWJsZSBkYSBjdWkgdmVuZ29ubyBlbWVzc2kgaSByaXN1bHRhdGkgZGVsbCdhdXRvIGNvbXBsZXRhbWVudG8gKi9cbiAgYXV0b2NvbXBsZXRlUmVzdWx0cyQ6IE9ic2VydmFibGU8e1xuICAgIHNlYXJjaGVkVmFsdWU6IHN0cmluZyxcbiAgICByZWxhdGVkRW50cmllczogQXJyYXk8QXV0b2NvbXBsZXRlSXRlbT5cbiAgfT4gPSBuZXcgT2JzZXJ2YWJsZSgpO1xuXG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IEFycmF5PFZhbGlkYXRvckZuPiA9IFtdO1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICBpZiAoaXNUcnVlQm9vbGVhbklucHV0KHRoaXMucGVyY2VudGFnZSkpIHtcbiAgICAgICAgICB0aGlzLm1pbiA9IHRoaXMubWluIHx8IDA7XG4gICAgICAgICAgdGhpcy5tYXggPSB0aGlzLm1heCB8fCAxMDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEeW5hbWljIG1pbi9tYXggdmFsaWRhdG9yc1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4gdGhpcy5taW4gPyBWYWxpZGF0b3JzLm1pbih0aGlzLm1pbikoY29udHJvbCkgOiBudWxsKTtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHRoaXMubWF4ID8gVmFsaWRhdG9ycy5tYXgodGhpcy5tYXgpKGNvbnRyb2wpIDogbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goSXRWYWxpZGF0b3JzLmVtYWlsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZWwnOlxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goSXRWYWxpZGF0b3JzLnRlbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKEl0VmFsaWRhdG9ycy51cmwpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLmFkZFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVSZXN1bHRzJCA9IHRoaXMuZ2V0QXV0b2NvbXBsZXRlUmVzdWx0cyQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmNyZW1lbnQgb3IgZGVjcmVhc2UgdGhlIGlucHV0IG51bWJlciB2YWx1ZSBvZiBzdGVwXG4gICAqIEBwYXJhbSBkZWNyZWFzZSB0cnVlIHRvIGRlY3JlYXNlIHZhbHVlXG4gICAqL1xuICBpbmNyZW1lbnROdW1iZXIoZGVjcmVhc2U6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0ZXAgPSAodGhpcy5zdGVwID09PSAnYW55JyA/IDEgOiAodGhpcy5zdGVwID8/IDEpKTtcbiAgICBsZXQgdmFsdWUgPSBOdW1iZXIodGhpcy5jb250cm9sLnZhbHVlKTtcbiAgICB2YWx1ZSA9IChpc05hTih2YWx1ZSkgPyAwIDogdmFsdWUpICsgKGRlY3JlYXNlID8gLXN0ZXAgOiBzdGVwKTtcbiAgICB2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgKiAxZTEyKSAvIDFlMTI7IC8vIHByZXZlbnQganMgZGVjaW1hbCBlcnJvclxuXG4gICAgaWYgKHRoaXMubWluICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgdmFsdWUgPSB0aGlzLm1pbjtcbiAgICB9IGVsc2UgaWYgKHRoaXMubWF4ICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgPiB0aGlzLm1heCkge1xuICAgICAgdmFsdWUgPSB0aGlzLm1heDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBhdXRvY29tcGxldGUgbGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBdXRvY29tcGxldGVSZXN1bHRzJCgpOiBPYnNlcnZhYmxlPHsgc2VhcmNoZWRWYWx1ZTogc3RyaW5nLCByZWxhdGVkRW50cmllczogQXJyYXk8QXV0b2NvbXBsZXRlSXRlbT4gfT4ge1xuICAgIGlmICh0aGlzLnR5cGUgIT09ICdzZWFyY2gnKSB7XG4gICAgICByZXR1cm4gb2YoeyBzZWFyY2hlZFZhbHVlOiAnJywgcmVsYXRlZEVudHJpZXM6IFtdIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuYXV0b2NvbXBsZXRlRGVib3VuY2VUaW1lKSwgLy8gRGVsYXkgZmlsdGVyIGRhdGEgYWZ0ZXIgdGltZSBzcGFuIGhhcyBwYXNzZWQgd2l0aG91dCBhbm90aGVyIHNvdXJjZSBlbWlzc2lvbiwgdXNlZnVsIHdoZW4gdGhlIHVzZXIgaXMgdHlwaW5nIG11bHRpcGxlIGxldHRlcnNcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIC8vIE9ubHkgaWYgc2VhcmNoVmFsdWUgaXMgZGlzdGluY3QgaW4gY29tcGFyaXNvbiB0byB0aGUgbGFzdCB2YWx1ZVxuICAgICAgc3dpdGNoTWFwKHNlYXJjaGVkVmFsdWUgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuYXV0b2NvbXBsZXRlRGF0YSkge1xuICAgICAgICAgIHJldHVybiBvZih7IHNlYXJjaGVkVmFsdWUsIHJlbGF0ZWRFbnRyaWVzOiBbXSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGF1dG9Db21wbGV0ZURhdGEkID0gQXJyYXkuaXNBcnJheSh0aGlzLmF1dG9jb21wbGV0ZURhdGEpID8gb2YodGhpcy5hdXRvY29tcGxldGVEYXRhKSA6IHRoaXMuYXV0b2NvbXBsZXRlRGF0YShzZWFyY2hlZFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGF1dG9Db21wbGV0ZURhdGEkLnBpcGUoXG4gICAgICAgICAgbWFwKGF1dG9jb21wbGV0ZURhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKCFzZWFyY2hlZFZhbHVlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IHNlYXJjaGVkVmFsdWUsIHJlbGF0ZWRFbnRyaWVzOiBbXSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsb3dlcmNhc2VWYWx1ZSA9IHNlYXJjaGVkVmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRFbnRyaWVzID0gYXV0b2NvbXBsZXRlRGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLnZhbHVlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyY2FzZVZhbHVlKSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7IHNlYXJjaGVkVmFsdWUsIHJlbGF0ZWRFbnRyaWVzIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uRW50cnlDbGljayhlbnRyeTogQXV0b2NvbXBsZXRlSXRlbSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gU2Ugbm9uIMOoIHN0YXRvIGRlZmluaXRvIHVuIGxpbmsgYXNzb2NpYXRvIGFsbCdlbGVtZW50byBkZWxsJ2F1dG9jb21wbGV0ZSwgcHJvYmFiaWxtZW50ZSBpbCBkZXNpZGVyYXRhXG4gICAgLy8gbm9uIMOoIGVmZmV0dHVhcmUgbGEgbmF2aWdhemlvbmUgYWwgZGVmYXVsdCAnIycsIHBlcnRhbnRvIGluIHRhbCBjYXNvIG1lZ2xpbyBhbm51bGxhcmUgbGEgbmF2aWdhemlvbmUuXG4gICAgaWYgKCFlbnRyeS5saW5rKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudC5uZXh0KGVudHJ5KTtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoZW50cnkudmFsdWUpO1xuICAgIHRoaXMuc2hvd0F1dG9jb21wbGV0aW9uID0gZmFsc2U7XG4gIH1cblxuICBhdXRvY29tcGxldGVJdGVtVHJhY2tCeVZhbHVlRm4oaW5kZXg6IG51bWJlciwgaXRlbTogQXV0b2NvbXBsZXRlSXRlbSkge1xuICAgIHJldHVybiBpdGVtLnZhbHVlO1xuICB9XG5cbiAgb25LZXlEb3duKCkge1xuICAgIHRoaXMuc2hvd0F1dG9jb21wbGV0aW9uID0gdGhpcy50eXBlID09PSAnc2VhcmNoJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXByZXBlbmRcIiBbY2xhc3MuZC1ub25lXT1cIiFwcmVwZW5kVGV4dC5oYXNDaGlsZE5vZGVzKCkgJiYgIXByZXBlbmQuaGFzQ2hpbGROb2RlcygpXCI+XG4gICAgICA8ZGl2ICNwcmVwZW5kPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcHJlcGVuZF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCIgI3ByZXBlbmRUZXh0PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcHJlcGVuZFRleHRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIFtmb3JdPVwiaWRcIiBbY2xhc3MuYWN0aXZlXT1cImlzQWN0aXZlTGFiZWxcIlxuICAgICAgICAgICBbY2xhc3MuZW1wdHktcHJlcGVuZC1sYWJlbF09XCIhcHJlcGVuZFRleHQuaGFzQ2hpbGROb2RlcygpICYmICFwcmVwZW5kLmhhc0NoaWxkTm9kZXMoKVwiPlxuICAgICAge3tsYWJlbH19XG4gICAgPC9sYWJlbD5cblxuICAgIDxzcGFuICpuZ0lmPVwidHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgIGNsYXNzPVwiaW5wdXQtbnVtYmVyXCJcbiAgICAgICAgICBbY2xhc3MuaW5wdXQtbnVtYmVyLWN1cnJlbmN5XT1cImN1cnJlbmN5XCJcbiAgICAgICAgICBbY2xhc3MuaW5wdXQtbnVtYmVyLXBlcmNlbnRhZ2VdPVwicGVyY2VudGFnZVwiXG4gICAgICAgICAgW2NsYXNzLmlucHV0LW51bWJlci1hZGFwdGl2ZV09XCJhZGFwdGl2ZVwiPlxuXG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICBbc3RlcF09XCJzdGVwID8/IG51bGxcIlxuICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImlzSW52YWxpZFwiXG4gICAgICAgICAgICAgW2NsYXNzLmlzLXZhbGlkXT1cImlzVmFsaWRcIlxuICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgIFtyZWFkb25seV09XCJpc1JlYWRvbmx5XCJcbiAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkICsgJy1kZXNjcmlwdGlvbidcIlxuICAgICAgICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiIC8+XG5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaW5wdXQtbnVtYmVyLWFkZFwiIChjbGljayk9XCJpbmNyZW1lbnROdW1iZXIoKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPnt7J2l0LmZvcm0uaW5jcmVhc2UtdmFsdWUnfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaW5wdXQtbnVtYmVyLXN1YlwiIChjbGljayk9XCJpbmNyZW1lbnROdW1iZXIodHJ1ZSlcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eydpdC5mb3JtLmRlY3JlYXNlLXZhbHVlJ319PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9zcGFuPlxuXG4gICAgPGlucHV0ICpuZ0lmPVwidHlwZSAhPT0gJ251bWJlcidcIlxuICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICAgW21heF09XCJ0eXBlID09PSAnZGF0ZScgPyBtYXhEYXRlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgW21pbl09XCJ0eXBlID09PSAnZGF0ZScgPyBtaW5EYXRlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgW2NsYXNzLmZvcm0tY29udHJvbF09XCJyZWFkb25seSAhPT0gJ3BsYWludGV4dCdcIlxuICAgICAgICAgICBbY2xhc3MuZm9ybS1jb250cm9sLXBsYWludGV4dF09XCJyZWFkb25seSA9PT0gJ3BsYWludGV4dCdcIlxuICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJpc0ludmFsaWRcIlxuICAgICAgICAgICBbY2xhc3MuaXMtdmFsaWRdPVwiaXNWYWxpZFwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZG9ubHlcIlxuICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oKVwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWQgKyAnLWRlc2NyaXB0aW9uJ1wiXG4gICAgICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FwcGVuZF1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthcHBlbmRUZXh0XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8c21hbGwgKm5nSWY9XCJkZXNjcmlwdGlvblwiIFtpZF09XCJpZCArICctZGVzY3JpcHRpb24nXCIgY2xhc3M9XCJmb3JtLXRleHRcIj57e2Rlc2NyaXB0aW9ufX08L3NtYWxsPlxuXG4gIDwhLS0gSU5JWklPIGdlc3Rpb25lIEFVVE9DT01QTEVUQU1FTlRPIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ3NlYXJjaCdcIj5cbiAgICA8IS0tIEljb25hIGxlbnRlIHBlciBhdXRvY29tcGxldGFtZW50byAtLT5cbiAgICA8c3BhbiBjbGFzcz1cImF1dG9jb21wbGV0ZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8aXQtaWNvbiBuYW1lPVwic2VhcmNoXCIgc2l6ZT1cInNtXCI+PC9pdC1pY29uPlxuICAgIDwvc3Bhbj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdXRvY29tcGxldGVSZXN1bHRzJCB8IGFzeW5jIGFzIGF1dG9jb21wbGV0ZVwiPlxuICAgICAgPCEtLSBMaXN0YSBkaSBhdXRvY29tcGxldGFtZW50byAtLT5cbiAgICAgIDx1bCBjbGFzcz1cImF1dG9jb21wbGV0ZS1saXN0XCIgW2NsYXNzLmF1dG9jb21wbGV0ZS1saXN0LXNob3ddPVwiYXV0b2NvbXBsZXRlLnJlbGF0ZWRFbnRyaWVzPy5sZW5ndGggJiYgc2hvd0F1dG9jb21wbGV0aW9uXCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZW50cnkgb2YgYXV0b2NvbXBsZXRlLnJlbGF0ZWRFbnRyaWVzOyB0cmFja0J5OiBhdXRvY29tcGxldGVJdGVtVHJhY2tCeVZhbHVlRm5cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRW50cnlDbGljayhlbnRyeSwgJGV2ZW50KVwiPlxuICAgICAgICAgIDxhIFtocmVmXT1cImVudHJ5LmxpbmtcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhdXRvY29tcGxldGVJdGVtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNhdXRvY29tcGxldGVJdGVtVGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyIHNpemUtc21cIiAqbmdJZj1cImVudHJ5LmF2YXRhclNyY1BhdGhcIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImVudHJ5LmF2YXRhclNyY1BhdGhcIiBbYWx0XT1cImVudHJ5LmF2YXRhckFsdFRleHRcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGl0LWljb24gKm5nSWY9XCJlbnRyeS5pY29uXCIgW25hbWVdPVwiZW50cnkuaWNvblwiIHNpemU9XCJzbVwiPjwvaXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXV0b2NvbXBsZXRlLWxpc3QtdGV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJlbnRyeS52YWx1ZSB8IG1hcmtNYXRjaGluZ1RleHQ6IGF1dG9jb21wbGV0ZS5zZWFyY2hlZFZhbHVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPGVtICpuZ0lmPVwiZW50cnkubGFiZWxcIj57e2VudHJ5LmxhYmVsfX08L2VtPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDwhLS0gRklORSBnZXN0aW9uZSBBVVRPQ09NUExFVEFNRU5UTyAtLT5cblxuICA8ZGl2ICpuZ0lmPVwiaXNJbnZhbGlkXCIgY2xhc3M9XCJmb3JtLWZlZWRiYWNrIGp1c3QtdmFsaWRhdGUtZXJyb3ItbGFiZWxcIiBbaWRdPVwiaWQgKyAnLWVycm9yJ1wiPlxuICAgIDxkaXYgI2N1c3RvbUVycm9yPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Vycm9yXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbUVycm9yLmhhc0NoaWxkTm9kZXMoKVwiPnt7aW52YWxpZE1lc3NhZ2UgfCBhc3luY319PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -121,10 +121,10 @@ export class PasswordInputComponent extends AbstractFormComponent {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
PasswordInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PasswordInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
124
|
-
PasswordInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: PasswordInputComponent, selector: "it-password-input", inputs: { required: "required", minLength: "minLength", useNumber: "useNumber", useCapitalCase: "useCapitalCase", useSmallCase: "useSmallCase", useSpecialCharacters: "useSpecialCharacters", placeholder: "placeholder", description: "description", showStrengthMeter: "showStrengthMeter", confirmPasswordField: "confirmPasswordField" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{label}}</label>\n <input [id]=\"id\" #input\n type=\"password\"\n class=\"form-control input-password\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [attr.aria-describedby]=\"id + '-description'\"\n [autocomplete]=\"isConfirmPasswordField ? 'off' : undefined\">\n\n <span class=\"password-icon\" aria-hidden=\"true\">\n <it-icon name=\"password-visible\" size=\"sm\" class=\"password-icon-visible\"></it-icon>\n <it-icon name=\"password-invisible\" size=\"sm\" class=\"password-icon-invisible d-none\"></it-icon>\n </span>\n\n <div *ngIf=\"isInvalid\" [id]=\"id + '-error'\" class=\"form-feedback just-validate-error-label\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n\n <small *ngIf=\"description !== undefined && !isStrengthMeter\" [id]=\"id + '-description'\" class=\"form-text\">\n {{description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <small class=\"password-caps form-text text-warning position-absolute bg-white w-100\">\n {{'it.form.caps-inserted' | translate}}\n </small>\n\n <div *ngIf=\"isStrengthMeter\" class=\"password-strength-meter\">\n <small [id]=\"id + '-description'\" class=\"form-text text-muted\"\n [attr.data-bs-short-pass]=\"'it.form.password-strength-meter.password-short' | translate\"\n [attr.data-bs-bad-pas]=\"'it.form.password-strength-meter.password-bad' | translate\"\n [attr.data-bs-good-pass]=\"'it.form.password-strength-meter.password-good' | translate\"\n [attr.data-bs-strong-pass]=\"'it.form.password-strength-meter.password-strong' | translate\">\n {{description !== undefined && description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <div class=\"password-meter progress rounded-0 position-absolute\">\n <div class=\"row position-absolute w-100 m-0\">\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n </div>\n <div class=\"progress-bar bg-muted\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n </div>\n</div>\n", styles: [".form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
124
|
+
PasswordInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: PasswordInputComponent, selector: "it-password-input", inputs: { required: "required", minLength: "minLength", useNumber: "useNumber", useCapitalCase: "useCapitalCase", useSmallCase: "useSmallCase", useSpecialCharacters: "useSpecialCharacters", placeholder: "placeholder", description: "description", showStrengthMeter: "showStrengthMeter", confirmPasswordField: "confirmPasswordField" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{label}}</label>\n <input [id]=\"id\" #input\n type=\"password\"\n class=\"form-control input-password\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [attr.aria-describedby]=\"id + '-description'\"\n [autocomplete]=\"isConfirmPasswordField ? 'off' : undefined\">\n\n <span class=\"password-icon\" aria-hidden=\"true\">\n <it-icon name=\"password-visible\" size=\"sm\" class=\"password-icon-visible\"></it-icon>\n <it-icon name=\"password-invisible\" size=\"sm\" class=\"password-icon-invisible d-none\"></it-icon>\n </span>\n\n <div *ngIf=\"isInvalid\" [id]=\"id + '-error'\" class=\"form-feedback just-validate-error-label\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n\n <small *ngIf=\"description !== undefined && !isStrengthMeter\" [id]=\"id + '-description'\" class=\"form-text\">\n {{description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <small class=\"password-caps form-text text-warning position-absolute bg-white w-100\">\n {{'it.form.caps-inserted' | translate}}\n </small>\n\n <div *ngIf=\"isStrengthMeter\" class=\"password-strength-meter\">\n <small [id]=\"id + '-description'\" class=\"form-text text-muted\"\n [attr.data-bs-short-pass]=\"'it.form.password-strength-meter.password-short' | translate\"\n [attr.data-bs-bad-pas]=\"'it.form.password-strength-meter.password-bad' | translate\"\n [attr.data-bs-good-pass]=\"'it.form.password-strength-meter.password-good' | translate\"\n [attr.data-bs-strong-pass]=\"'it.form.password-strength-meter.password-strong' | translate\">\n {{description !== undefined && description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <div class=\"password-meter progress rounded-0 position-absolute\">\n <div class=\"row position-absolute w-100 m-0\">\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n </div>\n <div class=\"progress-bar bg-muted\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n </div>\n</div>\n", styles: [".form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}.form-group label:not(.active):has(+ input:-webkit-autofill){transform:translateY(-75%)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.IconComponent, selector: "it-icon[name]", inputs: ["name", "size", "color", "padded", "svgClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
125
125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: PasswordInputComponent, decorators: [{
|
|
126
126
|
type: Component,
|
|
127
|
-
args: [{ selector: 'it-password-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{label}}</label>\n <input [id]=\"id\" #input\n type=\"password\"\n class=\"form-control input-password\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [attr.aria-describedby]=\"id + '-description'\"\n [autocomplete]=\"isConfirmPasswordField ? 'off' : undefined\">\n\n <span class=\"password-icon\" aria-hidden=\"true\">\n <it-icon name=\"password-visible\" size=\"sm\" class=\"password-icon-visible\"></it-icon>\n <it-icon name=\"password-invisible\" size=\"sm\" class=\"password-icon-invisible d-none\"></it-icon>\n </span>\n\n <div *ngIf=\"isInvalid\" [id]=\"id + '-error'\" class=\"form-feedback just-validate-error-label\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n\n <small *ngIf=\"description !== undefined && !isStrengthMeter\" [id]=\"id + '-description'\" class=\"form-text\">\n {{description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <small class=\"password-caps form-text text-warning position-absolute bg-white w-100\">\n {{'it.form.caps-inserted' | translate}}\n </small>\n\n <div *ngIf=\"isStrengthMeter\" class=\"password-strength-meter\">\n <small [id]=\"id + '-description'\" class=\"form-text text-muted\"\n [attr.data-bs-short-pass]=\"'it.form.password-strength-meter.password-short' | translate\"\n [attr.data-bs-bad-pas]=\"'it.form.password-strength-meter.password-bad' | translate\"\n [attr.data-bs-good-pass]=\"'it.form.password-strength-meter.password-good' | translate\"\n [attr.data-bs-strong-pass]=\"'it.form.password-strength-meter.password-strong' | translate\">\n {{description !== undefined && description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <div class=\"password-meter progress rounded-0 position-absolute\">\n <div class=\"row position-absolute w-100 m-0\">\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n </div>\n <div class=\"progress-bar bg-muted\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n </div>\n</div>\n", styles: [".form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}\n"] }]
|
|
127
|
+
args: [{ selector: 'it-password-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\" [class.active]=\"!!control.value || !!placeholder\">{{label}}</label>\n <input [id]=\"id\" #input\n type=\"password\"\n class=\"form-control input-password\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [attr.aria-describedby]=\"id + '-description'\"\n [autocomplete]=\"isConfirmPasswordField ? 'off' : undefined\">\n\n <span class=\"password-icon\" aria-hidden=\"true\">\n <it-icon name=\"password-visible\" size=\"sm\" class=\"password-icon-visible\"></it-icon>\n <it-icon name=\"password-invisible\" size=\"sm\" class=\"password-icon-invisible d-none\"></it-icon>\n </span>\n\n <div *ngIf=\"isInvalid\" [id]=\"id + '-error'\" class=\"form-feedback just-validate-error-label\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customError.hasChildNodes()\">{{invalidMessage | async}}</ng-container>\n </div>\n\n <small *ngIf=\"description !== undefined && !isStrengthMeter\" [id]=\"id + '-description'\" class=\"form-text\">\n {{description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <small class=\"password-caps form-text text-warning position-absolute bg-white w-100\">\n {{'it.form.caps-inserted' | translate}}\n </small>\n\n <div *ngIf=\"isStrengthMeter\" class=\"password-strength-meter\">\n <small [id]=\"id + '-description'\" class=\"form-text text-muted\"\n [attr.data-bs-short-pass]=\"'it.form.password-strength-meter.password-short' | translate\"\n [attr.data-bs-bad-pas]=\"'it.form.password-strength-meter.password-bad' | translate\"\n [attr.data-bs-good-pass]=\"'it.form.password-strength-meter.password-good' | translate\"\n [attr.data-bs-strong-pass]=\"'it.form.password-strength-meter.password-strong' | translate\">\n {{description !== undefined && description !== true ? description : (strengthMeterDescription | async)}}\n </small>\n\n <div class=\"password-meter progress rounded-0 position-absolute\">\n <div class=\"row position-absolute w-100 m-0\">\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n <div class=\"col-3 border-start border-end border-white\"></div>\n </div>\n <div class=\"progress-bar bg-muted\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n </div>\n</div>\n", styles: [".form-group input:focus:not(.focus--mouse){box-shadow:inherit!important;border-color:inherit!important}.form-group label:not(.active):has(+ input:-webkit-autofill){transform:translateY(-75%)}\n"] }]
|
|
128
128
|
}], propDecorators: { required: [{
|
|
129
129
|
type: Input
|
|
130
130
|
}], minLength: [{
|
|
@@ -29,7 +29,7 @@ export class ErrorPageComponent {
|
|
|
29
29
|
this.errorCode = data['errorCode']; // Get errorCode from route data
|
|
30
30
|
}
|
|
31
31
|
if (data['showErrorCode'] !== undefined) {
|
|
32
|
-
this.
|
|
32
|
+
this.showErrorCode = data['showErrorCode']; // Get showErrorCode from route data
|
|
33
33
|
}
|
|
34
34
|
if (!this.errorTitle && data['errorTitle']) {
|
|
35
35
|
this.errorTitle = data['errorTitle']; // Get errorTitle from route data
|
|
@@ -76,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
76
76
|
}], showHomeButton: [{
|
|
77
77
|
type: Input
|
|
78
78
|
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL3V0aWxzL2Vycm9yLXBhZ2UvZXJyb3ItcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL3V0aWxzL2Vycm9yLXBhZ2UvZXJyb3ItcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQWdCLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7QUFPaEYsTUFBTSxPQUFPLGtCQUFrQjtJQXVDN0IsWUFDbUIsS0FBcUI7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFqQ3hDOzs7V0FHRztRQUNNLGtCQUFhLEdBQWtCLElBQUksQ0FBQztRQWdCN0M7OztXQUdHO1FBQ00sbUJBQWMsR0FBa0IsSUFBSSxDQUFDO1FBRTlDOzs7V0FHRztRQUNNLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQUs1QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdDQUFnQzthQUNyRTtZQUNELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBRSxvQ0FBb0M7YUFDbEY7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUUsaUNBQWlDO2FBQ3pFO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUUsdUNBQXVDO2FBQzNGO1lBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxTQUFTLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBRSxxQ0FBcUM7YUFDckY7WUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFFLHFDQUFxQzthQUNyRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLENBQUM7SUFDcEYsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7OytHQTlFVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw2UENUL0IscXBDQTJCQTsyRkRsQmEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGVBQWUsbUJBRVIsdUJBQXVCLENBQUMsTUFBTTtxR0FPdEMsU0FBUztzQkFBakIsS0FBSztnQkFNRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGlzVHJ1ZUJvb2xlYW5JbnB1dCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2Jvb2xlYW4taW5wdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpdC1lcnJvci1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Vycm9yLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBFcnJvclBhZ2VDb21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBUaGUgZXJyb3IgY29kZSB0byBzaG93XG4gICAqL1xuICBASW5wdXQoKSBlcnJvckNvZGU/OiBudW1iZXIgfCA0MDQgfCA0MDMgfCA1MDA7XG5cbiAgLyoqXG4gICAqIFNob3cvSGlkZSBlcnJvciBjb2RlXG4gICAqIEBkZWZhdWx0IHRydWUgLSBzaG93XG4gICAqL1xuICBASW5wdXQoKSBzaG93RXJyb3JDb2RlPzogQm9vbGVhbklucHV0ID0gdHJ1ZTtcblxuICAvKipcbiAgICogQ3VzdG9tIGVycm9yIHRpdGxlXG4gICAqIC0gSWYgc2V0IGl0IHdpbGwgYmUgZGlzcGxheWVkIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgdGl0bGUuXG4gICAqIC0gSXQgaXMgcG9zc2libGUgdG8gdXNlIGkxOG4ga2V5c1xuICAgKi9cbiAgQElucHV0KCkgZXJyb3JUaXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIGVycm9yIGRlc2NyaXB0aW9uXG4gICAqIC0gSWYgc2V0IGl0IHdpbGwgYmUgZGlzcGxheWVkIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgZGVzY3JpcHRpb24uXG4gICAqIC0gSXQgaXMgcG9zc2libGUgdG8gdXNlIGkxOG4ga2V5c1xuICAgKi9cbiAgQElucHV0KCkgZXJyb3JEZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogU2hvdy9IaWRlIGJhY2sgYnV0dG9uXG4gICAqIEBkZWZhdWx0IHRydWUgLSBzaG93XG4gICAqL1xuICBASW5wdXQoKSBzaG93QmFja0J1dHRvbj86IEJvb2xlYW5JbnB1dCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNob3cvSGlkZSBob21lIGJ1dHRvblxuICAgKiBAZGVmYXVsdCB0cnVlIC0gc2hvd1xuICAgKi9cbiAgQElucHV0KCkgc2hvd0hvbWVCdXR0b24/OiBCb29sZWFuSW5wdXQgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZXJyb3JDb2RlICYmIGRhdGFbJ2Vycm9yQ29kZSddKSB7XG4gICAgICAgIHRoaXMuZXJyb3JDb2RlID0gZGF0YVsnZXJyb3JDb2RlJ107IC8vIEdldCBlcnJvckNvZGUgZnJvbSByb3V0ZSBkYXRhXG4gICAgICB9XG4gICAgICBpZiAoZGF0YVsnc2hvd0Vycm9yQ29kZSddICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3JDb2RlID0gZGF0YVsnc2hvd0Vycm9yQ29kZSddOyAgLy8gR2V0IHNob3dFcnJvckNvZGUgZnJvbSByb3V0ZSBkYXRhXG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZXJyb3JUaXRsZSAmJiBkYXRhWydlcnJvclRpdGxlJ10pIHtcbiAgICAgICAgdGhpcy5lcnJvclRpdGxlID0gZGF0YVsnZXJyb3JUaXRsZSddOyAgLy8gR2V0IGVycm9yVGl0bGUgZnJvbSByb3V0ZSBkYXRhXG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZXJyb3JEZXNjcmlwdGlvbiAmJiBkYXRhWydlcnJvckRlc2NyaXB0aW9uJ10pIHtcbiAgICAgICAgdGhpcy5lcnJvckRlc2NyaXB0aW9uID0gZGF0YVsnZXJyb3JEZXNjcmlwdGlvbiddOyAgLy8gR2V0IGVycm9yRGVzY3JpcHRpb24gZnJvbSByb3V0ZSBkYXRhXG4gICAgICB9XG4gICAgICBpZiAoZGF0YVsnc2hvd0JhY2tCdXR0b24nXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2hvd0JhY2tCdXR0b24gPSBkYXRhWydzaG93QmFja0J1dHRvbiddOyAgLy8gR2V0IHNob3dCYWNrQnV0dG9uIGZyb20gcm91dGUgZGF0YVxuICAgICAgfVxuICAgICAgaWYgKGRhdGFbJ3Nob3dIb21lQnV0dG9uJ10gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNob3dIb21lQnV0dG9uID0gZGF0YVsnc2hvd0hvbWVCdXR0b24nXTsgIC8vIEdldCBzaG93SG9tZUJ1dHRvbiBmcm9tIHJvdXRlIGRhdGFcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpc0RlZmF1bHRFcnJvckNvZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JDb2RlID09PSA0MDQgfHwgdGhpcy5lcnJvckNvZGUgPT09IDQwMyB8fCB0aGlzLmVycm9yQ29kZSA9PT0gNTAwO1xuICB9XG5cbiAgZ2V0IGlzU2hvd0Vycm9yQ29kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMuc2hvd0Vycm9yQ29kZSk7XG4gIH1cblxuICBnZXQgaXNTaG93QmFja0J1dHRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNUcnVlQm9vbGVhbklucHV0KHRoaXMuc2hvd0JhY2tCdXR0b24pO1xuICB9XG5cbiAgZ2V0IGlzU2hvd0hvbWVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVHJ1ZUJvb2xlYW5JbnB1dCh0aGlzLnNob3dIb21lQnV0dG9uKTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyIHRleHQtY2VudGVyIG10LTVcIj5cbiAgPGgxICpuZ0lmPVwiZXJyb3JDb2RlICYmIGlzU2hvd0Vycm9yQ29kZVwiPnt7ZXJyb3JDb2RlfX08L2gxPlxuICA8aDI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlcnJvclRpdGxlICYmIGlzRGVmYXVsdEVycm9yQ29kZTsgZWxzZSBjdXN0b21UaXRsZVwiPlxuICAgICAge3snaXQudXRpbHMuZXJyb3ItcGFnZS4nICsgZXJyb3JDb2RlICsgJy50aXRsZScgfCB0cmFuc2xhdGV9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tVGl0bGU+e3soZXJyb3JUaXRsZSB8fCAnaXQuZXJyb3JzLmdlbmVyaWMnKSB8IHRyYW5zbGF0ZX19PC9uZy10ZW1wbGF0ZT5cbiAgPC9oMj5cblxuICA8cCBjbGFzcz1cIm10LTMgdy03NSBteC1hdXRvXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCIhZXJyb3JEZXNjcmlwdGlvbiAmJiBpc0RlZmF1bHRFcnJvckNvZGU7IGVsc2UgY3VzdG9tRGVzY3JpcHRpb25cIj5cbiAgICAgIHt7J2l0LnV0aWxzLmVycm9yLXBhZ2UuJyArIGVycm9yQ29kZSArICcuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2N1c3RvbURlc2NyaXB0aW9uPlxuICAgICAge3soZXJyb3JEZXNjcmlwdGlvbiB8fCAnaXQuZXJyb3JzLmdlbmVyaWMtc3VwcG9ydC1tZXNzYWdlJykgfCB0cmFuc2xhdGV9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcD5cblxuICA8ZGl2IGNsYXNzPVwibXQtNVwiICpuZ0lmPVwiaXNTaG93QmFja0J1dHRvbiB8fCBpc1Nob3dIb21lQnV0dG9uXCI+XG4gICAgPGl0LWJhY2stYnV0dG9uICpuZ0lmPVwiaXNTaG93QmFja0J1dHRvblwiPjwvaXQtYmFjay1idXR0b24+XG4gICAgPGEgKm5nSWY9XCJpc1Nob3dIb21lQnV0dG9uXCIgaXRCdXR0b249XCJvdXRsaW5lLXByaW1hcnlcIiBjbGFzcz1cIm1zLTNcIiByb3V0ZXJMaW5rPVwiL1wiXG4gICAgICAgdGl0bGU9XCJ7eydpdC51dGlscy5lcnJvci1wYWdlLmdvLXRvLWhvbWVwYWdlJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICB7eydpdC51dGlscy5lcnJvci1wYWdlLmdvLXRvLWhvbWVwYWdlJyB8IHRyYW5zbGF0ZX19XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';
|
|
2
2
|
import { isTrueBooleanInput } from '../../../utils/boolean-input';
|
|
3
|
+
import { DESIGN_ANGULAR_KIT_CONFIG } from '../../../design-angular-kit-config';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../design-angular-kit-config";
|
|
4
6
|
export class IconComponent {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
}
|
|
5
10
|
/**
|
|
6
11
|
* Return the icon href
|
|
7
12
|
*/
|
|
8
13
|
get iconHref() {
|
|
9
|
-
return
|
|
14
|
+
return `${this.config.iconHref}#it-${this.name}`;
|
|
10
15
|
}
|
|
11
16
|
/**
|
|
12
17
|
* Return the icon class
|
|
@@ -28,12 +33,15 @@ export class IconComponent {
|
|
|
28
33
|
return iconClass;
|
|
29
34
|
}
|
|
30
35
|
}
|
|
31
|
-
IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
+
IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: IconComponent, deps: [{ token: DESIGN_ANGULAR_KIT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
37
|
IconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: IconComponent, selector: "it-icon[name]", inputs: { name: "name", size: "size", color: "color", padded: "padded", svgClass: "svgClass" }, ngImport: i0, template: "<svg [class]=\"iconClass\">\n <use [attr.href]=\"iconHref\" [attr.xlink:href]=\"iconHref\"></use>\n</svg>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: IconComponent, decorators: [{
|
|
34
39
|
type: Component,
|
|
35
40
|
args: [{ selector: 'it-icon[name]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg [class]=\"iconClass\">\n <use [attr.href]=\"iconHref\" [attr.xlink:href]=\"iconHref\"></use>\n</svg>\n" }]
|
|
36
|
-
}],
|
|
41
|
+
}], ctorParameters: function () { return [{ type: i1.DesignAngularKitConfig, decorators: [{
|
|
42
|
+
type: Inject,
|
|
43
|
+
args: [DESIGN_ANGULAR_KIT_CONFIG]
|
|
44
|
+
}] }]; }, propDecorators: { name: [{
|
|
37
45
|
type: Input
|
|
38
46
|
}], size: [{
|
|
39
47
|
type: Input
|
|
@@ -44,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
44
52
|
}], svgClass: [{
|
|
45
53
|
type: Input
|
|
46
54
|
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBMEIsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBT3ZHLE1BQU0sT0FBTyxhQUFhO0lBc0R4QixZQUNzRCxNQUE4QjtRQUE5QixXQUFNLEdBQU4sTUFBTSxDQUF3QjtJQUVwRixDQUFDO0lBOUJEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFNBQVM7UUFDWCxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsU0FBUyxJQUFJLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsU0FBUyxJQUFJLFNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsU0FBUyxJQUFJLGNBQWMsQ0FBQztTQUM3QjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixTQUFTLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOzswR0FwRFUsYUFBYSxrQkF1RGQseUJBQXlCOzhGQXZEeEIsYUFBYSxxSkNWMUIsOEdBR0E7MkZET2EsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxlQUFlLG1CQUVSLHVCQUF1QixDQUFDLE1BQU07OzBCQXlENUMsTUFBTTsyQkFBQyx5QkFBeUI7NENBbEQxQixJQUFJO3NCQUFaLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEljb25Db2xvciwgSWNvbk5hbWUsIEljb25TaXplIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9pY29uJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgaXNUcnVlQm9vbGVhbklucHV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYm9vbGVhbi1pbnB1dCc7XG5pbXBvcnQgeyBERVNJR05fQU5HVUxBUl9LSVRfQ09ORklHLCBEZXNpZ25Bbmd1bGFyS2l0Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZGVzaWduLWFuZ3VsYXIta2l0LWNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2l0LWljb25bbmFtZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEljb25Db21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBuYW1lXG4gICAqL1xuICBASW5wdXQoKSBuYW1lITogSWNvbk5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBpY29uIHNpemVcbiAgICovXG4gIEBJbnB1dCgpIHNpemU/OiBJY29uU2l6ZTtcblxuICAvKipcbiAgICogVGhlIGljb24gY29sb3JcbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yPzogSWNvbkNvbG9yO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBwYWRkaW5nIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgc3Vycm91bmRpbmcgaWNvbi5cbiAgICovXG4gIEBJbnB1dCgpIHBhZGRlZD86IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogQ3VzdG9tIGNsYXNzIG9mIHN2Z1xuICAgKi9cbiAgQElucHV0KCkgc3ZnQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgaWNvbiBocmVmXG4gICAqL1xuICBnZXQgaWNvbkhyZWYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb25maWcuaWNvbkhyZWZ9I2l0LSR7dGhpcy5uYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpY29uIGNsYXNzXG4gICAqL1xuICBnZXQgaWNvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgbGV0IGljb25DbGFzcyA9ICdpY29uJztcbiAgICBpZiAodGhpcy5zaXplKSB7XG4gICAgICBpY29uQ2xhc3MgKz0gYCBpY29uLSR7dGhpcy5zaXplfWA7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbG9yKSB7XG4gICAgICBpY29uQ2xhc3MgKz0gYCBpY29uLSR7dGhpcy5jb2xvcn1gO1xuICAgIH1cbiAgICBpZiAoaXNUcnVlQm9vbGVhbklucHV0KHRoaXMucGFkZGVkKSkge1xuICAgICAgaWNvbkNsYXNzICs9IGAgaWNvbi1wYWRkZWRgO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdmdDbGFzcykge1xuICAgICAgaWNvbkNsYXNzICs9IGAgJHt0aGlzLnN2Z0NsYXNzfWA7XG4gICAgfVxuICAgIHJldHVybiBpY29uQ2xhc3M7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERFU0lHTl9BTkdVTEFSX0tJVF9DT05GSUcpIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBEZXNpZ25Bbmd1bGFyS2l0Q29uZmlnXG4gICkge1xuICB9XG59XG4iLCI8c3ZnIFtjbGFzc109XCJpY29uQ2xhc3NcIj5cbiAgPHVzZSBbYXR0ci5ocmVmXT1cImljb25IcmVmXCIgW2F0dHIueGxpbms6aHJlZl09XCJpY29uSHJlZlwiPjwvdXNlPlxuPC9zdmc+XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const DESIGN_ANGULAR_KIT_CONFIG = new InjectionToken('DesignAngularKitConfig');
|
|
3
|
+
export class DesignAngularKitConfig {
|
|
4
|
+
constructor(nextInit) {
|
|
5
|
+
this.initConfig = nextInit;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The initial path in the `href` attribute in the `IconComponent` component
|
|
9
|
+
* @default './bootstrap-italia/dist/svg/sprites.svg'
|
|
10
|
+
*/
|
|
11
|
+
get iconHref() {
|
|
12
|
+
return this.initConfig?.iconHref || './bootstrap-italia/dist/svg/sprites.svg';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduLWFuZ3VsYXIta2l0LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2Rlc2lnbi1hbmd1bGFyLWtpdC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBeUIsd0JBQXdCLENBQUMsQ0FBQztBQUU5RyxNQUFNLE9BQU8sc0JBQXNCO0lBUWpDLFlBQVksUUFBK0I7UUFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUkseUNBQXlDLENBQUM7SUFDaEYsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlc2lnbkFuZ3VsYXJLaXRJbml0IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Rlc2lnbi1hbmd1bGFyLWtpdC1pbml0JztcblxuZXhwb3J0IGNvbnN0IERFU0lHTl9BTkdVTEFSX0tJVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGVzaWduQW5ndWxhcktpdENvbmZpZz4oJ0Rlc2lnbkFuZ3VsYXJLaXRDb25maWcnKTtcblxuZXhwb3J0IGNsYXNzIERlc2lnbkFuZ3VsYXJLaXRDb25maWcge1xuXG4gIC8qKlxuICAgKiBUaGUgaW5pdCBjb25maWdcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdENvbmZpZz86IERlc2lnbkFuZ3VsYXJLaXRJbml0O1xuXG4gIGNvbnN0cnVjdG9yKG5leHRJbml0PzogRGVzaWduQW5ndWxhcktpdEluaXQpIHtcbiAgICB0aGlzLmluaXRDb25maWcgPSBuZXh0SW5pdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBwYXRoIGluIHRoZSBgaHJlZmAgYXR0cmlidXRlIGluIHRoZSBgSWNvbkNvbXBvbmVudGAgY29tcG9uZW50XG4gICAqIEBkZWZhdWx0ICcuL2Jvb3RzdHJhcC1pdGFsaWEvZGlzdC9zdmcvc3ByaXRlcy5zdmcnXG4gICAqL1xuICBnZXQgaWNvbkhyZWYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbml0Q29uZmlnPy5pY29uSHJlZiB8fCAnLi9ib290c3RyYXAtaXRhbGlhL2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnJztcbiAgfVxuXG59XG4iXX0=
|