@tft/crispr-forms 14.0.1-rc.0 → 14.0.1-rc.1

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 (67) hide show
  1. package/esm2020/lib/abstracts/crispr-field.abstract.mjs +6 -3
  2. package/esm2020/lib/crispr-forms.module.mjs +20 -28
  3. package/esm2020/lib/field-container/field-container.component.mjs +8 -28
  4. package/esm2020/lib/field.directive.mjs +5 -24
  5. package/esm2020/lib/form/form.component.mjs +14 -40
  6. package/esm2020/lib/form-group-list/form-group-list.component.mjs +23 -8
  7. package/esm2020/lib/form-group-list/index.mjs +1 -2
  8. package/esm2020/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.mjs +25 -63
  9. package/esm2020/lib/material/autocomplete-field/autocomplete-field.component.mjs +21 -55
  10. package/esm2020/lib/material/button/button.component.mjs +5 -30
  11. package/esm2020/lib/material/checkbox-field/checkbox-field.component.mjs +13 -42
  12. package/esm2020/lib/material/datepicker-field/datepicker-field.component.mjs +12 -44
  13. package/esm2020/lib/material/divider/divider.component.mjs +5 -24
  14. package/esm2020/lib/material/file-upload/file-dropzone.directive.mjs +4 -3
  15. package/esm2020/lib/material/file-upload/file-upload.component.mjs +22 -58
  16. package/esm2020/lib/material/heading/heading.component.mjs +9 -31
  17. package/esm2020/lib/material/image-upload-field/image-upload-field.component.mjs +23 -61
  18. package/esm2020/lib/material/index.mjs +1 -2
  19. package/esm2020/lib/material/info/info.component.mjs +8 -29
  20. package/esm2020/lib/material/input-field/input-field.component.mjs +13 -42
  21. package/esm2020/lib/material/option/option.component.mjs +8 -28
  22. package/esm2020/lib/material/radio-field/radio-field.component.mjs +8 -32
  23. package/esm2020/lib/material/select-field/select-field.component.mjs +22 -58
  24. package/esm2020/lib/material/selected-file/selected-file.component.mjs +7 -26
  25. package/esm2020/lib/material/slider-field/slider-field.component.mjs +14 -43
  26. package/esm2020/lib/material/textarea-field/textarea-field.component.mjs +12 -41
  27. package/esm2020/lib/material/unit-conversion-field/unit-conversion-field.component.mjs +16 -50
  28. package/esm2020/lib/sub-group/sub-group.module.mjs +8 -9
  29. package/fesm2015/tft-crispr-forms.mjs +211 -885
  30. package/fesm2015/tft-crispr-forms.mjs.map +1 -1
  31. package/fesm2020/tft-crispr-forms.mjs +208 -882
  32. package/fesm2020/tft-crispr-forms.mjs.map +1 -1
  33. package/lib/abstracts/crispr-field.abstract.d.ts +1 -1
  34. package/lib/crispr-forms.module.d.ts +4 -5
  35. package/lib/field-container/field-container.component.d.ts +1 -8
  36. package/lib/field.directive.d.ts +1 -7
  37. package/lib/form/form.component.d.ts +1 -11
  38. package/lib/form-group-list/form-group-list.component.d.ts +1 -1
  39. package/lib/form-group-list/index.d.ts +0 -1
  40. package/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.d.ts +1 -16
  41. package/lib/material/autocomplete-field/autocomplete-field.component.d.ts +1 -14
  42. package/lib/material/button/button.component.d.ts +1 -11
  43. package/lib/material/checkbox-field/checkbox-field.component.d.ts +1 -12
  44. package/lib/material/datepicker-field/datepicker-field.component.d.ts +1 -14
  45. package/lib/material/divider/divider.component.d.ts +1 -8
  46. package/lib/material/file-upload/file-dropzone.directive.d.ts +1 -1
  47. package/lib/material/file-upload/file-upload.component.d.ts +1 -16
  48. package/lib/material/heading/heading.component.d.ts +1 -9
  49. package/lib/material/image-upload-field/image-upload-field.component.d.ts +1 -16
  50. package/lib/material/index.d.ts +0 -1
  51. package/lib/material/info/info.component.d.ts +1 -9
  52. package/lib/material/input-field/input-field.component.d.ts +1 -12
  53. package/lib/material/option/option.component.d.ts +1 -8
  54. package/lib/material/radio-field/radio-field.component.d.ts +1 -10
  55. package/lib/material/select-field/select-field.component.d.ts +1 -15
  56. package/lib/material/selected-file/selected-file.component.d.ts +1 -8
  57. package/lib/material/slider-field/slider-field.component.d.ts +1 -12
  58. package/lib/material/textarea-field/textarea-field.component.d.ts +2 -14
  59. package/lib/material/unit-conversion-field/unit-conversion-field.component.d.ts +1 -14
  60. package/lib/sub-group/sub-group.module.d.ts +1 -1
  61. package/package.json +1 -1
  62. package/tft-crispr-forms-14.0.1-rc.1.tgz +0 -0
  63. package/esm2020/lib/form-group-list/form-group-list.module.mjs +0 -52
  64. package/esm2020/lib/material/material.module.mjs +0 -96
  65. package/lib/form-group-list/form-group-list.module.d.ts +0 -15
  66. package/lib/material/material.module.d.ts +0 -26
  67. package/tft-crispr-forms-14.0.1-rc.0.tgz +0 -0
@@ -1,12 +1,11 @@
1
- import { Component, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';
1
+ import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
2
2
  import { CrisprFieldComponent } from '../../abstracts';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { MatFormFieldModule } from '@angular/material/form-field';
5
- import { InfoModule } from '../info/info.component';
5
+ import { InfoComponent } from '../info/info.component';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/common";
8
8
  import * as i2 from "@angular/material/form-field";
9
- import * as i3 from "../info/info.component";
10
9
  const defaultConfig = {
11
10
  typographyClass: 'mat-h3'
12
11
  };
@@ -17,36 +16,15 @@ export class HeadingComponent extends CrisprFieldComponent {
17
16
  }
18
17
  }
19
18
  HeadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: HeadingComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
20
- HeadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: HeadingComponent, selector: "crispr-heading", inputs: { config: "config" }, usesInheritance: true, ngImport: i0, template: " <label\n *ngIf=\"!!config?.label\"\n [ngClass]=\"config.typographyClass\">\n {{ config.label }}\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info\">\n </crispr-info>\n </label>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i3.InfoComponent, selector: "crispr-info", inputs: ["info"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
19
+ HeadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: HeadingComponent, isStandalone: true, selector: "crispr-heading", inputs: { config: "config" }, usesInheritance: true, ngImport: i0, template: " <label\n *ngIf=\"!!config?.label\"\n [ngClass]=\"config.typographyClass\">\n {{ config.label }}\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info\">\n </crispr-info>\n </label>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: InfoComponent, selector: "crispr-info", inputs: ["info"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
21
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: HeadingComponent, decorators: [{
22
21
  type: Component,
23
- args: [{ selector: 'crispr-heading', changeDetection: ChangeDetectionStrategy.OnPush, template: " <label\n *ngIf=\"!!config?.label\"\n [ngClass]=\"config.typographyClass\">\n {{ config.label }}\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info\">\n </crispr-info>\n </label>\n", styles: [":host{display:block}\n"] }]
22
+ args: [{ selector: 'crispr-heading', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
23
+ CommonModule,
24
+ MatFormFieldModule,
25
+ InfoComponent
26
+ ], template: " <label\n *ngIf=\"!!config?.label\"\n [ngClass]=\"config.typographyClass\">\n {{ config.label }}\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info\">\n </crispr-info>\n </label>\n", styles: [":host{display:block}\n"] }]
24
27
  }], propDecorators: { config: [{
25
28
  type: Input
26
29
  }] } });
27
- export class HeadingModule {
28
- }
29
- HeadingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: HeadingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
30
- HeadingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: HeadingModule, declarations: [HeadingComponent], imports: [CommonModule,
31
- MatFormFieldModule,
32
- InfoModule], exports: [HeadingComponent] });
33
- HeadingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: HeadingModule, imports: [CommonModule,
34
- MatFormFieldModule,
35
- InfoModule] });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: HeadingModule, decorators: [{
37
- type: NgModule,
38
- args: [{
39
- imports: [
40
- CommonModule,
41
- MatFormFieldModule,
42
- InfoModule
43
- ],
44
- exports: [
45
- HeadingComponent
46
- ],
47
- declarations: [
48
- HeadingComponent
49
- ]
50
- }]
51
- }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2hlYWRpbmcvaGVhZGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2hlYWRpbmcvaGVhZGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFFcEQsTUFBTSxhQUFhLEdBQTJCO0lBQzVDLGVBQWUsRUFBRSxRQUFRO0NBQzFCLENBQUE7QUFPRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsb0JBQW1DO0lBTnpFOztRQVFFLGtCQUFhLEdBQUcsYUFBYSxDQUFDO0tBQy9COzs2R0FIWSxnQkFBZ0I7aUdBQWhCLGdCQUFnQiwyR0NoQjdCLDZPQVVBOzJGRE1hLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsTUFBTTtzQkFBZCxLQUFLOztBQWlCUixNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQWxCYixnQkFBZ0IsYUFNckIsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQixVQUFVLGFBUkwsZ0JBQWdCOzJHQWtCaEIsYUFBYSxZQVpsQixZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLFVBQVU7MkZBVUwsYUFBYTtrQkFkekIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLFVBQVU7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLGdCQUFnQjtxQkFDbkI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLGdCQUFnQjtxQkFDbkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgSGVhZGluZ0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9oZWFkaW5nLmNvbmZpZyc7XG5pbXBvcnQgeyBDcmlzcHJGaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBJbmZvTW9kdWxlIH0gZnJvbSAnLi4vaW5mby9pbmZvLmNvbXBvbmVudCc7XG5cbmNvbnN0IGRlZmF1bHRDb25maWc6IFBhcnRpYWw8SGVhZGluZ0NvbmZpZz4gPSB7XG4gIHR5cG9ncmFwaHlDbGFzczogJ21hdC1oMydcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1oZWFkaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkaW5nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRpbmdDb21wb25lbnQgZXh0ZW5kcyBDcmlzcHJGaWVsZENvbXBvbmVudDxIZWFkaW5nQ29uZmlnPntcbiAgQElucHV0KCkgY29uZmlnOiBIZWFkaW5nQ29uZmlnO1xuICBkZWZhdWx0Q29uZmlnID0gZGVmYXVsdENvbmZpZztcbn1cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgSW5mb01vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBIZWFkaW5nQ29tcG9uZW50XG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgSGVhZGluZ0NvbXBvbmVudFxuICAgIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBIZWFkaW5nTW9kdWxlIHtcbn1cbiIsIiAgPGxhYmVsXG4gICAgKm5nSWY9XCIhIWNvbmZpZz8ubGFiZWxcIlxuICAgIFtuZ0NsYXNzXT1cImNvbmZpZy50eXBvZ3JhcGh5Q2xhc3NcIj5cbiAgICB7eyBjb25maWcubGFiZWwgfX1cbiAgICA8Y3Jpc3ByLWluZm9cbiAgICAgICpuZ0lmPVwiY29uZmlnLmluZm9cIlxuICAgICAgbWF0U3VmZml4XG4gICAgICBbaW5mb109XCJjb25maWcuaW5mb1wiPlxuICAgIDwvY3Jpc3ByLWluZm8+XG4gIDwvbGFiZWw+XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2hlYWRpbmcvaGVhZGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2hlYWRpbmcvaGVhZGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBRXZELE1BQU0sYUFBYSxHQUEyQjtJQUM1QyxlQUFlLEVBQUUsUUFBUTtDQUMxQixDQUFBO0FBYUQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG9CQUFtQztJQVp6RTs7UUFjRSxrQkFBYSxHQUFHLGFBQWEsQ0FBQztLQUMvQjs7NkdBSFksZ0JBQWdCO2lHQUFoQixnQkFBZ0IsK0hDdEI3Qiw2T0FVQSwrRURPSSxZQUFZLGdPQUNaLGtCQUFrQixtR0FDbEIsYUFBYTsyRkFHSixnQkFBZ0I7a0JBWjVCLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixhQUFhO3FCQUNkOzhCQUdRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEhlYWRpbmdDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvaGVhZGluZy5jb25maWcnO1xuaW1wb3J0IHsgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgSW5mb0NvbXBvbmVudCB9IGZyb20gJy4uL2luZm8vaW5mby5jb21wb25lbnQnO1xuXG5jb25zdCBkZWZhdWx0Q29uZmlnOiBQYXJ0aWFsPEhlYWRpbmdDb25maWc+ID0ge1xuICB0eXBvZ3JhcGh5Q2xhc3M6ICdtYXQtaDMnXG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcmlzcHItaGVhZGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGluZy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgSW5mb0NvbXBvbmVudFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkaW5nQ29tcG9uZW50IGV4dGVuZHMgQ3Jpc3ByRmllbGRDb21wb25lbnQ8SGVhZGluZ0NvbmZpZz57XG4gIEBJbnB1dCgpIGNvbmZpZzogSGVhZGluZ0NvbmZpZztcbiAgZGVmYXVsdENvbmZpZyA9IGRlZmF1bHRDb25maWc7XG59XG4iLCIgIDxsYWJlbFxuICAgICpuZ0lmPVwiISFjb25maWc/LmxhYmVsXCJcbiAgICBbbmdDbGFzc109XCJjb25maWcudHlwb2dyYXBoeUNsYXNzXCI+XG4gICAge3sgY29uZmlnLmxhYmVsIH19XG4gICAgPGNyaXNwci1pbmZvXG4gICAgICAqbmdJZj1cImNvbmZpZy5pbmZvXCJcbiAgICAgIG1hdFN1ZmZpeFxuICAgICAgW2luZm9dPVwiY29uZmlnLmluZm9cIj5cbiAgICA8L2NyaXNwci1pbmZvPlxuICA8L2xhYmVsPlxuIl19
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, ElementRef, ViewChild, ChangeDetectionStrategy, Optional, Self, ChangeDetectorRef, NgModule } from '@angular/core';
2
+ import { Component, ElementRef, ViewChild, ChangeDetectionStrategy, Optional, Self, ChangeDetectorRef, } from '@angular/core';
3
3
  import { NgControl, ReactiveFormsModule } from '@angular/forms';
