@bravura/ui 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/behavior/await.directive.d.ts +60 -0
- package/behavior/behavior.module.d.ts +5 -2
- package/behavior/public-api.d.ts +1 -0
- package/behavior/sizing.directive.d.ts +12 -6
- package/bundles/bravura-ui-behavior.umd.js +161 -23
- package/bundles/bravura-ui-behavior.umd.js.map +1 -1
- package/bundles/bravura-ui-form-field.umd.js +6 -4
- package/bundles/bravura-ui-form-field.umd.js.map +1 -1
- package/bundles/bravura-ui-tooltip.umd.js +8 -1
- package/bundles/bravura-ui-tooltip.umd.js.map +1 -1
- package/esm2015/behavior/await.directive.js +106 -0
- package/esm2015/behavior/behavior.module.js +9 -6
- package/esm2015/behavior/public-api.js +2 -1
- package/esm2015/behavior/sizing.directive.js +42 -14
- package/esm2015/form-field/form-field.component.js +7 -5
- package/esm2015/tooltip/tooltip.component.js +2 -2
- package/esm2015/tooltip/tooltip.directive.js +8 -1
- package/fesm2015/bravura-ui-behavior.js +151 -19
- package/fesm2015/bravura-ui-behavior.js.map +1 -1
- package/fesm2015/bravura-ui-form-field.js +6 -4
- package/fesm2015/bravura-ui-form-field.js.map +1 -1
- package/fesm2015/bravura-ui-tooltip.js +8 -1
- package/fesm2015/bravura-ui-tooltip.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,8 @@ import { MatFormField, matFormFieldAnimations, MAT_FORM_FIELD } from '@angular/m
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
5
5
|
import * as i2 from "@angular/cdk/observers";
|
|
6
|
+
/** @ignore */
|
|
7
|
+
const TYPE_REF = forwardRef(() => FormFieldComponent);
|
|
6
8
|
/**
|
|
7
9
|
* Container for form controls that applies Material Design styling and behavior.
|
|
8
10
|
*
|
|
@@ -50,8 +52,8 @@ export class FormFieldComponent extends MatFormField {
|
|
|
50
52
|
}
|
|
51
53
|
FormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: FormFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
52
54
|
FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: FormFieldComponent, selector: "bui-form-field", inputs: { color: "color" }, host: { listeners: { "click": "_hostClicked($event)" }, properties: { "class.mat-form-field-appearance-standard": "appearance == \"standard\"", "class.mat-form-field-appearance-fill": "appearance == \"fill\"", "class.mat-form-field-appearance-outline": "appearance == \"outline\"", "class.mat-form-field-appearance-detach": "appearance == \"detach\"", "class.mat-form-field-appearance-bound": "appearance == \"bound\"", "class.mat-form-field-appearance-legacy": "appearance == \"legacy\"", "class.mat-form-field-invalid": "_control.errorState", "class.mat-form-field-can-float": "_canLabelFloat()", "class.mat-form-field-should-float": "_shouldLabelFloat()", "class.mat-form-field-has-label": "_hasFloatingLabel()", "class.mat-form-field-hide-placeholder": "_hideControlPlaceholder()", "class.mat-form-field-disabled": "_control.disabled", "class.mat-form-field-autofilled": "_control.autofilled", "class.mat-focused": "_control.focused", "class.ng-untouched": "_shouldForward(\"untouched\")", "class.ng-touched": "_shouldForward(\"touched\")", "class.ng-pristine": "_shouldForward(\"pristine\")", "class.ng-dirty": "_shouldForward(\"dirty\")", "class.ng-valid": "_shouldForward(\"valid\")", "class.ng-invalid": "_shouldForward(\"invalid\")", "class.ng-pending": "_shouldForward(\"pending\")", "class._mat-animation-noopable": "!_animationsEnabled" }, classAttribute: "mat-form-field bui-form-field" }, providers: [
|
|
53
|
-
{ provide: MAT_FORM_FIELD, useExisting:
|
|
54
|
-
{ provide: MatFormField, useExisting:
|
|
55
|
+
{ provide: MAT_FORM_FIELD, useExisting: TYPE_REF },
|
|
56
|
+
{ provide: MatFormField, useExisting: TYPE_REF }
|
|
55
57
|
], exportAs: ["buiFormField"], usesInheritance: true, ngImport: i0, template: "<div class=\"mat-form-field-wrapper\">\n\t<div class=\"mat-form-field-flex {{ _borderClass() }}\" #connectionContainer>\n\t\t<!-- Outline used for outline appearance. -->\n\t\t<ng-container *ngIf=\"appearance == 'outline'\">\n\t\t\t<div class=\"mat-form-field-outline\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"mat-form-field-outline mat-form-field-outline-thick\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n\t\t\t<ng-content select=\"[matPrefix]\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"{{ _enhancedAppearance() ? 'bui-form-field-infix' : 'mat-form-field-infix' }}\" #inputContainer>\n\t\t\t<ng-content></ng-content>\n\n\t\t\t<span class=\"mat-form-field-label-wrapper\">\n\t\t\t\t<!-- We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n\t\t\t read if it comes before the control in the DOM. -->\n\t\t\t\t<label\n\t\t\t\t\tclass=\"mat-form-field-label\"\n\t\t\t\t\t(cdkObserveContent)=\"updateOutlineGap()\"\n\t\t\t\t\t[cdkObserveContentDisabled]=\"appearance != 'outline'\"\n\t\t\t\t\t[id]=\"_labelId\"\n\t\t\t\t\t[attr.for]=\"_control.id\"\n\t\t\t\t\t[attr.aria-owns]=\"_control.id\"\n\t\t\t\t\t[class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t\t\t\t#label\n\t\t\t\t\t*ngIf=\"_hasFloatingLabel()\"\n\t\t\t\t\t[ngSwitch]=\"_hasLabel()\"\n\t\t\t\t>\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove in favor of mat-label element an placeholder attr. -->\n\t\t\t\t\t<ng-container *ngSwitchCase=\"false\">\n\t\t\t\t\t\t<ng-content select=\"mat-placeholder\"></ng-content>\n\t\t\t\t\t\t<span>{{ _control.placeholder }}</span>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content>\n\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove `mat-placeholder-required` class -->\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"mat-placeholder-required mat-form-field-required-marker\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t*ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\"\n\t\t\t\t\t\t> *</span\n\t\t\t\t\t>\n\t\t\t\t</label>\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n\t\t\t<ng-content select=\"[matSuffix]\"></ng-content>\n\t\t</div>\n\t\t<div *ngIf=\"_enhancedAppearance()\" class=\"bui-form-field-right-filler\"></div>\n\t</div>\n\n\t<!-- Underline used for legacy, standard, and box appearances. -->\n\t<div class=\"mat-form-field-underline\" #underline *ngIf=\"appearance != 'outline'\">\n\t\t<span\n\t\t\tclass=\"mat-form-field-ripple\"\n\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t></span>\n\t</div>\n\n\t<div class=\"mat-form-field-subscript-wrapper\" [ngSwitch]=\"_getDisplayedMessages()\" (click)=\"$event.stopPropagation()\">\n\t\t<div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<ng-content select=\"mat-error\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<!-- TODO(mmalerba): use an actual <mat-hint> once all selectors are switched to mat-* -->\n\t\t\t<div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{ hintLabel }}</div>\n\t\t\t<ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n\t\t\t<div class=\"mat-form-field-hint-spacer\"></div>\n\t\t\t<ng-content select=\"mat-hint[align='end']\"></ng-content>\n\t\t</div>\n\t</div>\n</div>\n", styles: [".bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex{padding:.5em;align-items:center;border-radius:4px;border-style:solid}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex:not(.bui-form-field-border-thick):not(:hover),.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{border-width:1px;margin:1px}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex:not(.bui-form-field-border-thick):not(:hover) .bui-form-field-right-filler,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled .bui-form-field-right-filler{width:2px}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{border-color:#80808033;border-style:dotted}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-default{border-color:#80808066}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-thick,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-border-emphasis:hover{border-width:2px}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-thick .bui-form-field-right-filler,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-border-emphasis:hover .bui-form-field-right-filler{width:0}.bui-form-field.mat-form-field-appearance-detach,.bui-form-field.mat-form-field-appearance-bound{padding-top:.75em}.bui-form-field.mat-form-field-appearance-detach .mat-form-field-wrapper,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-wrapper{padding-top:.5em}.bui-form-field.mat-form-field-appearance-detach .bui-form-field-infix,.bui-form-field.mat-form-field-appearance-bound .bui-form-field-infix{flex-grow:1}.bui-form-field.mat-form-field-appearance-detach .mat-form-field-label,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-label{font-size:1.125em}.bui-form-field.mat-form-field-appearance-detach .mat-form-field-flex,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex{align-items:center}.bui-form-field.mat-form-field-appearance-detach .mat-form-field-flex{padding:.125em 0;align-items:center}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], animations: [matFormFieldAnimations.transitionMessages], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
56
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
57
59
|
type: Component,
|
|
@@ -90,8 +92,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
90
92
|
encapsulation: ViewEncapsulation.None,
|
|
91
93
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
92
94
|
providers: [
|
|
93
|
-
{ provide: MAT_FORM_FIELD, useExisting:
|
|
94
|
-
{ provide: MatFormField, useExisting:
|
|
95
|
+
{ provide: MAT_FORM_FIELD, useExisting: TYPE_REF },
|
|
96
|
+
{ provide: MatFormField, useExisting: TYPE_REF }
|
|
95
97
|
]
|
|
96
98
|
}]
|
|
97
99
|
}], propDecorators: { _hostClicked: [{
|
|
@@ -99,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
99
101
|
args: ['click', ['$event']]
|
|
100
102
|
}] } });
|
|
101
103
|
FormFieldComponent.ɵcmp.styles.push(MatFormField.ɵcmp.styles);
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBRXBHOzs7Ozs7R0FNRztBQXdDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsWUFBWTtJQUNuRDs7T0FFRztJQUNILGtCQUFrQjtRQUNqQixPQUFPLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDWCxJQUFLLElBQUksQ0FBQyxVQUFrQixLQUFLLE9BQU8sRUFBRTtZQUN6QyxPQUFPLDZCQUE2QixDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUMzQixPQUFPLGdDQUFnQyxDQUFDO1NBQ3hDO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUNwQyxPQUFPLDZDQUE2QyxDQUFDO1NBQ3JEO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtZQUNqQyxPQUFPLGNBQWMsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTLDhCQUE4QixDQUFDO1NBQzNFO2FBQU07WUFDTixPQUFPLG1EQUFtRCxDQUFDO1NBQzNEO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2xCLE9BQVEsSUFBSSxDQUFDLFVBQWtCLEtBQUssUUFBUSxJQUFLLElBQUksQ0FBQyxVQUFrQixLQUFLLE9BQU8sQ0FBQztJQUN0RixDQUFDO0lBRUQsY0FBYztJQUVkLFlBQVksQ0FBQyxLQUFpQjtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekUsQ0FBQzs7K0dBckNXLGtCQUFrQjttR0FBbEIsa0JBQWtCLGc4Q0FMbkI7UUFDVixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1FBQzlFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7S0FDNUUsNkVDL0NGLCsrSEF5RkEsaXBGRDFFYSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDOzJGQWtDM0Msa0JBQWtCO2tCQXZDOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQzFDLFVBQVUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDO29CQUN2RCxJQUFJLEVBQUU7d0JBQ0wsS0FBSyxFQUFFLCtCQUErQjt3QkFDdEMsNENBQTRDLEVBQUUsMEJBQTBCO3dCQUN4RSx3Q0FBd0MsRUFBRSxzQkFBc0I7d0JBQ2hFLDJDQUEyQyxFQUFFLHlCQUF5Qjt3QkFDdEUsMENBQTBDLEVBQUUsd0JBQXdCO3dCQUNwRSx5Q0FBeUMsRUFBRSx1QkFBdUI7d0JBQ2xFLDBDQUEwQyxFQUFFLHdCQUF3Qjt3QkFDcEUsZ0NBQWdDLEVBQUUscUJBQXFCO3dCQUN2RCxrQ0FBa0MsRUFBRSxrQkFBa0I7d0JBQ3RELHFDQUFxQyxFQUFFLHFCQUFxQjt3QkFDNUQsa0NBQWtDLEVBQUUscUJBQXFCO3dCQUN6RCx5Q0FBeUMsRUFBRSwyQkFBMkI7d0JBQ3RFLGlDQUFpQyxFQUFFLG1CQUFtQjt3QkFDdEQsbUNBQW1DLEVBQUUscUJBQXFCO3dCQUMxRCxxQkFBcUIsRUFBRSxrQkFBa0I7d0JBQ3pDLHNCQUFzQixFQUFFLDZCQUE2Qjt3QkFDckQsb0JBQW9CLEVBQUUsMkJBQTJCO3dCQUNqRCxxQkFBcUIsRUFBRSw0QkFBNEI7d0JBQ25ELGtCQUFrQixFQUFFLHlCQUF5Qjt3QkFDN0Msa0JBQWtCLEVBQUUseUJBQXlCO3dCQUM3QyxvQkFBb0IsRUFBRSwyQkFBMkI7d0JBQ2pELG9CQUFvQixFQUFFLDJCQUEyQjt3QkFDakQsaUNBQWlDLEVBQUUscUJBQXFCO3FCQUN4RDtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2pCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNWLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO3dCQUM5RSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsRUFBRTtxQkFDNUU7aUJBQ0Q7OEJBb0NBLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBTWpDLGtCQUEwQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFFLFlBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBtYXRGb3JtRmllbGRBbmltYXRpb25zLCBNQVRfRk9STV9GSUVMRCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgZm9ybSBjb250cm9scyB0aGF0IGFwcGxpZXMgTWF0ZXJpYWwgRGVzaWduIHN0eWxpbmcgYW5kIGJlaGF2aW9yLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGV4dGVuZHMgQW5ndWxhciBNYXRlcmlhbCdzIFttYXQtZm9ybS1maWVsZF0oaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2NvbXBvbmVudHMvZm9ybS1maWVsZCkgYW5kIHByb3ZpZGVzIHR3byBhZGRpdGlvbmFsIGFwcGVhcmFuY2VzXG4gKiBgYm91bmRgIGFuZCBgZGV0YWNoYC4gYGJvdW5kYCByZW5kZXJzIHRoZSBsYWJlbCBvdXRzaWRlIHRoZSBvdXRsaW5lZCBhcmVhIG9mIHRoZSBmaWVsZCwgd2hpbGUgYGRldGFjaGAgcmVtb3ZlIHRoZSBib3JkZXJzIGFsbCB0b2dldGhlci4gYGRldGFjaGBcbiAqIGlzIGdlbmVyYWxseSB1c2VkIHdpdGggZm9ybSBjb250cm9scyB0aGF0IHJlbmRlciB0aGVpciBvd24gYm9yZGVycy5cbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnYnVpLWZvcm0tZmllbGQnLFxuXHRleHBvcnRBczogJ2J1aUZvcm1GaWVsZCcsXG5cdHRlbXBsYXRlVXJsOiAnZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQuY29tcG9uZW50LnNjc3MnXSxcblx0YW5pbWF0aW9uczogW21hdEZvcm1GaWVsZEFuaW1hdGlvbnMudHJhbnNpdGlvbk1lc3NhZ2VzXSxcblx0aG9zdDoge1xuXHRcdGNsYXNzOiAnbWF0LWZvcm0tZmllbGQgYnVpLWZvcm0tZmllbGQnLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZF0nOiAnYXBwZWFyYW5jZSA9PSBcInN0YW5kYXJkXCInLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsXSc6ICdhcHBlYXJhbmNlID09IFwiZmlsbFwiJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZV0nOiAnYXBwZWFyYW5jZSA9PSBcIm91dGxpbmVcIicsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWRldGFjaF0nOiAnYXBwZWFyYW5jZSA9PSBcImRldGFjaFwiJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtYm91bmRdJzogJ2FwcGVhcmFuY2UgPT0gXCJib3VuZFwiJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5XSc6ICdhcHBlYXJhbmNlID09IFwibGVnYWN5XCInLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF0nOiAnX2NvbnRyb2wuZXJyb3JTdGF0ZScsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRdJzogJ19jYW5MYWJlbEZsb2F0KCknLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0XSc6ICdfc2hvdWxkTGFiZWxGbG9hdCgpJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhhcy1sYWJlbF0nOiAnX2hhc0Zsb2F0aW5nTGFiZWwoKScsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyXSc6ICdfaGlkZUNvbnRyb2xQbGFjZWhvbGRlcigpJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkXSc6ICdfY29udHJvbC5kaXNhYmxlZCcsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbGVkXSc6ICdfY29udHJvbC5hdXRvZmlsbGVkJyxcblx0XHQnW2NsYXNzLm1hdC1mb2N1c2VkXSc6ICdfY29udHJvbC5mb2N1c2VkJyxcblx0XHQnW2NsYXNzLm5nLXVudG91Y2hlZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJ1bnRvdWNoZWRcIiknLFxuXHRcdCdbY2xhc3MubmctdG91Y2hlZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJ0b3VjaGVkXCIpJyxcblx0XHQnW2NsYXNzLm5nLXByaXN0aW5lXSc6ICdfc2hvdWxkRm9yd2FyZChcInByaXN0aW5lXCIpJyxcblx0XHQnW2NsYXNzLm5nLWRpcnR5XSc6ICdfc2hvdWxkRm9yd2FyZChcImRpcnR5XCIpJyxcblx0XHQnW2NsYXNzLm5nLXZhbGlkXSc6ICdfc2hvdWxkRm9yd2FyZChcInZhbGlkXCIpJyxcblx0XHQnW2NsYXNzLm5nLWludmFsaWRdJzogJ19zaG91bGRGb3J3YXJkKFwiaW52YWxpZFwiKScsXG5cdFx0J1tjbGFzcy5uZy1wZW5kaW5nXSc6ICdfc2hvdWxkRm9yd2FyZChcInBlbmRpbmdcIiknLFxuXHRcdCdbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdJzogJyFfYW5pbWF0aW9uc0VuYWJsZWQnXG5cdH0sXG5cdGlucHV0czogWydjb2xvciddLFxuXHRlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0cHJvdmlkZXJzOiBbXG5cdFx0eyBwcm92aWRlOiBNQVRfRk9STV9GSUVMRCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9ybUZpZWxkQ29tcG9uZW50KSB9LFxuXHRcdHsgcHJvdmlkZTogTWF0Rm9ybUZpZWxkLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtRmllbGRDb21wb25lbnQpIH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRDb21wb25lbnQgZXh0ZW5kcyBNYXRGb3JtRmllbGQge1xuXHQvKipcblx0ICogQGlnbm9yZVxuXHQgKi9cblx0X3Nob3VsZEFsd2F5c0Zsb2F0KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzdXBlci5fc2hvdWxkQWx3YXlzRmxvYXQoKSB8fCB0aGlzLl9lbmhhbmNlZEFwcGVhcmFuY2UoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAaWdub3JlXG5cdCAqL1xuXHRfYm9yZGVyQ2xhc3MoKTogc3RyaW5nIHtcblx0XHRpZiAoKHRoaXMuYXBwZWFyYW5jZSBhcyBhbnkpICE9PSAnYm91bmQnKSB7XG5cdFx0XHRyZXR1cm4gJ2J1aS1mb3JtLWZpZWxkLWZsZXgtZGVmYXVsdCc7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jb250cm9sLmRpc2FibGVkKSB7XG5cdFx0XHRyZXR1cm4gJ2J1aS1mb3JtLWZpZWxkLWJvcmRlci1kaXNhYmxlZCc7XG5cdFx0fSBlbHNlIGlmICh0aGlzLl9jb250cm9sLmVycm9yU3RhdGUpIHtcblx0XHRcdHJldHVybiAnYnVpLWJvcmRlci13YXJuIGJ1aS1mb3JtLWZpZWxkLWJvcmRlci10aGljayc7XG5cdFx0fSBlbHNlIGlmICh0aGlzLl9jb250cm9sLmZvY3VzZWQpIHtcblx0XHRcdHJldHVybiBgYnVpLWJvcmRlci0ke3RoaXMuY29sb3IgfHwgJ3ByaW1hcnknfSBidWktZm9ybS1maWVsZC1ib3JkZXItdGhpY2tgO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gJ2J1aS1mb3JtLWZpZWxkLWJvcmRlci1kZWZhdWx0IGJ1aS1ib3JkZXItZW1waGFzaXMnO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAaWdub3JlXG5cdCAqL1xuXHRfZW5oYW5jZWRBcHBlYXJhbmNlKCkge1xuXHRcdHJldHVybiAodGhpcy5hcHBlYXJhbmNlIGFzIGFueSkgPT09ICdkZXRhY2gnIHx8ICh0aGlzLmFwcGVhcmFuY2UgYXMgYW55KSA9PT0gJ2JvdW5kJztcblx0fVxuXG5cdC8qKiBAaWdub3JlICovXG5cdEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcblx0X2hvc3RDbGlja2VkKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG5cdFx0dGhpcy5fY29udHJvbC5vbkNvbnRhaW5lckNsaWNrICYmIHRoaXMuX2NvbnRyb2wub25Db250YWluZXJDbGljayhldmVudCk7XG5cdH1cbn1cblxuKEZvcm1GaWVsZENvbXBvbmVudCBhcyBhbnkpLsm1Y21wLnN0eWxlcy5wdXNoKChNYXRGb3JtRmllbGQgYXMgYW55KS7JtWNtcC5zdHlsZXMpO1xuIiwiPGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJcIj5cblx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWZsZXgge3sgX2JvcmRlckNsYXNzKCkgfX1cIiAjY29ubmVjdGlvbkNvbnRhaW5lcj5cblx0XHQ8IS0tIE91dGxpbmUgdXNlZCBmb3Igb3V0bGluZSBhcHBlYXJhbmNlLiAtLT5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwZWFyYW5jZSA9PSAnb3V0bGluZSdcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0XCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcFwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmRcIj48L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUgbWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1wiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydFwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXBcIj48L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kXCI+PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblxuXHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1wcmVmaXhcIiAqbmdJZj1cIl9wcmVmaXhDaGlsZHJlbi5sZW5ndGhcIj5cblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXG5cdFx0PGRpdiBjbGFzcz1cInt7IF9lbmhhbmNlZEFwcGVhcmFuY2UoKSA/ICdidWktZm9ybS1maWVsZC1pbmZpeCcgOiAnbWF0LWZvcm0tZmllbGQtaW5maXgnIH19XCIgI2lucHV0Q29udGFpbmVyPlxuXHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG5cdFx0XHQ8c3BhbiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcIj5cblx0XHRcdFx0PCEtLSBXZSBhZGQgYXJpYS1vd25zIGFzIGEgd29ya2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gSkFXUyAmIE5WREEgd2hlcmUgdGhlIGxhYmVsIGlzbid0XG5cdFx0XHQgICByZWFkIGlmIGl0IGNvbWVzIGJlZm9yZSB0aGUgY29udHJvbCBpbiB0aGUgRE9NLiAtLT5cblx0XHRcdFx0PGxhYmVsXG5cdFx0XHRcdFx0Y2xhc3M9XCJtYXQtZm9ybS1maWVsZC1sYWJlbFwiXG5cdFx0XHRcdFx0KGNka09ic2VydmVDb250ZW50KT1cInVwZGF0ZU91dGxpbmVHYXAoKVwiXG5cdFx0XHRcdFx0W2Nka09ic2VydmVDb250ZW50RGlzYWJsZWRdPVwiYXBwZWFyYW5jZSAhPSAnb3V0bGluZSdcIlxuXHRcdFx0XHRcdFtpZF09XCJfbGFiZWxJZFwiXG5cdFx0XHRcdFx0W2F0dHIuZm9yXT1cIl9jb250cm9sLmlkXCJcblx0XHRcdFx0XHRbYXR0ci5hcmlhLW93bnNdPVwiX2NvbnRyb2wuaWRcIlxuXHRcdFx0XHRcdFtjbGFzcy5tYXQtZW1wdHldPVwiX2NvbnRyb2wuZW1wdHkgJiYgIV9zaG91bGRBbHdheXNGbG9hdCgpXCJcblx0XHRcdFx0XHRbY2xhc3MubWF0LWZvcm0tZmllbGQtZW1wdHldPVwiX2NvbnRyb2wuZW1wdHkgJiYgIV9zaG91bGRBbHdheXNGbG9hdCgpXCJcblx0XHRcdFx0XHRbY2xhc3MubWF0LWFjY2VudF09XCJjb2xvciA9PSAnYWNjZW50J1wiXG5cdFx0XHRcdFx0W2NsYXNzLm1hdC13YXJuXT1cImNvbG9yID09ICd3YXJuJ1wiXG5cdFx0XHRcdFx0I2xhYmVsXG5cdFx0XHRcdFx0Km5nSWY9XCJfaGFzRmxvYXRpbmdMYWJlbCgpXCJcblx0XHRcdFx0XHRbbmdTd2l0Y2hdPVwiX2hhc0xhYmVsKClcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PCEtLSBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHJlbW92ZSBpbiBmYXZvciBvZiBtYXQtbGFiZWwgZWxlbWVudCBhbiBwbGFjZWhvbGRlciBhdHRyLiAtLT5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuXHRcdFx0XHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LXBsYWNlaG9sZGVyXCI+PC9uZy1jb250ZW50PlxuXHRcdFx0XHRcdFx0PHNwYW4+e3sgX2NvbnRyb2wucGxhY2Vob2xkZXIgfX08L3NwYW4+XG5cdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cblx0XHRcdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtbGFiZWxcIiAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPjwvbmctY29udGVudD5cblxuXHRcdFx0XHRcdDwhLS0gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCByZW1vdmUgYG1hdC1wbGFjZWhvbGRlci1yZXF1aXJlZGAgY2xhc3MgLS0+XG5cdFx0XHRcdFx0PHNwYW5cblx0XHRcdFx0XHRcdGNsYXNzPVwibWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkIG1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlclwiXG5cdFx0XHRcdFx0XHRhcmlhLWhpZGRlbj1cInRydWVcIlxuXHRcdFx0XHRcdFx0Km5nSWY9XCIhaGlkZVJlcXVpcmVkTWFya2VyICYmIF9jb250cm9sLnJlcXVpcmVkICYmICFfY29udHJvbC5kaXNhYmxlZFwiXG5cdFx0XHRcdFx0XHQ+JiMzMjsqPC9zcGFuXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0PC9zcGFuPlxuXHRcdDwvZGl2PlxuXG5cdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFwiICpuZ0lmPVwiX3N1ZmZpeENoaWxkcmVuLmxlbmd0aFwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cIl9lbmhhbmNlZEFwcGVhcmFuY2UoKVwiIGNsYXNzPVwiYnVpLWZvcm0tZmllbGQtcmlnaHQtZmlsbGVyXCI+PC9kaXY+XG5cdDwvZGl2PlxuXG5cdDwhLS0gVW5kZXJsaW5lIHVzZWQgZm9yIGxlZ2FjeSwgc3RhbmRhcmQsIGFuZCBib3ggYXBwZWFyYW5jZXMuIC0tPlxuXHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lXCIgI3VuZGVybGluZSAqbmdJZj1cImFwcGVhcmFuY2UgIT0gJ291dGxpbmUnXCI+XG5cdFx0PHNwYW5cblx0XHRcdGNsYXNzPVwibWF0LWZvcm0tZmllbGQtcmlwcGxlXCJcblx0XHRcdFtjbGFzcy5tYXQtYWNjZW50XT1cImNvbG9yID09ICdhY2NlbnQnXCJcblx0XHRcdFtjbGFzcy5tYXQtd2Fybl09XCJjb2xvciA9PSAnd2FybidcIlxuXHRcdD48L3NwYW4+XG5cdDwvZGl2PlxuXG5cdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlclwiIFtuZ1N3aXRjaF09XCJfZ2V0RGlzcGxheWVkTWVzc2FnZXMoKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cblx0XHQ8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZXJyb3InXCIgW0B0cmFuc2l0aW9uTWVzc2FnZXNdPVwiX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlXCI+XG5cdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtZXJyb3JcIj48L25nLWNvbnRlbnQ+XG5cdFx0PC9kaXY+XG5cblx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyXCIgKm5nU3dpdGNoQ2FzZT1cIidoaW50J1wiIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT1cIl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiPlxuXHRcdFx0PCEtLSBUT0RPKG1tYWxlcmJhKTogdXNlIGFuIGFjdHVhbCA8bWF0LWhpbnQ+IG9uY2UgYWxsIHNlbGVjdG9ycyBhcmUgc3dpdGNoZWQgdG8gbWF0LSogLS0+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiaGludExhYmVsXCIgW2lkXT1cIl9oaW50TGFiZWxJZFwiIGNsYXNzPVwibWF0LWhpbnRcIj57eyBoaW50TGFiZWwgfX08L2Rpdj5cblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1oaW50Om5vdChbYWxpZ249J2VuZCddKVwiPjwvbmctY29udGVudD5cblx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlclwiPjwvZGl2PlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnRbYWxpZ249J2VuZCddXCI+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBRXBHLGNBQWM7QUFDZCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUV0RDs7Ozs7O0dBTUc7QUF3Q0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFlBQVk7SUFDbkQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDakIsT0FBTyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1gsSUFBSyxJQUFJLENBQUMsVUFBa0IsS0FBSyxPQUFPLEVBQUU7WUFDekMsT0FBTyw2QkFBNkIsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDM0IsT0FBTyxnQ0FBZ0MsQ0FBQztTQUN4QzthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7WUFDcEMsT0FBTyw2Q0FBNkMsQ0FBQztTQUNyRDthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDakMsT0FBTyxjQUFjLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyw4QkFBOEIsQ0FBQztTQUMzRTthQUFNO1lBQ04sT0FBTyxtREFBbUQsQ0FBQztTQUMzRDtJQUNGLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNsQixPQUFRLElBQUksQ0FBQyxVQUFrQixLQUFLLFFBQVEsSUFBSyxJQUFJLENBQUMsVUFBa0IsS0FBSyxPQUFPLENBQUM7SUFDdEYsQ0FBQztJQUVELGNBQWM7SUFFZCxZQUFZLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OytHQXJDVyxrQkFBa0I7bUdBQWxCLGtCQUFrQixnOENBTG5CO1FBQ1YsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUU7UUFDbEQsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUU7S0FDaEQsNkVDbERGLCsrSEF5RkEsaXBGRHZFYSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDOzJGQWtDM0Msa0JBQWtCO2tCQXZDOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQzFDLFVBQVUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDO29CQUN2RCxJQUFJLEVBQUU7d0JBQ0wsS0FBSyxFQUFFLCtCQUErQjt3QkFDdEMsNENBQTRDLEVBQUUsMEJBQTBCO3dCQUN4RSx3Q0FBd0MsRUFBRSxzQkFBc0I7d0JBQ2hFLDJDQUEyQyxFQUFFLHlCQUF5Qjt3QkFDdEUsMENBQTBDLEVBQUUsd0JBQXdCO3dCQUNwRSx5Q0FBeUMsRUFBRSx1QkFBdUI7d0JBQ2xFLDBDQUEwQyxFQUFFLHdCQUF3Qjt3QkFDcEUsZ0NBQWdDLEVBQUUscUJBQXFCO3dCQUN2RCxrQ0FBa0MsRUFBRSxrQkFBa0I7d0JBQ3RELHFDQUFxQyxFQUFFLHFCQUFxQjt3QkFDNUQsa0NBQWtDLEVBQUUscUJBQXFCO3dCQUN6RCx5Q0FBeUMsRUFBRSwyQkFBMkI7d0JBQ3RFLGlDQUFpQyxFQUFFLG1CQUFtQjt3QkFDdEQsbUNBQW1DLEVBQUUscUJBQXFCO3dCQUMxRCxxQkFBcUIsRUFBRSxrQkFBa0I7d0JBQ3pDLHNCQUFzQixFQUFFLDZCQUE2Qjt3QkFDckQsb0JBQW9CLEVBQUUsMkJBQTJCO3dCQUNqRCxxQkFBcUIsRUFBRSw0QkFBNEI7d0JBQ25ELGtCQUFrQixFQUFFLHlCQUF5Qjt3QkFDN0Msa0JBQWtCLEVBQUUseUJBQXlCO3dCQUM3QyxvQkFBb0IsRUFBRSwyQkFBMkI7d0JBQ2pELG9CQUFvQixFQUFFLDJCQUEyQjt3QkFDakQsaUNBQWlDLEVBQUUscUJBQXFCO3FCQUN4RDtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2pCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNWLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFO3dCQUNsRCxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRTtxQkFDaEQ7aUJBQ0Q7OEJBb0NBLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBTWpDLGtCQUEwQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFFLFlBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBtYXRGb3JtRmllbGRBbmltYXRpb25zLCBNQVRfRk9STV9GSUVMRCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG4vKiogQGlnbm9yZSAqL1xuY29uc3QgVFlQRV9SRUYgPSBmb3J3YXJkUmVmKCgpID0+IEZvcm1GaWVsZENvbXBvbmVudCk7XG5cbi8qKlxuICogQ29udGFpbmVyIGZvciBmb3JtIGNvbnRyb2xzIHRoYXQgYXBwbGllcyBNYXRlcmlhbCBEZXNpZ24gc3R5bGluZyBhbmQgYmVoYXZpb3IuXG4gKlxuICogVGhpcyBjb21wb25lbnQgZXh0ZW5kcyBBbmd1bGFyIE1hdGVyaWFsJ3MgW21hdC1mb3JtLWZpZWxkXShodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vY29tcG9uZW50cy9mb3JtLWZpZWxkKSBhbmQgcHJvdmlkZXMgdHdvIGFkZGl0aW9uYWwgYXBwZWFyYW5jZXNcbiAqIGBib3VuZGAgYW5kIGBkZXRhY2hgLiBgYm91bmRgIHJlbmRlcnMgdGhlIGxhYmVsIG91dHNpZGUgdGhlIG91dGxpbmVkIGFyZWEgb2YgdGhlIGZpZWxkLCB3aGlsZSBgZGV0YWNoYCByZW1vdmUgdGhlIGJvcmRlcnMgYWxsIHRvZ2V0aGVyLiBgZGV0YWNoYFxuICogaXMgZ2VuZXJhbGx5IHVzZWQgd2l0aCBmb3JtIGNvbnRyb2xzIHRoYXQgcmVuZGVyIHRoZWlyIG93biBib3JkZXJzLlxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdidWktZm9ybS1maWVsZCcsXG5cdGV4cG9ydEFzOiAnYnVpRm9ybUZpZWxkJyxcblx0dGVtcGxhdGVVcmw6ICdmb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuXHRhbmltYXRpb25zOiBbbWF0Rm9ybUZpZWxkQW5pbWF0aW9ucy50cmFuc2l0aW9uTWVzc2FnZXNdLFxuXHRob3N0OiB7XG5cdFx0Y2xhc3M6ICdtYXQtZm9ybS1maWVsZCBidWktZm9ybS1maWVsZCcsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkXSc6ICdhcHBlYXJhbmNlID09IFwic3RhbmRhcmRcIicsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxdJzogJ2FwcGVhcmFuY2UgPT0gXCJmaWxsXCInLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lXSc6ICdhcHBlYXJhbmNlID09IFwib3V0bGluZVwiJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZGV0YWNoXSc6ICdhcHBlYXJhbmNlID09IFwiZGV0YWNoXCInLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1ib3VuZF0nOiAnYXBwZWFyYW5jZSA9PSBcImJvdW5kXCInLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3ldJzogJ2FwcGVhcmFuY2UgPT0gXCJsZWdhY3lcIicsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1pbnZhbGlkXSc6ICdfY29udHJvbC5lcnJvclN0YXRlJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdF0nOiAnX2NhbkxhYmVsRmxvYXQoKScsXG5cdFx0J1tjbGFzcy5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRdJzogJ19zaG91bGRMYWJlbEZsb2F0KCknLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsXSc6ICdfaGFzRmxvYXRpbmdMYWJlbCgpJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXJdJzogJ19oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCknLFxuXHRcdCdbY2xhc3MubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRdJzogJ19jb250cm9sLmRpc2FibGVkJyxcblx0XHQnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsZWRdJzogJ19jb250cm9sLmF1dG9maWxsZWQnLFxuXHRcdCdbY2xhc3MubWF0LWZvY3VzZWRdJzogJ19jb250cm9sLmZvY3VzZWQnLFxuXHRcdCdbY2xhc3MubmctdW50b3VjaGVkXSc6ICdfc2hvdWxkRm9yd2FyZChcInVudG91Y2hlZFwiKScsXG5cdFx0J1tjbGFzcy5uZy10b3VjaGVkXSc6ICdfc2hvdWxkRm9yd2FyZChcInRvdWNoZWRcIiknLFxuXHRcdCdbY2xhc3MubmctcHJpc3RpbmVdJzogJ19zaG91bGRGb3J3YXJkKFwicHJpc3RpbmVcIiknLFxuXHRcdCdbY2xhc3MubmctZGlydHldJzogJ19zaG91bGRGb3J3YXJkKFwiZGlydHlcIiknLFxuXHRcdCdbY2xhc3MubmctdmFsaWRdJzogJ19zaG91bGRGb3J3YXJkKFwidmFsaWRcIiknLFxuXHRcdCdbY2xhc3MubmctaW52YWxpZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJpbnZhbGlkXCIpJyxcblx0XHQnW2NsYXNzLm5nLXBlbmRpbmddJzogJ19zaG91bGRGb3J3YXJkKFwicGVuZGluZ1wiKScsXG5cdFx0J1tjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0nOiAnIV9hbmltYXRpb25zRW5hYmxlZCdcblx0fSxcblx0aW5wdXRzOiBbJ2NvbG9yJ10sXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRwcm92aWRlcnM6IFtcblx0XHR7IHByb3ZpZGU6IE1BVF9GT1JNX0ZJRUxELCB1c2VFeGlzdGluZzogVFlQRV9SRUYgfSxcblx0XHR7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZCwgdXNlRXhpc3Rpbmc6IFRZUEVfUkVGIH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRDb21wb25lbnQgZXh0ZW5kcyBNYXRGb3JtRmllbGQge1xuXHQvKipcblx0ICogQGlnbm9yZVxuXHQgKi9cblx0X3Nob3VsZEFsd2F5c0Zsb2F0KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzdXBlci5fc2hvdWxkQWx3YXlzRmxvYXQoKSB8fCB0aGlzLl9lbmhhbmNlZEFwcGVhcmFuY2UoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAaWdub3JlXG5cdCAqL1xuXHRfYm9yZGVyQ2xhc3MoKTogc3RyaW5nIHtcblx0XHRpZiAoKHRoaXMuYXBwZWFyYW5jZSBhcyBhbnkpICE9PSAnYm91bmQnKSB7XG5cdFx0XHRyZXR1cm4gJ2J1aS1mb3JtLWZpZWxkLWZsZXgtZGVmYXVsdCc7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jb250cm9sLmRpc2FibGVkKSB7XG5cdFx0XHRyZXR1cm4gJ2J1aS1mb3JtLWZpZWxkLWJvcmRlci1kaXNhYmxlZCc7XG5cdFx0fSBlbHNlIGlmICh0aGlzLl9jb250cm9sLmVycm9yU3RhdGUpIHtcblx0XHRcdHJldHVybiAnYnVpLWJvcmRlci13YXJuIGJ1aS1mb3JtLWZpZWxkLWJvcmRlci10aGljayc7XG5cdFx0fSBlbHNlIGlmICh0aGlzLl9jb250cm9sLmZvY3VzZWQpIHtcblx0XHRcdHJldHVybiBgYnVpLWJvcmRlci0ke3RoaXMuY29sb3IgfHwgJ3ByaW1hcnknfSBidWktZm9ybS1maWVsZC1ib3JkZXItdGhpY2tgO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gJ2J1aS1mb3JtLWZpZWxkLWJvcmRlci1kZWZhdWx0IGJ1aS1ib3JkZXItZW1waGFzaXMnO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAaWdub3JlXG5cdCAqL1xuXHRfZW5oYW5jZWRBcHBlYXJhbmNlKCkge1xuXHRcdHJldHVybiAodGhpcy5hcHBlYXJhbmNlIGFzIGFueSkgPT09ICdkZXRhY2gnIHx8ICh0aGlzLmFwcGVhcmFuY2UgYXMgYW55KSA9PT0gJ2JvdW5kJztcblx0fVxuXG5cdC8qKiBAaWdub3JlICovXG5cdEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcblx0X2hvc3RDbGlja2VkKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG5cdFx0dGhpcy5fY29udHJvbC5vbkNvbnRhaW5lckNsaWNrICYmIHRoaXMuX2NvbnRyb2wub25Db250YWluZXJDbGljayhldmVudCk7XG5cdH1cbn1cblxuKEZvcm1GaWVsZENvbXBvbmVudCBhcyBhbnkpLsm1Y21wLnN0eWxlcy5wdXNoKChNYXRGb3JtRmllbGQgYXMgYW55KS7JtWNtcC5zdHlsZXMpO1xuIiwiPGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJcIj5cblx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWZsZXgge3sgX2JvcmRlckNsYXNzKCkgfX1cIiAjY29ubmVjdGlvbkNvbnRhaW5lcj5cblx0XHQ8IS0tIE91dGxpbmUgdXNlZCBmb3Igb3V0bGluZSBhcHBlYXJhbmNlLiAtLT5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwZWFyYW5jZSA9PSAnb3V0bGluZSdcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0XCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcFwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmRcIj48L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUgbWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1wiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydFwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXBcIj48L2Rpdj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kXCI+PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblxuXHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1wcmVmaXhcIiAqbmdJZj1cIl9wcmVmaXhDaGlsZHJlbi5sZW5ndGhcIj5cblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXG5cdFx0PGRpdiBjbGFzcz1cInt7IF9lbmhhbmNlZEFwcGVhcmFuY2UoKSA/ICdidWktZm9ybS1maWVsZC1pbmZpeCcgOiAnbWF0LWZvcm0tZmllbGQtaW5maXgnIH19XCIgI2lucHV0Q29udGFpbmVyPlxuXHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG5cdFx0XHQ8c3BhbiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcIj5cblx0XHRcdFx0PCEtLSBXZSBhZGQgYXJpYS1vd25zIGFzIGEgd29ya2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gSkFXUyAmIE5WREEgd2hlcmUgdGhlIGxhYmVsIGlzbid0XG5cdFx0XHQgICByZWFkIGlmIGl0IGNvbWVzIGJlZm9yZSB0aGUgY29udHJvbCBpbiB0aGUgRE9NLiAtLT5cblx0XHRcdFx0PGxhYmVsXG5cdFx0XHRcdFx0Y2xhc3M9XCJtYXQtZm9ybS1maWVsZC1sYWJlbFwiXG5cdFx0XHRcdFx0KGNka09ic2VydmVDb250ZW50KT1cInVwZGF0ZU91dGxpbmVHYXAoKVwiXG5cdFx0XHRcdFx0W2Nka09ic2VydmVDb250ZW50RGlzYWJsZWRdPVwiYXBwZWFyYW5jZSAhPSAnb3V0bGluZSdcIlxuXHRcdFx0XHRcdFtpZF09XCJfbGFiZWxJZFwiXG5cdFx0XHRcdFx0W2F0dHIuZm9yXT1cIl9jb250cm9sLmlkXCJcblx0XHRcdFx0XHRbYXR0ci5hcmlhLW93bnNdPVwiX2NvbnRyb2wuaWRcIlxuXHRcdFx0XHRcdFtjbGFzcy5tYXQtZW1wdHldPVwiX2NvbnRyb2wuZW1wdHkgJiYgIV9zaG91bGRBbHdheXNGbG9hdCgpXCJcblx0XHRcdFx0XHRbY2xhc3MubWF0LWZvcm0tZmllbGQtZW1wdHldPVwiX2NvbnRyb2wuZW1wdHkgJiYgIV9zaG91bGRBbHdheXNGbG9hdCgpXCJcblx0XHRcdFx0XHRbY2xhc3MubWF0LWFjY2VudF09XCJjb2xvciA9PSAnYWNjZW50J1wiXG5cdFx0XHRcdFx0W2NsYXNzLm1hdC13YXJuXT1cImNvbG9yID09ICd3YXJuJ1wiXG5cdFx0XHRcdFx0I2xhYmVsXG5cdFx0XHRcdFx0Km5nSWY9XCJfaGFzRmxvYXRpbmdMYWJlbCgpXCJcblx0XHRcdFx0XHRbbmdTd2l0Y2hdPVwiX2hhc0xhYmVsKClcIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PCEtLSBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHJlbW92ZSBpbiBmYXZvciBvZiBtYXQtbGFiZWwgZWxlbWVudCBhbiBwbGFjZWhvbGRlciBhdHRyLiAtLT5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuXHRcdFx0XHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LXBsYWNlaG9sZGVyXCI+PC9uZy1jb250ZW50PlxuXHRcdFx0XHRcdFx0PHNwYW4+e3sgX2NvbnRyb2wucGxhY2Vob2xkZXIgfX08L3NwYW4+XG5cdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cblx0XHRcdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtbGFiZWxcIiAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPjwvbmctY29udGVudD5cblxuXHRcdFx0XHRcdDwhLS0gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCByZW1vdmUgYG1hdC1wbGFjZWhvbGRlci1yZXF1aXJlZGAgY2xhc3MgLS0+XG5cdFx0XHRcdFx0PHNwYW5cblx0XHRcdFx0XHRcdGNsYXNzPVwibWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkIG1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlclwiXG5cdFx0XHRcdFx0XHRhcmlhLWhpZGRlbj1cInRydWVcIlxuXHRcdFx0XHRcdFx0Km5nSWY9XCIhaGlkZVJlcXVpcmVkTWFya2VyICYmIF9jb250cm9sLnJlcXVpcmVkICYmICFfY29udHJvbC5kaXNhYmxlZFwiXG5cdFx0XHRcdFx0XHQ+JiMzMjsqPC9zcGFuXG5cdFx0XHRcdFx0PlxuXHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0PC9zcGFuPlxuXHRcdDwvZGl2PlxuXG5cdFx0PGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFwiICpuZ0lmPVwiX3N1ZmZpeENoaWxkcmVuLmxlbmd0aFwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cIl9lbmhhbmNlZEFwcGVhcmFuY2UoKVwiIGNsYXNzPVwiYnVpLWZvcm0tZmllbGQtcmlnaHQtZmlsbGVyXCI+PC9kaXY+XG5cdDwvZGl2PlxuXG5cdDwhLS0gVW5kZXJsaW5lIHVzZWQgZm9yIGxlZ2FjeSwgc3RhbmRhcmQsIGFuZCBib3ggYXBwZWFyYW5jZXMuIC0tPlxuXHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lXCIgI3VuZGVybGluZSAqbmdJZj1cImFwcGVhcmFuY2UgIT0gJ291dGxpbmUnXCI+XG5cdFx0PHNwYW5cblx0XHRcdGNsYXNzPVwibWF0LWZvcm0tZmllbGQtcmlwcGxlXCJcblx0XHRcdFtjbGFzcy5tYXQtYWNjZW50XT1cImNvbG9yID09ICdhY2NlbnQnXCJcblx0XHRcdFtjbGFzcy5tYXQtd2Fybl09XCJjb2xvciA9PSAnd2FybidcIlxuXHRcdD48L3NwYW4+XG5cdDwvZGl2PlxuXG5cdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlclwiIFtuZ1N3aXRjaF09XCJfZ2V0RGlzcGxheWVkTWVzc2FnZXMoKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cblx0XHQ8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZXJyb3InXCIgW0B0cmFuc2l0aW9uTWVzc2FnZXNdPVwiX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlXCI+XG5cdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtZXJyb3JcIj48L25nLWNvbnRlbnQ+XG5cdFx0PC9kaXY+XG5cblx0XHQ8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyXCIgKm5nU3dpdGNoQ2FzZT1cIidoaW50J1wiIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT1cIl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiPlxuXHRcdFx0PCEtLSBUT0RPKG1tYWxlcmJhKTogdXNlIGFuIGFjdHVhbCA8bWF0LWhpbnQ+IG9uY2UgYWxsIHNlbGVjdG9ycyBhcmUgc3dpdGNoZWQgdG8gbWF0LSogLS0+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiaGludExhYmVsXCIgW2lkXT1cIl9oaW50TGFiZWxJZFwiIGNsYXNzPVwibWF0LWhpbnRcIj57eyBoaW50TGFiZWwgfX08L2Rpdj5cblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1oaW50Om5vdChbYWxpZ249J2VuZCddKVwiPjwvbmctY29udGVudD5cblx0XHRcdDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlclwiPjwvZGl2PlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnRbYWxpZ249J2VuZCddXCI+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -22,7 +22,7 @@ export class TooltipComponent extends MatTooltipComponent {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TooltipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.BreakpointObserver }, { token: BUI_TOOLTIP_TEMPLATE_REF }], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: TooltipComponent, selector: "bui-tooltip-component", host: { attributes: { "aria-hidden": "true" }, listeners: { "body:click": "this._handleBodyInteraction()", "body:auxclick": "this._handleBodyInteraction()" }, properties: { "style.zoom": "_visibility === \"visible\" ? 1 : null" } }, viewQueries: [{ propertyName: "tooltipDiv", first: true, predicate: ["tooltipDiv"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n\tclass=\"mat-tooltip bui-tooltip\"\n\t[ngClass]=\"tooltipClass\"\n\t[class.mat-tooltip-handset]=\"(_isHandset | async)?.matches\"\n\t[@state]=\"_visibility\"\n\t(@state.start)=\"_animationStart()\"\n\t(@state.done)=\"_animationDone($event)\"\n
|
|
25
|
+
TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: TooltipComponent, selector: "bui-tooltip-component", host: { attributes: { "aria-hidden": "true" }, listeners: { "body:click": "this._handleBodyInteraction()", "body:auxclick": "this._handleBodyInteraction()" }, properties: { "style.zoom": "_visibility === \"visible\" ? 1 : null" } }, viewQueries: [{ propertyName: "tooltipDiv", first: true, predicate: ["tooltipDiv"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n\tclass=\"mat-tooltip bui-tooltip\"\n\t[ngClass]=\"tooltipClass\"\n\t[class.mat-tooltip-handset]=\"(_isHandset | async)?.matches\"\n\t[@state]=\"_visibility\"\n\t(@state.start)=\"_animationStart()\"\n\t(@state.done)=\"_animationDone($event)\"\n>\n\t<ng-template [ngIf]=\"_tooltip.template\">\n\t\t<ng-template [ngTemplateOutlet]=\"_tooltip.template\"></ng-template>\n\t</ng-template>\n\t<div #tooltipDiv></div>\n</div>\n", styles: [".bui-tooltip.mat-tooltip{max-width:100vw;font-size:inherit}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i2.AsyncPipe }, animations: [matTooltipAnimations.tooltipState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
28
|
args: [{
|
|
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
49
49
|
args: ['tooltipDiv', { static: true }]
|
|
50
50
|
}] } });
|
|
51
51
|
TooltipComponent.ɵcmp.styles.push(MatTooltipComponent.ɵcmp.styles);
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTix1QkFBdUIsRUFFdkIsU0FBUyxFQUVULE1BQU0sRUFDTixjQUFjLEVBRWQsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLElBQUksbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQVMxRzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN6RCx1Q0FBdUMsQ0FDdkMsQ0FBQztBQWtCRixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsbUJBQW1CO0lBTXhELFlBQ0MsaUJBQW9DLEVBQ3BDLG1CQUF1QyxFQUNFLFFBQWtDO1FBRTNFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRkwsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFScEUsaUJBQVksR0FBRyxFQUFFLENBQUM7SUFXMUIsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFhO1FBQ2pCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDbEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ2pDO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQixDQUFDOzs2R0FwQlcsZ0JBQWdCLHFGQVNuQix3QkFBd0I7aUdBVHJCLGdCQUFnQixxYkM1QzdCLDRhQWFBLDZaRHFCYSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQzsyRkFVbkMsZ0JBQWdCO2tCQWhCNUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxTQUFTLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDdkMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUM7b0JBQy9DLElBQUksRUFBRTt3QkFDTCwwRkFBMEY7d0JBQzFGLDJGQUEyRjt3QkFDM0YsY0FBYyxFQUFFLHNDQUFzQzt3QkFDdEQsY0FBYyxFQUFFLCtCQUErQjt3QkFDL0MsaUJBQWlCLEVBQUUsK0JBQStCO3dCQUNsRCxhQUFhLEVBQUUsTUFBTTtxQkFDckI7aUJBQ0Q7OzBCQVVFLE1BQU07MkJBQUMsd0JBQXdCOzRDQUx6QixVQUFVO3NCQURqQixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O0FBb0J6QyxnQkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBRSxtQkFBMkIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0Q29tcG9uZW50LFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3QsXG5cdEluamVjdGlvblRva2VuLFxuXHRUZW1wbGF0ZVJlZixcblx0Vmlld0NoaWxkLFxuXHRWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hdFRvb2x0aXBBbmltYXRpb25zLCBUb29sdGlwQ29tcG9uZW50IGFzIE1hdFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmludGVyZmFjZSBUb29sdGlwVGVtcGxhdGVDb250YWluZXIge1xuXHR0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG59XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgY29uc3QgQlVJX1RPT0xUSVBfVEVNUExBVEVfUkVGID0gbmV3IEluamVjdGlvblRva2VuPFRvb2x0aXBUZW1wbGF0ZUNvbnRhaW5lcj4oXG5cdCdAYnJhdnVyYS91aS90b29sdGlwL3RlbXBsYXRlQ29udGFpbmVyJ1xuKTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnYnVpLXRvb2x0aXAtY29tcG9uZW50Jyxcblx0dGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi90b29sdGlwLmNvbXBvbmVudC5zY3NzJ10sXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRhbmltYXRpb25zOiBbbWF0VG9vbHRpcEFuaW1hdGlvbnMudG9vbHRpcFN0YXRlXSxcblx0aG9zdDoge1xuXHRcdC8vIEZvcmNlcyB0aGUgZWxlbWVudCB0byBoYXZlIGEgbGF5b3V0IGluIElFIGFuZCBFZGdlLiBUaGlzIGZpeGVzIGlzc3VlcyB3aGVyZSB0aGUgZWxlbWVudFxuXHRcdC8vIHdvbid0IGJlIHJlbmRlcmVkIGlmIHRoZSBhbmltYXRpb25zIGFyZSBkaXNhYmxlZCBvciB0aGVyZSBpcyBubyB3ZWIgYW5pbWF0aW9ucyBwb2x5ZmlsbC5cblx0XHQnW3N0eWxlLnpvb21dJzogJ192aXNpYmlsaXR5ID09PSBcInZpc2libGVcIiA/IDEgOiBudWxsJyxcblx0XHQnKGJvZHk6Y2xpY2spJzogJ3RoaXMuX2hhbmRsZUJvZHlJbnRlcmFjdGlvbigpJyxcblx0XHQnKGJvZHk6YXV4Y2xpY2spJzogJ3RoaXMuX2hhbmRsZUJvZHlJbnRlcmFjdGlvbigpJyxcblx0XHQnYXJpYS1oaWRkZW4nOiAndHJ1ZSdcblx0fVxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwQ29tcG9uZW50IGV4dGVuZHMgTWF0VG9vbHRpcENvbXBvbmVudCB7XG5cdHByaXZhdGUgX21lc3NhZ2VDb3B5ID0gJyc7XG5cblx0QFZpZXdDaGlsZCgndG9vbHRpcERpdicsIHsgc3RhdGljOiB0cnVlIH0pXG5cdHByaXZhdGUgdG9vbHRpcERpdiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcblx0XHRfYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG5cdFx0QEluamVjdChCVUlfVE9PTFRJUF9URU1QTEFURV9SRUYpIHB1YmxpYyBfdG9vbHRpcDogVG9vbHRpcFRlbXBsYXRlQ29udGFpbmVyXG5cdCkge1xuXHRcdHN1cGVyKGNoYW5nZURldGVjdG9yUmVmLCBfYnJlYWtwb2ludE9ic2VydmVyKTtcblx0fVxuXG5cdHNob3coZGVsYXk6IG51bWJlcik6IHZvaWQge1xuXHRcdGlmICh0aGlzLl9tZXNzYWdlQ29weSAhPT0gdGhpcy5tZXNzYWdlICYmICF0aGlzLl90b29sdGlwLnRlbXBsYXRlKSB7XG5cdFx0XHR0aGlzLnRvb2x0aXBEaXYubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLm1lc3NhZ2U7XG5cdFx0XHR0aGlzLl9tZXNzYWdlQ29weSA9IHRoaXMubWVzc2FnZTtcblx0XHR9XG5cdFx0c3VwZXIuc2hvdyhkZWxheSk7XG5cdH1cbn1cblxuKFRvb2x0aXBDb21wb25lbnQgYXMgYW55KS7JtWNtcC5zdHlsZXMucHVzaCgoTWF0VG9vbHRpcENvbXBvbmVudCBhcyBhbnkpLsm1Y21wLnN0eWxlcyk7XG4iLCI8ZGl2XG5cdGNsYXNzPVwibWF0LXRvb2x0aXAgYnVpLXRvb2x0aXBcIlxuXHRbbmdDbGFzc109XCJ0b29sdGlwQ2xhc3NcIlxuXHRbY2xhc3MubWF0LXRvb2x0aXAtaGFuZHNldF09XCIoX2lzSGFuZHNldCB8IGFzeW5jKT8ubWF0Y2hlc1wiXG5cdFtAc3RhdGVdPVwiX3Zpc2liaWxpdHlcIlxuXHQoQHN0YXRlLnN0YXJ0KT1cIl9hbmltYXRpb25TdGFydCgpXCJcblx0KEBzdGF0ZS5kb25lKT1cIl9hbmltYXRpb25Eb25lKCRldmVudClcIlxuPlxuXHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiX3Rvb2x0aXAudGVtcGxhdGVcIj5cblx0XHQ8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3Rvb2x0aXAudGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuXHQ8L25nLXRlbXBsYXRlPlxuXHQ8ZGl2ICN0b29sdGlwRGl2PjwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -42,6 +42,13 @@ export class TooltipDirective extends _MatTooltipBase {
|
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
44
|
this._templateRef = value;
|
|
45
|
+
if (value) {
|
|
46
|
+
this.message = '[bui-tooltip-template]';
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this._templateRef = undefined;
|
|
50
|
+
this.message = '';
|
|
51
|
+
}
|
|
45
52
|
}
|
|
46
53
|
}
|
|
47
54
|
/** @ignore */
|
|
@@ -100,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
100
107
|
}], buiTooltipClass: [{
|
|
101
108
|
type: Input
|
|
102
109
|
}] } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy91aS90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFHUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRU4sMkJBQTJCLEVBQzNCLDJCQUEyQixFQUUzQixlQUFlLEVBQ2YsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBRWpGOzs7OztHQUtHO0FBY0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGVBQWlDO0lBSXRFLFlBQ0MsT0FBZ0IsRUFDaEIsVUFBbUMsRUFDbkMsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsYUFBNEIsRUFDNUIsWUFBMEIsRUFDVyxjQUFtQixFQUM1QyxHQUFtQixFQUNrQixjQUF3QyxFQUN2RSxTQUFjO1FBRWhDLEtBQUssQ0FDSixPQUFPLEVBQ1AsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFFBQVEsRUFDUixhQUFhLEVBQ2IsWUFBWSxFQUNaLGNBQWMsRUFDZCxHQUFHLEVBQ0gsY0FBYyxFQUNkLFNBQVMsQ0FDVCxDQUFDO1FBOUJnQixzQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztJQStCeEQsQ0FBQztJQUVELDJGQUEyRjtJQUMzRixJQUNJLGtCQUFrQjtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksa0JBQWtCLENBQUMsS0FBc0I7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxJQUNJLGtCQUFrQjtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksa0JBQWtCLENBQUMsS0FBSztRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELElBQ0ksVUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFLO1FBQ25CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3JCO2FBQU07WUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLEtBQUssRUFBRTtnQkFDVixJQUFJLENBQUMsT0FBTyxHQUFHLHdCQUF3QixDQUFDO2FBQ3hDO2lCQUFNO2dCQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO2dCQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQzthQUNsQjtTQUNEO0lBQ0YsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztJQUVELGtGQUFrRjtJQUNsRixJQUNJLGVBQWU7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUErRDtRQUNsRixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDOzs2R0FuRlcsZ0JBQWdCLDBPQWFuQiwyQkFBMkIsMkRBRWYsMkJBQTJCLDZCQUN2QyxRQUFRO2lHQWhCTCxnQkFBZ0IsMFFBUGpCO1FBQ1Y7WUFDQyxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7U0FDL0M7S0FDRDsyRkFFVyxnQkFBZ0I7a0JBYjVCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixJQUFJLEVBQUU7d0JBQ0wsS0FBSyxFQUFFLHlDQUF5QztxQkFDaEQ7b0JBQ0QsU0FBUyxFQUFFO3dCQUNWOzRCQUNDLE9BQU8sRUFBRSx3QkFBd0I7NEJBQ2pDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDO3lCQUMvQztxQkFDRDtpQkFDRDs7MEJBY0UsTUFBTTsyQkFBQywyQkFBMkI7OzBCQUNsQyxRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLDJCQUEyQjs7MEJBQzlDLE1BQU07MkJBQUMsUUFBUTs0Q0FvQmIsa0JBQWtCO3NCQURyQixLQUFLO2dCQVVGLGtCQUFrQjtzQkFEckIsS0FBSztnQkFVRixVQUFVO3NCQURiLEtBQUs7Z0JBeUJGLGVBQWU7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmlhRGVzY3JpYmVyLCBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE92ZXJsYXksIFNjcm9sbERpc3BhdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHREaXJlY3RpdmUsXG5cdEVsZW1lbnRSZWYsXG5cdGZvcndhcmRSZWYsXG5cdEluamVjdCxcblx0SW5wdXQsXG5cdE5nWm9uZSxcblx0T3B0aW9uYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0TWF0VG9vbHRpcERlZmF1bHRPcHRpb25zLFxuXHRNQVRfVE9PTFRJUF9ERUZBVUxUX09QVElPTlMsXG5cdE1BVF9UT09MVElQX1NDUk9MTF9TVFJBVEVHWSxcblx0VG9vbHRpcFBvc2l0aW9uLFxuXHRfTWF0VG9vbHRpcEJhc2Vcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBCVUlfVE9PTFRJUF9URU1QTEFURV9SRUYsIFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSBleHRlbmRzIFtBbmd1bGFyIE1hdGVyaWFsIHRvb2x0aXBdKGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9jb21wb25lbnRzL3Rvb2x0aXAvb3ZlcnZpZXcpLCB3aXRoIHRoZSBhZGRpdGlvbmFsIGNhcGFiaWxpdHkgb2YgZGlzcGxheWluZ1xuICogSFRNTCBjb250ZW50IGluIHRoZSBvdmVybGF5IGFyZWEuXG4gKlxuICogQWxsIHRoZSBvdGhlciBmZWF0dXJlcyBhcmUgaWRlbnRpY2FsIGFzIHRob3NlIGluIEFuZ3VsYXIgTWF0ZXJpYWwgdG9vbHRpcC5cbiAqL1xuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW2J1aVRvb2x0aXBdJyxcblx0ZXhwb3J0QXM6ICdidWlUb29sdGlwJyxcblx0aG9zdDoge1xuXHRcdGNsYXNzOiAnbWF0LXRvb2x0aXAtdHJpZ2dlciBidWktdG9vbHRpcC10cmlnZ2VyJ1xuXHR9LFxuXHRwcm92aWRlcnM6IFtcblx0XHR7XG5cdFx0XHRwcm92aWRlOiBCVUlfVE9PTFRJUF9URU1QTEFURV9SRUYsXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUb29sdGlwRGlyZWN0aXZlKVxuXHRcdH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlIGV4dGVuZHMgX01hdFRvb2x0aXBCYXNlPFRvb2x0aXBDb21wb25lbnQ+IHtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IF90b29sdGlwQ29tcG9uZW50ID0gVG9vbHRpcENvbXBvbmVudDtcblx0cHJpdmF0ZSBfdGVtcGxhdGVSZWY/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdG92ZXJsYXk6IE92ZXJsYXksXG5cdFx0ZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG5cdFx0c2Nyb2xsRGlzcGF0Y2hlcjogU2Nyb2xsRGlzcGF0Y2hlcixcblx0XHR2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuXHRcdG5nWm9uZTogTmdab25lLFxuXHRcdHBsYXRmb3JtOiBQbGF0Zm9ybSxcblx0XHRhcmlhRGVzY3JpYmVyOiBBcmlhRGVzY3JpYmVyLFxuXHRcdGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuXHRcdEBJbmplY3QoTUFUX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZKSBzY3JvbGxTdHJhdGVneTogYW55LFxuXHRcdEBPcHRpb25hbCgpIGRpcjogRGlyZWN0aW9uYWxpdHksXG5cdFx0QE9wdGlvbmFsKCkgQEluamVjdChNQVRfVE9PTFRJUF9ERUZBVUxUX09QVElPTlMpIGRlZmF1bHRPcHRpb25zOiBNYXRUb29sdGlwRGVmYXVsdE9wdGlvbnMsXG5cdFx0QEluamVjdChET0NVTUVOVCkgX2RvY3VtZW50OiBhbnlcblx0KSB7XG5cdFx0c3VwZXIoXG5cdFx0XHRvdmVybGF5LFxuXHRcdFx0ZWxlbWVudFJlZixcblx0XHRcdHNjcm9sbERpc3BhdGNoZXIsXG5cdFx0XHR2aWV3Q29udGFpbmVyUmVmLFxuXHRcdFx0bmdab25lLFxuXHRcdFx0cGxhdGZvcm0sXG5cdFx0XHRhcmlhRGVzY3JpYmVyLFxuXHRcdFx0Zm9jdXNNb25pdG9yLFxuXHRcdFx0c2Nyb2xsU3RyYXRlZ3ksXG5cdFx0XHRkaXIsXG5cdFx0XHRkZWZhdWx0T3B0aW9ucyxcblx0XHRcdF9kb2N1bWVudFxuXHRcdCk7XG5cdH1cblxuXHQvKiogQWxsb3dzIHRoZSB1c2VyIHRvIGRlZmluZSB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBlbGVtZW50ICovXG5cdEBJbnB1dCgpXG5cdGdldCBidWlUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcblx0XHRyZXR1cm4gdGhpcy5wb3NpdGlvbjtcblx0fVxuXHRzZXQgYnVpVG9vbHRpcFBvc2l0aW9uKHZhbHVlOiBUb29sdGlwUG9zaXRpb24pIHtcblx0XHR0aGlzLnBvc2l0aW9uID0gdmFsdWU7XG5cdH1cblxuXHQvKiogRGlzYWJsZXMgdGhlIGRpc3BsYXkgb2YgdGhlIHRvb2x0aXAuICovXG5cdEBJbnB1dCgpXG5cdGdldCBidWlUb29sdGlwRGlzYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZGlzYWJsZWQ7XG5cdH1cblx0c2V0IGJ1aVRvb2x0aXBEaXNhYmxlZCh2YWx1ZSkge1xuXHRcdHRoaXMuZGlzYWJsZWQgPSB2YWx1ZTtcblx0fVxuXG5cdC8qKiBUaGUgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRvb2x0aXAuICovXG5cdEBJbnB1dCgpXG5cdGdldCBidWlUb29sdGlwKCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuXHRcdHJldHVybiB0aGlzLl90ZW1wbGF0ZVJlZiB8fCB0aGlzLm1lc3NhZ2U7XG5cdH1cblx0c2V0IGJ1aVRvb2x0aXAodmFsdWUpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuXHRcdFx0dGhpcy5tZXNzYWdlID0gdmFsdWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX3RlbXBsYXRlUmVmID0gdmFsdWU7XG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0dGhpcy5tZXNzYWdlID0gJ1tidWktdG9vbHRpcC10ZW1wbGF0ZV0nO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5fdGVtcGxhdGVSZWYgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdHRoaXMubWVzc2FnZSA9ICcnO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKiBAaWdub3JlICovXG5cdGdldCB0ZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fdGVtcGxhdGVSZWY7XG5cdH1cblxuXHQvKiogQ2xhc3NlcyB0byBiZSBwYXNzZWQgdG8gdGhlIHRvb2x0aXAuIFN1cHBvcnRzIHRoZSBzYW1lIHN5bnRheCBhcyBgbmdDbGFzc2AuICovXG5cdEBJbnB1dCgpXG5cdGdldCBidWlUb29sdGlwQ2xhc3MoKSB7XG5cdFx0cmV0dXJuIHRoaXMudG9vbHRpcENsYXNzO1xuXHR9XG5cdHNldCBidWlUb29sdGlwQ2xhc3ModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG5cdFx0dGhpcy50b29sdGlwQ2xhc3MgPSB2YWx1ZTtcblx0fVxufVxuIl19
|
|
@@ -3,6 +3,9 @@ import { DOCUMENT, CommonModule } from '@angular/common';
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Directive, EventEmitter, Inject, Optional, Input, Output, NgModule } from '@angular/core';
|
|
5
5
|
import { debounceTime, take } from 'rxjs/operators';
|
|
6
|
+
import { MatProgressSpinner, MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
7
|
+
import * as i1 from '@angular/material/button';
|
|
8
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
6
9
|
|
|
7
10
|
/**
|
|
8
11
|
* Use this directive to designate a target HTML element, based on which the child elements'
|
|
@@ -34,8 +37,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
34
37
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
|
|
35
38
|
|
|
36
39
|
/**
|
|
37
|
-
* This directive monitors the changes in width of the `sizingBy` target, and apply specified style
|
|
38
|
-
* classes to the current element dynamically.
|
|
40
|
+
* This directive monitors the changes in the width of the `sizingBy` target, and apply specified style
|
|
41
|
+
* classes and/or inline styles to the current element dynamically.
|
|
39
42
|
*
|
|
40
43
|
* In order for the layout engine to efficiently calculate and stabilize the dimensions, the effective style property
|
|
41
44
|
* `box-sizing` of the `sizingBy` target element must be set to `border-box`.
|
|
@@ -48,8 +51,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
48
51
|
*
|
|
49
52
|
* ```html
|
|
50
53
|
* <div #parentElement>
|
|
51
|
-
* <div [buiSizing]="{'400': 'small', '800': 'medium', '~': 'large'}" [
|
|
52
|
-
* <div [buiSizing]="['small', 'medium', 'large']" [
|
|
54
|
+
* <div [buiSizing]="{'400': 'small', '800': 'medium', '~': 'large'}" [buiSizingBy]="parentElement"></div>
|
|
55
|
+
* <div [buiSizing]="['small', 'medium', 'large']" [buiSizingBy]="'root'"></div>
|
|
56
|
+
* <div [buiSizing]="{'650': 'border-color: #28569', '~': 'bg-muted; border-style: dotted'}" [buiSizingBy]="parentElement"></div>
|
|
53
57
|
* </div>
|
|
54
58
|
* ```
|
|
55
59
|
*/
|
|
@@ -70,6 +74,7 @@ class SizingDirective {
|
|
|
70
74
|
this.buiSizing = {};
|
|
71
75
|
/**
|
|
72
76
|
* The alias of `buiSizingBy`.
|
|
77
|
+
* @default 'root'
|
|
73
78
|
*/
|
|
74
79
|
this.sizingBy = 'root';
|
|
75
80
|
/**
|
|
@@ -92,8 +97,10 @@ class SizingDirective {
|
|
|
92
97
|
/**
|
|
93
98
|
* Designate an element to be monitored for recalculating the style classes of the current element.
|
|
94
99
|
*
|
|
95
|
-
* `root` specifies the document root or the enclosing shadow host.
|
|
96
|
-
* `parent` specifies the parent element.
|
|
100
|
+
* - `root` specifies the document root or the enclosing shadow host. This is the default value.
|
|
101
|
+
* - `parent` specifies the parent element.
|
|
102
|
+
*
|
|
103
|
+
* @default 'root'
|
|
97
104
|
* @alias sizingBy
|
|
98
105
|
*/
|
|
99
106
|
get buiSizingBy() {
|
|
@@ -175,15 +182,11 @@ class SizingDirective {
|
|
|
175
182
|
const bks = Object.keys(this._sizingSpec).sort((a, b) => this._toNumber(a) - this._toNumber(b));
|
|
176
183
|
let found = false;
|
|
177
184
|
for (const key of bks) {
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
this._element.classList.remove(...classes);
|
|
181
|
-
}
|
|
185
|
+
const classesOrStyles = this._sizingSpec[key].split(/;+/).filter(c => c);
|
|
186
|
+
this._removeClassesOrStyles(classesOrStyles);
|
|
182
187
|
const expectedWidth = this._toNumber(key);
|
|
183
188
|
if (this._width <= expectedWidth && !found) {
|
|
184
|
-
|
|
185
|
-
this._element.classList.add(...classes);
|
|
186
|
-
}
|
|
189
|
+
this._applyClassesOrStyles(classesOrStyles);
|
|
187
190
|
found = true;
|
|
188
191
|
}
|
|
189
192
|
}
|
|
@@ -197,6 +200,34 @@ class SizingDirective {
|
|
|
197
200
|
this.buiResized.emit({ width: this._width, height: this._height });
|
|
198
201
|
}
|
|
199
202
|
}
|
|
203
|
+
_applyClassesOrStyles(clsOrStyles) {
|
|
204
|
+
clsOrStyles.forEach(s => {
|
|
205
|
+
if (s.includes(':')) {
|
|
206
|
+
const [prop, val] = s.split(':');
|
|
207
|
+
this._element.style.setProperty(prop.trim(), val.trim());
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const classes = s.split(/\s+/).filter(c => c);
|
|
211
|
+
if (classes.length) {
|
|
212
|
+
this._element.classList.add(...classes);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
_removeClassesOrStyles(clsOrStyles) {
|
|
218
|
+
clsOrStyles.forEach(s => {
|
|
219
|
+
if (s.includes(':')) {
|
|
220
|
+
const [prop] = s.split(':');
|
|
221
|
+
this._element.style.removeProperty(prop);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
const classes = s.split(/\s+/).filter(c => c);
|
|
225
|
+
if (classes.length) {
|
|
226
|
+
this._element.classList.remove(...classes);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
200
231
|
_reflowHeight() {
|
|
201
232
|
const cnt = this._reflowFrameCount;
|
|
202
233
|
if (cnt < 15) {
|
|
@@ -244,20 +275,121 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
244
275
|
type: Input
|
|
245
276
|
}] } });
|
|
246
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Use this directive on a `MatButton` element to provide an alternative view when an sync operation is in progress.
|
|
280
|
+
*
|
|
281
|
+
* For example:
|
|
282
|
+
*
|
|
283
|
+
* ```
|
|
284
|
+
* <button (click)="submit();" [buiAwait]="submitSubscription" buiAwaitAriaLabel="submitting">Submit</button>
|
|
285
|
+
* ```
|
|
286
|
+
*
|
|
287
|
+
* Please refer to [Material Design](https://material.io/components/progress-indicators#circular-progress-indicators)
|
|
288
|
+
* for more details of integrating circular spinner component with action buttons.
|
|
289
|
+
*
|
|
290
|
+
* The operation is considered 'in progress' when the bound property `buiAwait` evaluates to
|
|
291
|
+
*
|
|
292
|
+
* - `true`; or
|
|
293
|
+
* - an instance of `rxjs/Subscription` and `buiAwait.closed` is falsy
|
|
294
|
+
*
|
|
295
|
+
* When in progress
|
|
296
|
+
*
|
|
297
|
+
* - the button's caption will be hidden;
|
|
298
|
+
* - a `<mat-progress-spinner>` will be displayed in place of the caption;
|
|
299
|
+
* - the button will be disabled by setting the property `disabled` of the `MatButton` instance.
|
|
300
|
+
*/
|
|
301
|
+
class AwaitDirective {
|
|
302
|
+
constructor(_eRef, button, doc, factoryResolver, _viewCont) {
|
|
303
|
+
this._eRef = _eRef;
|
|
304
|
+
this.button = button;
|
|
305
|
+
this.doc = doc;
|
|
306
|
+
this._viewCont = _viewCont;
|
|
307
|
+
/** The ARIA label to be put on the spinner. The default value is `"In progress"`. */
|
|
308
|
+
this.buiAwaitAriaLabel = 'In progress';
|
|
309
|
+
/** The diameter of the in-progress spinner. The default value is `20`. */
|
|
310
|
+
this.buiAwaitDiameter = 20;
|
|
311
|
+
this._processing = false;
|
|
312
|
+
if (!button) {
|
|
313
|
+
console.error('[buiAwait] can only be used on a MatButton');
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
this._factory = factoryResolver.resolveComponentFactory(MatProgressSpinner);
|
|
317
|
+
}
|
|
318
|
+
/** @ignore */
|
|
319
|
+
ngAfterViewInit() {
|
|
320
|
+
if (this.button) {
|
|
321
|
+
this._overlayEl = this.doc.createElement('div');
|
|
322
|
+
this._eRef.nativeElement.appendChild(this._overlayEl);
|
|
323
|
+
this._overlayEl.classList.add('bui-await-overlay');
|
|
324
|
+
this._overlayEl.style.cssText =
|
|
325
|
+
'display:flex; position:absolute; top:0; right:0; bottom:0; left:0; align-items: center; justify-content: center';
|
|
326
|
+
this._captionWrapper = this._eRef.nativeElement.querySelector('.mat-button-wrapper');
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/** @ignore */
|
|
330
|
+
ngDoCheck() {
|
|
331
|
+
const inProgress = this.buiAwait === true || (typeof this.buiAwait === 'object' && !this.buiAwait.closed);
|
|
332
|
+
if (inProgress !== this._processing) {
|
|
333
|
+
this._processing = inProgress;
|
|
334
|
+
this._statusChanged();
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
_statusChanged() {
|
|
338
|
+
if (this.button) {
|
|
339
|
+
this.button.disabled = this._processing;
|
|
340
|
+
if (this._processing) {
|
|
341
|
+
this._spinnerRef = this._viewCont.createComponent(this._factory);
|
|
342
|
+
const c = this._spinnerRef.instance;
|
|
343
|
+
c.diameter = this.buiAwaitDiameter;
|
|
344
|
+
c.mode = 'indeterminate';
|
|
345
|
+
c.color = this.button.color;
|
|
346
|
+
const e = this._spinnerRef.location.nativeElement;
|
|
347
|
+
e.setAttribute('aria-label', this.buiAwaitAriaLabel);
|
|
348
|
+
this._overlayEl.appendChild(e);
|
|
349
|
+
this._captionWrapper.style.visibility = 'hidden';
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
this._captionWrapper.style.visibility = '';
|
|
353
|
+
this._spinnerRef.destroy();
|
|
354
|
+
this._overlayEl.innerHTML = '';
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
AwaitDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: AwaitDirective, deps: [{ token: i0.ElementRef }, { token: i1.MatButton, optional: true }, { token: DOCUMENT }, { token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
360
|
+
AwaitDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.7", type: AwaitDirective, selector: "[buiAwait]", inputs: { buiAwait: "buiAwait", buiAwaitAriaLabel: "buiAwaitAriaLabel", buiAwaitDiameter: "buiAwaitDiameter" }, ngImport: i0 });
|
|
361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: AwaitDirective, decorators: [{
|
|
362
|
+
type: Directive,
|
|
363
|
+
args: [{
|
|
364
|
+
selector: '[buiAwait]'
|
|
365
|
+
}]
|
|
366
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.MatButton, decorators: [{
|
|
367
|
+
type: Optional
|
|
368
|
+
}] }, { type: Document, decorators: [{
|
|
369
|
+
type: Inject,
|
|
370
|
+
args: [DOCUMENT]
|
|
371
|
+
}] }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }]; }, propDecorators: { buiAwait: [{
|
|
372
|
+
type: Input
|
|
373
|
+
}], buiAwaitAriaLabel: [{
|
|
374
|
+
type: Input
|
|
375
|
+
}], buiAwaitDiameter: [{
|
|
376
|
+
type: Input
|
|
377
|
+
}] } });
|
|
378
|
+
|
|
247
379
|
/**
|
|
248
380
|
* For functionality that cannot be easily achieved via CSS.
|
|
249
381
|
*/
|
|
250
382
|
class BehaviorModule {
|
|
251
383
|
}
|
|
252
384
|
BehaviorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: BehaviorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
253
|
-
BehaviorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: BehaviorModule, declarations: [SizingDirective, SizingMonitorDirective], imports: [CommonModule], exports: [SizingDirective, SizingMonitorDirective] });
|
|
254
|
-
BehaviorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: BehaviorModule, imports: [[CommonModule]] });
|
|
385
|
+
BehaviorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: BehaviorModule, declarations: [SizingDirective, SizingMonitorDirective, AwaitDirective], imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule], exports: [SizingDirective, SizingMonitorDirective, AwaitDirective, MatProgressSpinnerModule] });
|
|
386
|
+
BehaviorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: BehaviorModule, imports: [[CommonModule, MatButtonModule, MatProgressSpinnerModule], MatProgressSpinnerModule] });
|
|
255
387
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: BehaviorModule, decorators: [{
|
|
256
388
|
type: NgModule,
|
|
257
389
|
args: [{
|
|
258
|
-
declarations: [SizingDirective, SizingMonitorDirective],
|
|
259
|
-
imports: [CommonModule],
|
|
260
|
-
exports: [SizingDirective, SizingMonitorDirective]
|
|
390
|
+
declarations: [SizingDirective, SizingMonitorDirective, AwaitDirective],
|
|
391
|
+
imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule],
|
|
392
|
+
exports: [SizingDirective, SizingMonitorDirective, AwaitDirective, MatProgressSpinnerModule]
|
|
261
393
|
}]
|
|
262
394
|
}] });
|
|
263
395
|
|
|
@@ -265,5 +397,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
265
397
|
* Generated bundle index. Do not edit.
|
|
266
398
|
*/
|
|
267
399
|
|
|
268
|
-
export { BehaviorModule, SizingDirective, SizingMonitorDirective };
|
|
400
|
+
export { AwaitDirective, BehaviorModule, SizingDirective, SizingMonitorDirective };
|
|
269
401
|
//# sourceMappingURL=bravura-ui-behavior.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-behavior.js","sources":["../../../projects/ui/behavior/sizing-monitor.directive.ts","../../../projects/ui/behavior/sizing.directive.ts","../../../projects/ui/behavior/behavior.module.ts","../../../projects/ui/behavior/bravura-ui-behavior.ts"],"sourcesContent":["import { Directive, ElementRef } from '@angular/core';\n\n/**\n * Use this directive to designate a target HTML element, based on which the child elements'\n * `[buiSizing]` directives will calculate the sizes.\n *\n * ```html\n * <div [buiSizingMonitor]>\n * <div [buiSizing]=\"...\">\n * </div>\n * <div>\n * <div [buiSizing]=\"...\">\n * </div>\n * </div>\n * <div>\n * ```\n */\n@Directive({\n\tselector: '[buiSizingMonitor]'\n})\nexport class SizingMonitorDirective {\n\tconstructor(public readonly element: ElementRef<HTMLElement>) {}\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOptional,\n\tOutput,\n\tSimpleChanges\n} from '@angular/core';\nimport { debounceTime, take } from 'rxjs/operators';\nimport { SizingMonitorDirective } from './sizing-monitor.directive';\n\n/**\n * This directive monitors the changes in width of the `sizingBy` target, and apply specified style\n * classes to the current element dynamically.\n *\n * In order for the layout engine to efficiently calculate and stabilize the dimensions, the effective style property\n * `box-sizing` of the `sizingBy` target element must be set to `border-box`.\n *\n * The directive uses [ResizeObserver API](https://developer.mozilla.org/en-US/docs/Web/API/Resize_Observer_API)\n * to capture the events of element resizing. Please use a polyfill if you want to support older browsers\n * that do not implement ResizeObserver API.\n *\n * Examples:\n *\n * ```html\n * <div #parentElement>\n * <div [buiSizing]=\"{'400': 'small', '800': 'medium', '~': 'large'}\" [sizingBy]=\"parentElement\"></div>\n * <div [buiSizing]=\"['small', 'medium', 'large']\" [sizingBy]=\"'root'\"></div>\n * </div>\n * ```\n */\n@Directive({\n\tselector: '[buiSizing],[buiResized],[buiSizingBy],[buiFixedHeight]'\n})\nexport class SizingDirective implements OnChanges, OnDestroy {\n\t/**\n\t * @ignore\n\t */\n\tstatic defaultSizingBreakpoints = ['400', '800', '~'];\n\n\t/**\n\t * Specifies the breakpoint widths and the style classes.\n\t *\n\t * The sizing spec `{\"400\": \"small\", \"800\": \"medium\", \"~\": \"large\"}` tells the directive to apply\n\t * a style class `small` when the width of the monitored target is smaller than 400 pixels,\n\t * `medium` when the width is between 400 and 800 pixels, and `large` when above.\n\t *\n\t * @example {'400': 'small', '800': 'medium', '~': 'large'}\n\t */\n\t@Input()\n\tbuiSizing: string | Array<string> | { [key: string]: string } = {};\n\n\t/**\n\t * The alias of `buiSizingBy`.\n\t */\n\t@Input()\n\tsizingBy: 'root' | 'parent' | HTMLElement = 'root';\n\n\t/**\n\t * Designate an element to be monitored for recalculating the style classes of the current element.\n\t *\n\t * `root` specifies the document root or the enclosing shadow host.\n\t * `parent` specifies the parent element.\n\t * @alias sizingBy\n\t */\n\t@Input()\n\tget buiSizingBy(): 'root' | 'parent' | HTMLElement {\n\t\treturn this.sizingBy;\n\t}\n\tset buiSizingBy(target: 'root' | 'parent' | HTMLElement) {\n\t\tthis.sizingBy = target;\n\t}\n\n\t/**\n\t * Emits `{width, height}` when the monitor target element resizes.\n\t *\n\t * Note that the dimensions emitted are of the [sizingBy] target, but not the current element.\n\t */\n\t@Output()\n\tbuiResized = new EventEmitter<{ width: number; height: number }>();\n\n\t/**\n\t * Recalculate the height of this element according to the height of the monitored target.\n\t */\n\t@Input()\n\tbuiFixedHeight = false;\n\n\tprivate _monitorTarget: HTMLElement;\n\tprivate _observer: ResizeObserver | undefined;\n\tprivate _sizingSpec: { [key: string]: string } = {};\n\tprivate _width = 0;\n\tprivate _height = 0;\n\tprivate _reflowFrameCount = 0;\n\tprivate _element: HTMLElement;\n\n\tconstructor(\n\t\t@Inject(DOCUMENT) private _doc: Document,\n\t\t@Optional() private _defaultTarget: SizingMonitorDirective,\n\t\telemRef: ElementRef<HTMLElement>,\n\t\tprivate _zone: NgZone\n\t) {\n\t\tthis._element = elemRef.nativeElement;\n\t\tthis._monitorTarget = this._element;\n\t}\n\n\tngOnChanges(_: SimpleChanges): void {\n\t\tconst disconnected = this._element.getRootNode() instanceof HTMLElement;\n\t\tif (disconnected) {\n\t\t\t// defer shadow detection till dom connection event\n\t\t\tthis._zone.onStable.pipe(debounceTime(10), take(1)).subscribe(() => this._initOrReset());\n\t\t} else {\n\t\t\tthis._initOrReset();\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._tearDownNodeMonitor();\n\t}\n\n\tprivate _initOrReset() {\n\t\tconst originalTarget = this._monitorTarget;\n\t\tif (this.buiSizingBy instanceof HTMLElement) {\n\t\t\tthis._monitorTarget = this.buiSizingBy;\n\t\t} else if (this._defaultTarget) {\n\t\t\tthis._monitorTarget = this._defaultTarget.element.nativeElement;\n\t\t} else if (this.buiSizingBy === 'root') {\n\t\t\tconst root = this._element.getRootNode();\n\t\t\tif (root instanceof ShadowRoot) {\n\t\t\t\tthis._monitorTarget = root.host as HTMLElement;\n\t\t\t} else {\n\t\t\t\tthis._monitorTarget = this._doc.documentElement;\n\t\t\t}\n\t\t} else {\n\t\t\tthis._monitorTarget = this._element.parentElement as any;\n\t\t}\n\n\t\tif (this._monitorTarget != originalTarget) {\n\t\t\tthis._setUpNodeMonitor();\n\t\t}\n\n\t\tthis._sizingSpec = {};\n\t\tlet spec = this.buiSizing;\n\t\tif (typeof spec === 'string') {\n\t\t\tspec = spec.split(',').map(k => k.trim());\n\t\t}\n\n\t\tif (Array.isArray(spec)) {\n\t\t\tspec.forEach((c, i) => {\n\t\t\t\tthis._sizingSpec[SizingDirective.defaultSizingBreakpoints[i] || '~'] = c;\n\t\t\t});\n\t\t} else if (spec) {\n\t\t\tthis._sizingSpec = spec;\n\t\t}\n\n\t\tthis.buiFixedHeight = coerceBooleanProperty(this.buiFixedHeight);\n\n\t\tthis._calculateSize();\n\t}\n\n\tprivate _setUpNodeMonitor() {\n\t\tthis._tearDownNodeMonitor();\n\t\tif (this._monitorTarget) {\n\t\t\tthis._observer = new ResizeObserver(() => this._calculateSize());\n\n\t\t\tthis._observer.observe(this._monitorTarget, { box: 'border-box' });\n\t\t}\n\t}\n\n\tprivate _tearDownNodeMonitor() {\n\t\tif (this._observer) {\n\t\t\tthis._observer.disconnect();\n\t\t\tthis._observer = undefined;\n\t\t}\n\t}\n\n\tprivate _calculateSize() {\n\t\tconst widthChanged = this._width !== this._monitorTarget.clientWidth;\n\t\tconst heightChanged = this._height !== this._monitorTarget.clientHeight;\n\t\tif (widthChanged) {\n\t\t\tthis._width = this._monitorTarget.clientWidth;\n\n\t\t\tconst bks = Object.keys(this._sizingSpec).sort((a, b) => this._toNumber(a) - this._toNumber(b));\n\t\t\tlet found = false;\n\t\t\tfor (const key of bks) {\n\t\t\t\tconst classes = this._sizingSpec[key].split(/\\s+/).filter(c => !!c);\n\t\t\t\tif (classes.length) {\n\t\t\t\t\tthis._element.classList.remove(...classes);\n\t\t\t\t}\n\t\t\t\tconst expectedWidth = this._toNumber(key);\n\t\t\t\tif (this._width <= expectedWidth && !found) {\n\t\t\t\t\tif (classes.length) {\n\t\t\t\t\t\tthis._element.classList.add(...classes);\n\t\t\t\t\t}\n\t\t\t\t\tfound = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (widthChanged || heightChanged) {\n\t\t\tthis._height = this._monitorTarget.clientHeight;\n\t\t\tif (this.buiFixedHeight) {\n\t\t\t\tthis._reflowFrameCount = 0;\n\t\t\t\tthis._reflowHeight();\n\t\t\t}\n\t\t\tthis.buiResized.emit({ width: this._width, height: this._height });\n\t\t}\n\t}\n\n\tprivate _reflowHeight() {\n\t\tconst cnt = this._reflowFrameCount;\n\t\tif (cnt < 15) {\n\t\t\trequestAnimationFrame(this._reflowHeight.bind(this));\n\n\t\t\tif (cnt === 0) {\n\t\t\t\tthis._element.style.height = '0';\n\t\t\t} else if (cnt === 14) {\n\t\t\t\tconst gt = parseInt(\n\t\t\t\t\tgetComputedStyle(this._monitorTarget).getPropertyValue('padding-top').replace(/px$/, '') || '0',\n\t\t\t\t\t10\n\t\t\t\t);\n\t\t\t\tconst gb = parseInt(\n\t\t\t\t\tgetComputedStyle(this._monitorTarget).getPropertyValue('padding-bottom').replace(/px$/, '') || '0',\n\t\t\t\t\t10\n\t\t\t\t);\n\t\t\t\tthis._element.style.height = `${this._height - gt - gb - 5}px`;\n\t\t\t}\n\t\t}\n\t\tthis._reflowFrameCount++;\n\t}\n\n\tprivate _toNumber(s: string) {\n\t\treturn (s === '~' ? Infinity : Number(s)) || -Infinity;\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SizingDirective } from './sizing.directive';\nimport { SizingMonitorDirective } from './sizing-monitor.directive';\n\n/**\n * For functionality that cannot be easily achieved via CSS.\n */\n@NgModule({\n\tdeclarations: [SizingDirective, SizingMonitorDirective],\n\timports: [CommonModule],\n\texports: [SizingDirective, SizingMonitorDirective]\n})\nexport class BehaviorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravura-ui-behavior.js","sources":["../../../projects/ui/behavior/sizing-monitor.directive.ts","../../../projects/ui/behavior/sizing.directive.ts","../../../projects/ui/behavior/await.directive.ts","../../../projects/ui/behavior/behavior.module.ts","../../../projects/ui/behavior/bravura-ui-behavior.ts"],"sourcesContent":["import { Directive, ElementRef } from '@angular/core';\n\n/**\n * Use this directive to designate a target HTML element, based on which the child elements'\n * `[buiSizing]` directives will calculate the sizes.\n *\n * ```html\n * <div [buiSizingMonitor]>\n * <div [buiSizing]=\"...\">\n * </div>\n * <div>\n * <div [buiSizing]=\"...\">\n * </div>\n * </div>\n * <div>\n * ```\n */\n@Directive({\n\tselector: '[buiSizingMonitor]'\n})\nexport class SizingMonitorDirective {\n\tconstructor(public readonly element: ElementRef<HTMLElement>) {}\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOptional,\n\tOutput,\n\tSimpleChanges\n} from '@angular/core';\nimport { debounceTime, take } from 'rxjs/operators';\nimport { SizingMonitorDirective } from './sizing-monitor.directive';\n\n/**\n * This directive monitors the changes in the width of the `sizingBy` target, and apply specified style\n * classes and/or inline styles to the current element dynamically.\n *\n * In order for the layout engine to efficiently calculate and stabilize the dimensions, the effective style property\n * `box-sizing` of the `sizingBy` target element must be set to `border-box`.\n *\n * The directive uses [ResizeObserver API](https://developer.mozilla.org/en-US/docs/Web/API/Resize_Observer_API)\n * to capture the events of element resizing. Please use a polyfill if you want to support older browsers\n * that do not implement ResizeObserver API.\n *\n * Examples:\n *\n * ```html\n * <div #parentElement>\n * <div [buiSizing]=\"{'400': 'small', '800': 'medium', '~': 'large'}\" [buiSizingBy]=\"parentElement\"></div>\n * <div [buiSizing]=\"['small', 'medium', 'large']\" [buiSizingBy]=\"'root'\"></div>\n * <div [buiSizing]=\"{'650': 'border-color: #28569', '~': 'bg-muted; border-style: dotted'}\" [buiSizingBy]=\"parentElement\"></div>\n * </div>\n * ```\n */\n@Directive({\n\tselector: '[buiSizing],[buiResized],[buiSizingBy],[buiFixedHeight]'\n})\nexport class SizingDirective implements OnChanges, OnDestroy {\n\t/**\n\t * @ignore\n\t */\n\tstatic defaultSizingBreakpoints = ['400', '800', '~'];\n\n\t/**\n\t * Specifies the breakpoint widths and the style classes.\n\t *\n\t * The sizing spec `{\"400\": \"small\", \"800\": \"medium\", \"~\": \"large\"}` tells the directive to apply\n\t * a style class `small` when the width of the monitored target is smaller than 400 pixels,\n\t * `medium` when the width is between 400 and 800 pixels, and `large` when above.\n\t *\n\t * @example {'400': 'small', '800': 'medium', '~': 'large'}\n\t */\n\t@Input()\n\tbuiSizing: string | Array<string> | { [key: string]: string } = {};\n\n\t/**\n\t * The alias of `buiSizingBy`.\n\t * @default 'root'\n\t */\n\t@Input()\n\tsizingBy: 'root' | 'parent' | HTMLElement = 'root';\n\n\t/**\n\t * Designate an element to be monitored for recalculating the style classes of the current element.\n\t *\n\t * - `root` specifies the document root or the enclosing shadow host. This is the default value.\n\t * - `parent` specifies the parent element.\n\t *\n\t * @default 'root'\n\t * @alias sizingBy\n\t */\n\t@Input()\n\tget buiSizingBy(): 'root' | 'parent' | HTMLElement {\n\t\treturn this.sizingBy;\n\t}\n\tset buiSizingBy(target: 'root' | 'parent' | HTMLElement) {\n\t\tthis.sizingBy = target;\n\t}\n\n\t/**\n\t * Emits `{width, height}` when the monitor target element resizes.\n\t *\n\t * Note that the dimensions emitted are of the [sizingBy] target, but not the current element.\n\t */\n\t@Output()\n\tbuiResized = new EventEmitter<{ width: number; height: number }>();\n\n\t/**\n\t * Recalculate the height of this element according to the height of the monitored target.\n\t */\n\t@Input()\n\tbuiFixedHeight = false;\n\n\tprivate _monitorTarget: HTMLElement;\n\tprivate _observer: ResizeObserver | undefined;\n\tprivate _sizingSpec: { [key: string]: string } = {};\n\tprivate _width = 0;\n\tprivate _height = 0;\n\tprivate _reflowFrameCount = 0;\n\tprivate _element: HTMLElement;\n\n\tconstructor(\n\t\t@Inject(DOCUMENT) private _doc: Document,\n\t\t@Optional() private _defaultTarget: SizingMonitorDirective,\n\t\telemRef: ElementRef<HTMLElement>,\n\t\tprivate _zone: NgZone\n\t) {\n\t\tthis._element = elemRef.nativeElement;\n\t\tthis._monitorTarget = this._element;\n\t}\n\n\tngOnChanges(_: SimpleChanges): void {\n\t\tconst disconnected = this._element.getRootNode() instanceof HTMLElement;\n\t\tif (disconnected) {\n\t\t\t// defer shadow detection till dom connection event\n\t\t\tthis._zone.onStable.pipe(debounceTime(10), take(1)).subscribe(() => this._initOrReset());\n\t\t} else {\n\t\t\tthis._initOrReset();\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._tearDownNodeMonitor();\n\t}\n\n\tprivate _initOrReset() {\n\t\tconst originalTarget = this._monitorTarget;\n\t\tif (this.buiSizingBy instanceof HTMLElement) {\n\t\t\tthis._monitorTarget = this.buiSizingBy;\n\t\t} else if (this._defaultTarget) {\n\t\t\tthis._monitorTarget = this._defaultTarget.element.nativeElement;\n\t\t} else if (this.buiSizingBy === 'root') {\n\t\t\tconst root = this._element.getRootNode();\n\t\t\tif (root instanceof ShadowRoot) {\n\t\t\t\tthis._monitorTarget = root.host as HTMLElement;\n\t\t\t} else {\n\t\t\t\tthis._monitorTarget = this._doc.documentElement;\n\t\t\t}\n\t\t} else {\n\t\t\tthis._monitorTarget = this._element.parentElement as any;\n\t\t}\n\n\t\tif (this._monitorTarget != originalTarget) {\n\t\t\tthis._setUpNodeMonitor();\n\t\t}\n\n\t\tthis._sizingSpec = {};\n\t\tlet spec = this.buiSizing;\n\t\tif (typeof spec === 'string') {\n\t\t\tspec = spec.split(',').map(k => k.trim());\n\t\t}\n\n\t\tif (Array.isArray(spec)) {\n\t\t\tspec.forEach((c, i) => {\n\t\t\t\tthis._sizingSpec[SizingDirective.defaultSizingBreakpoints[i] || '~'] = c;\n\t\t\t});\n\t\t} else if (spec) {\n\t\t\tthis._sizingSpec = spec;\n\t\t}\n\n\t\tthis.buiFixedHeight = coerceBooleanProperty(this.buiFixedHeight);\n\n\t\tthis._calculateSize();\n\t}\n\n\tprivate _setUpNodeMonitor() {\n\t\tthis._tearDownNodeMonitor();\n\t\tif (this._monitorTarget) {\n\t\t\tthis._observer = new ResizeObserver(() => this._calculateSize());\n\n\t\t\tthis._observer.observe(this._monitorTarget, { box: 'border-box' });\n\t\t}\n\t}\n\n\tprivate _tearDownNodeMonitor() {\n\t\tif (this._observer) {\n\t\t\tthis._observer.disconnect();\n\t\t\tthis._observer = undefined;\n\t\t}\n\t}\n\n\tprivate _calculateSize() {\n\t\tconst widthChanged = this._width !== this._monitorTarget.clientWidth;\n\t\tconst heightChanged = this._height !== this._monitorTarget.clientHeight;\n\t\tif (widthChanged) {\n\t\t\tthis._width = this._monitorTarget.clientWidth;\n\n\t\t\tconst bks = Object.keys(this._sizingSpec).sort((a, b) => this._toNumber(a) - this._toNumber(b));\n\t\t\tlet found = false;\n\t\t\tfor (const key of bks) {\n\t\t\t\tconst classesOrStyles = this._sizingSpec[key].split(/;+/).filter(c => c);\n\t\t\t\tthis._removeClassesOrStyles(classesOrStyles);\n\t\t\t\tconst expectedWidth = this._toNumber(key);\n\t\t\t\tif (this._width <= expectedWidth && !found) {\n\t\t\t\t\tthis._applyClassesOrStyles(classesOrStyles);\n\t\t\t\t\tfound = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (widthChanged || heightChanged) {\n\t\t\tthis._height = this._monitorTarget.clientHeight;\n\t\t\tif (this.buiFixedHeight) {\n\t\t\t\tthis._reflowFrameCount = 0;\n\t\t\t\tthis._reflowHeight();\n\t\t\t}\n\t\t\tthis.buiResized.emit({ width: this._width, height: this._height });\n\t\t}\n\t}\n\n\tprivate _applyClassesOrStyles(clsOrStyles: string[]) {\n\t\tclsOrStyles.forEach(s => {\n\t\t\tif (s.includes(':')) {\n\t\t\t\tconst [prop, val] = s.split(':');\n\t\t\t\tthis._element.style.setProperty(prop.trim(), val.trim());\n\t\t\t} else {\n\t\t\t\tconst classes = s.split(/\\s+/).filter(c => c);\n\t\t\t\tif (classes.length) {\n\t\t\t\t\tthis._element.classList.add(...classes);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _removeClassesOrStyles(clsOrStyles: string[]) {\n\t\tclsOrStyles.forEach(s => {\n\t\t\tif (s.includes(':')) {\n\t\t\t\tconst [prop] = s.split(':');\n\t\t\t\tthis._element.style.removeProperty(prop);\n\t\t\t} else {\n\t\t\t\tconst classes = s.split(/\\s+/).filter(c => c);\n\t\t\t\tif (classes.length) {\n\t\t\t\t\tthis._element.classList.remove(...classes);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _reflowHeight() {\n\t\tconst cnt = this._reflowFrameCount;\n\t\tif (cnt < 15) {\n\t\t\trequestAnimationFrame(this._reflowHeight.bind(this));\n\n\t\t\tif (cnt === 0) {\n\t\t\t\tthis._element.style.height = '0';\n\t\t\t} else if (cnt === 14) {\n\t\t\t\tconst gt = parseInt(\n\t\t\t\t\tgetComputedStyle(this._monitorTarget).getPropertyValue('padding-top').replace(/px$/, '') || '0',\n\t\t\t\t\t10\n\t\t\t\t);\n\t\t\t\tconst gb = parseInt(\n\t\t\t\t\tgetComputedStyle(this._monitorTarget).getPropertyValue('padding-bottom').replace(/px$/, '') || '0',\n\t\t\t\t\t10\n\t\t\t\t);\n\t\t\t\tthis._element.style.height = `${this._height - gt - gb - 5}px`;\n\t\t\t}\n\t\t}\n\t\tthis._reflowFrameCount++;\n\t}\n\n\tprivate _toNumber(s: string) {\n\t\treturn (s === '~' ? Infinity : Number(s)) || -Infinity;\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tAfterViewInit,\n\tComponentFactory,\n\tComponentFactoryResolver,\n\tComponentRef,\n\tDirective,\n\tDoCheck,\n\tElementRef,\n\tInject,\n\tInput,\n\tOptional,\n\tViewContainerRef\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { Subscription } from 'rxjs';\n\n/**\n * Use this directive on a `MatButton` element to provide an alternative view when an sync operation is in progress.\n *\n * For example:\n *\n * ```\n * <button (click)=\"submit();\" [buiAwait]=\"submitSubscription\" buiAwaitAriaLabel=\"submitting\">Submit</button>\n * ```\n *\n * Please refer to [Material Design](https://material.io/components/progress-indicators#circular-progress-indicators)\n * for more details of integrating circular spinner component with action buttons.\n *\n * The operation is considered 'in progress' when the bound property `buiAwait` evaluates to\n *\n * - `true`; or\n * - an instance of `rxjs/Subscription` and `buiAwait.closed` is falsy\n *\n * When in progress\n *\n * - the button's caption will be hidden;\n * - a `<mat-progress-spinner>` will be displayed in place of the caption;\n * - the button will be disabled by setting the property `disabled` of the `MatButton` instance.\n */\n@Directive({\n\tselector: '[buiAwait]'\n})\nexport class AwaitDirective implements AfterViewInit, DoCheck {\n\t/**\n\t * Indicates the `in progress` status of an async operation.\n\t *\n\t * The operation is considered 'in progress' when the property evaluates to\n\t *\n\t * - `true`; or\n\t * - an instance of `rxjs/Subscription` and `buiAwait.closed` is falsy\n\t *\n\t */\n\t@Input()\n\tbuiAwait: null | undefined | boolean | Subscription;\n\n\t/** The ARIA label to be put on the spinner. The default value is `\"In progress\"`. */\n\t@Input()\n\tbuiAwaitAriaLabel = 'In progress';\n\n\t/** The diameter of the in-progress spinner. The default value is `20`. */\n\t@Input()\n\tbuiAwaitDiameter = 20;\n\n\tprivate _overlayEl: HTMLDivElement | undefined;\n\tprivate _processing = false;\n\tprivate _factory: ComponentFactory<MatProgressSpinner> | undefined;\n\tprivate _spinnerRef: ComponentRef<MatProgressSpinner> | undefined;\n\tprivate _captionWrapper: HTMLElement | undefined;\n\n\tconstructor(\n\t\tprivate readonly _eRef: ElementRef<HTMLElement>,\n\t\t@Optional() private readonly button: MatButton,\n\t\t@Inject(DOCUMENT) private readonly doc: Document,\n\t\tfactoryResolver: ComponentFactoryResolver,\n\t\tprivate _viewCont: ViewContainerRef\n\t) {\n\t\tif (!button) {\n\t\t\tconsole.error('[buiAwait] can only be used on a MatButton');\n\t\t\treturn;\n\t\t}\n\t\tthis._factory = factoryResolver.resolveComponentFactory(MatProgressSpinner);\n\t}\n\n\t/** @ignore */\n\tngAfterViewInit(): void {\n\t\tif (this.button) {\n\t\t\tthis._overlayEl = this.doc.createElement('div');\n\t\t\tthis._eRef.nativeElement.appendChild(this._overlayEl);\n\t\t\tthis._overlayEl.classList.add('bui-await-overlay');\n\t\t\tthis._overlayEl.style.cssText =\n\t\t\t\t'display:flex; position:absolute; top:0; right:0; bottom:0; left:0; align-items: center; justify-content: center';\n\t\t\tthis._captionWrapper = this._eRef.nativeElement.querySelector('.mat-button-wrapper') as HTMLElement;\n\t\t}\n\t}\n\n\t/** @ignore */\n\tngDoCheck(): void {\n\t\tconst inProgress = this.buiAwait === true || (typeof this.buiAwait === 'object' && !this.buiAwait!.closed);\n\t\tif (inProgress !== this._processing) {\n\t\t\tthis._processing = inProgress;\n\t\t\tthis._statusChanged();\n\t\t}\n\t}\n\n\tprivate _statusChanged() {\n\t\tif (this.button) {\n\t\t\tthis.button.disabled = this._processing;\n\n\t\t\tif (this._processing) {\n\t\t\t\tthis._spinnerRef = this._viewCont.createComponent(this._factory!);\n\t\t\t\tconst c = this._spinnerRef.instance;\n\t\t\t\tc.diameter = this.buiAwaitDiameter;\n\t\t\t\tc.mode = 'indeterminate';\n\t\t\t\tc.color = this.button.color;\n\t\t\t\tconst e: HTMLElement = this._spinnerRef.location.nativeElement;\n\t\t\t\te.setAttribute('aria-label', this.buiAwaitAriaLabel);\n\t\t\t\tthis._overlayEl!.appendChild(e);\n\t\t\t\tthis._captionWrapper!.style.visibility = 'hidden';\n\t\t\t} else {\n\t\t\t\tthis._captionWrapper!.style.visibility = '';\n\t\t\t\tthis._spinnerRef!.destroy();\n\t\t\t\tthis._overlayEl!.innerHTML = '';\n\t\t\t}\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SizingDirective } from './sizing.directive';\nimport { SizingMonitorDirective } from './sizing-monitor.directive';\nimport { AwaitDirective } from './await.directive';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n/**\n * For functionality that cannot be easily achieved via CSS.\n */\n@NgModule({\n\tdeclarations: [SizingDirective, SizingMonitorDirective, AwaitDirective],\n\timports: [CommonModule, MatButtonModule, MatProgressSpinnerModule],\n\texports: [SizingDirective, SizingMonitorDirective, AwaitDirective, MatProgressSpinnerModule]\n})\nexport class BehaviorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ import * as i0 from '@angular/core';
|
|
|
6
6
|
import { forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy, HostListener, NgModule } from '@angular/core';
|
|
7
7
|
import { MatFormField, MAT_FORM_FIELD, matFormFieldAnimations, MatFormFieldModule } from '@angular/material/form-field';
|
|
8
8
|
|
|
9
|
+
/** @ignore */
|
|
10
|
+
const TYPE_REF = forwardRef(() => FormFieldComponent);
|
|
9
11
|
/**
|
|
10
12
|
* Container for form controls that applies Material Design styling and behavior.
|
|
11
13
|
*
|
|
@@ -53,8 +55,8 @@ class FormFieldComponent extends MatFormField {
|
|
|
53
55
|
}
|
|
54
56
|
FormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: FormFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
55
57
|
FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: FormFieldComponent, selector: "bui-form-field", inputs: { color: "color" }, host: { listeners: { "click": "_hostClicked($event)" }, properties: { "class.mat-form-field-appearance-standard": "appearance == \"standard\"", "class.mat-form-field-appearance-fill": "appearance == \"fill\"", "class.mat-form-field-appearance-outline": "appearance == \"outline\"", "class.mat-form-field-appearance-detach": "appearance == \"detach\"", "class.mat-form-field-appearance-bound": "appearance == \"bound\"", "class.mat-form-field-appearance-legacy": "appearance == \"legacy\"", "class.mat-form-field-invalid": "_control.errorState", "class.mat-form-field-can-float": "_canLabelFloat()", "class.mat-form-field-should-float": "_shouldLabelFloat()", "class.mat-form-field-has-label": "_hasFloatingLabel()", "class.mat-form-field-hide-placeholder": "_hideControlPlaceholder()", "class.mat-form-field-disabled": "_control.disabled", "class.mat-form-field-autofilled": "_control.autofilled", "class.mat-focused": "_control.focused", "class.ng-untouched": "_shouldForward(\"untouched\")", "class.ng-touched": "_shouldForward(\"touched\")", "class.ng-pristine": "_shouldForward(\"pristine\")", "class.ng-dirty": "_shouldForward(\"dirty\")", "class.ng-valid": "_shouldForward(\"valid\")", "class.ng-invalid": "_shouldForward(\"invalid\")", "class.ng-pending": "_shouldForward(\"pending\")", "class._mat-animation-noopable": "!_animationsEnabled" }, classAttribute: "mat-form-field bui-form-field" }, providers: [
|
|
56
|
-
{ provide: MAT_FORM_FIELD, useExisting:
|
|
57
|
-
{ provide: MatFormField, useExisting:
|
|
58
|
+
{ provide: MAT_FORM_FIELD, useExisting: TYPE_REF },
|
|
59
|
+
{ provide: MatFormField, useExisting: TYPE_REF }
|
|
58
60
|
], exportAs: ["buiFormField"], usesInheritance: true, ngImport: i0, template: "<div class=\"mat-form-field-wrapper\">\n\t<div class=\"mat-form-field-flex {{ _borderClass() }}\" #connectionContainer>\n\t\t<!-- Outline used for outline appearance. -->\n\t\t<ng-container *ngIf=\"appearance == 'outline'\">\n\t\t\t<div class=\"mat-form-field-outline\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"mat-form-field-outline mat-form-field-outline-thick\">\n\t\t\t\t<div class=\"mat-form-field-outline-start\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-gap\"></div>\n\t\t\t\t<div class=\"mat-form-field-outline-end\"></div>\n\t\t\t</div>\n\t\t</ng-container>\n\n\t\t<div class=\"mat-form-field-prefix\" *ngIf=\"_prefixChildren.length\">\n\t\t\t<ng-content select=\"[matPrefix]\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"{{ _enhancedAppearance() ? 'bui-form-field-infix' : 'mat-form-field-infix' }}\" #inputContainer>\n\t\t\t<ng-content></ng-content>\n\n\t\t\t<span class=\"mat-form-field-label-wrapper\">\n\t\t\t\t<!-- We add aria-owns as a workaround for an issue in JAWS & NVDA where the label isn't\n\t\t\t read if it comes before the control in the DOM. -->\n\t\t\t\t<label\n\t\t\t\t\tclass=\"mat-form-field-label\"\n\t\t\t\t\t(cdkObserveContent)=\"updateOutlineGap()\"\n\t\t\t\t\t[cdkObserveContentDisabled]=\"appearance != 'outline'\"\n\t\t\t\t\t[id]=\"_labelId\"\n\t\t\t\t\t[attr.for]=\"_control.id\"\n\t\t\t\t\t[attr.aria-owns]=\"_control.id\"\n\t\t\t\t\t[class.mat-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-form-field-empty]=\"_control.empty && !_shouldAlwaysFloat()\"\n\t\t\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t\t\t\t#label\n\t\t\t\t\t*ngIf=\"_hasFloatingLabel()\"\n\t\t\t\t\t[ngSwitch]=\"_hasLabel()\"\n\t\t\t\t>\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove in favor of mat-label element an placeholder attr. -->\n\t\t\t\t\t<ng-container *ngSwitchCase=\"false\">\n\t\t\t\t\t\t<ng-content select=\"mat-placeholder\"></ng-content>\n\t\t\t\t\t\t<span>{{ _control.placeholder }}</span>\n\t\t\t\t\t</ng-container>\n\n\t\t\t\t\t<ng-content select=\"mat-label\" *ngSwitchCase=\"true\"></ng-content>\n\n\t\t\t\t\t<!-- @breaking-change 8.0.0 remove `mat-placeholder-required` class -->\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"mat-placeholder-required mat-form-field-required-marker\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t*ngIf=\"!hideRequiredMarker && _control.required && !_control.disabled\"\n\t\t\t\t\t\t> *</span\n\t\t\t\t\t>\n\t\t\t\t</label>\n\t\t\t</span>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-suffix\" *ngIf=\"_suffixChildren.length\">\n\t\t\t<ng-content select=\"[matSuffix]\"></ng-content>\n\t\t</div>\n\t\t<div *ngIf=\"_enhancedAppearance()\" class=\"bui-form-field-right-filler\"></div>\n\t</div>\n\n\t<!-- Underline used for legacy, standard, and box appearances. -->\n\t<div class=\"mat-form-field-underline\" #underline *ngIf=\"appearance != 'outline'\">\n\t\t<span\n\t\t\tclass=\"mat-form-field-ripple\"\n\t\t\t[class.mat-accent]=\"color == 'accent'\"\n\t\t\t[class.mat-warn]=\"color == 'warn'\"\n\t\t></span>\n\t</div>\n\n\t<div class=\"mat-form-field-subscript-wrapper\" [ngSwitch]=\"_getDisplayedMessages()\" (click)=\"$event.stopPropagation()\">\n\t\t<div *ngSwitchCase=\"'error'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<ng-content select=\"mat-error\"></ng-content>\n\t\t</div>\n\n\t\t<div class=\"mat-form-field-hint-wrapper\" *ngSwitchCase=\"'hint'\" [@transitionMessages]=\"_subscriptAnimationState\">\n\t\t\t<!-- TODO(mmalerba): use an actual <mat-hint> once all selectors are switched to mat-* -->\n\t\t\t<div *ngIf=\"hintLabel\" [id]=\"_hintLabelId\" class=\"mat-hint\">{{ hintLabel }}</div>\n\t\t\t<ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n\t\t\t<div class=\"mat-form-field-hint-spacer\"></div>\n\t\t\t<ng-content select=\"mat-hint[align='end']\"></ng-content>\n\t\t</div>\n\t</div>\n</div>\n", styles: [".bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex{padding:.5em;align-items:center;border-radius:4px;border-style:solid}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex:not(.bui-form-field-border-thick):not(:hover),.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{border-width:1px;margin:1px}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex:not(.bui-form-field-border-thick):not(:hover) .bui-form-field-right-filler,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled .bui-form-field-right-filler{width:2px}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-disabled{border-color:#80808033;border-style:dotted}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-default{border-color:#80808066}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-thick,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-border-emphasis:hover{border-width:2px}.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-form-field-border-thick .bui-form-field-right-filler,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex.bui-border-emphasis:hover .bui-form-field-right-filler{width:0}.bui-form-field.mat-form-field-appearance-detach,.bui-form-field.mat-form-field-appearance-bound{padding-top:.75em}.bui-form-field.mat-form-field-appearance-detach .mat-form-field-wrapper,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-wrapper{padding-top:.5em}.bui-form-field.mat-form-field-appearance-detach .bui-form-field-infix,.bui-form-field.mat-form-field-appearance-bound .bui-form-field-infix{flex-grow:1}.bui-form-field.mat-form-field-appearance-detach .mat-form-field-label,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-label{font-size:1.125em}.bui-form-field.mat-form-field-appearance-detach .mat-form-field-flex,.bui-form-field.mat-form-field-appearance-bound .mat-form-field-flex{align-items:center}.bui-form-field.mat-form-field-appearance-detach .mat-form-field-flex{padding:.125em 0;align-items:center}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], animations: [matFormFieldAnimations.transitionMessages], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
59
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
60
62
|
type: Component,
|
|
@@ -93,8 +95,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
|
|
|
93
95
|
encapsulation: ViewEncapsulation.None,
|
|
94
96
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
95
97
|
providers: [
|
|
96
|
-
{ provide: MAT_FORM_FIELD, useExisting:
|
|
97
|
-
{ provide: MatFormField, useExisting:
|
|
98
|
+
{ provide: MAT_FORM_FIELD, useExisting: TYPE_REF },
|
|
99
|
+
{ provide: MatFormField, useExisting: TYPE_REF }
|
|
98
100
|
]
|
|
99
101
|
}]
|
|
100
102
|
}], propDecorators: { _hostClicked: [{
|