@recursyve/ngx-material-components 18.0.0-beta.1 → 18.0.0-beta.3

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.
Files changed (41) hide show
  1. package/esm2022/form-field-error/constant.mjs +4 -0
  2. package/esm2022/form-field-error/error-transformer.mjs +51 -0
  3. package/esm2022/form-field-error/error-translater.mjs +2 -0
  4. package/esm2022/form-field-error/form-field-error.directive.mjs +79 -0
  5. package/esm2022/form-field-error/form-field-error.mjs +57 -0
  6. package/esm2022/form-field-error/index.mjs +6 -0
  7. package/esm2022/form-field-error/options.mjs +2 -0
  8. package/esm2022/form-field-error/provider.mjs +18 -0
  9. package/esm2022/form-field-error/recursyve-ngx-material-components-form-field-error.mjs +5 -0
  10. package/esm2022/loading/constant.mjs +3 -0
  11. package/esm2022/loading/index.mjs +4 -0
  12. package/esm2022/loading/loading-spinner.mjs +15 -0
  13. package/esm2022/loading/loading.mjs +45 -0
  14. package/esm2022/loading/options.mjs +2 -0
  15. package/esm2022/loading/provider.mjs +8 -0
  16. package/esm2022/loading/recursyve-ngx-material-components-loading.mjs +5 -0
  17. package/esm2022/typeahead/async-typeahead.mjs +6 -4
  18. package/esm2022/typeahead/typeahead-base.mjs +3 -2
  19. package/esm2022/typeahead/typeahead.mjs +6 -4
  20. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs +208 -0
  21. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs.map +1 -0
  22. package/fesm2022/recursyve-ngx-material-components-loading.mjs +72 -0
  23. package/fesm2022/recursyve-ngx-material-components-loading.mjs.map +1 -0
  24. package/fesm2022/recursyve-ngx-material-components-typeahead.mjs +11 -7
  25. package/fesm2022/recursyve-ngx-material-components-typeahead.mjs.map +1 -1
  26. package/form-field-error/constant.d.ts +3 -0
  27. package/form-field-error/error-transformer.d.ts +13 -0
  28. package/form-field-error/error-translater.d.ts +1 -0
  29. package/form-field-error/form-field-error.d.ts +8 -0
  30. package/form-field-error/form-field-error.directive.d.ts +17 -0
  31. package/form-field-error/index.d.ts +5 -0
  32. package/form-field-error/options.d.ts +9 -0
  33. package/form-field-error/provider.d.ts +3 -0
  34. package/loading/constant.d.ts +2 -0
  35. package/loading/index.d.ts +3 -0
  36. package/loading/loading-spinner.d.ts +9 -0
  37. package/loading/loading.d.ts +11 -0
  38. package/loading/options.d.ts +4 -0
  39. package/loading/provider.d.ts +3 -0
  40. package/package.json +13 -1
  41. package/typeahead/typeahead-base.d.ts +5 -2
