@seniorsistemas/angular-components 17.17.13 → 17.17.14
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/bundles/seniorsistemas-angular-components.umd.js +63 -51
- package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
- package/components/dynamic-form/configurations/fields/field.d.ts +2 -0
- package/components/info-sign/info-sign.directive.d.ts +1 -0
- package/components/tooltip/tooltip.directive.d.ts +2 -7
- package/esm2015/components/dynamic-form/components/dynamic-field/dynamic-field.component.js +2 -2
- package/esm2015/components/dynamic-form/components/field-label/field-label.component.js +2 -2
- package/esm2015/components/dynamic-form/components/fields/radio-button/radio-button-field.component.js +9 -2
- package/esm2015/components/dynamic-form/components/grid/row/row.component.js +2 -2
- package/esm2015/components/dynamic-form/configurations/fields/field.js +3 -2
- package/esm2015/components/info-sign/info-sign.directive.js +12 -5
- package/esm2015/components/tooltip/tooltip.directive.js +42 -40
- package/esm5/components/dynamic-form/components/dynamic-field/dynamic-field.component.js +2 -2
- package/esm5/components/dynamic-form/components/field-label/field-label.component.js +2 -2
- package/esm5/components/dynamic-form/components/fields/radio-button/radio-button-field.component.js +3 -3
- package/esm5/components/dynamic-form/components/grid/row/row.component.js +2 -2
- package/esm5/components/dynamic-form/configurations/fields/field.js +3 -2
- package/esm5/components/info-sign/info-sign.directive.js +12 -5
- package/esm5/components/tooltip/tooltip.directive.js +45 -40
- package/fesm2015/seniorsistemas-angular-components.js +66 -50
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +63 -51
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -29,10 +29,10 @@ var DynamicFieldComponent = /** @class */ (function () {
|
|
|
29
29
|
DynamicFieldComponent = __decorate([
|
|
30
30
|
Component({
|
|
31
31
|
selector: "s-dynamic-field",
|
|
32
|
-
template: "<div class=\"ui-fluid\" [formGroup]=\"form\">\n <div class=\"ui-g\">\n <ng-container *ngFor=\"let field of fields\">\n <div\n *ngIf=\"!field.visible || field.visible()\"\n [ngClass]=\"field.gridClass\">\n\n <ng-container *ngIf=\"field.label && field.type === FieldType.Custom\">\n <label\n *sInfoSign=\"
|
|
32
|
+
template: "<div class=\"ui-fluid\" [formGroup]=\"form\">\n <div class=\"ui-g\">\n <ng-container *ngFor=\"let field of fields\">\n <div\n *ngIf=\"!field.visible || field.visible()\"\n [ngClass]=\"field.gridClass\">\n\n <ng-container *ngIf=\"field.label && field.type === FieldType.Custom\">\n <label\n *sInfoSign=\"field.infoSign; displayTime: field.displayTimeInfoSign; useFocusedInputRef: field.useInfoSignFocusedInputRef\"\n [for]=\"field.name\"\n [ngClass]=\"{ required: field.required() }\"\n >\n {{ field.label }}\n </label>\n </ng-container>\n\n <ng-container\n *sDynamicForm=\"{\n id: id,\n config: field,\n group: form\n }\"\n ></ng-container>\n\n <s-control-errors\n [form]=\"form\"\n [control]=\"form.controls[field.name]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\"\n ></s-control-errors>\n\n <ng-container *ngIf=\"field.footer\">\n <ng-container *ngIf=\"field.footer.help\">\n <span\n *ngIf=\"\n field.footer.help.visible({\n abstractControl: form.controls[field.name],\n formField: field\n })\n \"\n style=\"color: #888b99\"\n >\n {{ field.footer.help.text }}\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"field.footer.link\">\n <div\n *ngIf=\"\n field.footer.link.visible({\n abstractControl: form.controls[field.name],\n formField: field\n })\n \"\n class=\"ui-g\"\n style=\"margin-left: -10px\"\n >\n <s-button\n [label]=\"field.footer.link.label\"\n priority=\"link\"\n (onClick)=\"\n field.footer.link.onClick({\n abstractControl:\n form.controls[field.name],\n formField: field\n })\n \"\n [auxiliary]=\"true\"\n ></s-button>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template\n *ngIf=\"field?.bottomTemplate\"\n [ngTemplateOutlet]=\"field.bottomTemplate\"\n ></ng-template>\n </div>\n </ng-container>\n </div>\n</div>\n"
|
|
33
33
|
})
|
|
34
34
|
], DynamicFieldComponent);
|
|
35
35
|
return DynamicFieldComponent;
|
|
36
36
|
}());
|
|
37
37
|
export { DynamicFieldComponent };
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29tcG9uZW50cy9keW5hbWljLWZpZWxkL2R5bmFtaWMtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFNNUQ7SUFBQTtRQWFJLGNBQVMsR0FBRyxTQUFTLENBQUM7SUFhMUIsQ0FBQztJQVhVLGdEQUFnQixHQUF2QixVQUF3QixhQUFrQjtRQUN0QyxJQUFJLGFBQWE7WUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO2dCQUNqQyxDQUFDLHVCQUFNLElBQUksQ0FBQyxhQUFhLEdBQUssYUFBYSxFQUFFLEVBQzdDLENBQUMsdUJBQU0sSUFBSSxDQUFDLGFBQWEsR0FBSyxhQUFhLENBQUUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVNLDBDQUFVLEdBQWpCLFVBQWtCLEtBQVU7UUFDeEIsT0FBTyxLQUFLLFlBQVksUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUF2QkQ7UUFEQyxLQUFLLEVBQUU7cURBQ1U7SUFHbEI7UUFEQyxLQUFLLEVBQUU7eURBQ21CO0lBRzNCO1FBREMsS0FBSyxFQUFFO3VEQUNlO0lBR3ZCO1FBREMsS0FBSyxFQUFFO2dFQUNtQjtJQVhsQixxQkFBcUI7UUFKakMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixtM0dBQTZDO1NBQ2hELENBQUM7T0FDVyxxQkFBcUIsQ0EwQmpDO0lBQUQsNEJBQUM7Q0FBQSxBQTFCRCxJQTBCQztTQTFCWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgRm9ybUZpZWxkIH0gZnJvbSBcIi4uLy4uL2NvbmZpZ3VyYXRpb25zL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCIuLi8uLi9jb25maWd1cmF0aW9ucy9maWVsZC10eXBlXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZHluYW1pYy1maWVsZFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZHluYW1pYy1maWVsZC5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljRmllbGRDb21wb25lbnQge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZHM6IEZvcm1GaWVsZFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXJyb3JNZXNzYWdlcz86IGFueTtcblxuICAgIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcblxuICAgIHB1YmxpYyBnZXRFcnJvck1lc3NhZ2VzKGVycm9yTWVzc2FnZXM6IGFueSkge1xuICAgICAgICBpZiAoZXJyb3JNZXNzYWdlcylcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRnVuY3Rpb24oZXJyb3JNZXNzYWdlcylcbiAgICAgICAgICAgICAgICA/IHsgLi4udGhpcy5lcnJvck1lc3NhZ2VzLCAuLi5lcnJvck1lc3NhZ2VzKCkgfVxuICAgICAgICAgICAgICAgIDogeyAuLi50aGlzLmVycm9yTWVzc2FnZXMsIC4uLmVycm9yTWVzc2FnZXMgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JNZXNzYWdlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGdW5jdGlvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -12,10 +12,10 @@ var FieldLabelComponent = /** @class */ (function () {
|
|
|
12
12
|
FieldLabelComponent = __decorate([
|
|
13
13
|
Component({
|
|
14
14
|
selector: 's-field-label',
|
|
15
|
-
template: "<!--\n Caso esse componente seja alterado/removido/movido,\n alterar a label no row.component.ts e dynamic-field.component.ts\n-->\n\n<span *ngIf=\"field.label\">\n <label\n *sInfoSign=\"field.infoSign; displayTime: field.displayTimeInfoSign; focusedInputRef: fieldContainerRef\"\n [for]=\"field.name\"\n [ngClass]=\"{ required: field.required() }\"\n >\n {{ field.label }}\n </label>\n</span>\n"
|
|
15
|
+
template: "<!--\n Caso esse componente seja alterado/removido/movido,\n alterar a label no row.component.ts e dynamic-field.component.ts\n-->\n\n<span *ngIf=\"field.label\">\n <label\n *sInfoSign=\"field.infoSign; displayTime: field.displayTimeInfoSign; focusedInputRef: fieldContainerRef; useFocusedInputRef: field.useInfoSignFocusedInputRef\"\n [for]=\"field.name\"\n [ngClass]=\"{ required: field.required() }\"\n >\n {{ field.label }}\n </label>\n</span>\n"
|
|
16
16
|
})
|
|
17
17
|
], FieldLabelComponent);
|
|
18
18
|
return FieldLabelComponent;
|
|
19
19
|
}());
|
|
20
20
|
export { FieldLabelComponent };
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2NvbXBvbmVudHMvZmllbGQtbGFiZWwvZmllbGQtbGFiZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVFqRDtJQUFBO0lBTUEsQ0FBQztJQUpHO1FBREMsS0FBSyxFQUFFO3NEQUNZO0lBR3BCO1FBREMsS0FBSyxFQUFFO2tFQUM4QjtJQUw3QixtQkFBbUI7UUFKL0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGVBQWU7WUFDekIsd2ZBQTJDO1NBQzlDLENBQUM7T0FDVyxtQkFBbUIsQ0FNL0I7SUFBRCwwQkFBQztDQUFBLEFBTkQsSUFNQztTQU5ZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gXCIuLi8uLi9jb25maWd1cmF0aW9ucy9maWVsZHMvZmllbGRcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWZpZWxkLWxhYmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmllbGQtbGFiZWwuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZExhYmVsQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZDogRmllbGQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZENvbnRhaW5lclJlZjogSFRNTEVsZW1lbnQ7XG59Il19
|
package/esm5/components/dynamic-form/components/fields/radio-button/radio-button-field.component.js
CHANGED
|
@@ -40,12 +40,12 @@ var RadioButtonComponent = /** @class */ (function () {
|
|
|
40
40
|
], RadioButtonComponent.prototype, "onFocus", void 0);
|
|
41
41
|
RadioButtonComponent = __decorate([
|
|
42
42
|
Component({
|
|
43
|
-
template: "<s-field-label [field]=\"field\"></s-field-label>\n\n<ng-container *ngIf=\"field.verticalAlignment;else horizontalAlignment\">\n <div class=\"ui-g\">\n <div\n *ngFor=\"let option of field.options; let i = index\"\n class=\"ui-g-12\">\n <ng-container\n [ngTemplateOutlet]=\"radioButton\"\n [ngTemplateOutletContext]=\"{option: option, index: i}\">\n </ng-container>\n </div>\n <s-button\n *ngIf=\"field.showClear && !field.required() && !formControl.disabled\"\n [label]=\"field.clearLabel || 'Clear selection'\"\n (onClick)=\"onClear()\"\n priority=\"link\">\n </s-button>\n </div>\n</ng-container>\n\n<ng-template #horizontalAlignment>\n <div class=\"ui-g\">\n <ng-container\n *ngFor=\"let option of field.options; let i = index\"\n [ngTemplateOutlet]=\"radioButton\"\n [ngTemplateOutletContext]=\"{option: option, index: i}\">\n </ng-container>\n </div>\n <s-button\n *ngIf=\"field.showClear && !field.required() && !formControl.disabled\"\n class=\"horizontal-clear-option\"\n [label]=\"field.clearLabel || 'Clear selection'\"\n (onClick)=\"onClear()\"\n priority=\"link\">\n </s-button>\n</ng-template>\n\n<ng-template #radioButton let-option=\"option\" let-i=\"index\">\n <p-radioButton\n [name]=\"field.name\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [formControl]=\"formControl\"\n [inputId]=\"(field.id || field.name) + '-' + i\"\n [sTooltip]=\"field.tooltip\"\n (onClick)=\"onClick.next($event)\"\n (onFocus)=\"onFocus.next($event)\"\n (onBlur)=\"field.onBlur ? field.onBlur($event) : null\">\n </p-radioButton>\n</ng-template>\n",
|
|
43
|
+
template: "<s-field-label [field]=\"field\"></s-field-label>\n\n<ng-container *ngIf=\"field.verticalAlignment;else horizontalAlignment\">\n <div class=\"ui-g\">\n <div\n *ngFor=\"let option of field.options; let i = index\"\n class=\"ui-g-12\">\n <ng-container\n [ngTemplateOutlet]=\"radioButton\"\n [ngTemplateOutletContext]=\"{option: option, index: i}\">\n </ng-container>\n </div>\n <s-button\n *ngIf=\"field.showClear && !field.required() && !formControl.disabled\"\n [label]=\"field.clearLabel || 'Clear selection'\"\n (onClick)=\"onClear()\"\n priority=\"link\">\n </s-button>\n </div>\n</ng-container>\n\n<ng-template #horizontalAlignment>\n <div class=\"ui-g horizontal-radio-buttons-container\">\n <ng-container\n *ngFor=\"let option of field.options; let i = index\"\n [ngTemplateOutlet]=\"radioButton\"\n [ngTemplateOutletContext]=\"{option: option, index: i}\">\n </ng-container>\n </div>\n <s-button\n *ngIf=\"field.showClear && !field.required() && !formControl.disabled\"\n class=\"horizontal-clear-option\"\n [label]=\"field.clearLabel || 'Clear selection'\"\n (onClick)=\"onClear()\"\n priority=\"link\">\n </s-button>\n</ng-template>\n\n<ng-template #radioButton let-option=\"option\" let-i=\"index\">\n <p-radioButton\n class=\"radio-button-item\"\n [name]=\"field.name\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [formControl]=\"formControl\"\n [inputId]=\"(field.id || field.name) + '-' + i\"\n [sTooltip]=\"field.tooltip\"\n (onClick)=\"onClick.next($event)\"\n (onFocus)=\"onFocus.next($event)\"\n (onBlur)=\"field.onBlur ? field.onBlur($event) : null\">\n </p-radioButton>\n</ng-template>\n",
|
|
44
44
|
encapsulation: ViewEncapsulation.None,
|
|
45
|
-
styles: ["\n s-button.horizontal-clear-option button {\n width: min-content !important;\n }\n "]
|
|
45
|
+
styles: ["\n s-button.horizontal-clear-option button {\n width: min-content !important;\n }\n\n .horizontal-radio-buttons-container {\n gap: 20px 40px;\n .radio-button-item {\n margin: 0;\n }\n }\n "]
|
|
46
46
|
})
|
|
47
47
|
], RadioButtonComponent);
|
|
48
48
|
return RadioButtonComponent;
|
|
49
49
|
}());
|
|
50
50
|
export { RadioButtonComponent };
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2ZpZWxkcy9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0csT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFxQjNDO0lBYUk7UUFOTyxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFaEQsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9DLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUV0QixDQUFDO0lBRVYsdUNBQVEsR0FBZjtRQUFBLGlCQU9DO1FBTkcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFDLEtBQWlCO1lBQ3pFLElBQUksS0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO2dCQUFFLEtBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFDLEtBQVU7WUFDbEUsSUFBSSxLQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQUUsS0FBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sMENBQVcsR0FBbEI7UUFDSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLHNDQUFPLEdBQWQ7UUFDSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7SUE3QkQ7UUFEQyxLQUFLLEVBQUU7dURBQ3VCO0lBRS9CO1FBREMsS0FBSyxFQUFFOzZEQUN3QjtJQUdoQztRQURDLE1BQU0sRUFBRTt5REFDOEM7SUFFdkQ7UUFEQyxNQUFNLEVBQUU7eURBQzhDO0lBVDlDLG9CQUFvQjtRQWhCaEMsU0FBUyxDQUFDO1lBQ1AsZzZEQUFpRDtZQWFqRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtxQkFaNUIsd1JBV1I7U0FFSixDQUFDO09BQ1csb0JBQW9CLENBZ0NoQztJQUFELDJCQUFDO0NBQUEsQUFoQ0QsSUFnQ0M7U0FoQ1ksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBSYWRpb0J1dHRvbkZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZ3VyYXRpb25zL2ZpZWxkcy9yYWRpby1idXR0b24tZmllbGRcIjtcbmltcG9ydCB7IEJhc2VGaWVsZENvbXBvbmVudENvbmZpZyB9IGZyb20gXCIuLi9iYXNlLWZpZWxkLWNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCJyYWRpb24tYnV0dG9uLWZpZWxkLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVzOiBbYFxuICAgICAgICBzLWJ1dHRvbi5ob3Jpem9udGFsLWNsZWFyLW9wdGlvbiBidXR0b24ge1xuICAgICAgICAgICAgd2lkdGg6IG1pbi1jb250ZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuaG9yaXpvbnRhbC1yYWRpby1idXR0b25zLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBnYXA6IDIwcHggNDBweDtcbiAgICAgICAgICAgIC5yYWRpby1idXR0b24taXRlbSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9CdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQmFzZUZpZWxkQ29tcG9uZW50Q29uZmlnIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZDogUmFkaW9CdXR0b25GaWVsZDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMub25Gb2N1cy5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWVsZC5vbkZvY3VzKSB0aGlzLmZpZWxkLm9uRm9jdXMoZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vbkNsaWNrLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQub25DbGljaykgdGhpcy5maWVsZC5vbkNsaWNrKGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5yZXNldCgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -28,10 +28,10 @@ var RowComponent = /** @class */ (function () {
|
|
|
28
28
|
], RowComponent.prototype, "errorMessages", void 0);
|
|
29
29
|
RowComponent = __decorate([
|
|
30
30
|
Component({
|
|
31
|
-
template: "\n <div class=\"ui-fluid\" [formGroup]=\"group\">\n <div class=\"ui-g\">\n <ng-container *ngFor=\"let field of config.fields\">\n <div [ngClass]=\"field.gridClass\" *ngIf=\"field.visible()\">\n <ng-container *ngIf=\"field.type === FieldType.Custom && field.label\" >\n <label *sInfoSign=\"field.infoSign\" [for]=\"field.name\" [ngClass]=\"{ required: field.required() }\" >\n {{ field.label }}\n </label>\n </ng-container>\n\n <ng-container *sDynamicForm=\"{ id: id, config: field, group: group}\"></ng-container>\n\n <s-control-errors [form]=\"group\" [control]=\"group.controls[field.name]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\"></s-control-errors>\n\n <ng-container *ngIf=\"field.footer\">\n <ng-container *ngIf=\"field.footer.help\">\n <span *ngIf=\"field.footer.help.visible({ abstractControl: group.controls[field.name], formField: field })\" style=\"color: #888B99\">{{ field.footer.help.text }}</span>\n </ng-container>\n\n <ng-container *ngIf=\"field.footer.link\">\n <div\n *ngIf=\"field.footer.link.visible({ abstractControl: group.controls[field.name], formField: field })\"\n class=\"ui-g\"\n style=\"margin-left: -17px\"\n >\n <s-button\n [label]=\"field.footer.link.label\"\n priority=\"link\"\n (onClick)=\"field.footer.link.onClick({ abstractControl: group.controls[field.name], formField: field })\"\n [auxiliary]=\"true\"\n ></s-button>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template *ngIf=\"field?.bottomTemplate\" [ngTemplateOutlet]=\"field.bottomTemplate\"></ng-template>\n </div>\n </ng-container>\n </div>\n "
|
|
31
|
+
template: "\n <div class=\"ui-fluid\" [formGroup]=\"group\">\n <div class=\"ui-g\">\n <ng-container *ngFor=\"let field of config.fields\">\n <div [ngClass]=\"field.gridClass\" *ngIf=\"field.visible()\">\n <ng-container *ngIf=\"field.type === FieldType.Custom && field.label\" >\n <label *sInfoSign=\"field.infoSign; displayTime: field.displayTimeInfoSign; useFocusedInputRef: field.useInfoSignFocusedInputRef\" [for]=\"field.name\" [ngClass]=\"{ required: field.required() }\" >\n {{ field.label }}\n </label>\n </ng-container>\n\n <ng-container *sDynamicForm=\"{ id: id, config: field, group: group}\"></ng-container>\n\n <s-control-errors [form]=\"group\" [control]=\"group.controls[field.name]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\"></s-control-errors>\n\n <ng-container *ngIf=\"field.footer\">\n <ng-container *ngIf=\"field.footer.help\">\n <span *ngIf=\"field.footer.help.visible({ abstractControl: group.controls[field.name], formField: field })\" style=\"color: #888B99\">{{ field.footer.help.text }}</span>\n </ng-container>\n\n <ng-container *ngIf=\"field.footer.link\">\n <div\n *ngIf=\"field.footer.link.visible({ abstractControl: group.controls[field.name], formField: field })\"\n class=\"ui-g\"\n style=\"margin-left: -17px\"\n >\n <s-button\n [label]=\"field.footer.link.label\"\n priority=\"link\"\n (onClick)=\"field.footer.link.onClick({ abstractControl: group.controls[field.name], formField: field })\"\n [auxiliary]=\"true\"\n ></s-button>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template *ngIf=\"field?.bottomTemplate\" [ngTemplateOutlet]=\"field.bottomTemplate\"></ng-template>\n </div>\n </ng-container>\n </div>\n "
|
|
32
32
|
})
|
|
33
33
|
], RowComponent);
|
|
34
34
|
return RowComponent;
|
|
35
35
|
}());
|
|
36
36
|
export { RowComponent };
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2dyaWQvcm93L3Jvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQThDL0Q7SUFZSTtRQUZBLGNBQVMsR0FBRyxTQUFTLENBQUM7SUFFTixDQUFDO0lBRVYsK0JBQVEsR0FBZixjQUFvQixDQUFDO0lBRWQsdUNBQWdCLEdBQXZCLFVBQXdCLGFBQWtCO1FBQ3RDLElBQUksYUFBYTtZQUFFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMzRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVNLGlDQUFVLEdBQWpCLFVBQWtCLEtBQVU7UUFDeEIsT0FBTyxLQUFLLFlBQVksUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFyQkQ7UUFEQyxLQUFLLEVBQUU7NENBQ1U7SUFFbEI7UUFEQyxLQUFLLEVBQUU7Z0RBQ1c7SUFFbkI7UUFEQyxLQUFLLEVBQUU7K0NBQ2dCO0lBRXhCO1FBREMsS0FBSyxFQUFFO3VEQUNrQjtJQVJqQixZQUFZO1FBNUN4QixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsazZFQXlDVDtTQUNKLENBQUM7T0FDVyxZQUFZLENBd0J4QjtJQUFELG1CQUFDO0NBQUEsQUF4QkQsSUF3QkM7U0F4QlksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFJvdyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWd1cmF0aW9ucy9ncmlkL3Jvd1wiO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL2NvbmZpZ3VyYXRpb25zL2ZpZWxkLXR5cGVcIjtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInVpLWZsdWlkXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidWktZ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgY29uZmlnLmZpZWxkc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZmllbGQuZ3JpZENsYXNzXCIgKm5nSWY9XCJmaWVsZC52aXNpYmxlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5DdXN0b20gJiYgZmllbGQubGFiZWxcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKnNJbmZvU2lnbj1cImZpZWxkLmluZm9TaWduOyBkaXNwbGF5VGltZTogZmllbGQuZGlzcGxheVRpbWVJbmZvU2lnbjsgdXNlRm9jdXNlZElucHV0UmVmOiBmaWVsZC51c2VJbmZvU2lnbkZvY3VzZWRJbnB1dFJlZlwiIFtmb3JdPVwiZmllbGQubmFtZVwiIFtuZ0NsYXNzXT1cInsgcmVxdWlyZWQ6IGZpZWxkLnJlcXVpcmVkKCkgfVwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqc0R5bmFtaWNGb3JtPVwieyBpZDogaWQsIGNvbmZpZzogZmllbGQsIGdyb3VwOiBncm91cH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8cy1jb250cm9sLWVycm9ycyBbZm9ybV09XCJncm91cFwiIFtjb250cm9sXT1cImdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWVdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvck1lc3NhZ2VzXT1cImdldEVycm9yTWVzc2FnZXMoZmllbGQuZXJyb3JNZXNzYWdlcylcIj48L3MtY29udHJvbC1lcnJvcnM+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZvb3RlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZvb3Rlci5oZWxwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5mb290ZXIuaGVscC52aXNpYmxlKHsgYWJzdHJhY3RDb250cm9sOiBncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXSwgZm9ybUZpZWxkOiBmaWVsZCB9KVwiIHN0eWxlPVwiY29sb3I6ICM4ODhCOTlcIj57eyBmaWVsZC5mb290ZXIuaGVscC50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5mb290ZXIubGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZC5mb290ZXIubGluay52aXNpYmxlKHsgYWJzdHJhY3RDb250cm9sOiBncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXSwgZm9ybUZpZWxkOiBmaWVsZCB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWktZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0xN3B4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImZpZWxkLmZvb3Rlci5saW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJmaWVsZC5mb290ZXIubGluay5vbkNsaWNrKHsgYWJzdHJhY3RDb250cm9sOiBncm91cC5jb250cm9sc1tmaWVsZC5uYW1lXSwgZm9ybUZpZWxkOiBmaWVsZCB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV4aWxpYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJmaWVsZD8uYm90dG9tVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJmaWVsZC5ib3R0b21UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUm93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbmZpZzogUm93O1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdyb3VwOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXJyb3JNZXNzYWdlczogYW55O1xuXG4gICAgRmllbGRUeXBlID0gRmllbGRUeXBlO1xuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHsgfVxuXG4gICAgcHVibGljIGdldEVycm9yTWVzc2FnZXMoZXJyb3JNZXNzYWdlczogYW55KSB7XG4gICAgICAgIGlmIChlcnJvck1lc3NhZ2VzKSByZXR1cm4gdGhpcy5pc0Z1bmN0aW9uKGVycm9yTWVzc2FnZXMpID8gZXJyb3JNZXNzYWdlcygpIDogZXJyb3JNZXNzYWdlcztcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JNZXNzYWdlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGdW5jdGlvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { FieldSize } from "../field-size";
|
|
|
3
3
|
var Field = /** @class */ (function () {
|
|
4
4
|
function Field(config) {
|
|
5
5
|
var _this = this;
|
|
6
|
-
var _a, _b, _c, _d, _e;
|
|
6
|
+
var _a, _b, _c, _d, _e, _f;
|
|
7
7
|
if ((_a = config.footer) === null || _a === void 0 ? void 0 : _a.help) {
|
|
8
8
|
config.footer.help = __assign({ visible: function () { return true; } }, (_b = config.footer) === null || _b === void 0 ? void 0 : _b.help);
|
|
9
9
|
}
|
|
@@ -30,8 +30,9 @@ var Field = /** @class */ (function () {
|
|
|
30
30
|
this.CustomFieldClass = config.CustomFieldClass;
|
|
31
31
|
this.CustomFieldComponentClass = config.CustomFieldComponentClass;
|
|
32
32
|
this.displayTimeInfoSign = (_e = config.displayTimeInfoSign) !== null && _e !== void 0 ? _e : 5000;
|
|
33
|
+
this.useInfoSignFocusedInputRef = (_f = config.useInfoSignFocusedInputRef) !== null && _f !== void 0 ? _f : true;
|
|
33
34
|
}
|
|
34
35
|
return Field;
|
|
35
36
|
}());
|
|
36
37
|
export { Field };
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9keW5hbWljLWZvcm0vY29uZmlndXJhdGlvbnMvZmllbGRzL2ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBdUMxQztJQWtDSSxlQUFZLE1BQW1CO1FBQS9CLGlCQW9DQzs7UUFuQ0csVUFBSSxNQUFNLENBQUMsTUFBTSwwQ0FBRSxJQUFJLEVBQUU7WUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQ2QsT0FBTyxFQUFFLGNBQU0sT0FBQSxJQUFJLEVBQUosQ0FBSSxVQUNoQixNQUFNLENBQUMsTUFBTSwwQ0FBRSxJQUFJLENBQ3pCLENBQUE7U0FDSjtRQUVELFVBQUksTUFBTSxDQUFDLE1BQU0sMENBQUUsSUFBSSxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxjQUNkLE9BQU8sRUFBRSxjQUFNLE9BQUEsSUFBSSxFQUFKLENBQUksVUFDaEIsTUFBTSxDQUFDLE1BQU0sMENBQUUsSUFBSSxDQUN6QixDQUFBO1NBQ0o7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxjQUFNLE9BQUEsS0FBSyxFQUFMLENBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLGNBQU0sT0FBQSxJQUFJLEVBQUosQ0FBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLFFBQU0sR0FBRyxTQUFJLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFHLEVBQTdCLENBQTZCLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDaEQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQztRQUNsRSxJQUFJLENBQUMsbUJBQW1CLFNBQUcsTUFBTSxDQUFDLG1CQUFtQixtQ0FBSSxJQUFJLENBQUM7UUFDOUQsSUFBSSxDQUFDLDBCQUEwQixTQUFHLE1BQU0sQ0FBQywwQkFBMEIsbUNBQUksSUFBSSxDQUFDO0lBQ2hGLENBQUM7SUFDTCxZQUFDO0FBQUQsQ0FBQyxBQXZFRCxJQXVFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZpZWxkU2l6ZSB9IGZyb20gXCIuLi9maWVsZC1zaXplXCI7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tIFwiLi4vZmllbGQtdHlwZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBGb3JtRmllbGQgfSBmcm9tIFwiLi4vZm9ybS1maWVsZFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkQ29uZmlnIHtcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnk7XG4gICAgcmVxdWlyZWQ/OiAoKSA9PiBib29sZWFuO1xuICAgIHZpc2libGU/OiAoKSA9PiBib29sZWFuO1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGluZm9TaWduPzogc3RyaW5nO1xuICAgIHRvb2x0aXA/OiBzdHJpbmc7XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgc2hvd0NsZWFyPzogYm9vbGVhbjtcbiAgICB0eXBlPzogRmllbGRUeXBlO1xuICAgIHNpemU/OiBGaWVsZFNpemU7XG4gICAgcmVwcmVzZW50ZWRCeT86IFwicmFkaW9cIiB8IFwic3dpdGNoXCI7XG4gICAgZXJyb3JNZXNzYWdlcz86ICgpID0+ICh7fSkgfCB7fTtcbiAgICBib3R0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICAgIGZvb3Rlcj86IHtcbiAgICAgICAgaGVscD86IHtcbiAgICAgICAgICAgIHRleHQ6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU/OiAob3B0aW9uczogeyBhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZm9ybUZpZWxkOiBGb3JtRmllbGQgfSkgPT4gYm9vbGVhbjtcbiAgICAgICAgfTtcbiAgICAgICAgbGluaz86IHtcbiAgICAgICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICBvbkNsaWNrOiAob3B0aW9uczogeyBhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZm9ybUZpZWxkOiBGb3JtRmllbGQgfSkgPT4gdm9pZDtcbiAgICAgICAgICAgIHZpc2libGU/OiAob3B0aW9uczogeyBhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZm9ybUZpZWxkOiBGb3JtRmllbGQgfSkgPT4gYm9vbGVhbjtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIEN1c3RvbUZpZWxkQ2xhc3M/OiB1bmtub3duO1xuICAgIEN1c3RvbUZpZWxkQ29tcG9uZW50Q2xhc3M/OiB1bmtub3duO1xuICAgIGRpc3BsYXlUaW1lSW5mb1NpZ24/OiBudW1iZXI7XG4gICAgc29ydGFibGVDb2x1bW5OYW1lPzogc3RyaW5nXG4gICAgdXNlSW5mb1NpZ25Gb2N1c2VkSW5wdXRSZWY/OiBib29sZWFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmllbGQge1xuICAgIHB1YmxpYyByZXF1aXJlZD86ICgpID0+IGJvb2xlYW47XG4gICAgcHVibGljIHZpc2libGU/OiAoKSA9PiBib29sZWFuO1xuICAgIHB1YmxpYyBpZD86IHN0cmluZztcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xuICAgIHB1YmxpYyBpbmZvU2lnbj86IHN0cmluZztcbiAgICBwdWJsaWMgdG9vbHRpcD86IHN0cmluZztcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgcHVibGljIHNob3dDbGVhcj86IGJvb2xlYW47XG4gICAgcHVibGljIHR5cGU6IEZpZWxkVHlwZTtcbiAgICBwdWJsaWMgc2l6ZTogRmllbGRTaXplO1xuICAgIHB1YmxpYyBncmlkQ2xhc3M6IHN0cmluZ1tdO1xuICAgIHB1YmxpYyBkZWZhdWx0VmFsdWU/OiBhbnk7XG4gICAgcHVibGljIHJlcHJlc2VudGVkQnk/OiBcInJhZGlvXCIgfCBcInN3aXRjaFwiO1xuICAgIHB1YmxpYyBlcnJvck1lc3NhZ2VzPzogKCkgPT4gKHt9KSB8IHt9O1xuICAgIHB1YmxpYyBib3R0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICAgIHB1YmxpYyBDdXN0b21GaWVsZENsYXNzPzogdW5rbm93bjtcbiAgICBwdWJsaWMgQ3VzdG9tRmllbGRDb21wb25lbnRDbGFzcz86IHVua25vd247XG4gICAgcHVibGljIGRpc3BsYXlUaW1lSW5mb1NpZ24/OiBudW1iZXI7XG4gICAgcHVibGljIHNvcnRhYmxlQ29sdW1uTmFtZT86IHN0cmluZ1xuICAgIHB1YmxpYyBmb290ZXI/OiB7XG4gICAgICAgIGhlbHA/OiB7XG4gICAgICAgICAgICB0ZXh0OiBzdHJpbmc7XG4gICAgICAgICAgICB2aXNpYmxlPzogKG9wdGlvbnM6IHsgYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGZvcm1GaWVsZDogRm9ybUZpZWxkIH0pID0+IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgICAgIGxpbms/OiB7XG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgb25DbGljazogKG9wdGlvbnM6IHsgYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGZvcm1GaWVsZDogRm9ybUZpZWxkIH0pID0+IHZvaWQ7XG4gICAgICAgICAgICB2aXNpYmxlPzogKG9wdGlvbnM6IHsgYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGZvcm1GaWVsZDogRm9ybUZpZWxkIH0pID0+IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBwdWJsaWMgdXNlSW5mb1NpZ25Gb2N1c2VkSW5wdXRSZWY/OiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoY29uZmlnOiBGaWVsZENvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLmZvb3Rlcj8uaGVscCkge1xuICAgICAgICAgICAgY29uZmlnLmZvb3Rlci5oZWxwID0ge1xuICAgICAgICAgICAgICAgIHZpc2libGU6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgLi4uY29uZmlnLmZvb3Rlcj8uaGVscFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5mb290ZXI/LmxpbmspIHtcbiAgICAgICAgICAgIGNvbmZpZy5mb290ZXIubGluayA9IHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgIC4uLmNvbmZpZy5mb290ZXI/LmxpbmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVxdWlyZWQgPSBjb25maWcucmVxdWlyZWQgfHwgKCgpID0+IGZhbHNlKTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gY29uZmlnLnZpc2libGUgfHwgKCgpID0+IHRydWUpO1xuICAgICAgICB0aGlzLmlkID0gY29uZmlnLmlkO1xuICAgICAgICB0aGlzLm5hbWUgPSBjb25maWcubmFtZTtcbiAgICAgICAgdGhpcy5sYWJlbCA9IGNvbmZpZy5sYWJlbDtcbiAgICAgICAgdGhpcy5pbmZvU2lnbiA9IGNvbmZpZy5pbmZvU2lnbjtcbiAgICAgICAgdGhpcy50b29sdGlwID0gY29uZmlnLnRvb2x0aXA7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBjb25maWcucGxhY2Vob2xkZXIgfHwgXCJcIjtcbiAgICAgICAgdGhpcy5zaG93Q2xlYXIgPSBjb25maWcuc2hvd0NsZWFyIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLnR5cGUgPSBjb25maWcudHlwZTtcbiAgICAgICAgdGhpcy5zaXplID0gbmV3IEZpZWxkU2l6ZShjb25maWcuc2l6ZSB8fCB7fSk7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IGNvbmZpZy5lcnJvck1lc3NhZ2VzO1xuICAgICAgICB0aGlzLmJvdHRvbVRlbXBsYXRlID0gY29uZmlnLmJvdHRvbVRlbXBsYXRlO1xuICAgICAgICB0aGlzLmZvb3RlciA9IGNvbmZpZy5mb290ZXI7XG4gICAgICAgIHRoaXMuZ3JpZENsYXNzID0gT2JqZWN0LmtleXModGhpcy5zaXplKS5tYXAoa2V5ID0+IGB1aS0ke2tleX0tJHt0aGlzLnNpemVba2V5XX1gKTtcbiAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBjb25maWcuZGVmYXVsdFZhbHVlO1xuICAgICAgICB0aGlzLnJlcHJlc2VudGVkQnkgPSBjb25maWcucmVwcmVzZW50ZWRCeTtcbiAgICAgICAgdGhpcy5DdXN0b21GaWVsZENsYXNzID0gY29uZmlnLkN1c3RvbUZpZWxkQ2xhc3M7XG4gICAgICAgIHRoaXMuQ3VzdG9tRmllbGRDb21wb25lbnRDbGFzcyA9IGNvbmZpZy5DdXN0b21GaWVsZENvbXBvbmVudENsYXNzO1xuICAgICAgICB0aGlzLmRpc3BsYXlUaW1lSW5mb1NpZ24gPSBjb25maWcuZGlzcGxheVRpbWVJbmZvU2lnbiA/PyA1MDAwO1xuICAgICAgICB0aGlzLnVzZUluZm9TaWduRm9jdXNlZElucHV0UmVmID0gY29uZmlnLnVzZUluZm9TaWduRm9jdXNlZElucHV0UmVmID8/IHRydWU7XG4gICAgfVxufVxuIl19
|
|
@@ -7,6 +7,7 @@ var InfoSignDirective = /** @class */ (function () {
|
|
|
7
7
|
this.viewContainer = viewContainer;
|
|
8
8
|
this.componentFactoryResolver = componentFactoryResolver;
|
|
9
9
|
this.displayTime = 5000;
|
|
10
|
+
this.useFocusedInputRef = true;
|
|
10
11
|
}
|
|
11
12
|
InfoSignDirective.prototype.ngOnChanges = function () {
|
|
12
13
|
this.createInfoSign();
|
|
@@ -24,10 +25,13 @@ var InfoSignDirective = /** @class */ (function () {
|
|
|
24
25
|
this.viewContainer.clear();
|
|
25
26
|
var componentFactory = this.componentFactoryResolver.resolveComponentFactory(InfoSignComponent);
|
|
26
27
|
this.componentRef = this.viewContainer.createComponent(componentFactory);
|
|
27
|
-
this.componentRef.instance
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
var _infoSignComponent = this.componentRef.instance;
|
|
29
|
+
_infoSignComponent.templateRef = this.templateRef;
|
|
30
|
+
_infoSignComponent.tooltip = this.sInfoSign;
|
|
31
|
+
_infoSignComponent.displayTime = this.displayTime;
|
|
32
|
+
if (this.useFocusedInputRef) {
|
|
33
|
+
_infoSignComponent.focusedInputRef = this.focusedInputRef;
|
|
34
|
+
}
|
|
31
35
|
}
|
|
32
36
|
else if (this.componentRef && this.sInfoSign) {
|
|
33
37
|
this.componentRef.instance.tooltip = this.sInfoSign;
|
|
@@ -51,6 +55,9 @@ var InfoSignDirective = /** @class */ (function () {
|
|
|
51
55
|
__decorate([
|
|
52
56
|
Input('sInfoSignFocusedInputRef')
|
|
53
57
|
], InfoSignDirective.prototype, "focusedInputRef", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
Input('sInfoSignUseFocusedInputRef')
|
|
60
|
+
], InfoSignDirective.prototype, "useFocusedInputRef", void 0);
|
|
54
61
|
InfoSignDirective = __decorate([
|
|
55
62
|
Directive({
|
|
56
63
|
selector: "[sInfoSign]"
|
|
@@ -59,4 +66,4 @@ var InfoSignDirective = /** @class */ (function () {
|
|
|
59
66
|
return InfoSignDirective;
|
|
60
67
|
}());
|
|
61
68
|
export { InfoSignDirective };
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1zaWduLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2luZm8tc2lnbi9pbmZvLXNpZ24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFdBQVcsRUFDWCxnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLMUQ7SUFjSSwyQkFDcUIsV0FBNkIsRUFDN0IsYUFBK0IsRUFDL0Isd0JBQWtEO1FBRmxELGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQVp2RSxnQkFBVyxHQUFXLElBQUksQ0FBQztRQU9rQix1QkFBa0IsR0FBRyxJQUFJLENBQUM7SUFNbkUsQ0FBQztJQUVFLHVDQUFXLEdBQWxCO1FBQ0ksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxvQ0FBUSxHQUFmO1FBQ0ksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSx1Q0FBVyxHQUFsQjtRQUNJLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQy9CO0lBQ0wsQ0FBQztJQUVPLDBDQUFjLEdBQXRCO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3pFLElBQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUE2QixDQUFDO1lBQzNFLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ2xELGtCQUFrQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzVDLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ2xELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUN6QixrQkFBa0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUM3RDtTQUNKO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDdkQ7YUFBTTtZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0Q7SUFDTCxDQUFDOztnQkFyQ2lDLFdBQVc7Z0JBQ1QsZ0JBQWdCO2dCQUNMLHdCQUF3Qjs7SUFmdkU7UUFEQyxLQUFLLEVBQUU7d0RBQ1U7SUFHbEI7UUFEQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7MERBQ0g7SUFHM0I7UUFEQyxLQUFLLENBQUMsMEJBQTBCLENBQUM7OERBQ087SUFJSDtRQUFyQyxLQUFLLENBQUMsNkJBQTZCLENBQUM7aUVBQWtDO0lBWjlELGlCQUFpQjtRQUg3QixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsYUFBYTtTQUMxQixDQUFDO09BQ1csaUJBQWlCLENBcUQ3QjtJQUFELHdCQUFDO0NBQUEsQUFyREQsSUFxREM7U0FyRFksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBJbmZvU2lnbkNvbXBvbmVudCB9IGZyb20gXCIuL2luZm8tc2lnbi5jb21wb25lbnRcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IFwiW3NJbmZvU2lnbl1cIlxufSlcbmV4cG9ydCBjbGFzcyBJbmZvU2lnbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgc0luZm9TaWduOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoJ3NJbmZvU2lnbkRpc3BsYXlUaW1lJylcbiAgICBkaXNwbGF5VGltZTogbnVtYmVyID0gNTAwMDtcblxuICAgIEBJbnB1dCgnc0luZm9TaWduRm9jdXNlZElucHV0UmVmJylcbiAgICBwdWJsaWMgZm9jdXNlZElucHV0UmVmOiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gICAgQElucHV0KCdzSW5mb1NpZ25Vc2VGb2N1c2VkSW5wdXRSZWYnKSBwdWJsaWMgdXNlRm9jdXNlZElucHV0UmVmID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgICApIHsgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZUluZm9TaWduKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNyZWF0ZUluZm9TaWduKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlSW5mb1NpZ24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYgJiYgdGhpcy5zSW5mb1NpZ24pIHtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KEluZm9TaWduQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5KTtcbiAgICAgICAgICAgIGNvbnN0IF9pbmZvU2lnbkNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIEluZm9TaWduQ29tcG9uZW50O1xuICAgICAgICAgICAgX2luZm9TaWduQ29tcG9uZW50LnRlbXBsYXRlUmVmID0gdGhpcy50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgIF9pbmZvU2lnbkNvbXBvbmVudC50b29sdGlwID0gdGhpcy5zSW5mb1NpZ247XG4gICAgICAgICAgICBfaW5mb1NpZ25Db21wb25lbnQuZGlzcGxheVRpbWUgPSB0aGlzLmRpc3BsYXlUaW1lO1xuICAgICAgICAgICAgaWYgKHRoaXMudXNlRm9jdXNlZElucHV0UmVmKSB7XG4gICAgICAgICAgICAgICAgX2luZm9TaWduQ29tcG9uZW50LmZvY3VzZWRJbnB1dFJlZiA9IHRoaXMuZm9jdXNlZElucHV0UmVmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29tcG9uZW50UmVmICYmIHRoaXMuc0luZm9TaWduKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b29sdGlwID0gdGhpcy5zSW5mb1NpZ247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { __decorate, __values } from "tslib";
|
|
2
|
+
import { isNullOrUndefined } from './../utils/utils';
|
|
2
3
|
import { ApplicationRef, ComponentFactoryResolver, ComponentRef, Directive, ElementRef, EmbeddedViewRef, HostListener, Injector, Input, OnDestroy, OnInit, Renderer2, } from "@angular/core";
|
|
3
4
|
import { DebounceUtils } from "../utils/debouce";
|
|
4
5
|
import { MobileBehavior, TooltipEvent, TooltipPosition } from "./models";
|
|
@@ -19,8 +20,9 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
19
20
|
this.visible = true;
|
|
20
21
|
this.mobileBehavior = MobileBehavior.Pressing;
|
|
21
22
|
this.componentRef = null;
|
|
23
|
+
this.existFocusedInputRefTooltip = false;
|
|
22
24
|
this.boundOnWindowMouseMoveFunction = this.onWindowMouseMove.bind(this);
|
|
23
|
-
this.debounceCreateTooltipFunction = this.debounceUtils.debounceLeading(function () { return _this.
|
|
25
|
+
this.debounceCreateTooltipFunction = this.debounceUtils.debounceLeading(function () { return _this._createTooltip(true, true); });
|
|
24
26
|
}
|
|
25
27
|
TooltipDirective.prototype.ngOnInit = function () {
|
|
26
28
|
this.validatePosition();
|
|
@@ -41,7 +43,7 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
41
43
|
left: Math.min(elementRect.left, toolTipRect.left),
|
|
42
44
|
bottom: Math.max(elementRect.bottom, toolTipRect.bottom),
|
|
43
45
|
};
|
|
44
|
-
if (this.isMousePositionOutsideOfElement(event.clientX, event.clientY, totalElementArea)) {
|
|
46
|
+
if (this.isMousePositionOutsideOfElement(event.clientX, event.clientY, totalElementArea) && !this.existFocusedInputRefTooltip) {
|
|
45
47
|
this.destroy();
|
|
46
48
|
}
|
|
47
49
|
};
|
|
@@ -56,15 +58,17 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
56
58
|
if (this.focusedInputRef) {
|
|
57
59
|
var inputFocus = this.focusedInputRef;
|
|
58
60
|
var icon_1 = this.getIconFromFocusedInput();
|
|
59
|
-
this.renderer.listen(
|
|
61
|
+
this.renderer.listen(inputFocus, "focus", function () {
|
|
60
62
|
if (icon_1) {
|
|
61
|
-
_this.
|
|
63
|
+
_this.existFocusedInputRefTooltip = true;
|
|
64
|
+
_this._createTooltip(false, false);
|
|
62
65
|
}
|
|
63
66
|
});
|
|
64
67
|
this.renderer.listen(inputFocus, "blur", function () {
|
|
65
68
|
if (icon_1) {
|
|
66
69
|
_this.removeTooltip(icon_1);
|
|
67
70
|
_this.destroy();
|
|
71
|
+
_this.existFocusedInputRefTooltip = false;
|
|
68
72
|
}
|
|
69
73
|
});
|
|
70
74
|
}
|
|
@@ -95,7 +99,7 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
95
99
|
};
|
|
96
100
|
TooltipDirective.prototype.onFocus = function () {
|
|
97
101
|
if (this.tooltipEvent === TooltipEvent.Focus) {
|
|
98
|
-
this.
|
|
102
|
+
this._createTooltip(true, true);
|
|
99
103
|
}
|
|
100
104
|
};
|
|
101
105
|
TooltipDirective.prototype.onBlur = function () {
|
|
@@ -109,14 +113,18 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
109
113
|
}
|
|
110
114
|
};
|
|
111
115
|
TooltipDirective.prototype.onMouseLeave = function () {
|
|
112
|
-
if (this.tooltipEvent === TooltipEvent.Hover) {
|
|
116
|
+
if (this.tooltipEvent === TooltipEvent.Hover && !this.existFocusedInputRefTooltip) {
|
|
113
117
|
this.destroy();
|
|
114
118
|
}
|
|
115
119
|
};
|
|
116
120
|
TooltipDirective.prototype.onTouchStart = function () {
|
|
121
|
+
var _this = this;
|
|
117
122
|
if (this.tooltipEvent === TooltipEvent.Hover) {
|
|
118
123
|
window.clearTimeout(this.touchTimeout);
|
|
119
|
-
|
|
124
|
+
var _delay = this.mobileBehavior === MobileBehavior.Pressing ? this.showDelay : 0;
|
|
125
|
+
this.touchTimeout = window.setTimeout(function () {
|
|
126
|
+
_this._createTooltip(true, true);
|
|
127
|
+
}, _delay);
|
|
120
128
|
}
|
|
121
129
|
};
|
|
122
130
|
TooltipDirective.prototype.onTouchEnd = function () {
|
|
@@ -134,43 +142,37 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
134
142
|
throw new Error("Tooltip " + this.position + " position is unexpected");
|
|
135
143
|
}
|
|
136
144
|
};
|
|
137
|
-
TooltipDirective.prototype.createTootip = function () {
|
|
138
|
-
var _a;
|
|
139
|
-
if (this.componentRef === null && ((_a = this.tooltip) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
140
|
-
var domElem = this.getDomElement();
|
|
141
|
-
document.body.appendChild(domElem);
|
|
142
|
-
this.setTooltipComponentProperties();
|
|
143
|
-
this.showTimeout = window.setTimeout(this.showTooltip.bind(this), this.showDelay);
|
|
144
|
-
this.tooltipDivElement = domElem.querySelector(".tooltip");
|
|
145
|
-
if (this.displayTime) {
|
|
146
|
-
window.setTimeout(this.destroy.bind(this), this.displayTime);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
145
|
TooltipDirective.prototype.getDomElement = function () {
|
|
151
146
|
var componentFactory = this.componentFactoryResolver.resolveComponentFactory(TooltipComponent);
|
|
152
147
|
this.componentRef = componentFactory.create(this.injector);
|
|
153
148
|
this.appRef.attachView(this.componentRef.hostView);
|
|
154
149
|
return this.componentRef.hostView.rootNodes[0];
|
|
155
150
|
};
|
|
156
|
-
|
|
157
|
-
* Cria um tooltip para o icone do input em focus.
|
|
158
|
-
*
|
|
159
|
-
* @param icon O ícone do input em focus.
|
|
160
|
-
*/
|
|
161
|
-
TooltipDirective.prototype.createTootipByFocus = function (icon) {
|
|
151
|
+
TooltipDirective.prototype._createTooltip = function (useShowDelay, autoDestroy) {
|
|
162
152
|
var _this = this;
|
|
153
|
+
if (useShowDelay === void 0) { useShowDelay = false; }
|
|
154
|
+
if (autoDestroy === void 0) { autoDestroy = true; }
|
|
163
155
|
var _a;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
156
|
+
var hasText = ((_a = this.tooltip) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
157
|
+
var hasComponentRef = this.componentRef !== null;
|
|
158
|
+
if (!hasText || hasComponentRef) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
var domElement = this.getDomElement();
|
|
162
|
+
document.body.appendChild(domElement);
|
|
163
|
+
this.tooltipDivElement = domElement.querySelector(".tooltip");
|
|
164
|
+
this.setTooltipComponentProperties();
|
|
165
|
+
var _showDelay = useShowDelay ? this.showDelay : 0;
|
|
166
|
+
setTimeout(function () {
|
|
167
|
+
_this.showTooltip();
|
|
168
|
+
}, _showDelay);
|
|
169
|
+
this.renderer.listen(window, "scroll", function () {
|
|
170
|
+
_this.setTooltipPositionProperty();
|
|
171
|
+
});
|
|
172
|
+
if (autoDestroy && this.displayTime) {
|
|
173
|
+
setTimeout(function () {
|
|
174
|
+
_this.destroy();
|
|
175
|
+
}, this.displayTime);
|
|
174
176
|
}
|
|
175
177
|
};
|
|
176
178
|
TooltipDirective.prototype.showTooltip = function () {
|
|
@@ -180,11 +182,14 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
180
182
|
window.addEventListener("mousemove", this.boundOnWindowMouseMoveFunction);
|
|
181
183
|
}
|
|
182
184
|
};
|
|
183
|
-
TooltipDirective.prototype.setTooltipPositionProperty = function (
|
|
185
|
+
TooltipDirective.prototype.setTooltipPositionProperty = function () {
|
|
184
186
|
var e_1, _a;
|
|
187
|
+
if (!this.componentRef) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
185
190
|
var margin = 20;
|
|
186
191
|
var anchorSize = 5;
|
|
187
|
-
var domElem =
|
|
192
|
+
var domElem = this.componentRef.hostView.rootNodes[0].querySelector("#tooltip");
|
|
188
193
|
var _b = domElem.getBoundingClientRect(), height = _b.height, width = _b.width;
|
|
189
194
|
var _c = this.elementRef.nativeElement.getBoundingClientRect(), left = _c.left, right = _c.right, top = _c.top, bottom = _c.bottom;
|
|
190
195
|
var positions = [
|
|
@@ -244,7 +249,7 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
244
249
|
}
|
|
245
250
|
};
|
|
246
251
|
TooltipDirective.prototype.destroy = function () {
|
|
247
|
-
if (this.componentRef
|
|
252
|
+
if (!isNullOrUndefined(this.componentRef)) {
|
|
248
253
|
window.clearTimeout(this.showTimeout);
|
|
249
254
|
this.appRef.detachView(this.componentRef.hostView);
|
|
250
255
|
this.componentRef.destroy();
|
|
@@ -319,4 +324,4 @@ var TooltipDirective = /** @class */ (function () {
|
|
|
319
324
|
return TooltipDirective;
|
|
320
325
|
}());
|
|
321
326
|
export { TooltipDirective };
|
|
322
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU12RDtJQW1DSSwwQkFDcUIsVUFBc0IsRUFDdEIsTUFBc0IsRUFDdEIsd0JBQWtELEVBQ2xELFFBQWtCLEVBQ2xCLGFBQTRCLEVBQzVCLFFBQW1CO1FBTnhDLGlCQVVDO1FBVG9CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFwQ2pDLGFBQVEsR0FBb0IsZUFBZSxDQUFDLEdBQUcsQ0FBQztRQUdoRCxjQUFTLEdBQUcsR0FBRyxDQUFDO1FBTWhCLGlCQUFZLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUdsQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2YsWUFBTyxHQUFHLElBQUksQ0FBQztRQUdmLG1C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Z0JBQ0ksd0JBQXdCO2dCQUN4QyxRQUFRO2dCQUNILGFBQWE7Z0JBQ2xCLFNBQVM7O0lBdkN4QztRQURDLEtBQUssQ0FBQyxVQUFVLENBQUM7cURBQ0s7SUFHdkI7UUFEQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7c0RBQzhCO0lBR3ZEO1FBREMsS0FBSyxFQUFFO3VEQUNlO0lBR3ZCO1FBREMsS0FBSyxFQUFFO3lEQUNtQjtJQUczQjtRQURDLEtBQUssRUFBRTswREFDaUM7SUFHekM7UUFEQyxLQUFLLEVBQUU7b0RBQ2M7SUFHdEI7UUFEQyxLQUFLLEVBQUU7cURBQ2M7SUFHdEI7UUFEQyxLQUFLLEVBQUU7NERBQ3dDO0lBR2hEO1FBREMsS0FBSyxFQUFFOzZEQUNpQztJQWtHekM7UUFGQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3JCLFlBQVksQ0FBQyxTQUFTLENBQUM7bURBS3ZCO0lBR0Q7UUFEQyxZQUFZLENBQUMsT0FBTyxDQUFDO21EQUtyQjtJQUdEO1FBREMsWUFBWSxDQUFDLE1BQU0sQ0FBQztrREFLcEI7SUFHRDtRQURDLFlBQVksQ0FBQyxZQUFZLENBQUM7d0RBSzFCO0lBSUQ7UUFGQyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQzFCLFlBQVksQ0FBQyxPQUFPLENBQUM7d0RBS3JCO0lBR0Q7UUFEQyxZQUFZLENBQUMsWUFBWSxDQUFDO3dEQVMxQjtJQUdEO1FBREMsWUFBWSxDQUFDLFVBQVUsQ0FBQztzREFReEI7SUFsTFEsZ0JBQWdCO1FBSDVCLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxZQUFZO1NBQ3pCLENBQUM7T0FDVyxnQkFBZ0IsQ0F3VDVCO0lBQUQsdUJBQUM7Q0FBQSxBQXhURCxJQXdUQztTQXhUWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFwcGxpY2F0aW9uUmVmLFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERlYm91bmNlVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHMvZGVib3VjZVwiO1xuaW1wb3J0IHsgTW9iaWxlQmVoYXZpb3IsIFRvb2x0aXBFdmVudCwgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSBcIi4vdG9vbHRpcC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEVsZW1lbnRBcmVhIH0gZnJvbSBcIi4vbW9kZWxzL2VsZW1lbnQtYXJlYVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogXCJbc1Rvb2x0aXBdXCIsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KFwic1Rvb2x0aXBcIilcbiAgICBwdWJsaWMgdG9vbHRpcDogc3RyaW5nO1xuXG4gICAgQElucHV0KFwidG9vbHRpcFBvc2l0aW9uXCIpXG4gICAgcHVibGljIHBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uVG9wO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0RlbGF5ID0gNTAwO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzcGxheVRpbWU6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvb2x0aXBFdmVudCA9IFRvb2x0aXBFdmVudC5Ib3ZlcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVzY2FwZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmlzaWJsZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtb2JpbGVCZWhhdmlvciA9IE1vYmlsZUJlaGF2aW9yLlByZXNzaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9jdXNlZElucHV0UmVmOiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gbnVsbDtcbiAgICBwcml2YXRlIHNob3dUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG91Y2hUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG9vbHRpcERpdkVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvdW5kT25XaW5kb3dNb3VzZU1vdmVGdW5jdGlvbjogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb246ICgpID0+IHZvaWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRlYm91bmNlVXRpbHM6IERlYm91bmNlVXRpbHMsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge1xuICAgICAgICB0aGlzLmJvdW5kT25XaW5kb3dNb3VzZU1vdmVGdW5jdGlvbiA9IHRoaXMub25XaW5kb3dNb3VzZU1vdmUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5kZWJvdW5jZUNyZWF0ZVRvb2x0aXBGdW5jdGlvbiA9IHRoaXMuZGVib3VuY2VVdGlscy5kZWJvdW5jZUxlYWRpbmcoKCkgPT4gdGhpcy5jcmVhdGVUb290aXAoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy51cGRhdGVUb29sdGlwVmlzaWJpbGl0eVdoZW5Gb2N1c09uSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25XaW5kb3dNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRvb2xUaXBSZWN0ID0gdGhpcy50b29sdGlwRGl2RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBjb25zdCB0b3RhbEVsZW1lbnRBcmVhID0ge1xuICAgICAgICAgICAgdG9wOiBNYXRoLm1pbihlbGVtZW50UmVjdC50b3AsIHRvb2xUaXBSZWN0LnRvcCksXG4gICAgICAgICAgICByaWdodDogTWF0aC5tYXgoZWxlbWVudFJlY3QucmlnaHQsIHRvb2xUaXBSZWN0LnJpZ2h0KSxcbiAgICAgICAgICAgIGxlZnQ6IE1hdGgubWluKGVsZW1lbnRSZWN0LmxlZnQsIHRvb2xUaXBSZWN0LmxlZnQpLFxuICAgICAgICAgICAgYm90dG9tOiBNYXRoLm1heChlbGVtZW50UmVjdC5ib3R0b20sIHRvb2xUaXBSZWN0LmJvdHRvbSksXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNb3VzZVBvc2l0aW9uT3V0c2lkZU9mRWxlbWVudChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZLCB0b3RhbEVsZW1lbnRBcmVhKSkge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTW91c2VQb3NpdGlvbk91dHNpZGVPZkVsZW1lbnQobW91c2VYOiBudW1iZXIsIG1vdXNlWTogbnVtYmVyLCBlbGVtZW50QXJlYTogRWxlbWVudEFyZWEpIHtcbiAgICAgICAgcmV0dXJuIG1vdXNlWCA8IGVsZW1lbnRBcmVhLmxlZnQgfHwgbW91c2VYID49IGVsZW1lbnRBcmVhLnJpZ2h0IHx8IG1vdXNlWSA8IGVsZW1lbnRBcmVhLnRvcCB8fCBtb3VzZVkgPj0gZWxlbWVudEFyZWEuYm90dG9tO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIGEgdmlzaWJpbGlkYWRlIGRvIHRvb2x0aXAgcXVhbmRvIGhvdXZlciB1bWEgcmVmZXLDqm5jaWEgZGUgaW5wdXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVUb29sdGlwVmlzaWJpbGl0eVdoZW5Gb2N1c09uSW5wdXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRJbnB1dFJlZikge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRGb2N1cyA9IHRoaXMuZm9jdXNlZElucHV0UmVmO1xuICAgICAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMuZ2V0SWNvbkZyb21Gb2N1c2VkSW5wdXQoKTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5mb2N1c2VkSW5wdXRSZWYsIFwiZm9jdXNcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpY29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVG9vdGlwQnlGb2N1cyhpY29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGlucHV0Rm9jdXMsIFwiYmx1clwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVUb29sdGlwKGljb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idMOpbSBvIGVsZW1lbnRvIGRvIMOtY29uZSBhc3NvY2lhZG8gYW8gbGFiZWwgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICogQHJldHVybnMgTyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRJY29uRnJvbUZvY3VzZWRJbnB1dCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgbyB0b29sdGlwIGFzc29jaWFkbyBhbyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICogQHBhcmFtIGljb24gTyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW1vdmVUb29sdGlwKGljb246IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvb2x0aXAgPSBpY29uLnF1ZXJ5U2VsZWN0b3IoXCIudG9vbHRpcFwiKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKHRvb2x0aXApIHtcbiAgICAgICAgICAgIHRvb2x0aXAucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgaXMgY2xpY2tlZCBJIGRlc3Ryb3kgdGhlIHRvb2x0aXAuXG4gICAgLy8gd2hlbmV2ZXIgYSBrZXkgaXMgcHJlc3NlZCBvbiB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgSSBkZXN0cm95IHRoZSB0b29sdGlwLlxuICAgIEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiKVxuICAgIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIpXG4gICAgcHVibGljIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkhvdmVyICYmICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BbmRyb2lkL2kpICYmICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmUvaSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcImZvY3VzXCIpXG4gICAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVRvb3RpcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcImJsdXJcIilcbiAgICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQgPT09IFRvb2x0aXBFdmVudC5Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwibW91c2VlbnRlclwiKVxuICAgIHB1YmxpYyBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkhvdmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRlYm91bmNlQ3JlYXRlVG9vbHRpcEZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwibW91c2VsZWF2ZVwiKVxuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aGVlbFwiKVxuICAgIHB1YmxpYyBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkhvdmVyKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIpXG4gICAgcHVibGljIG9uVG91Y2hTdGFydCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSBUb29sdGlwRXZlbnQuSG92ZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy50b3VjaFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRvb3RpcC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHRoaXMubW9iaWxlQmVoYXZpb3IgPT09IE1vYmlsZUJlaGF2aW9yLlByZXNzaW5nID8gdGhpcy5zaG93RGVsYXkgOiAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcInRvdWNoZW5kXCIpXG4gICAgcHVibGljIG9uVG91Y2hFbmQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkhvdmVyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2JpbGVCZWhhdmlvciA9PT0gTW9iaWxlQmVoYXZpb3IuUHJlc3NpbmcpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgY29udGFpbnNQb3NpdGlvbiA9IFtUb29sdGlwUG9zaXRpb24uVG9wLCBUb29sdGlwUG9zaXRpb24uUmlnaHQsIFRvb2x0aXBQb3NpdGlvbi5Cb3R0b20sIFRvb2x0aXBQb3NpdGlvbi5MZWZ0XS5pbmNsdWRlcyhcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWNvbnRhaW5zUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uVG9wO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb29sdGlwICR7dGhpcy5wb3NpdGlvbn0gcG9zaXRpb24gaXMgdW5leHBlY3RlZGApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVUb290aXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiA9PT0gbnVsbCAmJiB0aGlzLnRvb2x0aXA/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZG9tRWxlbSA9IHRoaXMuZ2V0RG9tRWxlbWVudCgpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VG9vbHRpcENvbXBvbmVudFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCh0aGlzLnNob3dUb29sdGlwLmJpbmQodGhpcyksIHRoaXMuc2hvd0RlbGF5KTtcblxuICAgICAgICAgICAgdGhpcy50b29sdGlwRGl2RWxlbWVudCA9IGRvbUVsZW0ucXVlcnlTZWxlY3RvcihcIi50b29sdGlwXCIpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5VGltZSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRoaXMuZGVzdHJveS5iaW5kKHRoaXMpLCB0aGlzLmRpc3BsYXlUaW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RG9tRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShUb29sdGlwQ29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcbiAgICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgIHJldHVybiAodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmlhIHVtIHRvb2x0aXAgcGFyYSBvIGljb25lIGRvIGlucHV0IGVtIGZvY3VzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGljb24gTyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVUb290aXBCeUZvY3VzKGljb246IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiA9PT0gbnVsbCAmJiB0aGlzLnRvb2x0aXA/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZG9tRWxlbSA9IHRoaXMuZ2V0RG9tRWxlbWVudCgpO1xuICAgICAgICAgICAgY29uc3QgdG9vbHRpcCA9IGRvbUVsZW0ucXVlcnlTZWxlY3RvcihcIi50b29sdGlwXCIpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgaWNvbi5hcHBlbmRDaGlsZCh0b29sdGlwKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VG9vbHRpcENvbXBvbmVudFByb3BlcnRpZXMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VG9vbHRpcFBvc2l0aW9uUHJvcGVydHkoaWNvbik7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdG9vbHRpcC5jbGFzc0xpc3QuYWRkKFwidG9vbHRpcC0tdmlzaWJsZVwiKSwgMCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbih3aW5kb3csIFwic2Nyb2xsXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRvb2x0aXBQb3NpdGlvblByb3BlcnR5KGljb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dUb29sdGlwKCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZpc2libGUgPSB0aGlzLnZpc2libGU7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0VG9vbHRpcFBvc2l0aW9uUHJvcGVydHkoKTtcblxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5ib3VuZE9uV2luZG93TW91c2VNb3ZlRnVuY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUb29sdGlwUG9zaXRpb25Qcm9wZXJ0eShlbGVtZW50PzogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbWFyZ2luID0gMjA7XG4gICAgICAgIGNvbnN0IGFuY2hvclNpemUgPSA1O1xuXG4gICAgICAgIGNvbnN0IGRvbUVsZW0gPSBlbGVtZW50IHx8ICgodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcihcIiN0b29sdGlwXCIpO1xuICAgICAgICBjb25zdCB7IGhlaWdodCwgd2lkdGggfSA9IGRvbUVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHsgbGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tIH0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zOiBUb29sdGlwUG9zaXRpb24uVG9wLFxuICAgICAgICAgICAgICAgIGNoZWNrOiAoKSA9PiB0b3AgPiBoZWlnaHQsXG4gICAgICAgICAgICAgICAgc2V0OiAoKSA9PiAoeyBsZWZ0OiBsZWZ0ICsgKHJpZ2h0IC0gbGVmdCkgLyAyLCB0b3A6IHRvcCAtIG1hcmdpbiAtIGFuY2hvclNpemUgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvczogVG9vbHRpcFBvc2l0aW9uLkJvdHRvbSxcbiAgICAgICAgICAgICAgICBjaGVjazogKCkgPT4gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgLSBib3R0b20gPiBoZWlnaHQsXG4gICAgICAgICAgICAgICAgc2V0OiAoKSA9PiAoeyBsZWZ0OiBsZWZ0ICsgKHJpZ2h0IC0gbGVmdCkgLyAyLCB0b3A6IGJvdHRvbSArIG1hcmdpbiB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zOiBUb29sdGlwUG9zaXRpb24uTGVmdCxcbiAgICAgICAgICAgICAgICBjaGVjazogKCkgPT4gbGVmdCA+IHdpZHRoLFxuICAgICAgICAgICAgICAgIHNldDogKCkgPT4gKHsgbGVmdDogbGVmdCAtIG1hcmdpbiwgdG9wOiB0b3AgKyBoZWlnaHQgLyAyIC0gYW5jaG9yU2l6ZSB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zOiBUb29sdGlwUG9zaXRpb24uUmlnaHQsXG4gICAgICAgICAgICAgICAgY2hlY2s6ICgpID0+IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggLSByaWdodCA+IHdpZHRoLFxuICAgICAgICAgICAgICAgIHNldDogKCkgPT4gKHsgbGVmdDogcmlnaHQgKyBtYXJnaW4sIHRvcDogdG9wICsgaGVpZ2h0IC8gMiAtIGFuY2hvclNpemUgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgcG9zLCBjaGVjaywgc2V0IH0gb2YgcG9zaXRpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IHNldCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5sZWZ0ID0gTWF0aC5yb3VuZChsZWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudG9wID0gTWF0aC5yb3VuZCh0b3ApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5wb3NpdGlvbiA9IHRoaXMucG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNlIG7Do28gY29uc2VndWlyIHBvc2ljaW9uYXIsIG1vc3RyYXIgYWJhaXhvXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uLkJvdHRvbTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKGxlZnQgKyAocmlnaHQgLSBsZWZ0KSAvIDIpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudG9wID0gTWF0aC5yb3VuZChib3R0b20gKyBtYXJnaW4pO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UucG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUb29sdGlwQ29tcG9uZW50UHJvcGVydGllcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b29sdGlwID0gdGhpcy50b29sdGlwO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZXNjYXBlID0gdGhpcy5lc2NhcGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwRGl2RWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLmJvdW5kT25XaW5kb3dNb3VzZU1vdmVGdW5jdGlvbik7XG4gICAgfVxufVxuIl19
|
|
327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2YsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU12RDtJQW9DSSwwQkFDcUIsVUFBc0IsRUFDdEIsTUFBc0IsRUFDdEIsd0JBQWtELEVBQ2xELFFBQWtCLEVBQ2xCLGFBQTRCLEVBQzVCLFFBQW1CO1FBTnhDLGlCQVVDO1FBVG9CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFyQ2pDLGFBQVEsR0FBb0IsZUFBZSxDQUFDLEdBQUcsQ0FBQztRQUdoRCxjQUFTLEdBQUcsR0FBRyxDQUFDO1FBTWhCLGlCQUFZLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUdsQyxXQUFNLEdB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aWxzJztcbmltcG9ydCB7XG4gICAgQXBwbGljYXRpb25SZWYsXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIENvbXBvbmVudFJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRGVib3VuY2VVdGlscyB9IGZyb20gXCIuLi91dGlscy9kZWJvdWNlXCI7XG5pbXBvcnQgeyBNb2JpbGVCZWhhdmlvciwgVG9vbHRpcEV2ZW50LCBUb29sdGlwUG9zaXRpb24gfSBmcm9tIFwiLi9tb2RlbHNcIjtcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tIFwiLi90b29sdGlwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRWxlbWVudEFyZWEgfSBmcm9tIFwiLi9tb2RlbHMvZWxlbWVudC1hcmVhXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltzVG9vbHRpcF1cIixcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoXCJzVG9vbHRpcFwiKVxuICAgIHB1YmxpYyB0b29sdGlwOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoXCJ0b29sdGlwUG9zaXRpb25cIilcbiAgICBwdWJsaWMgcG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Ub3A7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93RGVsYXkgPSA1MDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNwbGF5VGltZTogbnVtYmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdG9vbHRpcEV2ZW50ID0gVG9vbHRpcEV2ZW50LkhvdmVyO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXNjYXBlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2aXNpYmxlID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1vYmlsZUJlaGF2aW9yID0gTW9iaWxlQmVoYXZpb3IuUHJlc3Npbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb2N1c2VkSW5wdXRSZWY6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gPSBudWxsO1xuICAgIHByaXZhdGUgc2hvd1RpbWVvdXQ/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSB0b3VjaFRpbWVvdXQ/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSB0b29sdGlwRGl2RWxlbWVudD86IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYm91bmRPbldpbmRvd01vdXNlTW92ZUZ1bmN0aW9uOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZUNyZWF0ZVRvb2x0aXBGdW5jdGlvbjogKCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIGV4aXN0Rm9jdXNlZElucHV0UmVmVG9vbHRpcCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZVV0aWxzOiBEZWJvdW5jZVV0aWxzLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgdGhpcy5ib3VuZE9uV2luZG93TW91c2VNb3ZlRnVuY3Rpb24gPSB0aGlzLm9uV2luZG93TW91c2VNb3ZlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb24gPSB0aGlzLmRlYm91bmNlVXRpbHMuZGVib3VuY2VMZWFkaW5nKCgpID0+IHRoaXMuX2NyZWF0ZVRvb2x0aXAodHJ1ZSwgdHJ1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVG9vbHRpcFZpc2liaWxpdHlXaGVuRm9jdXNPbklucHV0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uV2luZG93TW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbGVtZW50UmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB0b29sVGlwUmVjdCA9IHRoaXMudG9vbHRpcERpdkVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgdG90YWxFbGVtZW50QXJlYSA9IHtcbiAgICAgICAgICAgIHRvcDogTWF0aC5taW4oZWxlbWVudFJlY3QudG9wLCB0b29sVGlwUmVjdC50b3ApLFxuICAgICAgICAgICAgcmlnaHQ6IE1hdGgubWF4KGVsZW1lbnRSZWN0LnJpZ2h0LCB0b29sVGlwUmVjdC5yaWdodCksXG4gICAgICAgICAgICBsZWZ0OiBNYXRoLm1pbihlbGVtZW50UmVjdC5sZWZ0LCB0b29sVGlwUmVjdC5sZWZ0KSxcbiAgICAgICAgICAgIGJvdHRvbTogTWF0aC5tYXgoZWxlbWVudFJlY3QuYm90dG9tLCB0b29sVGlwUmVjdC5ib3R0b20pLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzTW91c2VQb3NpdGlvbk91dHNpZGVPZkVsZW1lbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSwgdG90YWxFbGVtZW50QXJlYSkgJiYgIXRoaXMuZXhpc3RGb2N1c2VkSW5wdXRSZWZUb29sdGlwKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNNb3VzZVBvc2l0aW9uT3V0c2lkZU9mRWxlbWVudChtb3VzZVg6IG51bWJlciwgbW91c2VZOiBudW1iZXIsIGVsZW1lbnRBcmVhOiBFbGVtZW50QXJlYSkge1xuICAgICAgICByZXR1cm4gbW91c2VYIDwgZWxlbWVudEFyZWEubGVmdCB8fCBtb3VzZVggPj0gZWxlbWVudEFyZWEucmlnaHQgfHwgbW91c2VZIDwgZWxlbWVudEFyZWEudG9wIHx8IG1vdXNlWSA+PSBlbGVtZW50QXJlYS5ib3R0b207XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFuaXB1bGEgYSB2aXNpYmlsaWRhZGUgZG8gdG9vbHRpcCBxdWFuZG8gaG91dmVyIHVtYSByZWZlcsOqbmNpYSBkZSBpbnB1dC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBWaXNpYmlsaXR5V2hlbkZvY3VzT25JbnB1dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZElucHV0UmVmKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dEZvY3VzID0gdGhpcy5mb2N1c2VkSW5wdXRSZWY7XG4gICAgICAgICAgICBjb25zdCBpY29uID0gdGhpcy5nZXRJY29uRnJvbUZvY3VzZWRJbnB1dCgpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRGb2N1cywgXCJmb2N1c1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGlzdEZvY3VzZWRJbnB1dFJlZlRvb2x0aXAgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVUb29sdGlwKGZhbHNlLCBmYWxzZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGlucHV0Rm9jdXMsIFwiYmx1clwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVUb29sdGlwKGljb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGlzdEZvY3VzZWRJbnB1dFJlZlRvb2x0aXAgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idMOpbSBvIGVsZW1lbnRvIGRvIMOtY29uZSBhc3NvY2lhZG8gYW8gbGFiZWwgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICogQHJldHVybnMgTyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRJY29uRnJvbUZvY3VzZWRJbnB1dCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgbyB0b29sdGlwIGFzc29jaWFkbyBhbyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICogQHBhcmFtIGljb24gTyDDrWNvbmUgZG8gaW5wdXQgZW0gZm9jdXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW1vdmVUb29sdGlwKGljb246IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvb2x0aXAgPSBpY29uLnF1ZXJ5U2VsZWN0b3IoXCIudG9vbHRpcFwiKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKHRvb2x0aXApIHtcbiAgICAgICAgICAgIHRvb2x0aXAucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgaXMgY2xpY2tlZCBJIGRlc3Ryb3kgdGhlIHRvb2x0aXAuXG4gICAgLy8gd2hlbmV2ZXIgYSBrZXkgaXMgcHJlc3NlZCBvbiB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgSSBkZXN0cm95IHRoZSB0b29sdGlwLlxuICAgIEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiKVxuICAgIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIpXG4gICAgcHVibGljIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkhvdmVyICYmICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BbmRyb2lkL2kpICYmICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmUvaSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcImZvY3VzXCIpXG4gICAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVUb29sdGlwKHRydWUsIHRydWUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwiYmx1clwiKVxuICAgIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCA9PT0gVG9vbHRpcEV2ZW50LkZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIpXG4gICAgcHVibGljIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSBUb29sdGlwRXZlbnQuSG92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIpXG4gICAgQEhvc3RMaXN0ZW5lcihcIndoZWVsXCIpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSBUb29sdGlwRXZlbnQuSG92ZXIgJiYgIXRoaXMuZXhpc3RGb2N1c2VkSW5wdXRSZWZUb29sdGlwKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIpXG4gICAgcHVibGljIG9uVG91Y2hTdGFydCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSBUb29sdGlwRXZlbnQuSG92ZXIpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpO1xuICAgICAgICAgICAgY29uc3QgX2RlbGF5ID0gdGhpcy5tb2JpbGVCZWhhdmlvciA9PT0gTW9iaWxlQmVoYXZpb3IuUHJlc3NpbmcgPyB0aGlzLnNob3dEZWxheSA6IDBcbiAgICAgICAgICAgIHRoaXMudG91Y2hUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9LCBfZGVsYXkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKFwidG91Y2hlbmRcIilcbiAgICBwdWJsaWMgb25Ub3VjaEVuZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50ID09PSBUb29sdGlwRXZlbnQuSG92ZXIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vYmlsZUJlaGF2aW9yID09PSBNb2JpbGVCZWhhdmlvci5QcmVzc2luZykge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZVBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCBjb250YWluc1Bvc2l0aW9uID0gW1Rvb2x0aXBQb3NpdGlvbi5Ub3AsIFRvb2x0aXBQb3NpdGlvbi5SaWdodCwgVG9vbHRpcFBvc2l0aW9uLkJvdHRvbSwgVG9vbHRpcFBvc2l0aW9uLkxlZnRdLmluY2x1ZGVzKFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvblxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghY29udGFpbnNQb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Ub3A7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvb2x0aXAgJHt0aGlzLnBvc2l0aW9ufSBwb3NpdGlvbiBpcyB1bmV4cGVjdGVkYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERvbUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoVG9vbHRpcENvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUodGhpcy5pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgICAgICByZXR1cm4gKHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlVG9vbHRpcCh1c2VTaG93RGVsYXkgPSBmYWxzZSwgYXV0b0Rlc3Ryb3kgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IGhhc1RleHQgPSB0aGlzLnRvb2x0aXA/Lmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IGhhc0NvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50UmVmICE9PSBudWxsO1xuICAgICAgICBpZiAoIWhhc1RleHQgfHwgaGFzQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RG9tRWxlbWVudCgpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRvb2x0aXBEaXZFbGVtZW50ID0gZG9tRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLnRvb2x0aXBcIik7XG4gICAgICAgIHRoaXMuc2V0VG9vbHRpcENvbXBvbmVudFByb3BlcnRpZXMoKTtcbiAgICAgICAgY29uc3QgX3Nob3dEZWxheSA9IHVzZVNob3dEZWxheSA/IHRoaXMuc2hvd0RlbGF5IDogMDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dUb29sdGlwKClcbiAgICAgICAgfSwgX3Nob3dEZWxheSlcblxuXG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4od2luZG93LCBcInNjcm9sbFwiLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFRvb2x0aXBQb3NpdGlvblByb3BlcnR5KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChhdXRvRGVzdHJveSAmJiB0aGlzLmRpc3BsYXlUaW1lKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH0sIHRoaXMuZGlzcGxheVRpbWUpXG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd1Rvb2x0aXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudmlzaWJsZSA9IHRoaXMudmlzaWJsZTtcblxuICAgICAgICAgICAgdGhpcy5zZXRUb29sdGlwUG9zaXRpb25Qcm9wZXJ0eSgpO1xuXG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLmJvdW5kT25XaW5kb3dNb3VzZU1vdmVGdW5jdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRvb2x0aXBQb3NpdGlvblByb3BlcnR5KCkge1xuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXJnaW4gPSAyMDtcbiAgICAgICAgY29uc3QgYW5jaG9yU2l6ZSA9IDU7XG4gICAgICAgIGNvbnN0IGRvbUVsZW0gPSAoKHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoXCIjdG9vbHRpcFwiKTtcbiAgICAgICAgY29uc3QgeyBoZWlnaHQsIHdpZHRoIH0gPSBkb21FbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB7IGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSB9ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvczogVG9vbHRpcFBvc2l0aW9uLlRvcCxcbiAgICAgICAgICAgICAgICBjaGVjazogKCkgPT4gdG9wID4gaGVpZ2h0LFxuICAgICAgICAgICAgICAgIHNldDogKCkgPT4gKHsgbGVmdDogbGVmdCArIChyaWdodCAtIGxlZnQpIC8gMiwgdG9wOiB0b3AgLSBtYXJnaW4gLSBhbmNob3JTaXplIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3M6IFRvb2x0aXBQb3NpdGlvbi5Cb3R0b20sXG4gICAgICAgICAgICAgICAgY2hlY2s6ICgpID0+IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0IC0gYm90dG9tID4gaGVpZ2h0LFxuICAgICAgICAgICAgICAgIHNldDogKCkgPT4gKHsgbGVmdDogbGVmdCArIChyaWdodCAtIGxlZnQpIC8gMiwgdG9wOiBib3R0b20gKyBtYXJnaW4gfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvczogVG9vbHRpcFBvc2l0aW9uLkxlZnQsXG4gICAgICAgICAgICAgICAgY2hlY2s6ICgpID0+IGxlZnQgPiB3aWR0aCxcbiAgICAgICAgICAgICAgICBzZXQ6ICgpID0+ICh7IGxlZnQ6IGxlZnQgLSBtYXJnaW4sIHRvcDogdG9wICsgaGVpZ2h0IC8gMiAtIGFuY2hvclNpemUgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvczogVG9vbHRpcFBvc2l0aW9uLlJpZ2h0LFxuICAgICAgICAgICAgICAgIGNoZWNrOiAoKSA9PiBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIC0gcmlnaHQgPiB3aWR0aCxcbiAgICAgICAgICAgICAgICBzZXQ6ICgpID0+ICh7IGxlZnQ6IHJpZ2h0ICsgbWFyZ2luLCB0b3A6IHRvcCArIGhlaWdodCAvIDIgLSBhbmNob3JTaXplIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgeyBwb3MsIGNoZWNrLCBzZXQgfSBvZiBwb3NpdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2soKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gcG9zO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGxlZnQsIHRvcCB9ID0gc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKGxlZnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBNYXRoLnJvdW5kKHRvcCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2UgbsOjbyBjb25zZWd1aXIgcG9zaWNpb25hciwgbW9zdHJhciBhYmFpeG9cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb24uQm90dG9tO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubGVmdCA9IE1hdGgucm91bmQobGVmdCArIChyaWdodCAtIGxlZnQpIC8gMik7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBNYXRoLnJvdW5kKGJvdHRvbSArIG1hcmdpbik7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5wb3NpdGlvbiA9IHRoaXMucG9zaXRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRvb2x0aXBDb21wb25lbnRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvb2x0aXAgPSB0aGlzLnRvb2x0aXA7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lc2NhcGUgPSB0aGlzLmVzY2FwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLmNvbXBvbmVudFJlZikpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dCk7XG4gICAgICAgICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcERpdkVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5ib3VuZE9uV2luZG93TW91c2VNb3ZlRnVuY3Rpb24pO1xuICAgIH1cbn1cbiJdfQ==
|