4
4
  import { MatButtonModule } from '@angular/material/button';
5
5
  import { MatFormFieldModule } from '@angular/material/form-field';
@@ -9,24 +9,21 @@ import { DomSanitizer } from '@angular/platform-browser';
9
9
  import imageCompression from 'browser-image-compression';
10
10
  import { combineLatest, of, Subject } from 'rxjs';
11
11
  import { map, shareReplay, startWith, switchMap, tap } from 'rxjs/operators';
12
- import { FileUploadFieldModule } from '../file-upload';
12
+ import { FileDropzoneDirective } from '../file-upload';
13
13
  import { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';
14
- import { FieldContainerModule } from '../../field-container/field-container.component';
14
+ import { FieldContainerComponent } from '../../field-container/field-container.component';
15
15
  import { convertBytesToMb } from './image-compression.helpers';
16
- import { SelectedFileModule } from '../selected-file/selected-file.component';
16
+ import { SelectedFileComponent } from '../selected-file/selected-file.component';
17
17
  import { FormValidationHandlerModule } from '@tft/form-validation-handler';
18
18
  import * as i0 from "@angular/core";
19
19
  import * as i1 from "@angular/forms";
20
20
  import * as i2 from "@angular/platform-browser";
21
21
  import * as i3 from "@angular/common";
22
- import * as i4 from "../../field-container/field-container.component";
23
- import * as i5 from "@angular/material/icon";
24
- import * as i6 from "@angular/material/button";
25
- import * as i7 from "@angular/material/form-field";
26
- import * as i8 from "@angular/material/input";
27
- import * as i9 from "../selected-file/selected-file.component";
28
- import * as i10 from "../file-upload/file-dropzone.directive";
29
- import * as i11 from "@tft/form-validation-handler";
22
+ import * as i4 from "@angular/material/icon";
23
+ import * as i5 from "@angular/material/button";
24
+ import * as i6 from "@angular/material/form-field";
25
+ import * as i7 from "@angular/material/input";
26
+ import * as i8 from "@tft/form-validation-handler";
30
27
  const ImageUploadFieldMixin = crisprControlMixin(CrisprFieldComponent);
31
28
  export class ImageUploadFieldComponent extends ImageUploadFieldMixin {
32
29
  constructor(ngControl, domSanitizer, cdr) {
@@ -156,10 +153,21 @@ export class ImageUploadFieldComponent extends ImageUploadFieldMixin {
156
153
  registerOnTouched(fn) { }
157
154
  }
158
155
  ImageUploadFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ImageUploadFieldComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
159
- ImageUploadFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: ImageUploadFieldComponent, selector: "crispr-image-upload-field", viewQueries: [{ propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field floatLabel=\"always\"\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>{{config.label}}</mat-label>\n <input [formControlName]=\"config.controlName\" matInput type=\"text\"/>\n <input\n #fileInput\n type=\"file\"\n [accept]=\"config.acceptedTypes\"\n (change)=\"filesChanged($event.target.files)\"/>\n <div class=\"ui-container\">\n\n <div class=\"image-preview\" [style.height]=\"config.imagePreviewHeight\">\n <crispr-selected-file\n *ngIf=\"(progress < 100) && inputImageFile$ | async as file; else dropzoneOrPreview\"\n [color]=\"config.color === 'primary' ? 'accent' : 'primary'\"\n [fileName]=\"'Compressing: ' + file.name\"\n [showProgress]=\"true\"\n [progress]=\"progress\">\n </crispr-selected-file>\n\n <ng-template #dropzoneOrPreview>\n <!-- <img *ngIf=\"(initialUrlString$ | async) as initialUrlString;\" [src]=\"initialUrlString\" alt=\"\"> -->\n <img *ngIf=\"imageSrcUrl$ | async as srcUrl; else noImage\" [src]=\"srcUrl\" alt=\"\">\n <ng-template #noImage>\n <div class=\"drop-container\"\n [crisprFileDropzone]=\"!(disabled$ | async)\"\n (fileDrop)=\"filesChanged($event)\">\n <mat-icon class=\"drop-icon\" inline=\"true\">cloud_upload</mat-icon>\n <h2 class=\"mat-h2\">{{config.dropZoneText}}</h2>\n </div>\n </ng-template>\n\n </ng-template>\n </div>\n\n\n\n <!-- </ng-template> -->\n <div class=\"button-container\" *ngIf=\"true\">\n\n <button\n mat-button\n (click)=\"clearFileInput()\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>delete</mat-icon>\n {{config.clearFilesButtonText}}\n </button>\n\n <button\n *ngIf=\"value\"\n mat-button\n (click)=\"resetToInitialValue(value)\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>replay</mat-icon>\n {{config.resetFilesButtonText}}\n </button>\n\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"(disabled$ | async)\"\n (click)=\"fileInput.click()\"\n [attr.aria-label]=\"config.controlName\">\n <mat-icon>\n camera\n </mat-icon>\n SELECT\n </button>\n </div>\n </div>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n</crispr-field-container>\n", styles: [":host ::ng-deep .mat-form-field .mat-form-field-infix{padding-top:0}:host ::ng-deep .mat-form-field .mat-button-wrapper{display:flex;flex-direction:column;align-items:center;padding-top:8px}:host .ui-container{display:flex;flex-direction:column}:host .ui-container .image-preview{display:flex;flex-direction:column;align-content:space-between;justify-content:center;align-items:center;margin:8px 0;flex-grow:1}:host .ui-container .image-preview crispr-selected-file{width:100%}:host .ui-container .image-preview .drop-container{display:flex;box-sizing:border-box;flex-direction:column;align-items:center;border:3px dashed gray;height:100%;width:100%;align-content:center;justify-content:center;border-radius:8px}:host .ui-container .image-preview .drop-container .drop-icon{height:32px;width:32px;font-size:36px}:host .ui-container .image-preview .drop-container .mat-h2{margin:0}:host .ui-container .image-preview img{height:inherit;max-width:100%}:host .ui-container .button-container{display:flex;flex-direction:var(--image-upload-button-container-direction);justify-content:flex-end}:host .ui-container .button-container button{margin-left:8px}:host input{position:absolute;max-height:0;visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.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: i9.SelectedFileComponent, selector: "crispr-selected-file", inputs: ["fileName", "progress", "showProgress", "color"] }, { kind: "directive", type: i10.FileDropzoneDirective, selector: "[crisprFileDropzone]", inputs: ["crisprFileDropzone"], outputs: ["fileDrop"] }, { kind: "directive", type: i11.ControlErrorsDirective, selector: "[formControl], [formControlName]" }, { kind: "directive", type: i11.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
156
+ ImageUploadFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: ImageUploadFieldComponent, isStandalone: true, selector: "crispr-image-upload-field", viewQueries: [{ propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field floatLabel=\"always\"\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>{{config.label}}</mat-label>\n <input [formControlName]=\"config.controlName\" matInput type=\"text\"/>\n <input\n #fileInput\n type=\"file\"\n [accept]=\"config.acceptedTypes\"\n (change)=\"filesChanged($event.target.files)\"/>\n <div class=\"ui-container\">\n\n <div class=\"image-preview\" [style.height]=\"config.imagePreviewHeight\">\n <crispr-selected-file\n *ngIf=\"(progress < 100) && inputImageFile$ | async as file; else dropzoneOrPreview\"\n [color]=\"config.color === 'primary' ? 'accent' : 'primary'\"\n [fileName]=\"'Compressing: ' + file.name\"\n [showProgress]=\"true\"\n [progress]=\"progress\">\n </crispr-selected-file>\n\n <ng-template #dropzoneOrPreview>\n <!-- <img *ngIf=\"(initialUrlString$ | async) as initialUrlString;\" [src]=\"initialUrlString\" alt=\"\"> -->\n <img *ngIf=\"imageSrcUrl$ | async as srcUrl; else noImage\" [src]=\"srcUrl\" alt=\"\">\n <ng-template #noImage>\n <div class=\"drop-container\"\n [crisprFileDropzone]=\"!(disabled$ | async)\"\n (fileDrop)=\"filesChanged($event)\">\n <mat-icon class=\"drop-icon\" inline=\"true\">cloud_upload</mat-icon>\n <h2 class=\"mat-h2\">{{config.dropZoneText}}</h2>\n </div>\n </ng-template>\n\n </ng-template>\n </div>\n\n\n\n <!-- </ng-template> -->\n <div class=\"button-container\" *ngIf=\"true\">\n\n <button\n mat-button\n (click)=\"clearFileInput()\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>delete</mat-icon>\n {{config.clearFilesButtonText}}\n </button>\n\n <button\n *ngIf=\"value\"\n mat-button\n (click)=\"resetToInitialValue(value)\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>replay</mat-icon>\n {{config.resetFilesButtonText}}\n </button>\n\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"(disabled$ | async)\"\n (click)=\"fileInput.click()\"\n [attr.aria-label]=\"config.controlName\">\n <mat-icon>\n camera\n </mat-icon>\n SELECT\n </button>\n </div>\n </div>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n</crispr-field-container>\n", styles: [":host ::ng-deep .mat-form-field .mat-form-field-infix{padding-top:0}:host ::ng-deep .mat-form-field .mat-button-wrapper{display:flex;flex-direction:column;align-items:center;padding-top:8px}:host .ui-container{display:flex;flex-direction:column}:host .ui-container .image-preview{display:flex;flex-direction:column;align-content:space-between;justify-content:center;align-items:center;margin:8px 0;flex-grow:1}:host .ui-container .image-preview crispr-selected-file{width:100%}:host .ui-container .image-preview .drop-container{display:flex;box-sizing:border-box;flex-direction:column;align-items:center;border:3px dashed gray;height:100%;width:100%;align-content:center;justify-content:center;border-radius:8px}:host .ui-container .image-preview .drop-container .drop-icon{height:32px;width:32px;font-size:36px}:host .ui-container .image-preview .drop-container .mat-h2{margin:0}:host .ui-container .image-preview img{height:inherit;max-width:100%}:host .ui-container .button-container{display:flex;flex-direction:var(--image-upload-button-container-direction);justify-content:flex-end}:host .ui-container .button-container button{margin-left:8px}:host input{position:absolute;max-height:0;visibility:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "component", type: FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.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: SelectedFileComponent, selector: "crispr-selected-file", inputs: ["fileName", "progress", "showProgress", "color"] }, { kind: "directive", type: FileDropzoneDirective, selector: "[crisprFileDropzone]", inputs: ["crisprFileDropzone"], outputs: ["fileDrop"] }, { kind: "ngmodule", type: FormValidationHandlerModule }, { kind: "directive", type: i8.ControlErrorsDirective, selector: "[formControl], [formControlName]" }, { kind: "directive", type: i8.ControlErrorContainerDirective, selector: "[controlErrorContainer], [formGroup]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
160
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ImageUploadFieldComponent, decorators: [{
161
158
  type: Component,
162
- args: [{ selector: 'crispr-image-upload-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field floatLabel=\"always\"\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>{{config.label}}</mat-label>\n <input [formControlName]=\"config.controlName\" matInput type=\"text\"/>\n <input\n #fileInput\n type=\"file\"\n [accept]=\"config.acceptedTypes\"\n (change)=\"filesChanged($event.target.files)\"/>\n <div class=\"ui-container\">\n\n <div class=\"image-preview\" [style.height]=\"config.imagePreviewHeight\">\n <crispr-selected-file\n *ngIf=\"(progress < 100) && inputImageFile$ | async as file; else dropzoneOrPreview\"\n [color]=\"config.color === 'primary' ? 'accent' : 'primary'\"\n [fileName]=\"'Compressing: ' + file.name\"\n [showProgress]=\"true\"\n [progress]=\"progress\">\n </crispr-selected-file>\n\n <ng-template #dropzoneOrPreview>\n <!-- <img *ngIf=\"(initialUrlString$ | async) as initialUrlString;\" [src]=\"initialUrlString\" alt=\"\"> -->\n <img *ngIf=\"imageSrcUrl$ | async as srcUrl; else noImage\" [src]=\"srcUrl\" alt=\"\">\n <ng-template #noImage>\n <div class=\"drop-container\"\n [crisprFileDropzone]=\"!(disabled$ | async)\"\n (fileDrop)=\"filesChanged($event)\">\n <mat-icon class=\"drop-icon\" inline=\"true\">cloud_upload</mat-icon>\n <h2 class=\"mat-h2\">{{config.dropZoneText}}</h2>\n </div>\n </ng-template>\n\n </ng-template>\n </div>\n\n\n\n <!-- </ng-template> -->\n <div class=\"button-container\" *ngIf=\"true\">\n\n <button\n mat-button\n (click)=\"clearFileInput()\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>delete</mat-icon>\n {{config.clearFilesButtonText}}\n </button>\n\n <button\n *ngIf=\"value\"\n mat-button\n (click)=\"resetToInitialValue(value)\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>replay</mat-icon>\n {{config.resetFilesButtonText}}\n </button>\n\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"(disabled$ | async)\"\n (click)=\"fileInput.click()\"\n [attr.aria-label]=\"config.controlName\">\n <mat-icon>\n camera\n </mat-icon>\n SELECT\n </button>\n </div>\n </div>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n</crispr-field-container>\n", styles: [":host ::ng-deep .mat-form-field .mat-form-field-infix{padding-top:0}:host ::ng-deep .mat-form-field .mat-button-wrapper{display:flex;flex-direction:column;align-items:center;padding-top:8px}:host .ui-container{display:flex;flex-direction:column}:host .ui-container .image-preview{display:flex;flex-direction:column;align-content:space-between;justify-content:center;align-items:center;margin:8px 0;flex-grow:1}:host .ui-container .image-preview crispr-selected-file{width:100%}:host .ui-container .image-preview .drop-container{display:flex;box-sizing:border-box;flex-direction:column;align-items:center;border:3px dashed gray;height:100%;width:100%;align-content:center;justify-content:center;border-radius:8px}:host .ui-container .image-preview .drop-container .drop-icon{height:32px;width:32px;font-size:36px}:host .ui-container .image-preview .drop-container .mat-h2{margin:0}:host .ui-container .image-preview img{height:inherit;max-width:100%}:host .ui-container .button-container{display:flex;flex-direction:var(--image-upload-button-container-direction);justify-content:flex-end}:host .ui-container .button-container button{margin-left:8px}:host input{position:absolute;max-height:0;visibility:hidden}\n"] }]
159
+ args: [{ selector: 'crispr-image-upload-field', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
160
+ CommonModule,
161
+ FieldContainerComponent,
162
+ ReactiveFormsModule,
163
+ MatIconModule,
164
+ MatButtonModule,
165
+ MatFormFieldModule,
166
+ MatInputModule,
167
+ SelectedFileComponent,
168
+ FileDropzoneDirective,
169
+ FormValidationHandlerModule
170
+ ], template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field floatLabel=\"always\"\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>{{config.label}}</mat-label>\n <input [formControlName]=\"config.controlName\" matInput type=\"text\"/>\n <input\n #fileInput\n type=\"file\"\n [accept]=\"config.acceptedTypes\"\n (change)=\"filesChanged($event.target.files)\"/>\n <div class=\"ui-container\">\n\n <div class=\"image-preview\" [style.height]=\"config.imagePreviewHeight\">\n <crispr-selected-file\n *ngIf=\"(progress < 100) && inputImageFile$ | async as file; else dropzoneOrPreview\"\n [color]=\"config.color === 'primary' ? 'accent' : 'primary'\"\n [fileName]=\"'Compressing: ' + file.name\"\n [showProgress]=\"true\"\n [progress]=\"progress\">\n </crispr-selected-file>\n\n <ng-template #dropzoneOrPreview>\n <!-- <img *ngIf=\"(initialUrlString$ | async) as initialUrlString;\" [src]=\"initialUrlString\" alt=\"\"> -->\n <img *ngIf=\"imageSrcUrl$ | async as srcUrl; else noImage\" [src]=\"srcUrl\" alt=\"\">\n <ng-template #noImage>\n <div class=\"drop-container\"\n [crisprFileDropzone]=\"!(disabled$ | async)\"\n (fileDrop)=\"filesChanged($event)\">\n <mat-icon class=\"drop-icon\" inline=\"true\">cloud_upload</mat-icon>\n <h2 class=\"mat-h2\">{{config.dropZoneText}}</h2>\n </div>\n </ng-template>\n\n </ng-template>\n </div>\n\n\n\n <!-- </ng-template> -->\n <div class=\"button-container\" *ngIf=\"true\">\n\n <button\n mat-button\n (click)=\"clearFileInput()\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>delete</mat-icon>\n {{config.clearFilesButtonText}}\n </button>\n\n <button\n *ngIf=\"value\"\n mat-button\n (click)=\"resetToInitialValue(value)\"\n type=\"button\"\n [disabled]=\"(disabled$ | async)\"\n aria-label=\"Remove Selected File(s)\">\n <mat-icon>replay</mat-icon>\n {{config.resetFilesButtonText}}\n </button>\n\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"(disabled$ | async)\"\n (click)=\"fileInput.click()\"\n [attr.aria-label]=\"config.controlName\">\n <mat-icon>\n camera\n </mat-icon>\n SELECT\n </button>\n </div>\n </div>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n</crispr-field-container>\n", styles: [":host ::ng-deep .mat-form-field .mat-form-field-infix{padding-top:0}:host ::ng-deep .mat-form-field .mat-button-wrapper{display:flex;flex-direction:column;align-items:center;padding-top:8px}:host .ui-container{display:flex;flex-direction:column}:host .ui-container .image-preview{display:flex;flex-direction:column;align-content:space-between;justify-content:center;align-items:center;margin:8px 0;flex-grow:1}:host .ui-container .image-preview crispr-selected-file{width:100%}:host .ui-container .image-preview .drop-container{display:flex;box-sizing:border-box;flex-direction:column;align-items:center;border:3px dashed gray;height:100%;width:100%;align-content:center;justify-content:center;border-radius:8px}:host .ui-container .image-preview .drop-container .drop-icon{height:32px;width:32px;font-size:36px}:host .ui-container .image-preview .drop-container .mat-h2{margin:0}:host .ui-container .image-preview img{height:inherit;max-width:100%}:host .ui-container .button-container{display:flex;flex-direction:var(--image-upload-button-container-direction);justify-content:flex-end}:host .ui-container .button-container button{margin-left:8px}:host input{position:absolute;max-height:0;visibility:hidden}\n"] }]
163
171
  }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
164
172
  type: Optional
165
173
  }, {
@@ -168,52 +176,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImpor
168
176
  type: ViewChild,
169
177
  args: ['fileInput']
170
178
  }] } });
171
- export class ImageUploadFieldModule {
172
- }
173
- ImageUploadFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ImageUploadFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
174
- ImageUploadFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: ImageUploadFieldModule, declarations: [ImageUploadFieldComponent], imports: [CommonModule,
175
- FieldContainerModule,
176
- ReactiveFormsModule,
177
- MatIconModule,
178
- MatButtonModule,
179
- MatFormFieldModule,
180
- MatInputModule,
181
- SelectedFileModule,
182
- FileUploadFieldModule,
183
- FormValidationHandlerModule], exports: [ImageUploadFieldComponent] });
184
- ImageUploadFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ImageUploadFieldModule, imports: [CommonModule,
185
- FieldContainerModule,
186
- ReactiveFormsModule,
187
- MatIconModule,
188
- MatButtonModule,
189
- MatFormFieldModule,
190
- MatInputModule,
191
- SelectedFileModule,
192
- FileUploadFieldModule,
193
- FormValidationHandlerModule] });
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: ImageUploadFieldModule, decorators: [{
195
- type: NgModule,
196
- args: [{
197
- imports: [
198
- CommonModule,
199
- FieldContainerModule,
200
- ReactiveFormsModule,
201
- MatIconModule,
202
- MatButtonModule,
203
- MatFormFieldModule,
204
- MatInputModule,
205
- SelectedFileModule,
206
- FileUploadFieldModule,
207
- FormValidationHandlerModule
208
- ],
209
- exports: [
210
- ImageUploadFieldComponent
211
- ],
212
- declarations: [
213
- ImageUploadFieldComponent
214
- ]
215
- }]
216
- }] });
217
179
  export function maxFileSizeValidator(maxFileSize) {
218
180
  return (control) => {
219
181
  const controlValue = control.value;
@@ -260,4 +222,4 @@ export function allowedFileType(matchExp) {
260
222
  }
261
223
  };
262
224
  }
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXBsb2FkLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvbWF0ZXJpYWwvaW1hZ2UtdXBsb2FkLWZpZWxkL2ltYWdlLXVwbG9hZC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2ltYWdlLXVwbG9hZC1maWVsZC9pbWFnZS11cGxvYWQtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFFVCx1QkFBdUIsRUFDdkIsUUFBUSxFQUNSLElBQUksRUFDSixpQkFBaUIsRUFDakIsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsU0FBUyxFQUFFLG1CQUFtQixFQUFpQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLGdCQUFnQixNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUs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O0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsUUFBeUI7SUFDdkQsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFO1FBQ3JCLE1BQU0sS0FBSyxHQUFJLFdBQTJCLENBQUMsS0FBSyxDQUFDO1FBQ2pELElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxJQUFJLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUN6QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7WUFDN0IsT0FBTztnQkFDTCxlQUFlLEVBQUU7b0JBQ2YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRSxRQUFRO2lCQUN6QjthQUNGLENBQUE7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUE7U0FDWjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uSW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgTmdNb2R1bGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IGltYWdlQ29tcHJlc3Npb24gZnJvbSAnYnJvd3Nlci1pbWFnZS1jb21wcmVzc2lvbic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpbGVVcGxvYWRGaWVsZE1vZHVsZSB9IGZyb20gJy4uL2ZpbGUtdXBsb2FkJztcbmltcG9ydCB7IGNyaXNwckNvbnRyb2xNaXhpbiwgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgRmllbGRDb250YWluZXJNb2R1bGUgfSBmcm9tICcuLi8uLi9maWVsZC1jb250YWluZXIvZmllbGQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IEltYWdlVXBsb2FkRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW1hZ2UtdXBsb2FkLWZpZWxkLmNvbmZpZyc7XG5pbXBvcnQgeyBjb252ZXJ0Qnl0ZXNUb01iIH0gZnJvbSAnLi9pbWFnZS1jb21wcmVzc2lvbi5oZWxwZXJzJztcbmltcG9ydCB7IFNlbGVjdGVkRmlsZU1vZHVsZSB9IGZyb20gJy4uL3NlbGVjdGVkLWZpbGUvc2VsZWN0ZWQtZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRpb25IYW5kbGVyTW9kdWxlIH0gZnJvbSAnQHRmdC9mb3JtLXZhbGlkYXRpb24taGFuZGxlcic7XG5cbmNvbnN0IEltYWdlVXBsb2FkRmllbGRNaXhpbiA9IGNyaXNwckNvbnRyb2xNaXhpbjxJbWFnZVVwbG9hZEZpZWxkQ29uZmlnPihDcmlzcHJGaWVsZENvbXBvbmVudCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1pbWFnZS11cGxvYWQtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtdXBsb2FkLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtdXBsb2FkLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZVVwbG9hZEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgSW1hZ2VVcGxvYWRGaWVsZE1peGluIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgb25DaGFuZ2U6ICgpID0+IHZvaWQ7XG5cbiAgZGVmYXVsdENvbmZpZzogUGFydGlhbDxJbWFnZVVwbG9hZEZpZWxkQ29uZmlnPiA9IHtcbiAgICAvLyBhbGxvd011bHRpcGxlRmlsZXM6IGZhbHNlLFxuICAgIGFjY2VwdGVkVHlwZXM6ICdpbWFnZS8qJyxcbiAgICBkcm9wWm9uZVRleHQ6ICdEUk9QIEZJTEUgSEVSRScsXG4gICAgc2VsZWN0RmlsZXNCdXR0b25UeXBlOiAnYnV0dG9uJyxcbiAgICBzZWxlY3RCdXR0b25UZXh0OiAnU0VMRUNUJyxcbiAgICBzaG93Q2xlYXJGaWxlc0J1dHRvbjogdHJ1ZSxcbiAgICBjbGVhckZpbGVzQnV0dG9uVGV4dDogJ0NMRUFSJyxcbiAgICByZXNldEZpbGVzQnV0dG9uVGV4dDogJ1JFU0VUJyxcbiAgICBpbWFnZVByZXZpZXdIZWlnaHQ6ICcyNTBweCcsXG4gICAgY29tcHJlc3NJbWFnZTogZmFsc2UsXG4gICAgdGFyZ2V0Q29tcHJlc3NlZEltYWdlRmlsZVNpemVNYjogLjQsXG4gICAgbWluQ29tcHJlc3Npb25UaHJlc2hvbGRNYjogLjYsXG4gICAgdXNlV2ViV29ya2VyOiB0cnVlLFxuICB9XG5cbiAgcHJpdmF0ZSBpbnB1dEltYWdlRmlsZVN1YmplY3QgPSBuZXcgU3ViamVjdDxGaWxlIHwgbnVsbD4oKTtcbiAgaW5wdXRJbWFnZUZpbGUkID0gdGhpcy5pbnB1dEltYWdlRmlsZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcbiAgLyoqXG4gICAqIHRoZSBjb21wcmVzc2lvbiBwcm9ncmVzc1xuICAgKi9cbiAgcHJvZ3Jlc3M6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb21wcmVzc2VkRmlsZSQ6IE9ic2VydmFibGU8RmlsZT4gPSB0aGlzLmlucHV0SW1hZ2VGaWxlJC5waXBlKFxuICAgIHN3aXRjaE1hcChhc3luYyAoZmlsZSkgPT4ge1xuICAgICAgaWYgKCFmaWxlIHx8ICEoZmlsZSBpbnN0YW5jZW9mIEZpbGUpKSByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IHsgY29tcHJlc3NJbWFnZSwgdGFyZ2V0Q29tcHJlc3NlZEltYWdlRmlsZVNpemVNYiwgbWluQ29tcHJlc3Npb25UaHJlc2hvbGRNYiwgbWF4V2lkdGhPckhlaWdodCwgdXNlV2ViV29ya2VyIH0gPSB0aGlzLmNvbmZpZztcbiAgICAgIGNvbnN0IGZpbGVTaXplTWIgPSBjb252ZXJ0Qnl0ZXNUb01iKGZpbGUuc2l6ZSk7XG4gICAgICBjb25zdCBzaG91bGRDb21wcmVzcyA9IGNvbXByZXNzSW1hZ2VcbiAgICAgICAgJiYgdGFyZ2V0Q29tcHJlc3NlZEltYWdlRmlsZVNpemVNYiA8IGZpbGVTaXplTWJcbiAgICAgICAgJiYgbWluQ29tcHJlc3Npb25UaHJlc2hvbGRNYiA8IGZpbGVTaXplTWJcbiAgICAgIGlmIChzaG91bGRDb21wcmVzcykge1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgIC8vIFVzZSBtYXhXaWR0aE9ySGVpZ2h0IGlmIGl0IHdhcyBwcm92aWRlZCwgZWxzZSB1c2UgdGFyZ2V0IGNvbXByZXNzZWQgc2l6ZVxuICAgICAgICAgIC4uLihtYXhXaWR0aE9ySGVpZ2h0ID8ge21heFdpZHRoT3JIZWlnaHR9IDogeyBtYXhTaXplTUI6IHRhcmdldENvbXByZXNzZWRJbWFnZUZpbGVTaXplTWJ9KSxcbiAgICAgICAgICB1c2VXZWJXb3JrZXIsXG4gICAgICAgICAgbWF4SXRlcmF0aW9uczogMzAsXG4gICAgICAgICAgb25Qcm9ncmVzczogKHByb2dyZXNzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBwcm9ncmVzcztcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IGltYWdlQ29tcHJlc3Npb24oZmlsZSwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2UgcmV0dXJuICBmaWxlO1xuICAgIH0pLFxuICAgIG1hcCgoY29tcHJlc3NlZEZpbGU6IEZpbGUpID0+IHtcbiAgICAgIGlmKCFjb21wcmVzc2VkRmlsZSkgcmV0dXJuIGNvbXByZXNzZWRGaWxlO1xuICAgICAgY29uc3QgeyB0eXBlLCBuYW1lLCBsYXN0TW9kaWZpZWQgfSA9IGNvbXByZXNzZWRGaWxlXG4gICAgICByZXR1cm4gbmV3IEZpbGUoW2NvbXByZXNzZWRGaWxlXSwgdGhpcy5jb25maWcuZmlsZU5hbWUgfHwgbmFtZSwge1xuICAgICAgICB0eXBlLFxuICAgICAgICBsYXN0TW9kaWZpZWRcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHRhcChmaWxlID0+IHtcbiAgICAgIC8vIG9ubHkgc2V0IHRoZSB2YWx1ZSBpZiB0aGVyZSBpcyBhIGZpbGUgYmVjYXVzZSByZXNldFRvSW5pdGlhbFZhbHVlIHNldHMgdGhlIGNvbnRyb2wgdmFsdWVcbiAgICAgIC8vIHRvIGluaXRpYWwgdmFsdWUgYW5kIGNsZWFycyB0aGUgY29tcHJlc3NlZCBpbWFnZSwgc28gc2V0dGluZyBpdCB0byBudWxsIGhlcmUgd291bGQgdW5kbyB0aGF0XG4gICAgICBpZiAoZmlsZSkge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoZmlsZSk7XG4gICAgICB9XG4gICAgICBpZiAoZmlsZSB8fCB0aGlzLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSwgMTAwKVxuICAgICAgfVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcblxuICBjb21wcmVzc2VkSW1hZ2VVcmxTdHJpbmckOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+ID0gdGhpcy5jb21wcmVzc2VkRmlsZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoYXN5bmMgKGZpbGUpID0+IHtcbiAgICAgIGlmKCFmaWxlKSByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IGNvbXByZXNzZWRTdHJpbmdJbWFnZSA9IGF3YWl0IGltYWdlQ29tcHJlc3Npb24uZ2V0RGF0YVVybEZyb21GaWxlKGZpbGUpO1xuICAgICAgcmV0dXJuIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChjb21wcmVzc2VkU3RyaW5nSW1hZ2UpIGFzIHN0cmluZ1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICApXG5cbiAgLy8gVGhpcyBpcyB3aGF0IGlzIGRpc3BsYXllZCBieSB0aGUgaW1hZ2UgcHJldmlld1xuICBpbWFnZVNyY1VybCQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0UmVmOiBFbGVtZW50UmVmXG5cbiAgc2VsZWN0ZWRGaWxlczogRmlsZUxpc3Q7XG5cbiAgaXNVcGxvYWRlZCA9IGZhbHNlO1xuXG4gIGRpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xuICAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgYWNjZXNzb3IgZGlyZWN0bHkgKGluc3RlYWQgb2YgdXNpbmdcbiAgICAgIC8vIHRoZSBwcm92aWRlcnMpIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydC5cbiAgICAgIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuaW1hZ2VTcmNVcmwkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvbXByZXNzZWRJbWFnZVVybFN0cmluZyQucGlwZShzdGFydFdpdGgobnVsbCkpLFxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy52YWx1ZSksXG4gICAgICAgIG1hcCgoY29udHJvbFZhbHVlKTogc3RyaW5nID0+IHtcbiAgICAgICAgICBpZighY29udHJvbFZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICBpZihjb250cm9sVmFsdWUgaW5zdGFuY2VvZiBGaWxlKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcubWFwSW5wdXRWYWx1ZVRvVXJsPy4oY29udHJvbFZhbHVlKSB8fCBjb250cm9sVmFsdWUgYXMgc3RyaW5nXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2NvbXByZXNzZWRJbWFnZVVybFN0cmluZywgY29udHJvbFVybF0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRJbWFnZVVybFN0cmluZyB8fCBjb250cm9sVXJsIHx8IG51bGw7XG4gICAgICB9KVxuICAgIClcbiAgICB0aGlzLmRpc2FibGVkJCA9IHRoaXMuY29uZmlnLmRpc2FibGVkQ2FsbGJhY2tcbiAgICA/IHRoaXMuY29uZmlnLmRpc2FibGVkQ2FsbGJhY2sodGhpcy5ncm91cCwgdGhpcy5jb25maWcpXG4gICAgOiBvZihmYWxzZSk7XG4gIH1cblxuICBmaWxlc0NoYW5nZWQoZmlsZXM6IEZpbGVMaXN0KTogdm9pZCB7XG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDAgKSB7XG4gICAgICBjb25zdCBpbWFnZUZpbGUgPSBmaWxlc1swXTtcbiAgICAgIC8vIFdlIGNsZWFyIHRoZSBjb250cm9sIGhlcmUgc28gdGhhdCBpdCBpcyBpbnZhbGlkIHdoaWxlIGNvbXByZXNzaW5nXG4gICAgICAvLyB0aGUgaW5wdXQgcGlwZWxpbmUgd2lsbCB0YWtlIGNhcmUgb2YgcmVzZXR0aW5nIGl0XG4gICAgICB0aGlzLmNvbnRyb2wucGF0Y2hWYWx1ZShudWxsKTtcbiAgICAgIC8vIHRoaXMuY29udHJvbC5zZXRFcnJvcnMoe2NvbXByZXNzaW5nOiB7bG9hZGluZ01lc3NhZ2U6ICdQbGVhc2Ugd2FpdCB3aGlsZSBmaWxlIGNvbXByZXNzZXMnfX0pO1xuICAgICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHRoaXMuaW5wdXRJbWFnZUZpbGVTdWJqZWN0Lm5leHQoaW1hZ2VGaWxlKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckZpbGVJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0SW1hZ2VGaWxlU3ViamVjdC5uZXh0KG51bGwpO1xuICAgIHRoaXMuZmlsZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJ1xuICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKG51bGwpO1xuICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5pc1VwbG9hZGVkID0gZmFsc2U7XG4gIH1cblxuICByZXNldFRvSW5pdGlhbFZhbHVlKGluaXRpYWxWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEltYWdlRmlsZVN1YmplY3QubmV4dChudWxsKTtcbiAgICB0aGlzLmNvbnRyb2wucGF0Y2hWYWx1ZShpbml0aWFsVmFsdWUpXG4gICAgdGhpcy5pc1VwbG9hZGVkID0gZmFsc2U7XG4gIH1cblxuICB3cml0ZVZhbHVlKCB2YWx1ZTogbnVsbCApIHsgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoIGZuOiAoKSA9PiB2b2lkICkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKCBmbjogKCkgPT4gdm9pZCApIHsgfVxufVxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGaWVsZENvbnRhaW5lck1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBTZWxlY3RlZEZpbGVNb2R1bGUsXG4gICAgRmlsZVVwbG9hZEZpZWxkTW9kdWxlLFxuICAgIEZvcm1WYWxpZGF0aW9uSGFuZGxlck1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgICBJbWFnZVVwbG9hZEZpZWxkQ29tcG9uZW50XG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgICAgSW1hZ2VVcGxvYWRGaWVsZENvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlVXBsb2FkRmllbGRNb2R1bGUgeyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXhGaWxlU2l6ZVZhbGlkYXRvcihtYXhGaWxlU2l6ZTogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCEoY29udHJvbFZhbHVlIGluc3RhbmNlb2YgRmlsZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBhY3R1YWxGaWxlU2l6ZSA9ICtjb252ZXJ0Qnl0ZXNUb01iKGNvbnRyb2xWYWx1ZS5zaXplKS50b1ByZWNpc2lvbigzKTtcbiAgICBpZiAobWF4RmlsZVNpemUgPiBhY3R1YWxGaWxlU2l6ZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHttYXhGaWxlU2l6ZTogeyBtYXhGaWxlU2l6ZSwgYWN0dWFsRmlsZVNpemUgfX07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbG93ZWRGaWxlRXh0VmFsaWRhdG9yKGFsbG93ZWRGaWxlRXh0ZW5zaW9uczogc3RyaW5nW10sIG9ubHlBbGxvd0ZpbGVzID0gdHJ1ZSk6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIChjb250cm9sOiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCBjb250cm9sVmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGNvbnN0IGlzRmlsZSA9IGNvbnRyb2xWYWx1ZSBpbnN0YW5jZW9mIEZpbGU7XG4gICAgaWYgKCFvbmx5QWxsb3dGaWxlcyAmJiAhaXNGaWxlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBhY3R1YWxFeHRlbnNpb24gPSBpc0ZpbGUgPyBjb250cm9sVmFsdWUubmFtZS5zcGxpdCgnLicpLnBvcCgpLnRvTG9jYWxlTG93ZXJDYXNlKCkgOiAnTm90IGEgZmlsZSc7XG4gICAgY29uc3QgaXNBbGxvd2VkRXh0ZW5zaW9uID0gYWxsb3dlZEZpbGVFeHRlbnNpb25zLmluY2x1ZGVzKGFjdHVhbEV4dGVuc2lvbik7XG4gICAgaWYoaXNBbGxvd2VkRXh0ZW5zaW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHthbGxvd2VkRXh0ZW5zaW9uOiB7IGFsbG93ZWRGaWxlRXh0ZW5zaW9ucywgYWN0dWFsRXh0ZW5zaW9uIH19O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxvd2VkRmlsZVR5cGUobWF0Y2hFeHA6IHN0cmluZyB8IFJlZ0V4cCk6IFZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIChmb3JtQ29udHJvbCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gKGZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sKS52YWx1ZTtcbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIEZpbGUpKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IHR5cGUgPSB2YWx1ZS50eXBlO1xuICAgIGNvbnN0IG1hdGNoZXMgPSB0eXBlLm1hdGNoKG1hdGNoRXhwKVxuICAgIGlmICghdHlwZSB8fCAhbWF0Y2hlcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbGxvd2VkRmlsZVR5cGU6IHtcbiAgICAgICAgICBhY3R1YWxUeXBlOiB0eXBlLFxuICAgICAgICAgIGFsbG93ZWRUeXBlRXhwOiBtYXRjaEV4cFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9O1xufVxuIiwiPGNyaXNwci1maWVsZC1jb250YWluZXJcbiAgW2NvbmZpZ109XCJjb25maWdcIlxuICBbZ3JvdXBdPVwiZ3JvdXBcIj5cblxuICA8bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImFsd2F5c1wiXG4gICAgW2NvbG9yXT1cImNvbmZpZy5jb2xvclwiXG4gICAgW2FwcGVhcmFuY2VdPVwiY29uZmlnLmFwcGVhcmFuY2VcIlxuICAgIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgICA8bWF0LWxhYmVsPnt7Y29uZmlnLmxhYmVsfX08L21hdC1sYWJlbD5cbiAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcuY29udHJvbE5hbWVcIiBtYXRJbnB1dCB0eXBlPVwidGV4dFwiLz5cbiAgICA8aW5wdXRcbiAgICAgICNmaWxlSW5wdXRcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgIFthY2NlcHRdPVwiY29uZmlnLmFjY2VwdGVkVHlwZXNcIlxuICAgICAgKGNoYW5nZSk9XCJmaWxlc0NoYW5nZWQoJGV2ZW50LnRhcmdldC5maWxlcylcIi8+XG4gICAgPGRpdiBjbGFzcz1cInVpLWNvbnRhaW5lclwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtcHJldmlld1wiIFtzdHlsZS5oZWlnaHRdPVwiY29uZmlnLmltYWdlUHJldmlld0hlaWdodFwiPlxuICAgICAgICA8Y3Jpc3ByLXNlbGVjdGVkLWZpbGVcbiAgICAgICAgICAqbmdJZj1cIihwcm9ncmVzcyA8IDEwMCkgJiYgaW5wdXRJbWFnZUZpbGUkIHwgYXN5bmMgYXMgZmlsZTsgZWxzZSBkcm9wem9uZU9yUHJldmlld1wiXG4gICAgICAgICAgW2NvbG9yXT1cImNvbmZpZy5jb2xvciA9PT0gJ3ByaW1hcnknID8gJ2FjY2VudCcgOiAncHJpbWFyeSdcIlxuICAgICAgICAgIFtmaWxlTmFtZV09XCInQ29tcHJlc3Npbmc6ICcgKyBmaWxlLm5hbWVcIlxuICAgICAgICAgIFtzaG93UHJvZ3Jlc3NdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Byb2dyZXNzXT1cInByb2dyZXNzXCI+XG4gICAgICAgIDwvY3Jpc3ByLXNlbGVjdGVkLWZpbGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wem9uZU9yUHJldmlldz5cbiAgICAgICAgICA8IS0tIDxpbWcgKm5nSWY9XCIoaW5pdGlhbFVybFN0cmluZyQgfCBhc3luYykgYXMgaW5pdGlhbFVybFN0cmluZztcIiBbc3JjXT1cImluaXRpYWxVcmxTdHJpbmdcIiBhbHQ9XCJcIj4gLS0+XG4gICAgICAgICAgPGltZyAqbmdJZj1cImltYWdlU3JjVXJsJCB8IGFzeW5jIGFzIHNyY1VybDsgZWxzZSBub0ltYWdlXCIgW3NyY109XCJzcmNVcmxcIiBhbHQ9XCJcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vSW1hZ2U+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1jb250YWluZXJcIlxuICAgICAgICAgICAgICBbY3Jpc3ByRmlsZURyb3B6b25lXT1cIiEoZGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgKGZpbGVEcm9wKT1cImZpbGVzQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImRyb3AtaWNvblwiIGlubGluZT1cInRydWVcIj5jbG91ZF91cGxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJtYXQtaDJcIj57e2NvbmZpZy5kcm9wWm9uZVRleHR9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cblxuXG5cbiAgICAgIDwhLS0gPC9uZy10ZW1wbGF0ZT4gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiICpuZ0lmPVwidHJ1ZVwiPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsZUlucHV0KClcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIoZGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVtb3ZlIFNlbGVjdGVkIEZpbGUocylcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2NvbmZpZy5jbGVhckZpbGVzQnV0dG9uVGV4dH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cInZhbHVlXCJcbiAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0VG9Jbml0aWFsVmFsdWUodmFsdWUpXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiKGRpc2FibGVkJCB8IGFzeW5jKVwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlJlbW92ZSBTZWxlY3RlZCBGaWxlKHMpXCI+XG4gICAgICAgICAgPG1hdC1pY29uPnJlcGxheTwvbWF0LWljb24+XG4gICAgICAgICAge3tjb25maWcucmVzZXRGaWxlc0J1dHRvblRleHR9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIihkaXNhYmxlZCQgfCBhc3luYylcIlxuICAgICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25maWcuY29udHJvbE5hbWVcIj5cbiAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICBjYW1lcmFcbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIFNFTEVDVFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1oaW50ICpuZ0lmPVwiY29uZmlnLmhpbnQgJiYgKGNvbnRyb2wudmFsaWQgfHwgIWNvbnRyb2wudG91Y2hlZClcIj57e2NvbmZpZy5oaW50fX08L21hdC1oaW50PlxuXG4gIDwvbWF0LWZvcm0tZmllbGQ+XG5cbjwvY3Jpc3ByLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXBsb2FkLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3Jpc3ByLWZvcm1zL3NyYy9saWIvbWF0ZXJpYWwvaW1hZ2UtdXBsb2FkLWZpZWxkL2ltYWdlLXVwbG9hZC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2ltYWdlLXVwbG9hZC1maWVsZC9pbWFnZS11cGxvYWQtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFFVCx1QkFBdUIsRUFDdkIsUUFBUSxFQUNSLElBQUksRUFDSixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQyxTQUFTLEVBQUUsbUJBQW1CLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sZ0JBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUs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N0IsT0FBTztnQkFDTCxlQUFlLEVBQUU7b0JBQ2YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRSxRQUFRO2lCQUN6QjthQUNGLENBQUE7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUE7U0FDWjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uSW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IGltYWdlQ29tcHJlc3Npb24gZnJvbSAnYnJvd3Nlci1pbWFnZS1jb21wcmVzc2lvbic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpbGVEcm9wem9uZURpcmVjdGl2ZSB9IGZyb20gJy4uL2ZpbGUtdXBsb2FkJztcbmltcG9ydCB7IGNyaXNwckNvbnRyb2xNaXhpbiwgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgRmllbGRDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9maWVsZC1jb250YWluZXIvZmllbGQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7IEltYWdlVXBsb2FkRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW1hZ2UtdXBsb2FkLWZpZWxkLmNvbmZpZyc7XG5pbXBvcnQgeyBjb252ZXJ0Qnl0ZXNUb01iIH0gZnJvbSAnLi9pbWFnZS1jb21wcmVzc2lvbi5oZWxwZXJzJztcbmltcG9ydCB7IFNlbGVjdGVkRmlsZUNvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdGVkLWZpbGUvc2VsZWN0ZWQtZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRpb25IYW5kbGVyTW9kdWxlIH0gZnJvbSAnQHRmdC9mb3JtLXZhbGlkYXRpb24taGFuZGxlcic7XG5cbmNvbnN0IEltYWdlVXBsb2FkRmllbGRNaXhpbiA9IGNyaXNwckNvbnRyb2xNaXhpbjxJbWFnZVVwbG9hZEZpZWxkQ29uZmlnPihDcmlzcHJGaWVsZENvbXBvbmVudCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1pbWFnZS11cGxvYWQtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtdXBsb2FkLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1hZ2UtdXBsb2FkLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZpZWxkQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIFNlbGVjdGVkRmlsZUNvbXBvbmVudCxcbiAgICBGaWxlRHJvcHpvbmVEaXJlY3RpdmUsXG4gICAgRm9ybVZhbGlkYXRpb25IYW5kbGVyTW9kdWxlXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlVXBsb2FkRmllbGRDb21wb25lbnQgZXh0ZW5kcyBJbWFnZVVwbG9hZEZpZWxkTWl4aW4gaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBvbkNoYW5nZTogKCkgPT4gdm9pZDtcblxuICBkZWZhdWx0Q29uZmlnOiBQYXJ0aWFsPEltYWdlVXBsb2FkRmllbGRDb25maWc+ID0ge1xuICAgIC8vIGFsbG93TXVsdGlwbGVGaWxlczogZmFsc2UsXG4gICAgYWNjZXB0ZWRUeXBlczogJ2ltYWdlLyonLFxuICAgIGRyb3Bab25lVGV4dDogJ0RST1AgRklMRSBIRVJFJyxcbiAgICBzZWxlY3RGaWxlc0J1dHRvblR5cGU6ICdidXR0b24nLFxuICAgIHNlbGVjdEJ1dHRvblRleHQ6ICdTRUxFQ1QnLFxuICAgIHNob3dDbGVhckZpbGVzQnV0dG9uOiB0cnVlLFxuICAgIGNsZWFyRmlsZXNCdXR0b25UZXh0OiAnQ0xFQVInLFxuICAgIHJlc2V0RmlsZXNCdXR0b25UZXh0OiAnUkVTRVQnLFxuICAgIGltYWdlUHJldmlld0hlaWdodDogJzI1MHB4JyxcbiAgICBjb21wcmVzc0ltYWdlOiBmYWxzZSxcbiAgICB0YXJnZXRDb21wcmVzc2VkSW1hZ2VGaWxlU2l6ZU1iOiAuNCxcbiAgICBtaW5Db21wcmVzc2lvblRocmVzaG9sZE1iOiAuNixcbiAgICB1c2VXZWJXb3JrZXI6IHRydWUsXG4gIH1cblxuICBwcml2YXRlIGlucHV0SW1hZ2VGaWxlU3ViamVjdCA9IG5ldyBTdWJqZWN0PEZpbGUgfCBudWxsPigpO1xuICBpbnB1dEltYWdlRmlsZSQgPSB0aGlzLmlucHV0SW1hZ2VGaWxlU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICApO1xuICAvKipcbiAgICogdGhlIGNvbXByZXNzaW9uIHByb2dyZXNzXG4gICAqL1xuICBwcm9ncmVzczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbXByZXNzZWRGaWxlJDogT2JzZXJ2YWJsZTxGaWxlPiA9IHRoaXMuaW5wdXRJbWFnZUZpbGUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICBpZiAoIWZpbGUgfHwgIShmaWxlIGluc3RhbmNlb2YgRmlsZSkpIHJldHVybiBudWxsO1xuICAgICAgY29uc3QgeyBjb21wcmVzc0ltYWdlLCB0YXJnZXRDb21wcmVzc2VkSW1hZ2VGaWxlU2l6ZU1iLCBtaW5Db21wcmVzc2lvblRocmVzaG9sZE1iLCBtYXhXaWR0aE9ySGVpZ2h0LCB1c2VXZWJXb3JrZXIgfSA9IHRoaXMuY29uZmlnO1xuICAgICAgY29uc3QgZmlsZVNpemVNYiA9IGNvbnZlcnRCeXRlc1RvTWIoZmlsZS5zaXplKTtcbiAgICAgIGNvbnN0IHNob3VsZENvbXByZXNzID0gY29tcHJlc3NJbWFnZVxuICAgICAgICAmJiB0YXJnZXRDb21wcmVzc2VkSW1hZ2VGaWxlU2l6ZU1iIDwgZmlsZVNpemVNYlxuICAgICAgICAmJiBtaW5Db21wcmVzc2lvblRocmVzaG9sZE1iIDwgZmlsZVNpemVNYlxuICAgICAgaWYgKHNob3VsZENvbXByZXNzKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgLy8gVXNlIG1heFdpZHRoT3JIZWlnaHQgaWYgaXQgd2FzIHByb3ZpZGVkLCBlbHNlIHVzZSB0YXJnZXQgY29tcHJlc3NlZCBzaXplXG4gICAgICAgICAgLi4uKG1heFdpZHRoT3JIZWlnaHQgPyB7bWF4V2lkdGhPckhlaWdodH0gOiB7IG1heFNpemVNQjogdGFyZ2V0Q29tcHJlc3NlZEltYWdlRmlsZVNpemVNYn0pLFxuICAgICAgICAgIHVzZVdlYldvcmtlcixcbiAgICAgICAgICBtYXhJdGVyYXRpb25zOiAzMCxcbiAgICAgICAgICBvblByb2dyZXNzOiAocHJvZ3Jlc3M6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgaW1hZ2VDb21wcmVzc2lvbihmaWxlLCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSByZXR1cm4gIGZpbGU7XG4gICAgfSksXG4gICAgbWFwKChjb21wcmVzc2VkRmlsZTogRmlsZSkgPT4ge1xuICAgICAgaWYoIWNvbXByZXNzZWRGaWxlKSByZXR1cm4gY29tcHJlc3NlZEZpbGU7XG4gICAgICBjb25zdCB7IHR5cGUsIG5hbWUsIGxhc3RNb2RpZmllZCB9ID0gY29tcHJlc3NlZEZpbGVcbiAgICAgIHJldHVybiBuZXcgRmlsZShbY29tcHJlc3NlZEZpbGVdLCB0aGlzLmNvbmZpZy5maWxlTmFtZSB8fCBuYW1lLCB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIGxhc3RNb2RpZmllZFxuICAgICAgfSk7XG4gICAgfSksXG4gICAgdGFwKGZpbGUgPT4ge1xuICAgICAgLy8gb25seSBzZXQgdGhlIHZhbHVlIGlmIHRoZXJlIGlzIGEgZmlsZSBiZWNhdXNlIHJlc2V0VG9Jbml0aWFsVmFsdWUgc2V0cyB0aGUgY29udHJvbCB2YWx1ZVxuICAgICAgLy8gdG8gaW5pdGlhbCB2YWx1ZSBhbmQgY2xlYXJzIHRoZSBjb21wcmVzc2VkIGltYWdlLCBzbyBzZXR0aW5nIGl0IHRvIG51bGwgaGVyZSB3b3VsZCB1bmRvIHRoYXRcbiAgICAgIGlmIChmaWxlKSB7XG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShmaWxlKTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWxlIHx8IHRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LCAxMDApXG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKVxuXG4gIGNvbXByZXNzZWRJbWFnZVVybFN0cmluZyQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4gPSB0aGlzLmNvbXByZXNzZWRGaWxlJC5waXBlKFxuICAgIHN3aXRjaE1hcChhc3luYyAoZmlsZSkgPT4ge1xuICAgICAgaWYoIWZpbGUpIHJldHVybiBudWxsO1xuICAgICAgY29uc3QgY29tcHJlc3NlZFN0cmluZ0ltYWdlID0gYXdhaXQgaW1hZ2VDb21wcmVzc2lvbi5nZXREYXRhVXJsRnJvbUZpbGUoZmlsZSk7XG4gICAgICByZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGNvbXByZXNzZWRTdHJpbmdJbWFnZSkgYXMgc3RyaW5nXG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gIClcblxuICAvLyBUaGlzIGlzIHdoYXQgaXMgZGlzcGxheWVkIGJ5IHRoZSBpbWFnZSBwcmV2aWV3XG4gIGltYWdlU3JjVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXRSZWY6IEVsZW1lbnRSZWZcblxuICBzZWxlY3RlZEZpbGVzOiBGaWxlTGlzdDtcblxuICBpc1VwbG9hZGVkID0gZmFsc2U7XG5cbiAgZGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSBhY2Nlc3NvciBkaXJlY3RseSAoaW5zdGVhZCBvZiB1c2luZ1xuICAgICAgLy8gdGhlIHByb3ZpZGVycykgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgY2lyY3VsYXIgaW1wb3J0LlxuICAgICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5pbWFnZVNyY1VybCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY29tcHJlc3NlZEltYWdlVXJsU3RyaW5nJC5waXBlKHN0YXJ0V2l0aChudWxsKSksXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLnZhbHVlKSxcbiAgICAgICAgbWFwKChjb250cm9sVmFsdWUpOiBzdHJpbmcgPT4ge1xuICAgICAgICAgIGlmKCFjb250cm9sVmFsdWUpIHJldHVybiBudWxsO1xuICAgICAgICAgIGlmKGNvbnRyb2xWYWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHJldHVybiBudWxsO1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5tYXBJbnB1dFZhbHVlVG9Vcmw/Lihjb250cm9sVmFsdWUpIHx8IGNvbnRyb2xWYWx1ZSBhcyBzdHJpbmdcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbY29tcHJlc3NlZEltYWdlVXJsU3RyaW5nLCBjb250cm9sVXJsXSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tcHJlc3NlZEltYWdlVXJsU3RyaW5nIHx8IGNvbnRyb2xVcmwgfHwgbnVsbDtcbiAgICAgIH0pXG4gICAgKVxuICAgIHRoaXMuZGlzYWJsZWQkID0gdGhpcy5jb25maWcuZGlzYWJsZWRDYWxsYmFja1xuICAgID8gdGhpcy5jb25maWcuZGlzYWJsZWRDYWxsYmFjayh0aGlzLmdyb3VwLCB0aGlzLmNvbmZpZylcbiAgICA6IG9mKGZhbHNlKTtcbiAgfVxuXG4gIGZpbGVzQ2hhbmdlZChmaWxlczogRmlsZUxpc3QpOiB2b2lkIHtcbiAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCApIHtcbiAgICAgIGNvbnN0IGltYWdlRmlsZSA9IGZpbGVzWzBdO1xuICAgICAgLy8gV2UgY2xlYXIgdGhlIGNvbnRyb2wgaGVyZSBzbyB0aGF0IGl0IGlzIGludmFsaWQgd2hpbGUgY29tcHJlc3NpbmdcbiAgICAgIC8vIHRoZSBpbnB1dCBwaXBlbGluZSB3aWxsIHRha2UgY2FyZSBvZiByZXNldHRpbmcgaXRcbiAgICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKG51bGwpO1xuICAgICAgLy8gdGhpcy5jb250cm9sLnNldEVycm9ycyh7Y29tcHJlc3Npbmc6IHtsb2FkaW5nTWVzc2FnZTogJ1BsZWFzZSB3YWl0IHdoaWxlIGZpbGUgY29tcHJlc3Nlcyd9fSk7XG4gICAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5pbnB1dEltYWdlRmlsZVN1YmplY3QubmV4dChpbWFnZUZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRmlsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRJbWFnZUZpbGVTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgdGhpcy5maWxlSW5wdXRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnXG4gICAgdGhpcy5jb250cm9sLnBhdGNoVmFsdWUobnVsbCk7XG4gICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmlzVXBsb2FkZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHJlc2V0VG9Jbml0aWFsVmFsdWUoaW5pdGlhbFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0SW1hZ2VGaWxlU3ViamVjdC5uZXh0KG51bGwpO1xuICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKGluaXRpYWxWYWx1ZSlcbiAgICB0aGlzLmlzVXBsb2FkZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoIHZhbHVlOiBudWxsICkgeyB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZSggZm46ICgpID0+IHZvaWQgKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoIGZuOiAoKSA9PiB2b2lkICkgeyB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIG1heEZpbGVTaXplVmFsaWRhdG9yKG1heEZpbGVTaXplOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogRm9ybUNvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgY29udHJvbFZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAoIShjb250cm9sVmFsdWUgaW5zdGFuY2VvZiBGaWxlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGFjdHVhbEZpbGVTaXplID0gK2NvbnZlcnRCeXRlc1RvTWIoY29udHJvbFZhbHVlLnNpemUpLnRvUHJlY2lzaW9uKDMpO1xuICAgIGlmIChtYXhGaWxlU2l6ZSA+IGFjdHVhbEZpbGVTaXplKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4ge21heEZpbGVTaXplOiB7IG1heEZpbGVTaXplLCBhY3R1YWxGaWxlU2l6ZSB9fTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsb3dlZEZpbGVFeHRWYWxpZGF0b3IoYWxsb3dlZEZpbGVFeHRlbnNpb25zOiBzdHJpbmdbXSwgb25seUFsbG93RmlsZXMgPSB0cnVlKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgaXNGaWxlID0gY29udHJvbFZhbHVlIGluc3RhbmNlb2YgRmlsZTtcbiAgICBpZiAoIW9ubHlBbGxvd0ZpbGVzICYmICFpc0ZpbGUpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGFjdHVhbEV4dGVuc2lvbiA9IGlzRmlsZSA/IGNvbnRyb2xWYWx1ZS5uYW1lLnNwbGl0KCcuJykucG9wKCkudG9Mb2NhbGVMb3dlckNhc2UoKSA6ICdOb3QgYSBmaWxlJztcbiAgICBjb25zdCBpc0FsbG93ZWRFeHRlbnNpb24gPSBhbGxvd2VkRmlsZUV4dGVuc2lvbnMuaW5jbHVkZXMoYWN0dWFsRXh0ZW5zaW9uKTtcbiAgICBpZihpc0FsbG93ZWRFeHRlbnNpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4ge2FsbG93ZWRFeHRlbnNpb246IHsgYWxsb3dlZEZpbGVFeHRlbnNpb25zLCBhY3R1YWxFeHRlbnNpb24gfX07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbG93ZWRGaWxlVHlwZShtYXRjaEV4cDogc3RyaW5nIHwgUmVnRXhwKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGZvcm1Db250cm9sKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSAoZm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2wpLnZhbHVlO1xuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRmlsZSkpIHJldHVybiBudWxsXG4gICAgY29uc3QgdHlwZSA9IHZhbHVlLnR5cGU7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHR5cGUubWF0Y2gobWF0Y2hFeHApXG4gICAgaWYgKCF0eXBlIHx8ICFtYXRjaGVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFsbG93ZWRGaWxlVHlwZToge1xuICAgICAgICAgIGFjdHVhbFR5cGU6IHR5cGUsXG4gICAgICAgICAgYWxsb3dlZFR5cGVFeHA6IG1hdGNoRXhwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH07XG59XG4iLCI8Y3Jpc3ByLWZpZWxkLWNvbnRhaW5lclxuICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gIFtncm91cF09XCJncm91cFwiPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwiYWx3YXlzXCJcbiAgICBbY29sb3JdPVwiY29uZmlnLmNvbG9yXCJcbiAgICBbYXBwZWFyYW5jZV09XCJjb25maWcuYXBwZWFyYW5jZVwiXG4gICAgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgIDxtYXQtbGFiZWw+e3tjb25maWcubGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbmZpZy5jb250cm9sTmFtZVwiIG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIvPlxuICAgIDxpbnB1dFxuICAgICAgI2ZpbGVJbnB1dFxuICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgW2FjY2VwdF09XCJjb25maWcuYWNjZXB0ZWRUeXBlc1wiXG4gICAgICAoY2hhbmdlKT1cImZpbGVzQ2hhbmdlZCgkZXZlbnQudGFyZ2V0LmZpbGVzKVwiLz5cbiAgICA8ZGl2IGNsYXNzPVwidWktY29udGFpbmVyXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1wcmV2aWV3XCIgW3N0eWxlLmhlaWdodF09XCJjb25maWcuaW1hZ2VQcmV2aWV3SGVpZ2h0XCI+XG4gICAgICAgIDxjcmlzcHItc2VsZWN0ZWQtZmlsZVxuICAgICAgICAgICpuZ0lmPVwiKHByb2dyZXNzIDwgMTAwKSAmJiBpbnB1dEltYWdlRmlsZSQgfCBhc3luYyBhcyBmaWxlOyBlbHNlIGRyb3B6b25lT3JQcmV2aWV3XCJcbiAgICAgICAgICBbY29sb3JdPVwiY29uZmlnLmNvbG9yID09PSAncHJpbWFyeScgPyAnYWNjZW50JyA6ICdwcmltYXJ5J1wiXG4gICAgICAgICAgW2ZpbGVOYW1lXT1cIidDb21wcmVzc2luZzogJyArIGZpbGUubmFtZVwiXG4gICAgICAgICAgW3Nob3dQcm9ncmVzc109XCJ0cnVlXCJcbiAgICAgICAgICBbcHJvZ3Jlc3NdPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgPC9jcmlzcHItc2VsZWN0ZWQtZmlsZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3B6b25lT3JQcmV2aWV3PlxuICAgICAgICAgIDwhLS0gPGltZyAqbmdJZj1cIihpbml0aWFsVXJsU3RyaW5nJCB8IGFzeW5jKSBhcyBpbml0aWFsVXJsU3RyaW5nO1wiIFtzcmNdPVwiaW5pdGlhbFVybFN0cmluZ1wiIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICA8aW1nICpuZ0lmPVwiaW1hZ2VTcmNVcmwkIHwgYXN5bmMgYXMgc3JjVXJsOyBlbHNlIG5vSW1hZ2VcIiBbc3JjXT1cInNyY1VybFwiIGFsdD1cIlwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9JbWFnZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgIFtjcmlzcHJGaWxlRHJvcHpvbmVdPVwiIShkaXNhYmxlZCQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAoZmlsZURyb3ApPVwiZmlsZXNDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZHJvcC1pY29uXCIgaW5saW5lPVwidHJ1ZVwiPmNsb3VkX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxoMiBjbGFzcz1cIm1hdC1oMlwiPnt7Y29uZmlnLmRyb3Bab25lVGV4dH19PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgPCEtLSA8L25nLXRlbXBsYXRlPiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCIgKm5nSWY9XCJ0cnVlXCI+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWxlSW5wdXQoKVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIihkaXNhYmxlZCQgfCBhc3luYylcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZW1vdmUgU2VsZWN0ZWQgRmlsZShzKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgICAgIHt7Y29uZmlnLmNsZWFyRmlsZXNCdXR0b25UZXh0fX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwidmFsdWVcIlxuICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAoY2xpY2spPVwicmVzZXRUb0luaXRpYWxWYWx1ZSh2YWx1ZSlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIoZGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVtb3ZlIFNlbGVjdGVkIEZpbGUocylcIj5cbiAgICAgICAgICA8bWF0LWljb24+cmVwbGF5PC9tYXQtaWNvbj5cbiAgICAgICAgICB7e2NvbmZpZy5yZXNldEZpbGVzQnV0dG9uVGV4dH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiKGRpc2FibGVkJCB8IGFzeW5jKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbmZpZy5jb250cm9sTmFtZVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgIGNhbWVyYVxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgU0VMRUNUXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJjb25maWcuaGludCAmJiAoY29udHJvbC52YWxpZCB8fCAhY29udHJvbC50b3VjaGVkKVwiPnt7Y29uZmlnLmhpbnR9fTwvbWF0LWhpbnQ+XG5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuPC9jcmlzcHItZmllbGQtY29udGFpbmVyPlxuIl19
@@ -13,6 +13,5 @@ export * from './radio-field/radio-field.component';
13
13
  export * from './unit-conversion-field/unit-conversion-field.component';