@@ -0,0 +1,4 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken("nice_form_field_error_transformers");
3
+ export const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken("nice_form_field_error_translater");
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL2NvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUMzRyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgY29uc3QgTklDRV9GT1JNX0ZJRUxEX0VSUk9SX1RSQU5TRk9STUVSUyA9IG5ldyBJbmplY3Rpb25Ub2tlbihcIm5pY2VfZm9ybV9maWVsZF9lcnJvcl90cmFuc2Zvcm1lcnNcIik7XG5leHBvcnQgY29uc3QgTklDRV9GT1JNX0ZJRUxEX0VSUk9SX1RSQU5TTEFURVIgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXCJuaWNlX2Zvcm1fZmllbGRfZXJyb3JfdHJhbnNsYXRlclwiKTtcbiJdfQ==
@@ -0,0 +1,51 @@
1
+ export const PatternErrorTransformer = (error, details) => {
2
+ if (details["requiredPattern"]) {
3
+ return {
4
+ key: details["requiredPattern"]
5
+ };
6
+ }
7
+ return { key: error };
8
+ };
9
+ export const MaskErrorTransformer = (error, details) => {
10
+ if (details["requiredMask"]) {
11
+ return {
12
+ key: details["requiredMask"]
13
+ };
14
+ }
15
+ return { key: error };
16
+ };
17
+ export const LengthErrorTransformer = (error, details) => {
18
+ return {
19
+ key: error,
20
+ params: {
21
+ value: details["requiredLength"]
22
+ }
23
+ };
24
+ };
25
+ export const MinErrorTransformer = (error, details) => {
26
+ return {
27
+ key: error,
28
+ params: {
29
+ min: details["min"],
30
+ actual: details["actual"]
31
+ }
32
+ };
33
+ };
34
+ export const MaxErrorTransformer = (error, details) => {
35
+ return {
36
+ key: error,
37
+ params: {
38
+ max: details["max"],
39
+ actual: details["actual"]
40
+ }
41
+ };
42
+ };
43
+ export const DefaultErrorTransformers = {
44
+ pattern: PatternErrorTransformer,
45
+ mask: MaskErrorTransformer,
46
+ minlength: LengthErrorTransformer,
47
+ maxlength: LengthErrorTransformer,
48
+ min: MinErrorTransformer,
49
+ max: MaxErrorTransformer
50
+ };
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL2Vycm9yLXRyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFxQixDQUFDLEtBQWEsRUFBRSxPQUF5QixFQUFFLEVBQUU7SUFDbEcsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU87WUFDSCxHQUFHLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1NBQ2xDLENBQUE7SUFDTCxDQUFDO0lBRUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBcUIsQ0FBQyxLQUFhLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQy9GLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTztZQUNILEdBQUcsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQy9CLENBQUE7SUFDTCxDQUFDO0lBRUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBcUIsQ0FBQyxLQUFhLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQ2pHLE9BQU87UUFDSCxHQUFHLEVBQUUsS0FBSztRQUNWLE1BQU0sRUFBRTtZQUNKLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7U0FDbkM7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXFCLENBQUMsS0FBYSxFQUFFLE9BQXlCLEVBQUUsRUFBRTtJQUM5RixPQUFPO1FBQ0gsR0FBRyxFQUFFLEtBQUs7UUFDVixNQUFNLEVBQUU7WUFDSixHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNuQixNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUM1QjtLQUNKLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBcUIsQ0FBQyxLQUFhLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQzlGLE9BQU87UUFDSCxHQUFHLEVBQUUsS0FBSztRQUNWLE1BQU0sRUFBRTtZQUNKLEdBQUcsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ25CLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO1NBQzVCO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFzQjtJQUN2RCxPQUFPLEVBQUUsdUJBQXVCO0lBQ2hDLElBQUksRUFBRSxvQkFBb0I7SUFDMUIsU0FBUyxFQUFFLHNCQUFzQjtJQUNqQyxTQUFTLEVBQUUsc0JBQXNCO0lBQ2pDLEdBQUcsRUFBRSxtQkFBbUI7SUFDeEIsR0FBRyxFQUFFLG1CQUFtQjtDQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1lZEVycm9yID0geyBrZXk6IHN0cmluZzsgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9O1xuZXhwb3J0IHR5cGUgRXJyb3JUcmFuc2Zvcm1lciA9IChlcnJvcjogc3RyaW5nLCBkZXRhaWxzOiBWYWxpZGF0aW9uRXJyb3JzKSA9PiBUcmFuc2Zvcm1lZEVycm9yO1xuZXhwb3J0IHR5cGUgRXJyb3JUcmFuc2Zvcm1lcnMgPSBSZWNvcmQ8c3RyaW5nLCBFcnJvclRyYW5zZm9ybWVyPjtcblxuZXhwb3J0IGNvbnN0IFBhdHRlcm5FcnJvclRyYW5zZm9ybWVyOiBFcnJvclRyYW5zZm9ybWVyID0gKGVycm9yOiBzdHJpbmcsIGRldGFpbHM6IFZhbGlkYXRpb25FcnJvcnMpID0+IHtcbiAgICBpZiAoZGV0YWlsc1tcInJlcXVpcmVkUGF0dGVyblwiXSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2V5OiBkZXRhaWxzW1wicmVxdWlyZWRQYXR0ZXJuXCJdXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBrZXk6IGVycm9yIH07XG59O1xuXG5leHBvcnQgY29uc3QgTWFza0Vycm9yVHJhbnNmb3JtZXI6IEVycm9yVHJhbnNmb3JtZXIgPSAoZXJyb3I6IHN0cmluZywgZGV0YWlsczogVmFsaWRhdGlvbkVycm9ycykgPT4ge1xuICAgIGlmIChkZXRhaWxzW1wicmVxdWlyZWRNYXNrXCJdKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBrZXk6IGRldGFpbHNbXCJyZXF1aXJlZE1hc2tcIl1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGtleTogZXJyb3IgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBMZW5ndGhFcnJvclRyYW5zZm9ybWVyOiBFcnJvclRyYW5zZm9ybWVyID0gKGVycm9yOiBzdHJpbmcsIGRldGFpbHM6IFZhbGlkYXRpb25FcnJvcnMpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGVycm9yLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIHZhbHVlOiBkZXRhaWxzW1wicmVxdWlyZWRMZW5ndGhcIl1cbiAgICAgICAgfVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgTWluRXJyb3JUcmFuc2Zvcm1lcjogRXJyb3JUcmFuc2Zvcm1lciA9IChlcnJvcjogc3RyaW5nLCBkZXRhaWxzOiBWYWxpZGF0aW9uRXJyb3JzKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBlcnJvcixcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBtaW46IGRldGFpbHNbXCJtaW5cIl0sXG4gICAgICAgICAgICBhY3R1YWw6IGRldGFpbHNbXCJhY3R1YWxcIl1cbiAgICAgICAgfVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgTWF4RXJyb3JUcmFuc2Zvcm1lcjogRXJyb3JUcmFuc2Zvcm1lciA9IChlcnJvcjogc3RyaW5nLCBkZXRhaWxzOiBWYWxpZGF0aW9uRXJyb3JzKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBlcnJvcixcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBtYXg6IGRldGFpbHNbXCJtYXhcIl0sXG4gICAgICAgICAgICBhY3R1YWw6IGRldGFpbHNbXCJhY3R1YWxcIl1cbiAgICAgICAgfVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdEVycm9yVHJhbnNmb3JtZXJzOiBFcnJvclRyYW5zZm9ybWVycyA9IHtcbiAgICBwYXR0ZXJuOiBQYXR0ZXJuRXJyb3JUcmFuc2Zvcm1lcixcbiAgICBtYXNrOiBNYXNrRXJyb3JUcmFuc2Zvcm1lcixcbiAgICBtaW5sZW5ndGg6IExlbmd0aEVycm9yVHJhbnNmb3JtZXIsXG4gICAgbWF4bGVuZ3RoOiBMZW5ndGhFcnJvclRyYW5zZm9ybWVyLFxuICAgIG1pbjogTWluRXJyb3JUcmFuc2Zvcm1lcixcbiAgICBtYXg6IE1heEVycm9yVHJhbnNmb3JtZXJcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItdHJhbnNsYXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2Zvcm0tZmllbGQtZXJyb3IvZXJyb3ItdHJhbnNsYXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRXJyb3JUcmFuc2xhdGVyID0gKGtleTogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiBzdHJpbmc7XG4iXX0=
@@ -0,0 +1,79 @@
1
+ import { DestroyRef, Directive, ElementRef, inject, ViewContainerRef } from "@angular/core";
2
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
3
+ import { MatFormField } from "@angular/material/form-field";
4
+ import { combineLatest } from "rxjs";
5
+ import { NiceFormErrorComponent } from "./form-field-error";
6
+ import { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from "./constant";
7
+ import * as i0 from "@angular/core";
8
+ export class NiceFormFieldErrorDirective {
9
+ destroyRef = inject(DestroyRef);
10
+ elementRef = inject(ElementRef);
11
+ viewContainerRef = inject(ViewContainerRef);
12
+ formField = inject(MatFormField);
13
+ transformers = inject(NICE_FORM_FIELD_ERROR_TRANSFORMERS);
14
+ translater = inject(NICE_FORM_FIELD_ERROR_TRANSLATER);
15
+ ref = null;
16
+ control = null;
17
+ onChange = () => {
18
+ if (this.control === null || this.control.pending) {
19
+ return;
20
+ }
21
+ if (this.control.valid || this.control.untouched) {
22
+ this.setError("", {});
23
+ return;
24
+ }
25
+ for (const error in this.control.errors) {
26
+ const details = this.control.errors[error];
27
+ if (typeof details !== "object") {
28
+ this.setError(`errors.${error}`, {});
29
+ continue;
30
+ }
31
+ const transformer = this.transformers[error];
32
+ if (!transformer) {
33
+ this.setError(`errors.${error}`, {});
34
+ continue;
35
+ }
36
+ const { key, params } = transformer(error, details);
37
+ this.setError(`errors.${key}`, params ?? {});
38
+ }
39
+ };
40
+ ngAfterViewInit() {
41
+ this.control = this.formField._control.ngControl;
42
+ if (this.control !== null && this.control.statusChanges !== null) {
43
+ combineLatest([this.formField._control.stateChanges, this.control.statusChanges])
44
+ .pipe(takeUntilDestroyed(this.destroyRef))
45
+ .subscribe(() => this.onChange());
46
+ }
47
+ }
48
+ setError(text, params) {
49
+ if (!this.ref) {
50
+ this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);
51
+ if (this.elementRef.nativeElement.getElementsByClassName("mat-mdc-form-field-subscript-wrapper").item(0)) {
52
+ const hint = this.elementRef.nativeElement.getElementsByClassName("mat-mdc-form-field-hint").item(0);
53
+ this.ref.location.nativeElement.style.position = "absolute";
54
+ this.ref.location.nativeElement.style.top = hint ? "16px" : "0";
55
+ const wrapper = this.elementRef.nativeElement
56
+ .getElementsByClassName("mat-mdc-form-field-subscript-wrapper")
57
+ .item(0);
58
+ if (hint) {
59
+ wrapper.classList.add("override-height");
60
+ }
61
+ wrapper.prepend(this.ref.location.nativeElement);
62
+ }
63
+ }
64
+ if (text) {
65
+ this.elementRef.nativeElement.classList.add("form-error-show");
66
+ }
67
+ else {
68
+ this.elementRef.nativeElement.classList.remove("form-error-show");
69
+ }
70
+ this.ref.instance.error = this.translater(text, params);
71
+ }
72
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormFieldErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
73
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NiceFormFieldErrorDirective, isStandalone: true, selector: "[niceFormFieldError]", ngImport: i0 });
74
+ }
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormFieldErrorDirective, decorators: [{
76
+ type: Directive,
77
+ args: [{ selector: "[niceFormFieldError]", standalone: true }]
78
+ }] });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL2Zvcm0tZmllbGQtZXJyb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzVELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFHbEcsTUFBTSxPQUFPLDJCQUEyQjtJQUNuQixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxZQUFZLEdBQUcsTUFBTSxDQUFvQixrQ0FBa0MsQ0FBQyxDQUFDO0lBQzdFLFVBQVUsR0FBRyxNQUFNLENBQWtCLGdDQUFnQyxDQUFDLENBQUM7SUFFaEYsR0FBRyxHQUFnRCxJQUFJLENBQUU7SUFDekQsT0FBTyxHQUFnRCxJQUFJLENBQUM7SUFFN0QsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJ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Q0FBQyxzQ0FBc0MsQ0FBQztxQkFDOUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNiLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1AsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztnQkFFRCxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuRSxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7d0dBM0VRLDJCQUEyQjs0RkFBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUR2QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IE5pY2VGb3JtRXJyb3JDb21wb25lbnQgfSBmcm9tIFwiLi9mb3JtLWZpZWxkLWVycm9yXCI7XG5pbXBvcnQgeyBFcnJvclRyYW5zZm9ybWVycyB9IGZyb20gXCIuL2Vycm9yLXRyYW5zZm9ybWVyXCI7XG5pbXBvcnQgeyBFcnJvclRyYW5zbGF0ZXIgfSBmcm9tIFwiLi9lcnJvci10cmFuc2xhdGVyXCI7XG5pbXBvcnQgeyBOSUNFX0ZPUk1fRklFTERfRVJST1JfVFJBTlNGT1JNRVJTLCBOSUNFX0ZPUk1fRklFTERfRVJST1JfVFJBTlNMQVRFUiB9IGZyb20gXCIuL2NvbnN0YW50XCI7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogXCJbbmljZUZvcm1GaWVsZEVycm9yXVwiLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmljZUZvcm1GaWVsZEVycm9yRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRmllbGQgPSBpbmplY3QoTWF0Rm9ybUZpZWxkKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zZm9ybWVycyA9IGluamVjdDxFcnJvclRyYW5zZm9ybWVycz4oTklDRV9GT1JNX0ZJRUxEX0VSUk9SX1RSQU5TRk9STUVSUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVyID0gaW5qZWN0PEVycm9yVHJhbnNsYXRlcj4oTklDRV9GT1JNX0ZJRUxEX0VSUk9SX1RSQU5TTEFURVIpO1xuXG4gICAgcHJpdmF0ZSByZWY6IENvbXBvbmVudFJlZjxOaWNlRm9ybUVycm9yQ29tcG9uZW50PiB8IG51bGwgPSBudWxsIDtcbiAgICBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbCB8IEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sID09PSBudWxsIHx8IHRoaXMuY29udHJvbC5wZW5kaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250cm9sLnZhbGlkIHx8IHRoaXMuY29udHJvbC51bnRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoXCJcIiwge30pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBlcnJvciBpbiB0aGlzLmNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zdCBkZXRhaWxzID0gdGhpcy5jb250cm9sLmVycm9yc1tlcnJvcl07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRldGFpbHMgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVycm9yKGBlcnJvcnMuJHtlcnJvcn1gLCB7fSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gdGhpcy50cmFuc2Zvcm1lcnNbZXJyb3JdO1xuICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm1lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoYGVycm9ycy4ke2Vycm9yfWAsIHt9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgeyBrZXksIHBhcmFtcyB9ID0gdHJhbnNmb3JtZXIoZXJyb3IsIGRldGFpbHMpO1xuICAgICAgICAgICAgdGhpcy5zZXRFcnJvcihgZXJyb3JzLiR7a2V5fWAsIHBhcmFtcyA/PyB7fSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmZvcm1GaWVsZC5fY29udHJvbC5uZ0NvbnRyb2w7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCAhPT0gbnVsbCAmJiB0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlcyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5mb3JtRmllbGQuX2NvbnRyb2wuc3RhdGVDaGFuZ2VzLCB0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlc10pXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2hhbmdlKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVycm9yKHRleHQ6IHN0cmluZywgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChOaWNlRm9ybUVycm9yQ29tcG9uZW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyXCIpLml0ZW0oMCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoaW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1hdC1tZGMtZm9ybS1maWVsZC1oaW50XCIpLml0ZW0oMCk7XG4gICAgICAgICAgICAgICAgKHRoaXMucmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQpLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICAgICAgICAgICh0aGlzLnJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50KS5zdHlsZS50b3AgPSBoaW50ID8gXCIxNnB4XCIgOiBcIjBcIjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlclwiKVxuICAgICAgICAgICAgICAgICAgICAuaXRlbSgwKTtcbiAgICAgICAgICAgICAgICBpZiAoaGludCkge1xuICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmNsYXNzTGlzdC5hZGQoXCJvdmVycmlkZS1oZWlnaHRcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgd3JhcHBlci5wcmVwZW5kKHRoaXMucmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJmb3JtLWVycm9yLXNob3dcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZm9ybS1lcnJvci1zaG93XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWYuaW5zdGFuY2UuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZXIodGV4dCwgcGFyYW1zKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,57 @@
1
+ import { animate, style, transition, trigger } from "@angular/animations";
2
+ import { Component, Input, ViewEncapsulation } from "@angular/core";
3
+ import { MatError } from "@angular/material/form-field";
4
+ import * as i0 from "@angular/core";
5
+ export class NiceFormErrorComponent {
6
+ message = "";
7
+ increment = 0;
8
+ set error(value) {
9
+ if (value) {
10
+ if (this.message !== value) {
11
+ this.increment++;
12
+ }
13
+ }
14
+ this.message = value;
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceFormErrorComponent, isStandalone: true, selector: "nice-form-field-error", inputs: { error: "error" }, ngImport: i0, template: `
18
+ @if (message) {
19
+ <div [@animation]="increment">
20
+ <mat-error>{{ message }}</mat-error>
21
+ </div>
22
+ }
23
+ `, isInline: true, styles: [".form-error-show .mat-mdc-form-field-subscript-wrapper.override-height:before{height:32px!important}\n"], dependencies: [{ kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }], animations: [
24
+ trigger("animation", [
25
+ transition(":increment", [style({ opacity: 0 }), animate("200ms ease-in", style({ opacity: 1 }))]),
26
+ transition(":enter", [
27
+ style({ opacity: 0, transform: "translateY(-1rem)" }),
28
+ animate("200ms ease-in", style({ opacity: 1, transform: "translateY(0)" }))
29
+ ]),
30
+ transition(":leave", [animate("200ms ease-out", style({ opacity: 0, transform: "translateY(-1rem)" }))])
31
+ ])
32
+ ], encapsulation: i0.ViewEncapsulation.None });
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormErrorComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: "nice-form-field-error", template: `
37
+ @if (message) {
38
+ <div [@animation]="increment">
39
+ <mat-error>{{ message }}</mat-error>
40
+ </div>
41
+ }
42
+ `, animations: [
43
+ trigger("animation", [
44
+ transition(":increment", [style({ opacity: 0 }), animate("200ms ease-in", style({ opacity: 1 }))]),
45
+ transition(":enter", [
46
+ style({ opacity: 0, transform: "translateY(-1rem)" }),
47
+ animate("200ms ease-in", style({ opacity: 1, transform: "translateY(0)" }))
48
+ ]),
49
+ transition(":leave", [animate("200ms ease-out", style({ opacity: 0, transform: "translateY(-1rem)" }))])
50
+ ])
51
+ ], encapsulation: ViewEncapsulation.None, imports: [
52
+ MatError
53
+ ], standalone: true, styles: [".form-error-show .mat-mdc-form-field-subscript-wrapper.override-height:before{height:32px!important}\n"] }]
54
+ }], propDecorators: { error: [{
55
+ type: Input
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2Zvcm0tZmllbGQtZXJyb3IvZm9ybS1maWVsZC1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQTRCeEQsTUFBTSxPQUFPLHNCQUFzQjtJQUN4QixPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2IsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVyQixJQUNXLEtBQUssQ0FBQyxLQUFhO1FBQzFCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7d0dBWlEsc0JBQXNCOzRGQUF0QixzQkFBc0IsNkdBeEJyQjs7Ozs7O0tBTVQsZ0xBY0csUUFBUSxvRUFaQTtZQUNSLE9BQU8sQ0FBQyxXQUFXLEVBQUU7Z0JBQ2pCLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEcsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztvQkFDckQsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO2lCQUM5RSxDQUFDO2dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzRyxDQUFDO1NBQ0w7OzRGQU9RLHNCQUFzQjtrQkExQmxDLFNBQVM7K0JBQ0ksdUJBQXVCLFlBQ3ZCOzs7Ozs7S0FNVCxjQUVXO3dCQUNSLE9BQU8sQ0FBQyxXQUFXLEVBQUU7NEJBQ2pCLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDbEcsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDakIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztnQ0FDckQsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzZCQUM5RSxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDM0csQ0FBQztxQkFDTCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNMLFFBQVE7cUJBQ1gsY0FDVyxJQUFJOzhCQU9MLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdEVycm9yIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibmljZS1mb3JtLWZpZWxkLWVycm9yXCIsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICA8ZGl2IFtAYW5pbWF0aW9uXT1cImluY3JlbWVudFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3sgbWVzc2FnZSB9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIHN0eWxlVXJsczogW1wiLi9mb3JtLWZpZWxkLWVycm9yLnNjc3NcIl0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKFwiYW5pbWF0aW9uXCIsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oXCI6aW5jcmVtZW50XCIsIFtzdHlsZSh7IG9wYWNpdHk6IDAgfSksIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluXCIsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oXCI6ZW50ZXJcIiwgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoLTFyZW0pXCIgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW5cIiwgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgwKVwiIH0pKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKFwiOmxlYXZlXCIsIFthbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIiwgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgtMXJlbSlcIiB9KSldKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdEVycm9yXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VGb3JtRXJyb3JDb21wb25lbnQge1xuICAgIHB1YmxpYyBtZXNzYWdlID0gXCJcIjtcbiAgICBwdWJsaWMgaW5jcmVtZW50ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBlcnJvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWVzc2FnZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlbWVudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IHZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from "./error-transformer";
2
+ export * from "./error-translater";
3
+ export * from "./form-field-error.directive";
4
+ export * from "./form-field-error";
5
+ export * from "./provider";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9lcnJvci10cmFuc2Zvcm1lclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3ItdHJhbnNsYXRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybS1maWVsZC1lcnJvci5kaXJlY3RpdmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zvcm0tZmllbGQtZXJyb3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVyXCI7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2Zvcm0tZmllbGQtZXJyb3Ivb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFjdG9yeVByb3ZpZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEVycm9yVHJhbnNsYXRlciB9IGZyb20gXCIuL2Vycm9yLXRyYW5zbGF0ZXJcIjtcbmltcG9ydCB7IEVycm9yVHJhbnNmb3JtZXJzIH0gZnJvbSBcIi4vZXJyb3ItdHJhbnNmb3JtZXJcIjtcblxuZXhwb3J0IHR5cGUgTmljZUZvcm1GaWVsZEVycm9yc09wdGlvbnMgPSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB0cmFuc2xhdGVyOiBPbWl0PEZhY3RvcnlQcm92aWRlciwgXCJwcm92aWRlXCIgfCBcIm11bHRpXCI+ICYgeyB1c2VGYWN0b3J5OiAoLi4uYXJnczogYW55W10pID0+IEVycm9yVHJhbnNsYXRlciB9O1xuICAgIGVycm9yVHJhbnNmb3JtZXJzPzogRXJyb3JUcmFuc2Zvcm1lcnM7XG59O1xuIl19
@@ -0,0 +1,18 @@
1
+ import { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from "./constant";
2
+ import { DefaultErrorTransformers } from "./error-transformer";
3
+ export function provideFormFieldError(options) {
4
+ return [
5
+ {
6
+ provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,
7
+ useValue: {
8
+ ...DefaultErrorTransformers,
9
+ ...options.errorTransformers
10
+ }
11
+ },
12
+ {
13
+ provide: NICE_FORM_FIELD_ERROR_TRANSLATER,
14
+ ...options.translater
15
+ }
16
+ ];
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVsRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsT0FBbUM7SUFDckUsT0FBTztRQUNIO1lBQ0ksT0FBTyxFQUFFLGtDQUFrQztZQUMzQyxRQUFRLEVBQUU7Z0JBQ04sR0FBRyx3QkFBd0I7Z0JBQzNCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQjthQUMvQjtTQUNKO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLEdBQUcsT0FBTyxDQUFDLFVBQVU7U0FDeEI7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5JQ0VfRk9STV9GSUVMRF9FUlJPUl9UUkFOU0ZPUk1FUlMsIE5JQ0VfRk9STV9GSUVMRF9FUlJPUl9UUkFOU0xBVEVSIH0gZnJvbSBcIi4vY29uc3RhbnRcIjtcbmltcG9ydCB7IE5pY2VGb3JtRmllbGRFcnJvcnNPcHRpb25zIH0gZnJvbSBcIi4vb3B0aW9uc1wiO1xuaW1wb3J0IHsgRGVmYXVsdEVycm9yVHJhbnNmb3JtZXJzIH0gZnJvbSBcIi4vZXJyb3ItdHJhbnNmb3JtZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVGb3JtRmllbGRFcnJvcihvcHRpb25zOiBOaWNlRm9ybUZpZWxkRXJyb3JzT3B0aW9ucyk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5JQ0VfRk9STV9GSUVMRF9FUlJPUl9UUkFOU0ZPUk1FUlMsXG4gICAgICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgICAgICAgIC4uLkRlZmF1bHRFcnJvclRyYW5zZm9ybWVycyxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLmVycm9yVHJhbnNmb3JtZXJzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5JQ0VfRk9STV9GSUVMRF9FUlJPUl9UUkFOU0xBVEVSLFxuICAgICAgICAgICAgLi4ub3B0aW9ucy50cmFuc2xhdGVyXG4gICAgICAgIH1cbiAgICBdO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdXJzeXZlLW5neC1tYXRlcmlhbC1jb21wb25lbnRzLWZvcm0tZmllbGQtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL3JlY3Vyc3l2ZS1uZ3gtbWF0ZXJpYWwtY29tcG9uZW50cy1mb3JtLWZpZWxkLWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const NICE_LOADING_OPTIONS = new InjectionToken("nice_loading_options");
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL2NvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IE5JQ0VfTE9BRElOR19PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuKFwibmljZV9sb2FkaW5nX29wdGlvbnNcIik7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from "./loading";
2
+ export * from "./loading-spinner";
3
+ export * from "./provider";
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sb2FkaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb2FkaW5nLXNwaW5uZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVyXCI7XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { Component, input } from "@angular/core";
2
+ import { MatProgressSpinner } from "@angular/material/progress-spinner";
3
+ import * as i0 from "@angular/core";
4
+ export class NiceLoadingSpinner {
5
+ loading = input(false);
6
+ mode = input("indeterminate");
7
+ diameter = input(50);
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: NiceLoadingSpinner, isStandalone: true, selector: "nice-loading-spinner", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingSpinner, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: "nice-loading-spinner", imports: [MatProgressSpinner], standalone: true, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"] }]
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zcGlubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWNvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLXNwaW5uZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmctc3Bpbm5lci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBdUIsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFTN0YsTUFBTSxPQUFPLGtCQUFrQjtJQUNYLE9BQU8sR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEMsSUFBSSxHQUFHLEtBQUssQ0FBc0IsZUFBZSxDQUFDLENBQUM7SUFDbkQsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzt3R0FINUIsa0JBQWtCOzRGQUFsQixrQkFBa0IsZ2RDVi9CLDJFQUNBLHVGRE1jLGtCQUFrQjs7NEZBR25CLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDSSxzQkFBc0IsV0FHdkIsQ0FBQyxrQkFBa0IsQ0FBQyxjQUNqQixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIsIFByb2dyZXNzU3Bpbm5lck1vZGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWxvYWRpbmctc3Bpbm5lclwiLFxuICAgIHRlbXBsYXRlVXJsOiBcImxvYWRpbmctc3Bpbm5lci5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2xvYWRpbmctc3Bpbm5lci5zY3NzXCJdLFxuICAgIGltcG9ydHM6IFtNYXRQcm9ncmVzc1NwaW5uZXJdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTmljZUxvYWRpbmdTcGlubmVyIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9kZSA9IGlucHV0PFByb2dyZXNzU3Bpbm5lck1vZGU+KFwiaW5kZXRlcm1pbmF0ZVwiKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlhbWV0ZXIgPSBpbnB1dCg1MCk7XG59XG4iLCI8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cImRpYW1ldGVyKClcIiBbbW9kZV09XCJtb2RlKClcIj48L21hdC1zcGlubmVyPlxuIl19
@@ -0,0 +1,45 @@
1
+ import { Overlay } from "@angular/cdk/overlay";
2
+ import { ComponentPortal } from "@angular/cdk/portal";
3
+ import { Directive, effect, inject, input } from "@angular/core";
4
+ import { NICE_LOADING_OPTIONS } from "./constant";
5
+ import { NiceLoadingSpinner } from "./loading-spinner";
6
+ import * as i0 from "@angular/core";
7
+ export class NiceLoadingDirective {
8
+ options = inject(NICE_LOADING_OPTIONS, { optional: true });
9
+ overlay = inject(Overlay);
10
+ loading = input(null, { alias: "niceLoadingOverlay" });
11
+ overlayRef = null;
12
+ _loading = false;
13
+ constructor() {
14
+ effect(() => {
15
+ if (this.loading() === this._loading) {
16
+ return;
17
+ }
18
+ this._loading = this.loading() ?? false;
19
+ if (!this.overlayRef) {
20
+ this.overlayRef = this.overlay.create({
21
+ positionStrategy: this.overlay
22
+ .position()
23
+ .global()
24
+ .centerHorizontally()
25
+ .centerVertically(),
26
+ hasBackdrop: true,
27
+ panelClass: "nice-loading-overlay"
28
+ });
29
+ }
30
+ if (this._loading) {
31
+ this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinner));
32
+ }
33
+ else {
34
+ this.overlayRef.detach();
35
+ }
36
+ });
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
39
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NiceLoadingDirective, isStandalone: true, selector: "[niceLoadingOverlay]", inputs: { loading: { classPropertyName: "loading", publicName: "niceLoadingOverlay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingDirective, decorators: [{
42
+ type: Directive,
43
+ args: [{ selector: "[niceLoadingOverlay]", standalone: true }]
44
+ }], ctorParameters: () => [] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUl2RCxNQUFNLE9BQU8sb0JBQW9CO0lBQ1osT0FBTyxHQUFHLE1BQU0sQ0FBcUIsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXBDLE9BQU8sR0FBRyxLQUFLLENBQWlCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFFdEUsVUFBVSxHQUFzQixJQUFJLENBQUM7SUFDckMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV6QjtRQUNJLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25DLE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksS0FBSyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ2xDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPO3lCQUN6QixRQUFRLEVBQUU7eUJBQ1YsTUFBTSxFQUFFO3lCQUNSLGtCQUFrQixFQUFFO3lCQUNwQixnQkFBZ0IsRUFBRTtvQkFDdkIsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLFVBQVUsRUFBRSxzQkFBc0I7aUJBQ3JDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQ25HLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBbENRLG9CQUFvQjs0RkFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTklDRV9MT0FESU5HX09QVElPTlMgfSBmcm9tIFwiLi9jb25zdGFudFwiO1xuaW1wb3J0IHsgTmljZUxvYWRpbmdTcGlubmVyIH0gZnJvbSBcIi4vbG9hZGluZy1zcGlubmVyXCI7XG5pbXBvcnQgeyBOaWNlTG9hZGluZ09wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zXCI7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogXCJbbmljZUxvYWRpbmdPdmVybGF5XVwiLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmljZUxvYWRpbmdEaXJlY3RpdmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdDxOaWNlTG9hZGluZ09wdGlvbnM+KE5JQ0VfTE9BRElOR19PUFRJT05TLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcblxuICAgIHB1YmxpYyBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbiB8IG51bGw+KG51bGwsIHsgYWxpYXM6IFwibmljZUxvYWRpbmdPdmVybGF5XCIgfSk7XG5cbiAgICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9sb2FkaW5nID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvYWRpbmcoKSA9PT0gdGhpcy5fbG9hZGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fbG9hZGluZyA9IHRoaXMubG9hZGluZygpID8/IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAgICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdsb2JhbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2VudGVySG9yaXpvbnRhbGx5KClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jZW50ZXJWZXJ0aWNhbGx5KCksXG4gICAgICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwYW5lbENsYXNzOiBcIm5pY2UtbG9hZGluZy1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX2xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5vcHRpb25zPy5jdXN0b21Mb2FkaW5nID8/IE5pY2VMb2FkaW5nU3Bpbm5lcikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2xvYWRpbmcvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmV4cG9ydCB0eXBlIE5pY2VMb2FkaW5nT3B0aW9ucyA9IHtcbiAgICBjdXN0b21Mb2FkaW5nPzogVHlwZTx1bmtub3duPjtcbn07XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import { NICE_LOADING_OPTIONS } from "./constant";
2
+ export function provideNiceLoadingOptions(options) {
3
+ return {
4
+ provide: NICE_LOADING_OPTIONS,
5
+ useValue: options
6
+ };
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVsRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsT0FBMkI7SUFDakUsT0FBTztRQUNILE9BQU8sRUFBRSxvQkFBb0I7UUFDN0IsUUFBUSxFQUFFLE9BQU87S0FDcEIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOaWNlTG9hZGluZ09wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zXCI7XG5pbXBvcnQgeyBOSUNFX0xPQURJTkdfT1BUSU9OUyB9IGZyb20gXCIuL2NvbnN0YW50XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTmljZUxvYWRpbmdPcHRpb25zKG9wdGlvbnM6IE5pY2VMb2FkaW5nT3B0aW9ucyk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBOSUNFX0xPQURJTkdfT1BUSU9OUyxcbiAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnNcbiAgICB9O1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdXJzeXZlLW5neC1tYXRlcmlhbC1jb21wb25lbnRzLWxvYWRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL3JlY3Vyc3l2ZS1uZ3gtbWF0ZXJpYWwtY29tcG9uZW50cy1sb2FkaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,4 +1,5 @@
1
1
  import { CdkConnectedOverlay, CdkOverlayOrigin } from "@angular/cdk/overlay";
2
+ import { NgTemplateOutlet } from "@angular/common";
2
3
  import { ChangeDetectionStrategy, Component, computed, effect, inject, input, viewChild, ViewEncapsulation } from "@angular/core";
3
4
  import { ReactiveFormsModule } from "@angular/forms";
4
5
  import { MatIconButton } from "@angular/material/button";
@@ -81,7 +82,7 @@ export class NiceAsyncTypeahead extends NiceTypeaheadBase {
81
82
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceAsyncTypeahead, isStandalone: true, selector: "nice-async-typeahead", inputs: { resource: { classPropertyName: "resource", publicName: "resource", isSignal: true, isRequired: true, transformFunction: null }, searchOptions: { classPropertyName: "searchOptions", publicName: "searchOptions", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "combobox", "aria-haspopup": "listbox" }, listeners: { "keydown": "_handleKeydown($event)", "focus": "onFocusChanged(true)", "blur": "onFocusChanged(false)" }, properties: { "attr.id": "id", "attr.aria-controls": "panelOpen ? id + \"-panel\" : null", "attr.aria-expanded": "panelOpen", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.nice-typeahead-disabled": "disabled", "class.nice-typeahead-invalid": "errorState", "class.nice-typeahead-required": "required", "class.nice-typeahead-empty": "empty" }, classAttribute: "nice-typeahead" }, providers: [
82
83
  { provide: MatFormFieldControl, useExisting: NiceAsyncTypeahead },
83
84
  NiceTypeaheadService
84
- ], viewQueries: [{ propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n {{ formatLabel(item) }}\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
85
+ ], viewQueries: [{ propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"], dependencies: [{ kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
85
86
  }
86
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceAsyncTypeahead, decorators: [{
87
88
  type: Component,
@@ -92,7 +93,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
92
93
  MatOption,
93
94
  MatFormField,
94
95
  MatInput,
95
- MatIconButton
96
+ MatIconButton,
97
+ NgTemplateOutlet
96
98
  ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [matSelectAnimations.transformPanel], providers: [
97
99
  { provide: MatFormFieldControl, useExisting: NiceAsyncTypeahead },
98
100
  NiceTypeaheadService
@@ -113,6 +115,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
113
115
  "(keydown)": "_handleKeydown($event)",
114
116
  "(focus)": "onFocusChanged(true)",
115
117
  "(blur)": "onFocusChanged(false)"
116
- }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n {{ formatLabel(item) }}\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
118
+ }, template: "<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n class=\"nice-typeahead\"\n cdk-overlay-origin\n>\n <div class=\"nice-typeahead-value\">\n @if (_empty()) {\n <span class=\"nice-typeahead-placeholder mat-mdc-select-min-line\">{{ _placeholder() }}</span>\n } @else {\n <span class=\"nice-typeahead-value-text\">\n <span class=\"mat-mdc-select-min-line\">\n @if (_value(); as activeValue) {\n {{ formatLabel(activeValue) }}\n }\n </span>\n </span>\n }\n </div>\n\n <div class=\"nice-typeahead-suffix\">\n @if (_empty()) {\n <div class=\"mat-mdc-select-arrow\">\n <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </div>\n } @else {\n <button class=\"nice-typeahead-remove\" mat-icon-button (click)=\"$event.stopPropagation(); removeActiveValue()\">\n <svg viewBox=\"0 -960 960 960\">\n <path d=\"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z\"/>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n (attach)=\"_onAttached()\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div\n #panel\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"nice-typeahead-panel nice-typeahead--open\"\n [attr.id]=\"id + '-panel'\"\n [@transformPanel]=\"'showing'\"\n (@transformPanel.done)=\"_panelDoneAnimatingStream.next($event.toState)\"\n (keydown)=\"_handleKeydown($event)\"\n (scrollend)=\"_handleScrollEnd()\"\n >\n <div class=\"nice-typeahead-search-input\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n #input\n class=\"nice-typeahead__input\"\n matInput\n [formControl]=\"_searchControl\"\n >\n </mat-form-field>\n </div>\n\n <div #optionsContainer class=\"nice-typeahead-options\" role=\"presentation\">\n @for (item of filteredValues(); track item) {\n <mat-option [value]=\"item\">\n @if (optionTemplate(); as optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { $implicit: item }\"></ng-container>\n } @else {\n {{ formatLabel(item) }}\n }\n </mat-option>\n } @empty {\n <mat-option disabled>\n <span class=\"nice-typeahead__no-items\">\n {{ noItemsFoundLabel() }}\n </span>\n </mat-option>\n }\n </div>\n </div>\n</ng-template>\n", styles: ["nice-typeahead,nice-async-typeahead{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}nice-typeahead .nice-typeahead,nice-async-typeahead .nice-typeahead{width:100%;display:inline-flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative;box-sizing:border-box}nice-typeahead .nice-typeahead-suffix,nice-async-typeahead .nice-typeahead-suffix{height:24px;flex-shrink:0;display:inline-flex;align-items:center;--mdc-icon-button-state-layer-size: 24px}nice-typeahead .nice-typeahead-suffix .nice-typeahead-remove,nice-async-typeahead .nice-typeahead-suffix .nice-typeahead-remove{margin-right:-6px}nice-typeahead .nice-typeahead-value,nice-async-typeahead .nice-typeahead-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}nice-typeahead .nice-typeahead-value-text,nice-async-typeahead .nice-typeahead-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}nice-typeahead .mat-mdc-select-min-line:empty:before,nice-async-typeahead .mat-mdc-select-min-line:empty:before{content:\" \";white-space:pre;width:1px;display:inline-block;visibility:hidden}nice-typeahead .nice-typeahead__input,nice-async-typeahead .nice-typeahead__input{border:none;outline:none;box-shadow:none;background:none;padding:0;margin:0;color:inherit}.mat-mdc-form-field-type-nice-typeahead:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-nice-typeahead.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}div.nice-typeahead-panel{width:100%;outline:0;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}div.nice-typeahead-panel .nice-typeahead-search-input{padding-left:8px;padding-right:8px;padding-bottom:8px}div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field,div.nice-typeahead-panel .nice-typeahead-search-input .mat-mdc-form-field-infix{width:100%}div.nice-typeahead-panel .nice-typeahead-options{overflow:auto;max-height:384px}div.nice-typeahead-panel{box-shadow:var(--mat-select-container-elevation-shadow)}\n"] }]
117
119
  }], ctorParameters: () => [] });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWNvbXBvbmVudHMvdHlwZWFoZWFkL2FzeW5jLXR5cGVhaGVhZC50cyIsIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL3R5cGVhaGVhZC90eXBlYWhlYWQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0csU0FBUyxFQUNqQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBMENuRCxNQUFNLE9BQU8sa0JBQWlELFNBQVEsaUJBQW9CO0lBQ3RFLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDcEMsYUFBYSxHQUFHLEtBQUssQ0FBVyxJQUFJLENBQUMsQ0FBQztJQUV0QyxjQUFjLEdBQUcsUUFBUSxD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QU0sRUFBRSxVQUFVO3dCQUNsQixlQUFlLEVBQUUsU0FBUzt3QkFDMUIsT0FBTyxFQUFFLGdCQUFnQjt3QkFDekIsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLHNCQUFzQixFQUFFLG9DQUFvQzt3QkFDNUQsc0JBQXNCLEVBQUUsV0FBVzt3QkFDbkMsc0JBQXNCLEVBQUUscUJBQXFCO3dCQUM3QyxzQkFBc0IsRUFBRSxxQkFBcUI7d0JBQzdDLHFCQUFxQixFQUFFLFlBQVk7d0JBQ25DLGlDQUFpQyxFQUFFLFVBQVU7d0JBQzdDLGdDQUFnQyxFQUFFLFlBQVk7d0JBQzlDLGlDQUFpQyxFQUFFLFVBQVU7d0JBQzdDLDhCQUE4QixFQUFFLE9BQU87d0JBQ3ZDLFdBQVcsRUFBRSx3QkFBd0I7d0JBQ3JDLFNBQVMsRUFBRSxzQkFBc0I7d0JBQ2pDLFFBQVEsRUFBRSx1QkFBdUI7cUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgZWZmZWN0LCBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBPbkluaXQsIHZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0SWNvbkJ1dHRvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IG1hdFNlbGVjdEFuaW1hdGlvbnMgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XG5pbXBvcnQgeyBOaWNlVHlwZWFoZWFkQmFzZSB9IGZyb20gXCIuL3R5cGVhaGVhZC1iYXNlXCI7XG5pbXBvcnQgeyBOaWNlVHlwZWFoZWFkU2VydmljZSB9IGZyb20gXCIuL3Byb3ZpZGVyc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWFzeW5jLXR5cGVhaGVhZFwiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDZGtPdmVybGF5T3JpZ2luLFxuICAgICAgICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRPcHRpb24sXG4gICAgICAgIE1hdEZvcm1GaWVsZCxcbiAgICAgICAgTWF0SW5wdXQsXG4gICAgICAgIE1hdEljb25CdXR0b25cbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vdHlwZWFoZWFkLmh0bWxcIixcbiAgICBzdHlsZVVybDogXCIuL3R5cGVhaGVhZC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBhbmltYXRpb25zOiBbbWF0U2VsZWN0QW5pbWF0aW9ucy50cmFuc2Zvcm1QYW5lbF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IE5pY2VBc3luY1R5cGVhaGVhZCB9LFxuICAgICAgICBOaWNlVHlwZWFoZWFkU2VydmljZVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBcInJvbGVcIjogXCJjb21ib2JveFwiLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJsaXN0Ym94XCIsXG4gICAgICAgIFwiY2xhc3NcIjogXCJuaWNlLXR5cGVhaGVhZFwiLFxuICAgICAgICBcIlthdHRyLmlkXVwiOiBcImlkXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1jb250cm9sc11cIjogXCJwYW5lbE9wZW4gPyBpZCArIFxcXCItcGFuZWxcXFwiIDogbnVsbFwiLFxuICAgICAgICBcIlthdHRyLmFyaWEtZXhwYW5kZWRdXCI6IFwicGFuZWxPcGVuXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1yZXF1aXJlZF1cIjogXCJyZXF1aXJlZC50b1N0cmluZygpXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1kaXNhYmxlZF1cIjogXCJkaXNhYmxlZC50b1N0cmluZygpXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1pbnZhbGlkXVwiOiBcImVycm9yU3RhdGVcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtZGlzYWJsZWRdXCI6IFwiZGlzYWJsZWRcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtaW52YWxpZF1cIjogXCJlcnJvclN0YXRlXCIsXG4gICAgICAgIFwiW2NsYXNzLm5pY2UtdHlwZWFoZWFkLXJlcXVpcmVkXVwiOiBcInJlcXVpcmVkXCIsXG4gICAgICAgIFwiW2NsYXNzLm5pY2UtdHlwZWFoZWFkLWVtcHR5XVwiOiBcImVtcHR5XCIsXG4gICAgICAgIFwiKGtleWRvd24pXCI6IFwiX2hhbmRsZUtleWRvd24oJGV2ZW50KVwiLFxuICAgICAgICBcIihmb2N1cylcIjogXCJvbkZvY3VzQ2hhbmdlZCh0cnVlKVwiLFxuICAgICAgICBcIihibHVyKVwiOiBcIm9uRm9jdXNDaGFuZ2VkKGZhbHNlKVwiXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBOaWNlQXN5bmNUeXBlYWhlYWQ8VCwgUyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gZXh0ZW5kcyBOaWNlVHlwZWFoZWFkQmFzZTxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBzZWFyY2hPcHRpb25zID0gaW5wdXQ8UyB8IG51bGw+KG51bGwpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGZpbHRlcmVkVmFsdWVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZXJ2aWNlLml0ZW1zKCkpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnNDb250YWluZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KFwib3B0aW9uc0NvbnRhaW5lclwiKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZSA9IGluamVjdChOaWNlVHlwZWFoZWFkU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2NvbXBhcmVXaXRoID0gKG8xOiBULCBvMjogVCkgPT4ge1xuICAgICAgICBpZiAoISh0eXBlb2YgbzEgPT09IFwib2JqZWN0XCIgJiYgbzEgJiYgdHlwZW9mIG8yID09PSBcIm9iamVjdFwiICYmIG8yKSkge1xuICAgICAgICAgICAgcmV0dXJuIG8xID09PSBvMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKFwiaWRcIiBpbiBvMSkgfHwgIShcImlkXCIgaW4gbzIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbzEgPT09IG8yO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG8xLmlkID09PSBvMi5pZDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSW5maW5pdGUgc2Nyb2xsIGludGVybmFsIHN0YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxUaHJlc2hvbGRQZXJjZW50ID0gMC45OTtcbiAgICBwcml2YXRlIGxhc3RTY3JvbGxIZWlnaHQgPSAwO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRTZWFyY2hPcHRpb25zKHRoaXMuc2VhcmNoT3B0aW9ucygpKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHRoaXMuc2VydmljZS5zZWFyY2godGhpcy5fc2VhcmNoVmFsdWUoKSksIHtcbiAgICAgICAgICAgIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm9wdGlvbnNDb250YWluZXIoKTtcbiAgICAgICAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb250YWluZXIubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMub25TY3JvbGwuYmluZCh0aGlzKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLnNlcnZpY2UuaW5pdCh0aGlzLnJlc291cmNlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBvbkZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgc3VwZXIub25Gb2N1c0NoYW5nZWQoaXNGb2N1c2VkKTtcblxuICAgICAgICBpZiAoaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUoXCJcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZm9ybWF0TGFiZWwoaXRlbTogVCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZm9ybWF0TGFiZWwoaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUFjdGl2ZVZhbHVlKCkge1xuICAgICAgICBzdXBlci5yZW1vdmVBY3RpdmVWYWx1ZSgpO1xuXG4gICAgICAgIHRoaXMuc2VydmljZS5zZXRBY3RpdmUobnVsbCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZCA9ICh0aGlzLnNjcm9sbFRocmVzaG9sZFBlcmNlbnQgKiAxMDAgKiB0YXJnZXQuc2Nyb2xsSGVpZ2h0KSAvIDEwMDtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRhcmdldC5zY3JvbGxUb3AgKyB0YXJnZXQuY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgIGlmICh0aGlzLmxhc3RTY3JvbGxIZWlnaHQgPiB0YXJnZXQuc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RTY3JvbGxIZWlnaHQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnQgPiB0aHJlc2hvbGQgJiYgdGhpcy5sYXN0U2Nyb2xsSGVpZ2h0IDwgdGFyZ2V0LnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmxvYWRNb3JlKCk7XG4gICAgICAgICAgICB0aGlzLmxhc3RTY3JvbGxIZWlnaHQgPSB0YXJnZXQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICNmYWxsYmFja092ZXJsYXlPcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkXCJcbiAgICBjZGstb3ZlcmxheS1vcmlnaW5cbj5cbiAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtdmFsdWVcIj5cbiAgICAgICAgQGlmIChfZW1wdHkoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1wbGFjZWhvbGRlciBtYXQtbWRjLXNlbGVjdC1taW4tbGluZVwiPnt7IF9wbGFjZWhvbGRlcigpIH19PC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmljZS10eXBlYWhlYWQtdmFsdWUtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LW1kYy1zZWxlY3QtbWluLWxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChfdmFsdWUoKTsgYXMgYWN0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKGFjdGl2ZVZhbHVlKSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtc3VmZml4XCI+XG4gICAgICAgIEBpZiAoX2VtcHR5KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLXNlbGVjdC1hcnJvd1wiPlxuICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmb2N1c2FibGU9XCJmYWxzZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTBsNSA1IDUtNXpcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmljZS10eXBlYWhlYWQtcmVtb3ZlXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZUFjdGl2ZVZhbHVlKClcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTI5MS0yNDAtNTEtNTEgMTg5LTE4OS0xODktMTg5IDUxLTUxIDE4OSAxODkgMTg5LTE4OSA1MSA1MS0xODkgMTg5IDE4OSAxODktNTEgNTEtMTg5LTE4OS0xODkgMTg5WlwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gICAgY2RrLWNvbm5lY3RlZC1vdmVybGF5XG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvblxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcFxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJwYW5lbE9wZW5cIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwiX292ZXJsYXlXaWR0aFwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwiX3ByZWZlcnJlZE92ZXJsYXlPcmlnaW4gfHwgZmFsbGJhY2tPdmVybGF5T3JpZ2luXCJcbiAgICAoYXR0YWNoKT1cIl9vbkF0dGFjaGVkKClcIlxuICAgIChiYWNrZHJvcENsaWNrKT1cImNsb3NlKClcIlxuICAgIChkZXRhY2gpPVwiY2xvc2UoKVwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjcGFuZWxcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1wYW5lbCBuaWNlLXR5cGVhaGVhZC0tb3BlblwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkICsgJy1wYW5lbCdcIlxuICAgICAgICBbQHRyYW5zZm9ybVBhbmVsXT1cIidzaG93aW5nJ1wiXG4gICAgICAgIChAdHJhbnNmb3JtUGFuZWwuZG9uZSk9XCJfcGFuZWxEb25lQW5pbWF0aW5nU3RyZWFtLm5leHQoJGV2ZW50LnRvU3RhdGUpXCJcbiAgICAgICAgKGtleWRvd24pPVwiX2hhbmRsZUtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIChzY3JvbGxlbmQpPVwiX2hhbmRsZVNjcm9sbEVuZCgpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1zZWFyY2gtaW5wdXRcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmljZS10eXBlYWhlYWRfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIl9zZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICNvcHRpb25zQ29udGFpbmVyIGNsYXNzPVwibmljZS10eXBlYWhlYWQtb3B0aW9uc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRWYWx1ZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfSBAZW1wdHkge1xuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGRpc2FibGVkPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkX19uby1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9JdGVtc0ZvdW5kTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdHlwZWFoZWFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWNvbXBvbmVudHMvdHlwZWFoZWFkL2FzeW5jLXR5cGVhaGVhZC50cyIsIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL3R5cGVhaGVhZC90eXBlYWhlYWQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUVOLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUEyQ25ELE1BQU0sT0FBTyxrQkFBaUQsU0FBUSxpQkFBb0I7SUFDdEUsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztJQUNwQyxhQUFhLEdBQUcsS0FB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TyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsb0JBQW9CLEVBQUU7d0JBQ2pFLG9CQUFvQjtxQkFDdkIsUUFDSzt3QkFDRixNQUFNLEVBQUUsVUFBVTt3QkFDbEIsZUFBZSxFQUFFLFNBQVM7d0JBQzFCLE9BQU8sRUFBRSxnQkFBZ0I7d0JBQ3pCLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixzQkFBc0IsRUFBRSxvQ0FBb0M7d0JBQzVELHNCQUFzQixFQUFFLFdBQVc7d0JBQ25DLHNCQUFzQixFQUFFLHFCQUFxQjt3QkFDN0Msc0JBQXNCLEVBQUUscUJBQXFCO3dCQUM3QyxxQkFBcUIsRUFBRSxZQUFZO3dCQUNuQyxpQ0FBaUMsRUFBRSxVQUFVO3dCQUM3QyxnQ0FBZ0MsRUFBRSxZQUFZO3dCQUM5QyxpQ0FBaUMsRUFBRSxVQUFVO3dCQUM3Qyw4QkFBOEIsRUFBRSxPQUFPO3dCQUN2QyxXQUFXLEVBQUUsd0JBQXdCO3dCQUNyQyxTQUFTLEVBQUUsc0JBQXNCO3dCQUNqQyxRQUFRLEVBQUUsdUJBQXVCO3FCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4gfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBlZmZlY3QsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG4gICAgT25Jbml0LFxuICAgIHZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0SWNvbkJ1dHRvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IG1hdFNlbGVjdEFuaW1hdGlvbnMgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XG5pbXBvcnQgeyBOaWNlVHlwZWFoZWFkQmFzZSB9IGZyb20gXCIuL3R5cGVhaGVhZC1iYXNlXCI7XG5pbXBvcnQgeyBOaWNlVHlwZWFoZWFkU2VydmljZSB9IGZyb20gXCIuL3Byb3ZpZGVyc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWFzeW5jLXR5cGVhaGVhZFwiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDZGtPdmVybGF5T3JpZ2luLFxuICAgICAgICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRPcHRpb24sXG4gICAgICAgIE1hdEZvcm1GaWVsZCxcbiAgICAgICAgTWF0SW5wdXQsXG4gICAgICAgIE1hdEljb25CdXR0b24sXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXRcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vdHlwZWFoZWFkLmh0bWxcIixcbiAgICBzdHlsZVVybDogXCIuL3R5cGVhaGVhZC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBhbmltYXRpb25zOiBbbWF0U2VsZWN0QW5pbWF0aW9ucy50cmFuc2Zvcm1QYW5lbF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IE5pY2VBc3luY1R5cGVhaGVhZCB9LFxuICAgICAgICBOaWNlVHlwZWFoZWFkU2VydmljZVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBcInJvbGVcIjogXCJjb21ib2JveFwiLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJsaXN0Ym94XCIsXG4gICAgICAgIFwiY2xhc3NcIjogXCJuaWNlLXR5cGVhaGVhZFwiLFxuICAgICAgICBcIlthdHRyLmlkXVwiOiBcImlkXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1jb250cm9sc11cIjogXCJwYW5lbE9wZW4gPyBpZCArIFxcXCItcGFuZWxcXFwiIDogbnVsbFwiLFxuICAgICAgICBcIlthdHRyLmFyaWEtZXhwYW5kZWRdXCI6IFwicGFuZWxPcGVuXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1yZXF1aXJlZF1cIjogXCJyZXF1aXJlZC50b1N0cmluZygpXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1kaXNhYmxlZF1cIjogXCJkaXNhYmxlZC50b1N0cmluZygpXCIsXG4gICAgICAgIFwiW2F0dHIuYXJpYS1pbnZhbGlkXVwiOiBcImVycm9yU3RhdGVcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtZGlzYWJsZWRdXCI6IFwiZGlzYWJsZWRcIixcbiAgICAgICAgXCJbY2xhc3MubmljZS10eXBlYWhlYWQtaW52YWxpZF1cIjogXCJlcnJvclN0YXRlXCIsXG4gICAgICAgIFwiW2NsYXNzLm5pY2UtdHlwZWFoZWFkLXJlcXVpcmVkXVwiOiBcInJlcXVpcmVkXCIsXG4gICAgICAgIFwiW2NsYXNzLm5pY2UtdHlwZWFoZWFkLWVtcHR5XVwiOiBcImVtcHR5XCIsXG4gICAgICAgIFwiKGtleWRvd24pXCI6IFwiX2hhbmRsZUtleWRvd24oJGV2ZW50KVwiLFxuICAgICAgICBcIihmb2N1cylcIjogXCJvbkZvY3VzQ2hhbmdlZCh0cnVlKVwiLFxuICAgICAgICBcIihibHVyKVwiOiBcIm9uRm9jdXNDaGFuZ2VkKGZhbHNlKVwiXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBOaWNlQXN5bmNUeXBlYWhlYWQ8VCwgUyBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gZXh0ZW5kcyBOaWNlVHlwZWFoZWFkQmFzZTxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBzZWFyY2hPcHRpb25zID0gaW5wdXQ8UyB8IG51bGw+KG51bGwpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGZpbHRlcmVkVmFsdWVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZXJ2aWNlLml0ZW1zKCkpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnNDb250YWluZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KFwib3B0aW9uc0NvbnRhaW5lclwiKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZSA9IGluamVjdChOaWNlVHlwZWFoZWFkU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2NvbXBhcmVXaXRoID0gKG8xOiBULCBvMjogVCkgPT4ge1xuICAgICAgICBpZiAoISh0eXBlb2YgbzEgPT09IFwib2JqZWN0XCIgJiYgbzEgJiYgdHlwZW9mIG8yID09PSBcIm9iamVjdFwiICYmIG8yKSkge1xuICAgICAgICAgICAgcmV0dXJuIG8xID09PSBvMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKFwiaWRcIiBpbiBvMSkgfHwgIShcImlkXCIgaW4gbzIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbzEgPT09IG8yO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG8xLmlkID09PSBvMi5pZDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSW5maW5pdGUgc2Nyb2xsIGludGVybmFsIHN0YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxUaHJlc2hvbGRQZXJjZW50ID0gMC45OTtcbiAgICBwcml2YXRlIGxhc3RTY3JvbGxIZWlnaHQgPSAwO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zZXRTZWFyY2hPcHRpb25zKHRoaXMuc2VhcmNoT3B0aW9ucygpKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHRoaXMuc2VydmljZS5zZWFyY2godGhpcy5fc2VhcmNoVmFsdWUoKSksIHtcbiAgICAgICAgICAgIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm9wdGlvbnNDb250YWluZXIoKTtcbiAgICAgICAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb250YWluZXIubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMub25TY3JvbGwuYmluZCh0aGlzKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLnNlcnZpY2UuaW5pdCh0aGlzLnJlc291cmNlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBvbkZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgc3VwZXIub25Gb2N1c0NoYW5nZWQoaXNGb2N1c2VkKTtcblxuICAgICAgICBpZiAoaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUoXCJcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZm9ybWF0TGFiZWwoaXRlbTogVCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuZm9ybWF0TGFiZWwoaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUFjdGl2ZVZhbHVlKCkge1xuICAgICAgICBzdXBlci5yZW1vdmVBY3RpdmVWYWx1ZSgpO1xuXG4gICAgICAgIHRoaXMuc2VydmljZS5zZXRBY3RpdmUobnVsbCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHRocmVzaG9sZCA9ICh0aGlzLnNjcm9sbFRocmVzaG9sZFBlcmNlbnQgKiAxMDAgKiB0YXJnZXQuc2Nyb2xsSGVpZ2h0KSAvIDEwMDtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRhcmdldC5zY3JvbGxUb3AgKyB0YXJnZXQuY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgIGlmICh0aGlzLmxhc3RTY3JvbGxIZWlnaHQgPiB0YXJnZXQuc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RTY3JvbGxIZWlnaHQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnQgPiB0aHJlc2hvbGQgJiYgdGhpcy5sYXN0U2Nyb2xsSGVpZ2h0IDwgdGFyZ2V0LnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmxvYWRNb3JlKCk7XG4gICAgICAgICAgICB0aGlzLmxhc3RTY3JvbGxIZWlnaHQgPSB0YXJnZXQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICNmYWxsYmFja092ZXJsYXlPcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICBjbGFzcz1cIm5pY2UtdHlwZWFoZWFkXCJcbiAgICBjZGstb3ZlcmxheS1vcmlnaW5cbj5cbiAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtdmFsdWVcIj5cbiAgICAgICAgQGlmIChfZW1wdHkoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1wbGFjZWhvbGRlciBtYXQtbWRjLXNlbGVjdC1taW4tbGluZVwiPnt7IF9wbGFjZWhvbGRlcigpIH19PC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmljZS10eXBlYWhlYWQtdmFsdWUtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LW1kYy1zZWxlY3QtbWluLWxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChfdmFsdWUoKTsgYXMgYWN0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKGFjdGl2ZVZhbHVlKSB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibmljZS10eXBlYWhlYWQtc3VmZml4XCI+XG4gICAgICAgIEBpZiAoX2VtcHR5KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLXNlbGVjdC1hcnJvd1wiPlxuICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmb2N1c2FibGU9XCJmYWxzZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTBsNSA1IDUtNXpcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmljZS10eXBlYWhlYWQtcmVtb3ZlXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZUFjdGl2ZVZhbHVlKClcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTI5MS0yNDAtNTEtNTEgMTg5LTE4OS0xODktMTg5IDUxLTUxIDE4OSAxODkgMTg5LTE4OSA1MSA1MS0xODkgMTg5IDE4OSAxODktNTEgNTEtMTg5LTE4OS0xODkgMTg5WlwiLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gICAgY2RrLWNvbm5lY3RlZC1vdmVybGF5XG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvblxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcFxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJwYW5lbE9wZW5cIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwiX292ZXJsYXlXaWR0aFwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwiX3ByZWZlcnJlZE92ZXJsYXlPcmlnaW4gfHwgZmFsbGJhY2tPdmVybGF5T3JpZ2luXCJcbiAgICAoYXR0YWNoKT1cIl9vbkF0dGFjaGVkKClcIlxuICAgIChiYWNrZHJvcENsaWNrKT1cImNsb3NlKClcIlxuICAgIChkZXRhY2gpPVwiY2xvc2UoKVwiXG4+XG4gICAgPGRpdlxuICAgICAgICAjcGFuZWxcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1wYW5lbCBuaWNlLXR5cGVhaGVhZC0tb3BlblwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkICsgJy1wYW5lbCdcIlxuICAgICAgICBbQHRyYW5zZm9ybVBhbmVsXT1cIidzaG93aW5nJ1wiXG4gICAgICAgIChAdHJhbnNmb3JtUGFuZWwuZG9uZSk9XCJfcGFuZWxEb25lQW5pbWF0aW5nU3RyZWFtLm5leHQoJGV2ZW50LnRvU3RhdGUpXCJcbiAgICAgICAgKGtleWRvd24pPVwiX2hhbmRsZUtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgIChzY3JvbGxlbmQpPVwiX2hhbmRsZVNjcm9sbEVuZCgpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuaWNlLXR5cGVhaGVhZC1zZWFyY2gtaW5wdXRcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmljZS10eXBlYWhlYWRfX2lucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIl9zZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICNvcHRpb25zQ29udGFpbmVyIGNsYXNzPVwibmljZS10eXBlYWhlYWQtb3B0aW9uc1wiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRWYWx1ZXMoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uVGVtcGxhdGUoKTsgYXMgb3B0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdExhYmVsKGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICB9IEBlbXB0eSB7XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmljZS10eXBlYWhlYWRfX25vLWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub0l0ZW1zRm91bmRMYWJlbCgpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==