14
14
  export * from './image-upload-field';
15
15
  export * from './file-upload';
16
- export * from './material.module';
17
16
  export * from './option';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1maWVsZC9pbnB1dC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QtZmllbGQvc2VsZWN0LWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dG9jb21wbGV0ZS1maWVsZC9hdXRvY29tcGxldGUtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXV0b2NvbXBsZXRlLWNoaXBsaXN0LWZpZWxkL2F1dG9jb21wbGV0ZS1jaGlwbGlzdC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC1maWVsZC9jaGVja2JveC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0YXJlYS1maWVsZC90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGlkZXItZmllbGQvc2xpZGVyLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZXBpY2tlci1maWVsZC9kYXRlcGlja2VyLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2hlYWRpbmcvaGVhZGluZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmFkaW8tZmllbGQvcmFkaW8tZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdW5pdC1jb252ZXJzaW9uLWZpZWxkL3VuaXQtY29udmVyc2lvbi1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZS11cGxvYWQtZmllbGQnXG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtdXBsb2FkJztcbmV4cG9ydCAqIGZyb20gJy4vbWF0ZXJpYWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9uJztcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW5wdXQtZmllbGQvaW5wdXQtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LWZpZWxkL3NlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRvY29tcGxldGUtZmllbGQvYXV0b2NvbXBsZXRlLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2F1dG9jb21wbGV0ZS1jaGlwbGlzdC1maWVsZC9hdXRvY29tcGxldGUtY2hpcGxpc3QtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3gtZmllbGQvY2hlY2tib3gtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dGFyZWEtZmllbGQvdGV4dGFyZWEtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2xpZGVyLWZpZWxkL3NsaWRlci1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGVwaWNrZXItZmllbGQvZGF0ZXBpY2tlci1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWFkaW5nL2hlYWRpbmcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGl2aWRlci9kaXZpZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JhZGlvLWZpZWxkL3JhZGlvLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3VuaXQtY29udmVyc2lvbi1maWVsZC91bml0LWNvbnZlcnNpb24tZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UtdXBsb2FkLWZpZWxkJ1xuZXhwb3J0ICogZnJvbSAnLi9maWxlLXVwbG9hZCc7XG5leHBvcnQgKiBmcm9tICcuL29wdGlvbic7XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, Input, ChangeDetectionStrategy, NgModule } from '@angular/core';
2
+ import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
3
3
  import { MatIconModule } from '@angular/material/icon';
4
4
  import { MatTooltipModule } from '@angular/material/tooltip';
5
5
  import * as i0 from "@angular/core";
@@ -9,36 +9,15 @@ import * as i3 from "@angular/material/tooltip";
9
9
  export class InfoComponent {
10
10
  }
11
11
  InfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- InfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: InfoComponent, selector: "crispr-info", inputs: { info: "info" }, ngImport: i0, template: "<mat-icon\n *ngIf=\"info\"\n [matTooltip]=\"info.content\"\n [matTooltipPosition]=\"info.tooltipPosition || 'below'\"\n matSuffix>\n {{info.iconName || 'info'}}\n</mat-icon>\n", styles: [":host mat-icon{font-size:1.2em;width:1em;height:1em;opacity:.8;margin-right:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
12
+ InfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: InfoComponent, isStandalone: true, selector: "crispr-info", inputs: { info: "info" }, ngImport: i0, template: "<mat-icon\n *ngIf=\"info\"\n [matTooltip]=\"info.content\"\n [matTooltipPosition]=\"info.tooltipPosition || 'below'\"\n matSuffix>\n {{info.iconName || 'info'}}\n</mat-icon>\n", styles: [":host mat-icon{font-size:1.2em;width:1em;height:1em;opacity:.8;margin-right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
13
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InfoComponent, decorators: [{
14
14
  type: Component,
15
- args: [{ selector: 'crispr-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-icon\n *ngIf=\"info\"\n [matTooltip]=\"info.content\"\n [matTooltipPosition]=\"info.tooltipPosition || 'below'\"\n matSuffix>\n {{info.iconName || 'info'}}\n</mat-icon>\n", styles: [":host mat-icon{font-size:1.2em;width:1em;height:1em;opacity:.8;margin-right:0}\n"] }]
16
- }], propDecorators: { info: [{
17
- type: Input
18
- }] } });
19
- export class InfoModule {
20
- }
21
- InfoModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InfoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
22
- InfoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: InfoModule, declarations: [InfoComponent], imports: [CommonModule,
23
- MatIconModule,
24
- MatTooltipModule], exports: [InfoComponent] });
25
- InfoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InfoModule, imports: [CommonModule,
26
- MatIconModule,
27
- MatTooltipModule] });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InfoModule, decorators: [{
29
- type: NgModule,
30
- args: [{
31
- imports: [
15
+ args: [{ selector: 'crispr-info', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
32
16
  CommonModule,
33
17
  MatIconModule,
34
18
  MatTooltipModule
35
- ],
36
- exports: [
37
- InfoComponent
38
- ],
39
- declarations: [
40
- InfoComponent
41
- ]
42
- }]
43
- }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2luZm8vaW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2luZm8vaW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFTN0QsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7OEZBQWIsYUFBYSw2RUNaMUIsc0xBT0E7MkZES2EsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU07OEJBSXRDLElBQUk7c0JBQVosS0FBSzs7QUFpQlIsTUFBTSxPQUFPLFVBQVU7O3VHQUFWLFVBQVU7d0dBQVYsVUFBVSxpQkFuQlYsYUFBYSxhQU90QixZQUFZO1FBQ1osYUFBYTtRQUNiLGdCQUFnQixhQVRQLGFBQWE7d0dBbUJiLFVBQVUsWUFabkIsWUFBWTtRQUNaLGFBQWE7UUFDYixnQkFBZ0I7MkZBVVAsVUFBVTtrQkFkdEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGFBQWE7cUJBQ2Q7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGFBQWE7cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgdHlwZSB7IEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcmlzcHItaW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5mby5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBJbmZvQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBpbmZvOiBJbmZvO1xuXG59XG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgSW5mb0NvbXBvbmVudFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBJbmZvQ29tcG9uZW50XG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBJbmZvTW9kdWxlIHtcbn1cbiIsIjxtYXQtaWNvblxuICAqbmdJZj1cImluZm9cIlxuICBbbWF0VG9vbHRpcF09XCJpbmZvLmNvbnRlbnRcIlxuICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cImluZm8udG9vbHRpcFBvc2l0aW9uIHx8ICdiZWxvdydcIlxuICBtYXRTdWZmaXg+XG4gIHt7aW5mby5pY29uTmFtZSB8fCAnaW5mbyd9fVxuPC9tYXQtaWNvbj5cbiJdfQ==
19
+ ], template: "<mat-icon\n *ngIf=\"info\"\n [matTooltip]=\"info.content\"\n [matTooltipPosition]=\"info.tooltipPosition || 'below'\"\n matSuffix>\n {{info.iconName || 'info'}}\n</mat-icon>\n", styles: [":host mat-icon{font-size:1.2em;width:1em;height:1em;opacity:.8;margin-right:0}\n"] }]
20
+ }], propDecorators: { info: [{
21
+ type: Input
22
+ }] } });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2luZm8vaW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2luZm8vaW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQWU3RCxNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTs4RkFBYixhQUFhLGlHQ2xCMUIsc0xBT0EseUlETUksWUFBWSxrSUFDWixhQUFhLG1MQUNiLGdCQUFnQjsyRkFHUCxhQUFhO2tCQVp6QixTQUFTOytCQUNFLGFBQWEsbUJBR04sdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7OEJBSVEsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgdHlwZSB7IEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcmlzcHItaW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5mby5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGVcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSW5mb0NvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgaW5mbzogSW5mbztcblxufVxuIiwiPG1hdC1pY29uXG4gICpuZ0lmPVwiaW5mb1wiXG4gIFttYXRUb29sdGlwXT1cImluZm8uY29udGVudFwiXG4gIFttYXRUb29sdGlwUG9zaXRpb25dPVwiaW5mby50b29sdGlwUG9zaXRpb24gfHwgJ2JlbG93J1wiXG4gIG1hdFN1ZmZpeD5cbiAge3tpbmZvLmljb25OYW1lIHx8ICdpbmZvJ319XG48L21hdC1pY29uPlxuIl19
@@ -1,18 +1,16 @@
1
- import { Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
2
  import { crisprControlMixin, CrisprFieldComponent } from '../../abstracts';
3
3
  import { MatInputModule } from '@angular/material/input';
4
4
  import { CommonModule } from '@angular/common';
5
- import { FieldContainerModule } from '../../field-container';
5
+ import { FieldContainerComponent } from '../../field-container';
6
6
  import { ReactiveFormsModule } from '@angular/forms';
7
7
  import { MatFormFieldModule } from '@angular/material/form-field';
8
- import { InfoModule } from '../info/info.component';
8
+ import { InfoComponent } from '../info/info.component';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "@angular/common";
11
- import * as i2 from "../info/info.component";
12
- import * as i3 from "@angular/forms";
13
- import * as i4 from "../../field-container/field-container.component";
14
- import * as i5 from "@angular/material/form-field";
15
- import * as i6 from "@angular/material/input";
11
+ import * as i2 from "@angular/forms";
12
+ import * as i3 from "@angular/material/form-field";
13
+ import * as i4 from "@angular/material/input";
16
14
  const InputFieldMixin = crisprControlMixin(CrisprFieldComponent);
17
15
  export class InputFieldComponent extends InputFieldMixin {
18
16
  constructor() {
@@ -24,43 +22,16 @@ export class InputFieldComponent extends InputFieldMixin {
24
22
  }
25
23
  }
26
24
  InputFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InputFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27
- InputFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: InputFieldComponent, selector: "crispr-input-field", usesInheritance: true, ngImport: i0, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>\n {{config.label}}\n </mat-label>\n <input\n [type]=\"config.inputType\"\n matInput\n [placeholder]=\"config.placeholder\"\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [maxlength]=\"config.maxLength\"\n [step]=\"config.step\"\n [autofocus]=\"config.autofocus\"\n [pattern]=\"config.pattern\"\n [spellcheck]=\"config.spellcheck\"\n [autocomplete]=\"config.autoComplete\"\n [autocapitalize]=\"config.autoCapitalize\">\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n matSuffix\n *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n\n</crispr-field-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.InfoComponent, selector: "crispr-info", inputs: ["info"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i6.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
25
+ InputFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.1", type: InputFieldComponent, isStandalone: true, selector: "crispr-input-field", usesInheritance: true, ngImport: i0, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>\n {{config.label}}\n </mat-label>\n <input\n [type]=\"config.inputType\"\n matInput\n [placeholder]=\"config.placeholder\"\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [maxlength]=\"config.maxLength\"\n [step]=\"config.step\"\n [autofocus]=\"config.autofocus\"\n [pattern]=\"config.pattern\"\n [spellcheck]=\"config.spellcheck\"\n [autocomplete]=\"config.autoComplete\"\n [autocapitalize]=\"config.autoCapitalize\">\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n matSuffix\n *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n\n</crispr-field-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InfoComponent, selector: "crispr-info", inputs: ["info"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FieldContainerComponent, selector: "crispr-field-container", inputs: ["config", "group", "inlineField"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix]" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
28
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InputFieldComponent, decorators: [{
29
27
  type: Component,
30
- args: [{ selector: 'crispr-input-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>\n {{config.label}}\n </mat-label>\n <input\n [type]=\"config.inputType\"\n matInput\n [placeholder]=\"config.placeholder\"\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [maxlength]=\"config.maxLength\"\n [step]=\"config.step\"\n [autofocus]=\"config.autofocus\"\n [pattern]=\"config.pattern\"\n [spellcheck]=\"config.spellcheck\"\n [autocomplete]=\"config.autoComplete\"\n [autocapitalize]=\"config.autoCapitalize\">\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n matSuffix\n *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n\n</crispr-field-container>\n" }]
31
- }], ctorParameters: function () { return []; } });
32
- export class InputFieldModule {
33
- }
34
- InputFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InputFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
35
- InputFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.1", ngImport: i0, type: InputFieldModule, declarations: [InputFieldComponent], imports: [CommonModule,
36
- InfoModule,
37
- ReactiveFormsModule,
38
- FieldContainerModule,
39
- MatFormFieldModule,
40
- MatInputModule], exports: [InputFieldComponent] });
41
- InputFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InputFieldModule, imports: [CommonModule,
42
- InfoModule,
43
- ReactiveFormsModule,
44
- FieldContainerModule,
45
- MatFormFieldModule,
46
- MatInputModule] });
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.1", ngImport: i0, type: InputFieldModule, decorators: [{
48
- type: NgModule,
49
- args: [{
50
- imports: [
28
+ args: [{ selector: 'crispr-input-field', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
51
29
  CommonModule,
52
- InfoModule,
30
+ InfoComponent,
53
31
  ReactiveFormsModule,
54
- FieldContainerModule,
32
+ FieldContainerComponent,
55
33
  MatFormFieldModule,
56
34
  MatInputModule,
57
- ],
58
- exports: [
59
- InputFieldComponent
60
- ],
61
- declarations: [
62
- InputFieldComponent
63
- ]
64
- }]
65
- }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9tYXRlcmlhbC9pbnB1dC1maWVsZC9pbnB1dC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2lucHV0LWZpZWxkL2lucHV0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQVUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7OztBQUVwRCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBbUIsb0JBQW9CLENBQUMsQ0FBQztBQU9uRixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtJQUd0RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBRlYsa0JBQWEsR0FBOEIsRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLENBQUM7SUFHL0QsQ0FBQztJQUVELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7Z0hBVFUsbUJBQW1CO29HQUFuQixtQkFBbUIsaUZDakJoQywwa0NBcUNBOzJGRHBCYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU07O0FBNkJqRCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBM0JoQixtQkFBbUIsYUFhNUIsWUFBWTtRQUNaLFVBQVU7UUFDVixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLGtCQUFrQjtRQUNsQixjQUFjLGFBbEJMLG1CQUFtQjs4R0EyQm5CLGdCQUFnQixZQWR6QixZQUFZO1FBQ1osVUFBVTtRQUNWLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsa0JBQWtCO1FBQ2xCLGNBQWM7MkZBU0wsZ0JBQWdCO2tCQWhCNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG1CQUFtQjtxQkFDcEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjtxQkFDcEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPbkluaXQsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnB1dEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IGNyaXNwckNvbnRyb2xNaXhpbiwgQ3Jpc3ByRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hYnN0cmFjdHMnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRmllbGRDb250YWluZXJNb2R1bGUgfSBmcm9tICcuLi8uLi9maWVsZC1jb250YWluZXInO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgSW5mb01vZHVsZSB9IGZyb20gJy4uL2luZm8vaW5mby5jb21wb25lbnQnO1xuXG5jb25zdCBJbnB1dEZpZWxkTWl4aW4gPSBjcmlzcHJDb250cm9sTWl4aW48SW5wdXRGaWVsZENvbmZpZz4oQ3Jpc3ByRmllbGRDb21wb25lbnQpO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3Jpc3ByLWlucHV0LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRGaWVsZENvbXBvbmVudCBleHRlbmRzIElucHV0RmllbGRNaXhpbiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZGVmYXVsdENvbmZpZzogUGFydGlhbDxJbnB1dEZpZWxkQ29uZmlnPiA9IHtpbnB1dFR5cGU6ICd0ZXh0J307XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG59XG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEluZm9Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGaWVsZENvbnRhaW5lck1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBJbnB1dEZpZWxkQ29tcG9uZW50XG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIElucHV0RmllbGRDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dEZpZWxkTW9kdWxlIHtcbn1cbiIsIjxjcmlzcHItZmllbGQtY29udGFpbmVyXG4gIFtjb25maWddPVwiY29uZmlnXCJcbiAgW2dyb3VwXT1cImdyb3VwXCI+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgIFtjb2xvcl09XCJjb25maWcuY29sb3JcIlxuICAgIFthcHBlYXJhbmNlXT1cImNvbmZpZy5hcHBlYXJhbmNlXCJcbiAgICBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7Y29uZmlnLmxhYmVsfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIFt0eXBlXT1cImNvbmZpZy5pbnB1dFR5cGVcIlxuICAgICAgbWF0SW5wdXRcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXJcIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcuY29udHJvbE5hbWVcIlxuICAgICAgW21pbl09XCJjb25maWcubWluXCJcbiAgICAgIFttYXhdPVwiY29uZmlnLm1heFwiXG4gICAgICBbbWF4bGVuZ3RoXT1cImNvbmZpZy5tYXhMZW5ndGhcIlxuICAgICAgW3N0ZXBdPVwiY29uZmlnLnN0ZXBcIlxuICAgICAgW2F1dG9mb2N1c109XCJjb25maWcuYXV0b2ZvY3VzXCJcbiAgICAgIFtwYXR0ZXJuXT1cImNvbmZpZy5wYXR0ZXJuXCJcbiAgICAgIFtzcGVsbGNoZWNrXT1cImNvbmZpZy5zcGVsbGNoZWNrXCJcbiAgICAgIFthdXRvY29tcGxldGVdPVwiY29uZmlnLmF1dG9Db21wbGV0ZVwiXG4gICAgICBbYXV0b2NhcGl0YWxpemVdPVwiY29uZmlnLmF1dG9DYXBpdGFsaXplXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJjb25maWcuZmllbGRTdWZmaXhcIiBtYXRTdWZmaXg+e3tjb25maWcuZmllbGRTdWZmaXh9fTwvc3Bhbj5cbiAgICA8Y3Jpc3ByLWluZm9cbiAgICAgIG1hdFN1ZmZpeFxuICAgICAgKm5nSWY9XCJjb25maWcuaW5mb1wiXG4gICAgICBbaW5mb109XCJjb25maWcuaW5mb1wiPlxuICAgIDwvY3Jpc3ByLWluZm8+XG5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJjb25maWcuaGludCAmJiAoY29udHJvbC52YWxpZCB8fCAhY29udHJvbC50b3VjaGVkKVwiPnt7Y29uZmlnLmhpbnR9fTwvbWF0LWhpbnQ+XG5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuXG48L2NyaXNwci1maWVsZC1jb250YWluZXI+XG4iXX0=
35
+ ], template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label>\n {{config.label}}\n </mat-label>\n <input\n [type]=\"config.inputType\"\n matInput\n [placeholder]=\"config.placeholder\"\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [maxlength]=\"config.maxLength\"\n [step]=\"config.step\"\n [autofocus]=\"config.autofocus\"\n [pattern]=\"config.pattern\"\n [spellcheck]=\"config.spellcheck\"\n [autocomplete]=\"config.autoComplete\"\n [autocapitalize]=\"config.autoCapitalize\">\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n matSuffix\n *ngIf=\"config.info\"\n [info]=\"config.info\">\n </crispr-info>\n\n <mat-hint *ngIf=\"config.hint && (control.valid || !control.touched)\">{{config.hint}}</mat-hint>\n\n </mat-form-field>\n\n\n</crispr-field-container>\n" }]
36
+ }], ctorParameters: function () { return []; } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmlzcHItZm9ybXMvc3JjL2xpYi9tYXRlcmlhbC9pbnB1dC1maWVsZC9pbnB1dC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyaXNwci1mb3Jtcy9zcmMvbGliL21hdGVyaWFsL2lucHV0LWZpZWxkL2lucHV0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRXJGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFFdkQsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQW1CLG9CQUFvQixDQUFDLENBQUM7QUFnQm5GLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBR3REO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFGVixrQkFBYSxHQUE4QixFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUMsQ0FBQztJQUcvRCxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOztnSEFUVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixxR0MxQmhDLDBrQ0FxQ0EseUREbkJJLFlBQVksbUlBQ1osYUFBYSx5RUFDYixtQkFBbUIsZ3FDQUNuQix1QkFBdUIsOEdBQ3ZCLGtCQUFrQixtYkFDbEIsY0FBYzsyRkFHTCxtQkFBbUI7a0JBZi9CLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQixjQUFjO3FCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25Jbml0LCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBjcmlzcHJDb250cm9sTWl4aW4sIENyaXNwckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RzJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZpZWxkQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZmllbGQtY29udGFpbmVyJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEluZm9Db21wb25lbnQgfSBmcm9tICcuLi9pbmZvL2luZm8uY29tcG9uZW50JztcblxuY29uc3QgSW5wdXRGaWVsZE1peGluID0gY3Jpc3ByQ29udHJvbE1peGluPElucHV0RmllbGRDb25maWc+KENyaXNwckZpZWxkQ29tcG9uZW50KTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NyaXNwci1pbnB1dC1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEluZm9Db21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGaWVsZENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIElucHV0RmllbGRDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkTWl4aW4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGRlZmF1bHRDb25maWc6IFBhcnRpYWw8SW5wdXRGaWVsZENvbmZpZz4gPSB7aW5wdXRUeXBlOiAndGV4dCd9O1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxufVxuIiwiPGNyaXNwci1maWVsZC1jb250YWluZXJcbiAgW2NvbmZpZ109XCJjb25maWdcIlxuICBbZ3JvdXBdPVwiZ3JvdXBcIj5cbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgW2NvbG9yXT1cImNvbmZpZy5jb2xvclwiXG4gICAgW2FwcGVhcmFuY2VdPVwiY29uZmlnLmFwcGVhcmFuY2VcIlxuICAgIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgICA8bWF0LWxhYmVsPlxuICAgICAge3tjb25maWcubGFiZWx9fVxuICAgIDwvbWF0LWxhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgW3R5cGVdPVwiY29uZmlnLmlucHV0VHlwZVwiXG4gICAgICBtYXRJbnB1dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZy5wbGFjZWhvbGRlclwiXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbmZpZy5jb250cm9sTmFtZVwiXG4gICAgICBbbWluXT1cImNvbmZpZy5taW5cIlxuICAgICAgW21heF09XCJjb25maWcubWF4XCJcbiAgICAgIFttYXhsZW5ndGhdPVwiY29uZmlnLm1heExlbmd0aFwiXG4gICAgICBbc3RlcF09XCJjb25maWcuc3RlcFwiXG4gICAgICBbYXV0b2ZvY3VzXT1cImNvbmZpZy5hdXRvZm9jdXNcIlxuICAgICAgW3BhdHRlcm5dPVwiY29uZmlnLnBhdHRlcm5cIlxuICAgICAgW3NwZWxsY2hlY2tdPVwiY29uZmlnLnNwZWxsY2hlY2tcIlxuICAgICAgW2F1dG9jb21wbGV0ZV09XCJjb25maWcuYXV0b0NvbXBsZXRlXCJcbiAgICAgIFthdXRvY2FwaXRhbGl6ZV09XCJjb25maWcuYXV0b0NhcGl0YWxpemVcIj5cbiAgICA8c3BhbiAqbmdJZj1cImNvbmZpZy5maWVsZFN1ZmZpeFwiIG1hdFN1ZmZpeD57e2NvbmZpZy5maWVsZFN1ZmZpeH19PC9zcGFuPlxuICAgIDxjcmlzcHItaW5mb1xuICAgICAgbWF0U3VmZml4XG4gICAgICAqbmdJZj1cImNvbmZpZy5pbmZvXCJcbiAgICAgIFtpbmZvXT1cImNvbmZpZy5pbmZvXCI+XG4gICAgPC9jcmlzcHItaW5mbz5cblxuICAgIDxtYXQtaGludCAqbmdJZj1cImNvbmZpZy5oaW50ICYmIChjb250cm9sLnZhbGlkIHx8ICFjb250cm9sLnRvdWNoZWQpXCI+e3tjb25maWcuaGludH19PC9tYXQtaGludD5cblxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG5cbjwvY3Jpc3ByLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==