@ajf/material 18.4.0 → 18.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +167 -2
  2. package/audio/src/audio-module.d.ts +7 -6
  3. package/esm2022/audio/src/audio-module.mjs +22 -4
  4. package/esm2022/audio/src/audio.mjs +6 -6
  5. package/esm2022/barcode/barcode.mjs +3 -3
  6. package/esm2022/calendar/calendar.mjs +2 -2
  7. package/esm2022/checkbox-group/checkbox-group-item.mjs +3 -3
  8. package/esm2022/form-builder/form-builder-module.mjs +9 -2
  9. package/esm2022/form-builder/form-builder-service.mjs +63 -20
  10. package/esm2022/form-builder/form-builder.mjs +73 -9
  11. package/esm2022/form-builder/node-entry.mjs +3 -3
  12. package/esm2022/form-builder/node-properties.mjs +3 -13
  13. package/esm2022/form-builder/node-type-entry.mjs +3 -3
  14. package/esm2022/form-builder/node-type-groups.pipe.mjs +65 -0
  15. package/esm2022/form-builder/public_api.mjs +2 -1
  16. package/esm2022/form-builder/string-identifier-dialog.mjs +44 -60
  17. package/esm2022/forms/boolean-field.mjs +6 -5
  18. package/esm2022/forms/current-slide.mjs +92 -0
  19. package/esm2022/forms/date-input-field.mjs +7 -9
  20. package/esm2022/forms/display-field.mjs +2 -2
  21. package/esm2022/forms/empty-field.mjs +3 -3
  22. package/esm2022/forms/field-row.mjs +117 -0
  23. package/esm2022/forms/field.mjs +2 -2
  24. package/esm2022/forms/form.mjs +107 -13
  25. package/esm2022/forms/forms-module.mjs +26 -3
  26. package/esm2022/forms/input-field.mjs +6 -8
  27. package/esm2022/forms/multiple-choice-field.mjs +45 -10
  28. package/esm2022/forms/public_api.mjs +6 -1
  29. package/esm2022/forms/range-field.mjs +5 -6
  30. package/esm2022/forms/rep-strip.mjs +61 -0
  31. package/esm2022/forms/single-choice-field.mjs +26 -11
  32. package/esm2022/forms/slide-header.mjs +68 -0
  33. package/esm2022/forms/slide-stats.mjs +148 -0
  34. package/esm2022/forms/table-field.mjs +2 -2
  35. package/esm2022/forms/text-field.mjs +2 -2
  36. package/esm2022/forms/video-url-field.mjs +6 -8
  37. package/esm2022/geolocation/geolocation.mjs +4 -6
  38. package/esm2022/page-slider/page-slider.mjs +3 -3
  39. package/esm2022/signature/signature.mjs +5 -6
  40. package/esm2022/time/time-module.mjs +22 -4
  41. package/esm2022/time/time.mjs +4 -4
  42. package/fesm2022/ajf-material-audio.mjs +27 -9
  43. package/fesm2022/ajf-material-audio.mjs.map +1 -1
  44. package/fesm2022/ajf-material-barcode.mjs +2 -2
  45. package/fesm2022/ajf-material-barcode.mjs.map +1 -1
  46. package/fesm2022/ajf-material-calendar.mjs +2 -2
  47. package/fesm2022/ajf-material-calendar.mjs.map +1 -1
  48. package/fesm2022/ajf-material-checkbox-group.mjs +2 -2
  49. package/fesm2022/ajf-material-checkbox-group.mjs.map +1 -1
  50. package/fesm2022/ajf-material-form-builder.mjs +260 -108
  51. package/fesm2022/ajf-material-form-builder.mjs.map +1 -1
  52. package/fesm2022/ajf-material-forms.mjs +712 -99
  53. package/fesm2022/ajf-material-forms.mjs.map +1 -1
  54. package/fesm2022/ajf-material-geolocation.mjs +5 -7
  55. package/fesm2022/ajf-material-geolocation.mjs.map +1 -1
  56. package/fesm2022/ajf-material-page-slider.mjs +2 -2
  57. package/fesm2022/ajf-material-page-slider.mjs.map +1 -1
  58. package/fesm2022/ajf-material-signature.mjs +7 -8
  59. package/fesm2022/ajf-material-signature.mjs.map +1 -1
  60. package/fesm2022/ajf-material-time.mjs +24 -6
  61. package/fesm2022/ajf-material-time.mjs.map +1 -1
  62. package/form-builder/form-builder-module.d.ts +27 -25
  63. package/form-builder/form-builder-service.d.ts +25 -0
  64. package/form-builder/form-builder.d.ts +41 -2
  65. package/form-builder/node-type-groups.pipe.d.ts +45 -0
  66. package/form-builder/public_api.d.ts +1 -0
  67. package/form-builder/string-identifier-dialog.d.ts +10 -16
  68. package/forms/_theming.scss +142 -0
  69. package/forms/current-slide.d.ts +61 -0
  70. package/forms/field-row.d.ts +63 -0
  71. package/forms/form.d.ts +40 -3
  72. package/forms/forms-module.d.ts +57 -51
  73. package/forms/multiple-choice-field.d.ts +15 -1
  74. package/forms/public_api.d.ts +5 -0
  75. package/forms/rep-strip.d.ts +52 -0
  76. package/forms/single-choice-field.d.ts +7 -0
  77. package/forms/slide-header.d.ts +61 -0
  78. package/forms/slide-stats.d.ts +76 -0
  79. package/package.json +2 -2
  80. package/time/time-module.d.ts +4 -3
package/README.md CHANGED
@@ -1,4 +1,169 @@
1
- # Advanced JSON forms
1
+ # Advanced JSON Forms (AJF)
2
2
 
3
+ Define a form as JSON, render it with Angular.
3
4
 
4
- This is the home for the Gnucoop's Advanced JSON forms built for and with Angular.
5
+ AJF is Gnucoop's framework for data collection: a form is a JSON schema — slides, fields,
6
+ validation rules, visibility conditions and formulas — and AJF turns that schema into a working
7
+ Angular form, a read-only view of the collected data, a visual form builder, and reports over the
8
+ results.
9
+
10
+ Built for and with Angular 18 and Angular Material 18.
11
+
12
+ ## Packages
13
+
14
+ | Package | Contains |
15
+ |---|---|
16
+ | `@ajf/core` | The framework-agnostic half: schema and interfaces (`AjfForm`, `AjfNode`, `AjfField`), serialization, validation, the renderer service, reports, PDF/DOCX export. No UI. |
17
+ | `@ajf/material` | The Angular Material half: the components that render what core defines, plus the visual form builder. |
18
+ | `@ajf/calendars` | Ethiopian calendar support. |
19
+ | `ajf-examples` | Canonical usage examples. |
20
+
21
+ Both libraries are split into secondary entry points, imported individually:
22
+
23
+ ```ts
24
+ import {AjfFormSerializer} from '@ajf/core/forms';
25
+ import {AjfFormsModule} from '@ajf/material/forms';
26
+ ```
27
+
28
+ `@ajf/core` ships `forms`, `models`, `reports`, `transloco`, `common`, `utils`, `page-slider`,
29
+ `page-break`, `node-icon`, `table`, `text`, `chart`, `echarts`, `graph`, `map`, `heat-map`, `image`,
30
+ `pdfmake`, and one entry point per complex field (`audio`, `barcode`, `calendar`, `checkbox-group`,
31
+ `file-input`, `geolocation`, `range`, `signature`, `time`). `@ajf/material` mirrors the ones that
32
+ have a UI and adds `form-builder`.
33
+
34
+ ## Install
35
+
36
+ ```bash
37
+ yarn add @ajf/core @ajf/material
38
+ ```
39
+
40
+ Angular 18.2 and Angular Material 18.2 are peer dependencies.
41
+
42
+ ## Quick start
43
+
44
+ ```ts
45
+ import {AjfTranslocoModule} from '@ajf/core/transloco';
46
+ import {AjfFormsModule} from '@ajf/material/forms';
47
+
48
+ @NgModule({
49
+ imports: [AjfFormsModule, AjfTranslocoModule.forRoot()],
50
+ })
51
+ export class AppModule {}
52
+ ```
53
+
54
+ ```ts
55
+ import {AjfForm, AjfFormActionEvent, AjfFormSerializer} from '@ajf/core/forms';
56
+
57
+ @Component({
58
+ template: '<ajf-form [form]="form" (formAction)="onAction($event)"></ajf-form>',
59
+ })
60
+ export class MyFormComponent {
61
+ form: AjfForm = AjfFormSerializer.fromJson(schema, context);
62
+
63
+ onAction({action, value}: AjfFormActionEvent): void {
64
+ // action is 'save' for the built-in button, or whatever you passed to
65
+ // onFormAction(); value is the collected data.
66
+ }
67
+ }
68
+ ```
69
+
70
+ `schema` is the JSON definition; `context` is the initial values. The renderer needs a height to
71
+ lay its slides out — give the host element one, or a positioned container.
72
+
73
+ For view mode, pass the same form with `[readonly]="true"`: the renderer swaps every field for its
74
+ read-only counterpart and renders the values as flat text.
75
+
76
+ ## Fields
77
+
78
+ `AjfFieldType`: `String`, `Text`, `Number`, `Boolean`, `SingleChoice`, `MultipleChoice`, `Formula`,
79
+ `Empty`, `DateRange`, `DateInput`, `Time`, `Table`, `Geolocation`, `Barcode`, `File`, `Image`,
80
+ `VideoUrl`, `Range`, `Signature`, `Audio`.
81
+
82
+ Custom field types are registered on `AjfFieldService.registerCustomField()`.
83
+
84
+ Conditions (`AjfCondition`) and formulas (`AjfFormula`) are plain JavaScript strings evaluated at
85
+ runtime, with the current form's field names in scope: `pet_type === 'cat'`, `amount * 0.05`.
86
+ Register your own functions for those expressions with `AjfValidationService`.
87
+
88
+ ## Rendering
89
+
90
+ Every field is laid out as a row — `label + type name | control | hint or error` — by a single
91
+ component, `AjfFieldRow`. Above the slides sits one header bar carrying the slide number and title,
92
+ a completion counter, a jump menu, paging, the form's outstanding issues, and a slot for your own
93
+ action buttons:
94
+
95
+ ```html
96
+ <ajf-form [form]="form">
97
+ <button ajfFormTopToolbarButtons mat-button>Save draft</button>
98
+ <button ajfFormSaveButton mat-flat-button>Save</button>
99
+ </ajf-form>
100
+ ```
101
+
102
+ ## Theming
103
+
104
+ The renderer paints itself from `--ajf-*` CSS custom properties, and each colour token falls through
105
+ Angular Material's system variables before landing on AJF's own default. There are four levels,
106
+ cheapest first:
107
+
108
+ 1. **Nothing.** The built-in palette, light and dark.
109
+ 2. **An M3 Material theme.** Build it with `use-system-variables: true` and the whole renderer
110
+ follows, with no other wiring.
111
+ 3. **Any Material theme, M2 or M3.** One include:
112
+
113
+ ```scss
114
+ @use '@angular/material' as mat;
115
+ @use '@ajf/material/forms/theming' as ajf-forms;
116
+
117
+ :root {
118
+ @include mat.all-component-themes($theme);
119
+ @include ajf-forms.theme($theme);
120
+ }
121
+ ```
122
+
123
+ 4. **Setting the tokens yourself**, e.g. `--ajf-accent`, `--ajf-surface`, `--ajf-control-h`.
124
+
125
+ Dark mode follows `prefers-color-scheme`, and an `.ajf-dark` or `.ajf-light` class on any ancestor
126
+ overrides it.
127
+
128
+ ## Internationalisation
129
+
130
+ `@ajf/core/transloco` wraps [`@ngneat/transloco`](https://ngneat.github.io/transloco/) and ships
131
+ translations for Arabic, English, Ethiopian, French, Italian, Portuguese, Spanish and Ukrainian.
132
+ Import `AjfTranslocoModule.forRoot()` once in your app root.
133
+
134
+ ## Development
135
+
136
+ Requires Node >= 18.17 and **yarn** (enforced through `.npmrc`).
137
+
138
+ ```bash
139
+ yarn install
140
+ yarn dev-app # the demo playground at http://localhost:4200
141
+ yarn build # build every library into dist/
142
+ yarn lint
143
+ ```
144
+
145
+ Tests:
146
+
147
+ ```bash
148
+ yarn test # unit tests, watch mode
149
+ yarn test:ci # unit tests, once
150
+ ng test core # one project at a time
151
+ yarn e2e-material # Cypress, starts the e2e host app
152
+ yarn e2e-core
153
+ yarn e2e-calendars
154
+ ```
155
+
156
+ `projects/dev-app` is the playground — one lazy-loaded module per feature, including a full form
157
+ demo with `readonly` and dark-mode switches. `projects/e2e-app` hosts the Cypress suites.
158
+
159
+ `CLAUDE.md` documents the internals: the core/material split, the two patterns for field
160
+ components, the token layer, and a checklist for adding a field type.
161
+
162
+ ## Links
163
+
164
+ - Repository: https://github.com/gnucoop/ajf
165
+ - Changelog: [CHANGELOG.md](CHANGELOG.md)
166
+
167
+ ## License
168
+
169
+ AGPL-3.0-or-later. See the license headers in each source file.
@@ -1,12 +1,13 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./audio";
3
- import * as i2 from "@angular/common";
4
- import * as i3 from "@angular/forms";
5
- import * as i4 from "@angular/material/button";
6
- import * as i5 from "@angular/material/icon";
7
- import * as i6 from "@angular/material/tooltip";
3
+ import * as i2 from "@ajf/core/transloco";
4
+ import * as i3 from "@angular/common";
5
+ import * as i4 from "@angular/forms";
6
+ import * as i5 from "@angular/material/button";
7
+ import * as i6 from "@angular/material/icon";
8
+ import * as i7 from "@angular/material/tooltip";
8
9
  export declare class AjfAudioModule {
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<AjfAudioModule, never>;
10
- static ɵmod: i0.ɵɵNgModuleDeclaration<AjfAudioModule, [typeof i1.AjfAudioComponent], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i4.MatButtonModule, typeof i5.MatIconModule, typeof i6.MatTooltipModule], [typeof i1.AjfAudioComponent]>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AjfAudioModule, [typeof i1.AjfAudioComponent], [typeof i2.AjfTranslocoModule, typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.MatButtonModule, typeof i6.MatIconModule, typeof i7.MatTooltipModule], [typeof i1.AjfAudioComponent]>;
11
12
  static ɵinj: i0.ɵɵInjectorDeclaration<AjfAudioModule>;
12
13
  }
@@ -19,6 +19,7 @@
19
19
  * If not, see http://www.gnu.org/licenses/.
20
20
  *
21
21
  */
22
+ import { AjfTranslocoModule } from '@ajf/core/transloco';
22
23
  import { CommonModule } from '@angular/common';
23
24
  import { NgModule } from '@angular/core';
24
25
  import { MatButtonModule } from '@angular/material/button';
@@ -29,15 +30,32 @@ import { FormsModule } from '@angular/forms';
29
30
  import * as i0 from "@angular/core";
30
31
  export class AjfAudioModule {
31
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AjfAudioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
32
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: AjfAudioModule, declarations: [AjfAudioComponent], imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule, MatTooltipModule], exports: [AjfAudioComponent] }); }
33
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AjfAudioModule, imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule, MatTooltipModule] }); }
33
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: AjfAudioModule, declarations: [AjfAudioComponent], imports: [AjfTranslocoModule,
34
+ CommonModule,
35
+ FormsModule,
36
+ MatButtonModule,
37
+ MatIconModule,
38
+ MatTooltipModule], exports: [AjfAudioComponent] }); }
39
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AjfAudioModule, imports: [AjfTranslocoModule,
40
+ CommonModule,
41
+ FormsModule,
42
+ MatButtonModule,
43
+ MatIconModule,
44
+ MatTooltipModule] }); }
34
45
  }
35
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AjfAudioModule, decorators: [{
36
47
  type: NgModule,
37
48
  args: [{
38
- imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule, MatTooltipModule],
49
+ imports: [
50
+ AjfTranslocoModule,
51
+ CommonModule,
52
+ FormsModule,
53
+ MatButtonModule,
54
+ MatIconModule,
55
+ MatTooltipModule,
56
+ ],
39
57
  declarations: [AjfAudioComponent],
40
58
  exports: [AjfAudioComponent],
41
59
  }]
42
60
  }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwvYXVkaW8vc3JjL2F1ZGlvLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBTzNDLE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYyxpQkFIVixpQkFBaUIsYUFEdEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixhQUUzRSxpQkFBaUI7Z0hBRWhCLGNBQWMsWUFKZixZQUFZLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCOzs0RkFJMUUsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3RGLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQge0FqZkF1ZGlvQ29tcG9uZW50fSBmcm9tICcuL2F1ZGlvJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0FqZkF1ZGlvQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0FqZkF1ZGlvQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQWpmQXVkaW9Nb2R1bGUge31cbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwvYXVkaW8vc3JjL2F1ZGlvLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBYzNDLE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYyxpQkFIVixpQkFBaUIsYUFQOUIsa0JBQWtCO1lBQ2xCLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtZQUNmLGFBQWE7WUFDYixnQkFBZ0IsYUFHUixpQkFBaUI7Z0hBRWhCLGNBQWMsWUFWdkIsa0JBQWtCO1lBQ2xCLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtZQUNmLGFBQWE7WUFDYixnQkFBZ0I7OzRGQUtQLGNBQWM7a0JBWjFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjt3QkFDbEIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCO29CQUNELFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7QWpmVHJhbnNsb2NvTW9kdWxlfSBmcm9tICdAYWpmL2NvcmUvdHJhbnNsb2NvJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQge0FqZkF1ZGlvQ29tcG9uZW50fSBmcm9tICcuL2F1ZGlvJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEFqZlRyYW5zbG9jb01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbQWpmQXVkaW9Db21wb25lbnRdLFxuICBleHBvcnRzOiBbQWpmQXVkaW9Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBamZBdWRpb01vZHVsZSB7fVxuIl19
@@ -25,9 +25,9 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
25
25
  import * as i0 from "@angular/core";
26
26
  import * as i1 from "@angular/platform-browser";
27
27
  import * as i2 from "@angular/common";
28
- import * as i3 from "@angular/material/button";
29
- import * as i4 from "@angular/material/icon";
30
- import * as i5 from "@angular/material/tooltip";
28
+ import * as i3 from "@angular/material/icon";
29
+ import * as i4 from "@angular/material/tooltip";
30
+ import * as i5 from "@ngneat/transloco";
31
31
  export class AjfAudioComponent extends AjfAudio {
32
32
  constructor(cdr, _sanitizer) {
33
33
  super(cdr);
@@ -120,7 +120,7 @@ export class AjfAudioComponent extends AjfAudio {
120
120
  useExisting: AjfAudioComponent,
121
121
  multi: true,
122
122
  },
123
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"ajf-field-wrapper\">\n <div class=\"ajf-audio-controls\">\n <!-- Start Recording Button -->\n <button\n mat-mini-fab\n color=\"primary\"\n (click)=\"startRecording()\"\n *ngIf=\"!isRecording && !safeAudioSrc\"\n [disabled]=\"readonly\"\n matTooltip=\"Start Recording\"\n >\n <mat-icon>mic</mat-icon>\n </button>\n\n <!-- Stop Recording Button -->\n <button\n mat-mini-fab\n color=\"warn\"\n (click)=\"stopRecording()\"\n *ngIf=\"isRecording\"\n matTooltip=\"Stop Recording\"\n >\n <mat-icon>stop</mat-icon>\n </button>\n\n <!-- Recording Indicator -->\n <div *ngIf=\"isRecording\" class=\"recording-indicator\">\n <mat-icon>fiber_manual_record</mat-icon>\n Recording...\n </div>\n\n <!-- Playback -->\n <audio *ngIf=\"safeAudioSrc\" [src]=\"safeAudioSrc\" controls></audio>\n\n <!-- Delete/Reset Button -->\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"clearRecording()\"\n *ngIf=\"safeAudioSrc\"\n [disabled]=\"readonly\"\n matTooltip=\"Delete Audio\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".ajf-audio-controls{display:flex;align-items:center;gap:16px;margin-top:8px}.ajf-audio-controls .recording-indicator{color:#f44336;animation:pulse 1.5s infinite;display:flex;align-items:center;gap:4px;font-weight:500}.ajf-audio-controls audio{height:36px;outline:none}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
123
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"ajf-field-wrapper\">\n <div class=\"ajf-audio\">\n <!-- Nothing recorded yet -->\n <div class=\"ajf-audio-row\" *ngIf=\"!isRecording && !safeAudioSrc\">\n <span class=\"ajf-audio-state\">{{ 'empty' | transloco }}</span>\n <div class=\"ajf-audio-box\">\n <button\n type=\"button\"\n class=\"ajf-audio-action ajf-audio-rec\"\n (click)=\"startRecording()\"\n [disabled]=\"readonly\"\n [matTooltip]=\"'Start Recording' | transloco\"\n >\n <mat-icon>fiber_manual_record</mat-icon>\n <span>{{ 'Record' | transloco }}</span>\n </button>\n </div>\n </div>\n\n <!-- Recording in progress -->\n <div class=\"ajf-audio-row ajf-audio-recording\" *ngIf=\"isRecording\">\n <span class=\"ajf-audio-state\">{{ 'recording' | transloco }}</span>\n <div class=\"ajf-audio-box\">\n <button\n type=\"button\"\n class=\"ajf-audio-action ajf-audio-stop\"\n (click)=\"stopRecording()\"\n [matTooltip]=\"'Stop Recording' | transloco\"\n >\n <mat-icon>stop</mat-icon>\n </button>\n <span class=\"ajf-audio-wave\" aria-hidden=\"true\">\n <i></i><i></i><i></i><i></i><i></i><i></i>\n </span>\n </div>\n </div>\n\n <!-- A recording is held -->\n <div class=\"ajf-audio-row\" *ngIf=\"!isRecording && safeAudioSrc\">\n <span class=\"ajf-audio-state\">{{ 'recorded' | transloco }}</span>\n <div class=\"ajf-audio-box\">\n <audio [src]=\"safeAudioSrc\" controls></audio>\n </div>\n <button\n type=\"button\"\n class=\"ajf-audio-delete\"\n (click)=\"clearRecording()\"\n [disabled]=\"readonly\"\n [matTooltip]=\"'Delete Audio' | transloco\"\n >\n {{ 'Delete' | transloco }}\n </button>\n </div>\n </div>\n</div>\n", styles: ["ajf-audio{display:block;width:100%}ajf-audio .ajf-audio{display:flex;flex-direction:column;gap:8px}ajf-audio .ajf-audio-row{display:flex;align-items:center;gap:12px}ajf-audio .ajf-audio-state{flex:0 0 84px;color:var(--ajf-text-muted, #7a736a);font-family:var(--ajf-font-mono, monospace);font-size:11px;letter-spacing:.09em;text-align:right;text-transform:uppercase}ajf-audio .ajf-audio-box{display:flex;flex:1 1 auto;align-items:center;gap:12px;min-width:0;max-width:400px;box-sizing:border-box;min-height:var(--ajf-control-h, 44px);padding:0 12px;border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff)}ajf-audio .ajf-audio-action{display:inline-flex;align-items:center;gap:8px;padding:0;border:0;background:none;color:var(--ajf-text, #1c1a17);font-family:inherit;font-size:14px;cursor:pointer}ajf-audio .ajf-audio-action:disabled{color:var(--ajf-text-faint, #a49c92);cursor:default}ajf-audio .ajf-audio-action .mat-icon{color:var(--ajf-danger, #b8362b)}ajf-audio .ajf-audio-recording .ajf-audio-box{border-color:var(--ajf-danger, #b8362b);background:var(--ajf-danger-bg, #fdf1ef)}ajf-audio .ajf-audio-recording .ajf-audio-state{color:var(--ajf-danger, #b8362b)}ajf-audio .ajf-audio-wave{display:inline-flex;align-items:flex-end;gap:2px;height:18px}ajf-audio .ajf-audio-wave i{width:3px;background:var(--ajf-danger, #b8362b);animation:ajf-audio-pulse 1s ease-in-out infinite}ajf-audio .ajf-audio-wave i:nth-child(1){height:40%;animation-delay:0s}ajf-audio .ajf-audio-wave i:nth-child(2){height:80%;animation-delay:.1s}ajf-audio .ajf-audio-wave i:nth-child(3){height:55%;animation-delay:.2s}ajf-audio .ajf-audio-wave i:nth-child(4){height:100%;animation-delay:.3s}ajf-audio .ajf-audio-wave i:nth-child(5){height:65%;animation-delay:.4s}ajf-audio .ajf-audio-wave i:nth-child(6){height:35%;animation-delay:.5s}ajf-audio .ajf-audio-delete{padding:0 4px;border:0;background:none;color:var(--ajf-danger, #b8362b);font-family:inherit;font-size:14px;cursor:pointer}ajf-audio .ajf-audio-delete:hover:not(:disabled){text-decoration:underline}ajf-audio .ajf-audio-delete:disabled{color:var(--ajf-text-faint, #a49c92);cursor:default}ajf-audio audio{width:100%;min-width:0;height:36px;outline:none}@keyframes ajf-audio-pulse{0%,to{transform:scaleY(.6)}50%{transform:scaleY(1)}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i5.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
124
124
  }
125
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AjfAudioComponent, decorators: [{
126
126
  type: Component,
@@ -130,8 +130,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
130
130
  useExisting: AjfAudioComponent,
131
131
  multi: true,
132
132
  },
133
- ], template: "<div class=\"ajf-field-wrapper\">\n <div class=\"ajf-audio-controls\">\n <!-- Start Recording Button -->\n <button\n mat-mini-fab\n color=\"primary\"\n (click)=\"startRecording()\"\n *ngIf=\"!isRecording && !safeAudioSrc\"\n [disabled]=\"readonly\"\n matTooltip=\"Start Recording\"\n >\n <mat-icon>mic</mat-icon>\n </button>\n\n <!-- Stop Recording Button -->\n <button\n mat-mini-fab\n color=\"warn\"\n (click)=\"stopRecording()\"\n *ngIf=\"isRecording\"\n matTooltip=\"Stop Recording\"\n >\n <mat-icon>stop</mat-icon>\n </button>\n\n <!-- Recording Indicator -->\n <div *ngIf=\"isRecording\" class=\"recording-indicator\">\n <mat-icon>fiber_manual_record</mat-icon>\n Recording...\n </div>\n\n <!-- Playback -->\n <audio *ngIf=\"safeAudioSrc\" [src]=\"safeAudioSrc\" controls></audio>\n\n <!-- Delete/Reset Button -->\n <button\n mat-icon-button\n color=\"warn\"\n (click)=\"clearRecording()\"\n *ngIf=\"safeAudioSrc\"\n [disabled]=\"readonly\"\n matTooltip=\"Delete Audio\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".ajf-audio-controls{display:flex;align-items:center;gap:16px;margin-top:8px}.ajf-audio-controls .recording-indicator{color:#f44336;animation:pulse 1.5s infinite;display:flex;align-items:center;gap:4px;font-weight:500}.ajf-audio-controls audio{height:36px;outline:none}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}\n"] }]
133
+ ], template: "<div class=\"ajf-field-wrapper\">\n <div class=\"ajf-audio\">\n <!-- Nothing recorded yet -->\n <div class=\"ajf-audio-row\" *ngIf=\"!isRecording && !safeAudioSrc\">\n <span class=\"ajf-audio-state\">{{ 'empty' | transloco }}</span>\n <div class=\"ajf-audio-box\">\n <button\n type=\"button\"\n class=\"ajf-audio-action ajf-audio-rec\"\n (click)=\"startRecording()\"\n [disabled]=\"readonly\"\n [matTooltip]=\"'Start Recording' | transloco\"\n >\n <mat-icon>fiber_manual_record</mat-icon>\n <span>{{ 'Record' | transloco }}</span>\n </button>\n </div>\n </div>\n\n <!-- Recording in progress -->\n <div class=\"ajf-audio-row ajf-audio-recording\" *ngIf=\"isRecording\">\n <span class=\"ajf-audio-state\">{{ 'recording' | transloco }}</span>\n <div class=\"ajf-audio-box\">\n <button\n type=\"button\"\n class=\"ajf-audio-action ajf-audio-stop\"\n (click)=\"stopRecording()\"\n [matTooltip]=\"'Stop Recording' | transloco\"\n >\n <mat-icon>stop</mat-icon>\n </button>\n <span class=\"ajf-audio-wave\" aria-hidden=\"true\">\n <i></i><i></i><i></i><i></i><i></i><i></i>\n </span>\n </div>\n </div>\n\n <!-- A recording is held -->\n <div class=\"ajf-audio-row\" *ngIf=\"!isRecording && safeAudioSrc\">\n <span class=\"ajf-audio-state\">{{ 'recorded' | transloco }}</span>\n <div class=\"ajf-audio-box\">\n <audio [src]=\"safeAudioSrc\" controls></audio>\n </div>\n <button\n type=\"button\"\n class=\"ajf-audio-delete\"\n (click)=\"clearRecording()\"\n [disabled]=\"readonly\"\n [matTooltip]=\"'Delete Audio' | transloco\"\n >\n {{ 'Delete' | transloco }}\n </button>\n </div>\n </div>\n</div>\n", styles: ["ajf-audio{display:block;width:100%}ajf-audio .ajf-audio{display:flex;flex-direction:column;gap:8px}ajf-audio .ajf-audio-row{display:flex;align-items:center;gap:12px}ajf-audio .ajf-audio-state{flex:0 0 84px;color:var(--ajf-text-muted, #7a736a);font-family:var(--ajf-font-mono, monospace);font-size:11px;letter-spacing:.09em;text-align:right;text-transform:uppercase}ajf-audio .ajf-audio-box{display:flex;flex:1 1 auto;align-items:center;gap:12px;min-width:0;max-width:400px;box-sizing:border-box;min-height:var(--ajf-control-h, 44px);padding:0 12px;border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff)}ajf-audio .ajf-audio-action{display:inline-flex;align-items:center;gap:8px;padding:0;border:0;background:none;color:var(--ajf-text, #1c1a17);font-family:inherit;font-size:14px;cursor:pointer}ajf-audio .ajf-audio-action:disabled{color:var(--ajf-text-faint, #a49c92);cursor:default}ajf-audio .ajf-audio-action .mat-icon{color:var(--ajf-danger, #b8362b)}ajf-audio .ajf-audio-recording .ajf-audio-box{border-color:var(--ajf-danger, #b8362b);background:var(--ajf-danger-bg, #fdf1ef)}ajf-audio .ajf-audio-recording .ajf-audio-state{color:var(--ajf-danger, #b8362b)}ajf-audio .ajf-audio-wave{display:inline-flex;align-items:flex-end;gap:2px;height:18px}ajf-audio .ajf-audio-wave i{width:3px;background:var(--ajf-danger, #b8362b);animation:ajf-audio-pulse 1s ease-in-out infinite}ajf-audio .ajf-audio-wave i:nth-child(1){height:40%;animation-delay:0s}ajf-audio .ajf-audio-wave i:nth-child(2){height:80%;animation-delay:.1s}ajf-audio .ajf-audio-wave i:nth-child(3){height:55%;animation-delay:.2s}ajf-audio .ajf-audio-wave i:nth-child(4){height:100%;animation-delay:.3s}ajf-audio .ajf-audio-wave i:nth-child(5){height:65%;animation-delay:.4s}ajf-audio .ajf-audio-wave i:nth-child(6){height:35%;animation-delay:.5s}ajf-audio .ajf-audio-delete{padding:0 4px;border:0;background:none;color:var(--ajf-danger, #b8362b);font-family:inherit;font-size:14px;cursor:pointer}ajf-audio .ajf-audio-delete:hover:not(:disabled){text-decoration:underline}ajf-audio .ajf-audio-delete:disabled{color:var(--ajf-text-faint, #a49c92);cursor:default}ajf-audio audio{width:100%;min-width:0;height:36px;outline:none}@keyframes ajf-audio-pulse{0%,to{transform:scaleY(.6)}50%{transform:scaleY(1)}}\n"] }]
134
134
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }], propDecorators: { readonly: [{
135
135
  type: Input
136
136
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9hdWRpby9zcmMvYXVkaW8udHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9hdWRpby9zcmMvYXVkaW8uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWlCakQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQVE7SUFPN0MsWUFBWSxHQUFzQixFQUFVLFVBQXdCO1FBQ2xFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUQrQixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBTjNELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDWixrQkFBYSxHQUF5QixJQUFJLENBQUM7UUFDM0MsZ0JBQVcsR0FBVSxFQUFFLENBQUM7SUFJaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU3RCxNQUFNLE1BQU0sR0FDVixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUN4RixJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXpCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFFdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQy9CLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQztnQkFFbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7b0JBQ3RCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO29CQUMzQyxNQUFNLElBQUksR0FBRyx5QkFBeUIsQ0FBQztvQkFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzlFLHFEQUFxRDtvQkFDckQsSUFBSSxDQUFDLEtBQUssR0FBRzt3QkFDWCxJQUFJLEVBQUUsWUFBWTt3QkFDbEIsSUFBSSxFQUFFLFlBQVk7d0JBQ2xCLElBQUksRUFBRSxhQUFhO3dCQUNuQixPQUFPLEVBQUUsVUFBVTt3QkFDbkIsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLFNBQVM7d0JBQ2pDLFNBQVMsRUFBRSxLQUFLO3FCQUNqQixDQUFDO29CQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzNCLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQztZQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFNBQVM7WUFDZixPQUFPLEVBQUUsU0FBUztZQUNsQixHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksU0FBUztZQUNqQyxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQixDQUFDOytHQTdGVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixzRUFSakI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsaUJBQWlCO2dCQUM5QixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDOUNILHNyQ0ErQ0E7OzRGRENhLGlCQUFpQjtrQkFkN0IsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxtQkFBbUI7NEJBQzlCLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lIQUdRLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7QWpmQXVkaW99IGZyb20gJ0BhamYvY29yZS9hdWRpbyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXIsIFNhZmVVcmx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhamYtYXVkaW8nLFxuICB0ZW1wbGF0ZVVybDogJ2F1ZGlvLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYXVkaW8uc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogQWpmQXVkaW9Db21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBamZBdWRpb0NvbXBvbmVudCBleHRlbmRzIEFqZkF1ZGlvIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBpc1JlY29yZGluZyA9IGZhbHNlO1xuICBwcml2YXRlIG1lZGlhUmVjb3JkZXI6IE1lZGlhUmVjb3JkZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBhdWRpb0NodW5rczogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xuICAgIHN1cGVyKGNkcik7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BSZWNvcmRpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW5pdGl6ZXMgdGhlIGF1ZGlvIHNvdXJjZSBmb3IgcGxheWJhY2ssIGVpdGhlciBmcm9tIHRoZSBiYXNlNjQgY29udGVudFxuICAgKiBvciwgYXMgYSBmYWxsYmFjaywgZnJvbSB0aGUgc3RvcmVkIHVybC5cbiAgICovXG4gIGdldCBzYWZlQXVkaW9TcmMoKTogU2FmZVVybCB8IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghdGhpcy52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCF0aGlzLnZhbHVlLmNvbnRlbnQgJiYgdGhpcy52YWx1ZS5kZWxldGVVcmwpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcmF3VXJsID1cbiAgICAgIHRoaXMudmFsdWUuY29udGVudCAmJiB0aGlzLnZhbHVlLmNvbnRlbnQubGVuZ3RoID8gdGhpcy52YWx1ZS5jb250ZW50IDogdGhpcy52YWx1ZS51cmw7XG4gICAgaWYgKCFyYXdVcmwpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHJhd1VybCk7XG4gIH1cblxuICBhc3luYyBzdGFydFJlY29yZGluZygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7XG4gICAgICB0aGlzLm1lZGlhUmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0pO1xuICAgICAgdGhpcy5hdWRpb0NodW5rcyA9IFtdO1xuXG4gICAgICB0aGlzLm1lZGlhUmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gZXZlbnQgPT4ge1xuICAgICAgICB0aGlzLmF1ZGlvQ2h1bmtzLnB1c2goZXZlbnQuZGF0YSk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLm1lZGlhUmVjb3JkZXIub25zdG9wID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBhdWRpb0Jsb2IgPSBuZXcgQmxvYih0aGlzLmF1ZGlvQ2h1bmtzLCB7dHlwZTogJ2F1ZGlvL3dlYm0nfSk7XG5cbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYXVkaW9CbG9iKTtcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBiYXNlNjRkYXRhID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgY29uc3QgaGVhZCA9ICdkYXRhOmF1ZGlvL3dlYm07YmFzZTY0LCc7XG4gICAgICAgICAgY29uc3QgYXVkaW9GaWxlU2l6ZSA9IE1hdGgucm91bmQoKChiYXNlNjRkYXRhLmxlbmd0aCAtIGhlYWQubGVuZ3RoKSAqIDMpIC8gNCk7XG4gICAgICAgICAgLy8gS2VlcHMgdGhlIG9sZCB1cmwgdG8gZGVsZXRlIG9sZCBhdWRpbyBmcm9tIHN0b3JhZ2VcbiAgICAgICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICAgICAgbmFtZTogJ2F1ZGlvLndlYm0nLFxuICAgICAgICAgICAgdHlwZTogJ2F1ZGlvL3dlYm0nLFxuICAgICAgICAgICAgc2l6ZTogYXVkaW9GaWxlU2l6ZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGJhc2U2NGRhdGEsXG4gICAgICAgICAgICB1cmw6IHRoaXMudmFsdWU/LnVybCA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZWxldGVVcmw6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgdGhpcy5tZWRpYVJlY29yZGVyLnN0YXJ0KCk7XG4gICAgICB0aGlzLmlzUmVjb3JkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFjY2Vzc2luZyBtaWNyb3Bob25lOicsIGVycik7XG4gICAgfVxuICB9XG5cbiAgc3RvcFJlY29yZGluZygpIHtcbiAgICBpZiAodGhpcy5tZWRpYVJlY29yZGVyICYmIHRoaXMuaXNSZWNvcmRpbmcpIHtcbiAgICAgIHRoaXMubWVkaWFSZWNvcmRlci5zdG9wKCk7XG4gICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLm1lZGlhUmVjb3JkZXIuc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSByZWNvcmRpbmcgdmFsdWUgYW5kIHByZXZpZXcgKGtlZXBzIHRoZSBvbGQgdXJsIHRvIGRlbGV0ZSBvbGQgYXVkaW8gZnJvbSBzdG9yYWdlKVxuICAgKi9cbiAgY2xlYXJSZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5hdWRpb0NodW5rcyA9IFtdO1xuICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICBuYW1lOiAnYXVkaW8ud2VibScsXG4gICAgICB0eXBlOiAnYXVkaW8vd2VibScsXG4gICAgICBzaXplOiB1bmRlZmluZWQsXG4gICAgICBjb250ZW50OiB1bmRlZmluZWQsXG4gICAgICB1cmw6IHRoaXMudmFsdWU/LnVybCA/PyB1bmRlZmluZWQsXG4gICAgICBkZWxldGVVcmw6IHRydWUsXG4gICAgfTtcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhamYtZmllbGQtd3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwiYWpmLWF1ZGlvLWNvbnRyb2xzXCI+XG4gICAgPCEtLSBTdGFydCBSZWNvcmRpbmcgQnV0dG9uIC0tPlxuICAgIDxidXR0b25cbiAgICAgIG1hdC1taW5pLWZhYlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJzdGFydFJlY29yZGluZygpXCJcbiAgICAgICpuZ0lmPVwiIWlzUmVjb3JkaW5nICYmICFzYWZlQXVkaW9TcmNcIlxuICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAgIG1hdFRvb2x0aXA9XCJTdGFydCBSZWNvcmRpbmdcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5taWM8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPCEtLSBTdG9wIFJlY29yZGluZyBCdXR0b24gLS0+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LW1pbmktZmFiXG4gICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgKGNsaWNrKT1cInN0b3BSZWNvcmRpbmcoKVwiXG4gICAgICAqbmdJZj1cImlzUmVjb3JkaW5nXCJcbiAgICAgIG1hdFRvb2x0aXA9XCJTdG9wIFJlY29yZGluZ1wiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPnN0b3A8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPCEtLSBSZWNvcmRpbmcgSW5kaWNhdG9yIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJpc1JlY29yZGluZ1wiIGNsYXNzPVwicmVjb3JkaW5nLWluZGljYXRvclwiPlxuICAgICAgPG1hdC1pY29uPmZpYmVyX21hbnVhbF9yZWNvcmQ8L21hdC1pY29uPlxuICAgICAgUmVjb3JkaW5nLi4uXG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFBsYXliYWNrIC0tPlxuICAgIDxhdWRpbyAqbmdJZj1cInNhZmVBdWRpb1NyY1wiIFtzcmNdPVwic2FmZUF1ZGlvU3JjXCIgY29udHJvbHM+PC9hdWRpbz5cblxuICAgIDwhLS0gRGVsZXRlL1Jlc2V0IEJ1dHRvbiAtLT5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJSZWNvcmRpbmcoKVwiXG4gICAgICAqbmdJZj1cInNhZmVBdWRpb1NyY1wiXG4gICAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSBBdWRpb1wiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9hdWRpby9zcmMvYXVkaW8udHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9hdWRpby9zcmMvYXVkaW8uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWlCakQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFFBQVE7SUFPN0MsWUFBWSxHQUFzQixFQUFVLFVBQXdCO1FBQ2xFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUQrQixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBTjNELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDWixrQkFBYSxHQUF5QixJQUFJLENBQUM7UUFDM0MsZ0JBQVcsR0FBVSxFQUFFLENBQUM7SUFJaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksWUFBWTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU3RCxNQUFNLE1BQU0sR0FDVixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUN4RixJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXpCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFFdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0JBQy9CLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQztnQkFFbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7b0JBQ3RCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO29CQUMzQyxNQUFNLElBQUksR0FBRyx5QkFBeUIsQ0FBQztvQkFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzlFLHFEQUFxRDtvQkFDckQsSUFBSSxDQUFDLEtBQUssR0FBRzt3QkFDWCxJQUFJLEVBQUUsWUFBWTt3QkFDbEIsSUFBSSxFQUFFLFlBQVk7d0JBQ2xCLElBQUksRUFBRSxhQUFhO3dCQUNuQixPQUFPLEVBQUUsVUFBVTt3QkFDbkIsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLFNBQVM7d0JBQ2pDLFNBQVMsRUFBRSxLQUFLO3FCQUNqQixDQUFDO29CQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzNCLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQztZQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLFNBQVM7WUFDZixPQUFPLEVBQUUsU0FBUztZQUNsQixHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksU0FBUztZQUNqQyxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQixDQUFDOytHQTdGVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixzRUFSakI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsaUJBQWlCO2dCQUM5QixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDOUNILGkzREF1REE7OzRGRFBhLGlCQUFpQjtrQkFkN0IsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxtQkFBbUI7NEJBQzlCLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lIQUdRLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7QWpmQXVkaW99IGZyb20gJ0BhamYvY29yZS9hdWRpbyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXIsIFNhZmVVcmx9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhamYtYXVkaW8nLFxuICB0ZW1wbGF0ZVVybDogJ2F1ZGlvLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYXVkaW8uc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogQWpmQXVkaW9Db21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBamZBdWRpb0NvbXBvbmVudCBleHRlbmRzIEFqZkF1ZGlvIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBpc1JlY29yZGluZyA9IGZhbHNlO1xuICBwcml2YXRlIG1lZGlhUmVjb3JkZXI6IE1lZGlhUmVjb3JkZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBhdWRpb0NodW5rczogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xuICAgIHN1cGVyKGNkcik7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BSZWNvcmRpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW5pdGl6ZXMgdGhlIGF1ZGlvIHNvdXJjZSBmb3IgcGxheWJhY2ssIGVpdGhlciBmcm9tIHRoZSBiYXNlNjQgY29udGVudFxuICAgKiBvciwgYXMgYSBmYWxsYmFjaywgZnJvbSB0aGUgc3RvcmVkIHVybC5cbiAgICovXG4gIGdldCBzYWZlQXVkaW9TcmMoKTogU2FmZVVybCB8IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghdGhpcy52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCF0aGlzLnZhbHVlLmNvbnRlbnQgJiYgdGhpcy52YWx1ZS5kZWxldGVVcmwpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcmF3VXJsID1cbiAgICAgIHRoaXMudmFsdWUuY29udGVudCAmJiB0aGlzLnZhbHVlLmNvbnRlbnQubGVuZ3RoID8gdGhpcy52YWx1ZS5jb250ZW50IDogdGhpcy52YWx1ZS51cmw7XG4gICAgaWYgKCFyYXdVcmwpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHJhd1VybCk7XG4gIH1cblxuICBhc3luYyBzdGFydFJlY29yZGluZygpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7XG4gICAgICB0aGlzLm1lZGlhUmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0pO1xuICAgICAgdGhpcy5hdWRpb0NodW5rcyA9IFtdO1xuXG4gICAgICB0aGlzLm1lZGlhUmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gZXZlbnQgPT4ge1xuICAgICAgICB0aGlzLmF1ZGlvQ2h1bmtzLnB1c2goZXZlbnQuZGF0YSk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLm1lZGlhUmVjb3JkZXIub25zdG9wID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBhdWRpb0Jsb2IgPSBuZXcgQmxvYih0aGlzLmF1ZGlvQ2h1bmtzLCB7dHlwZTogJ2F1ZGlvL3dlYm0nfSk7XG5cbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYXVkaW9CbG9iKTtcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBiYXNlNjRkYXRhID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgY29uc3QgaGVhZCA9ICdkYXRhOmF1ZGlvL3dlYm07YmFzZTY0LCc7XG4gICAgICAgICAgY29uc3QgYXVkaW9GaWxlU2l6ZSA9IE1hdGgucm91bmQoKChiYXNlNjRkYXRhLmxlbmd0aCAtIGhlYWQubGVuZ3RoKSAqIDMpIC8gNCk7XG4gICAgICAgICAgLy8gS2VlcHMgdGhlIG9sZCB1cmwgdG8gZGVsZXRlIG9sZCBhdWRpbyBmcm9tIHN0b3JhZ2VcbiAgICAgICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICAgICAgbmFtZTogJ2F1ZGlvLndlYm0nLFxuICAgICAgICAgICAgdHlwZTogJ2F1ZGlvL3dlYm0nLFxuICAgICAgICAgICAgc2l6ZTogYXVkaW9GaWxlU2l6ZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGJhc2U2NGRhdGEsXG4gICAgICAgICAgICB1cmw6IHRoaXMudmFsdWU/LnVybCA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZWxldGVVcmw6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgdGhpcy5tZWRpYVJlY29yZGVyLnN0YXJ0KCk7XG4gICAgICB0aGlzLmlzUmVjb3JkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFjY2Vzc2luZyBtaWNyb3Bob25lOicsIGVycik7XG4gICAgfVxuICB9XG5cbiAgc3RvcFJlY29yZGluZygpIHtcbiAgICBpZiAodGhpcy5tZWRpYVJlY29yZGVyICYmIHRoaXMuaXNSZWNvcmRpbmcpIHtcbiAgICAgIHRoaXMubWVkaWFSZWNvcmRlci5zdG9wKCk7XG4gICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLm1lZGlhUmVjb3JkZXIuc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSByZWNvcmRpbmcgdmFsdWUgYW5kIHByZXZpZXcgKGtlZXBzIHRoZSBvbGQgdXJsIHRvIGRlbGV0ZSBvbGQgYXVkaW8gZnJvbSBzdG9yYWdlKVxuICAgKi9cbiAgY2xlYXJSZWNvcmRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5hdWRpb0NodW5rcyA9IFtdO1xuICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICBuYW1lOiAnYXVkaW8ud2VibScsXG4gICAgICB0eXBlOiAnYXVkaW8vd2VibScsXG4gICAgICBzaXplOiB1bmRlZmluZWQsXG4gICAgICBjb250ZW50OiB1bmRlZmluZWQsXG4gICAgICB1cmw6IHRoaXMudmFsdWU/LnVybCA/PyB1bmRlZmluZWQsXG4gICAgICBkZWxldGVVcmw6IHRydWUsXG4gICAgfTtcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhamYtZmllbGQtd3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwiYWpmLWF1ZGlvXCI+XG4gICAgPCEtLSBOb3RoaW5nIHJlY29yZGVkIHlldCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYWpmLWF1ZGlvLXJvd1wiICpuZ0lmPVwiIWlzUmVjb3JkaW5nICYmICFzYWZlQXVkaW9TcmNcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYWpmLWF1ZGlvLXN0YXRlXCI+e3sgJ2VtcHR5JyB8IHRyYW5zbG9jbyB9fTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhamYtYXVkaW8tYm94XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImFqZi1hdWRpby1hY3Rpb24gYWpmLWF1ZGlvLXJlY1wiXG4gICAgICAgICAgKGNsaWNrKT1cInN0YXJ0UmVjb3JkaW5nKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ1N0YXJ0IFJlY29yZGluZycgfCB0cmFuc2xvY29cIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uPmZpYmVyX21hbnVhbF9yZWNvcmQ8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7ICdSZWNvcmQnIHwgdHJhbnNsb2NvIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBSZWNvcmRpbmcgaW4gcHJvZ3Jlc3MgLS0+XG4gICAgPGRpdiBjbGFzcz1cImFqZi1hdWRpby1yb3cgYWpmLWF1ZGlvLXJlY29yZGluZ1wiICpuZ0lmPVwiaXNSZWNvcmRpbmdcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYWpmLWF1ZGlvLXN0YXRlXCI+e3sgJ3JlY29yZGluZycgfCB0cmFuc2xvY28gfX08L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWpmLWF1ZGlvLWJveFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhamYtYXVkaW8tYWN0aW9uIGFqZi1hdWRpby1zdG9wXCJcbiAgICAgICAgICAoY2xpY2spPVwic3RvcFJlY29yZGluZygpXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCInU3RvcCBSZWNvcmRpbmcnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5zdG9wPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWpmLWF1ZGlvLXdhdmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEEgcmVjb3JkaW5nIGlzIGhlbGQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImFqZi1hdWRpby1yb3dcIiAqbmdJZj1cIiFpc1JlY29yZGluZyAmJiBzYWZlQXVkaW9TcmNcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYWpmLWF1ZGlvLXN0YXRlXCI+e3sgJ3JlY29yZGVkJyB8IHRyYW5zbG9jbyB9fTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhamYtYXVkaW8tYm94XCI+XG4gICAgICAgIDxhdWRpbyBbc3JjXT1cInNhZmVBdWRpb1NyY1wiIGNvbnRyb2xzPjwvYXVkaW8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiYWpmLWF1ZGlvLWRlbGV0ZVwiXG4gICAgICAgIChjbGljayk9XCJjbGVhclJlY29yZGluZygpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0RlbGV0ZSBBdWRpbycgfCB0cmFuc2xvY29cIlxuICAgICAgPlxuICAgICAgICB7eyAnRGVsZXRlJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -68,10 +68,10 @@ export class AjfBarcodeComponent extends AjfBarcode {
68
68
  this.resetSub.unsubscribe();
69
69
  }
70
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AjfBarcodeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AjfBarcodeComponent, selector: "ajf-barcode", providers: [BARCODE_CONTROL_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"value; else barcode\">\n <div class=\"ajf-code-container\">\n <span>{{ value }}</span>\n <button mat-raised-button (click)=\"reset()\">\n <mat-icon style=\"transform: rotate(90deg)\">format_align_justify</mat-icon>\n </button>\n </div>\n</ng-container>\n<ng-template #barcode>\n <mat-tab-group (selectedIndexChange)=\"onTabChange($event)\">\n <mat-tab [label]=\"'Image'| transloco\">\n <div class=\"ajf-drop-container\">\n <div class=\"ajf-dropzone\" ajfDnd (file)=\"onSelectDrop($event)\">\n <div class=\"ajf-text-wrapper\">\n <div class=\"ajf-centered\">\n <a mat-button (click)=\"fileInput.click()\"\n >{{'Drop your image here or click to select'|transloco}}</a\n >\n </div>\n </div>\n </div>\n <div #barcodeImagePreview class=\"ajf-barcode-image-preview\"></div>\n </div>\n <input\n #fileInput\n type=\"file\"\n (change)=\"onSelectFile($event)\"\n multiple\n style=\"display: none\"\n />\n </mat-tab>\n <mat-tab [label]=\"'Camera'|transloco\">\n <mat-form-field\n appearance=\"fill\"\n class=\"ajf-video-device-select\"\n >\n <mat-label>Choose Video source</mat-label>\n <mat-select #videoSourceSelect\n ><mat-option *ngFor=\"let device of videoDevices|async\" [value]=\"device.deviceId\">\n {{device.label}}\n </mat-option></mat-select\n ></mat-form-field\n >\n <div class=\"ajf-barcode-video\">\n <ng-container *ngIf=\"supportsVideoStream; else noVideo\">\n <div #barcodeVideoPreview class=\"ajf-video-preview ajf-video-preview-hidden\">\n <div *ngIf=\"value && value.length > 0\">{{ value }}</div>\n </div>\n <video #barcodeVideo autoplay playsinline muted></video>\n </ng-container>\n <ng-template #noVideo>\n <div>NO VIDEO</div>\n </ng-template>\n </div>\n </mat-tab>\n </mat-tab-group>\n</ng-template>\n", styles: ["ajf-barcode{display:block}ajf-barcode .ajf-code-container{display:inline-flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-content:stretch;align-items:center}ajf-barcode .ajf-code-container button{margin-left:10px}ajf-barcode .ajf-drop-container{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:stretch;align-items:stretch;position:relative}ajf-barcode .ajf-drop-container .ajf-barcode-image-preview{position:absolute;inset:0;z-index:1;background-size:contain;background-repeat:no-repeat;background-position:center}ajf-barcode .ajf-drop-container .ajf-dropzone{z-index:2;order:0;flex:1 1 auto;align-self:auto;height:50vh;display:table;background-color:#eeeeee80;border:dotted 1px #aaa;overflow:hidden}ajf-barcode .ajf-drop-container .ajf-dropzone .ajf-text-wrapper{display:table-cell;vertical-align:middle}ajf-barcode .ajf-drop-container .ajf-dropzone .ajf-centered{font-family:sans-serif;font-size:1.3em;font-weight:700;text-align:center}ajf-barcode .ajf-video-device-select{width:100%}ajf-barcode .ajf-barcode-video{height:50vh;position:relative}ajf-barcode .ajf-barcode-video>video{width:100%;height:100%}ajf-barcode .ajf-barcode-video>.ajf-video-preview{position:absolute;inset:0;width:100%;height:100%;z-index:5;border:3px solid #000000}ajf-barcode .ajf-barcode-video>.ajf-video-preview.ajf-video-preview-hidden{display:none;position:relative}ajf-barcode .ajf-barcode-video>.ajf-video-preview.ajf-video-preview-hidden>div{position:absolute;right:0;left:0;bottom:-1em;height:2em;box-sizing:border-box;padding:.5em;background-color:#fff;border-radius:.5em}ajf-barcode .ajf-barcode-video>.ajf-barcode-switch-camera{position:absolute;top:1em;right:1em;z-index:10;padding:.5em;border-radius:.5em;background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.AjfDndDirective, selector: "[ajfDnd]", outputs: ["file"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i8.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i8.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "pipe", type: i9.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AjfBarcodeComponent, selector: "ajf-barcode", providers: [BARCODE_CONTROL_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"value; else barcode\">\n <div class=\"ajf-code-container\">\n <span class=\"ajf-code-value\">{{ value }}</span>\n <button type=\"button\" class=\"ajf-code-scan\" (click)=\"reset()\">\n <mat-icon>qr_code_scanner</mat-icon>\n <span>{{ 'Scan' | transloco }}</span>\n </button>\n </div>\n</ng-container>\n<ng-template #barcode>\n <mat-tab-group (selectedIndexChange)=\"onTabChange($event)\">\n <mat-tab [label]=\"'Image'| transloco\">\n <div class=\"ajf-drop-container\">\n <div class=\"ajf-dropzone\" ajfDnd (file)=\"onSelectDrop($event)\">\n <div class=\"ajf-text-wrapper\">\n <div class=\"ajf-centered\">\n <a mat-button (click)=\"fileInput.click()\"\n >{{'Drop your image here or click to select'|transloco}}</a\n >\n </div>\n </div>\n </div>\n <div #barcodeImagePreview class=\"ajf-barcode-image-preview\"></div>\n </div>\n <input\n #fileInput\n type=\"file\"\n (change)=\"onSelectFile($event)\"\n multiple\n style=\"display: none\"\n />\n </mat-tab>\n <mat-tab [label]=\"'Camera'|transloco\">\n <mat-form-field\n appearance=\"fill\"\n class=\"ajf-video-device-select\"\n >\n <mat-label>Choose Video source</mat-label>\n <mat-select #videoSourceSelect\n ><mat-option *ngFor=\"let device of videoDevices|async\" [value]=\"device.deviceId\">\n {{device.label}}\n </mat-option></mat-select\n ></mat-form-field\n >\n <div class=\"ajf-barcode-video\">\n <ng-container *ngIf=\"supportsVideoStream; else noVideo\">\n <div #barcodeVideoPreview class=\"ajf-video-preview ajf-video-preview-hidden\">\n <div *ngIf=\"value && value.length > 0\">{{ value }}</div>\n </div>\n <video #barcodeVideo autoplay playsinline muted></video>\n </ng-container>\n <ng-template #noVideo>\n <div>NO VIDEO</div>\n </ng-template>\n </div>\n </mat-tab>\n </mat-tab-group>\n</ng-template>\n", styles: ["ajf-barcode{display:block;max-width:380px}ajf-barcode .mat-mdc-tab-header{--mat-tab-header-active-label-text-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-active-focus-label-text-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-active-hover-label-text-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-active-focus-indicator-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-active-hover-indicator-color: var(--ajf-accent, #0f4c5c);--mdc-tab-indicator-active-indicator-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-inactive-label-text-color: var(--ajf-text-muted, #7a736a);--mat-tab-header-label-text-size: 13px;border-bottom:1px solid var(--ajf-border, #e6e2dc)}ajf-barcode .ajf-code-container{display:inline-flex;flex-wrap:wrap;align-items:center;gap:10px}ajf-barcode .ajf-code-value{box-sizing:border-box;min-width:180px;min-height:var(--ajf-control-h, 44px);padding:0 12px;border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff);color:var(--ajf-text, #1c1a17);font-family:var(--ajf-font-mono, monospace);font-size:13px;line-height:calc(var(--ajf-control-h, 44px) - 2px)}ajf-barcode .ajf-code-scan{display:inline-flex;align-items:center;gap:8px;min-height:var(--ajf-control-h, 44px);padding:0 14px;border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff);color:var(--ajf-text, #1c1a17);font-family:inherit;font-size:14px;cursor:pointer}ajf-barcode .ajf-code-scan:hover{border-color:var(--ajf-accent, #0f4c5c)}ajf-barcode .ajf-code-scan .mat-icon{width:18px;height:18px;font-size:18px}ajf-barcode .ajf-drop-container{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:stretch;align-items:stretch;position:relative}ajf-barcode .ajf-drop-container .ajf-barcode-image-preview{position:absolute;inset:0;z-index:1;background-size:contain;background-repeat:no-repeat;background-position:center}ajf-barcode .ajf-drop-container .ajf-dropzone{z-index:2;order:0;flex:1 1 auto;align-self:auto;height:120px;display:table;background-color:var(--ajf-band, #faf8f5);border:dashed 1px var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);overflow:hidden}ajf-barcode .ajf-drop-container .ajf-dropzone .ajf-text-wrapper{display:table-cell;vertical-align:middle}ajf-barcode .ajf-drop-container .ajf-dropzone .ajf-centered{color:var(--ajf-text-muted, #7a736a);font-family:inherit;font-size:14px;text-align:center}ajf-barcode .ajf-video-device-select{width:100%}ajf-barcode .ajf-barcode-video{height:180px;position:relative}ajf-barcode .ajf-barcode-video>video{width:100%;height:100%}ajf-barcode .ajf-barcode-video>.ajf-video-preview{position:absolute;inset:0;width:100%;height:100%;z-index:5;border:3px solid #000000}ajf-barcode .ajf-barcode-video>.ajf-video-preview.ajf-video-preview-hidden{display:none;position:relative}ajf-barcode .ajf-barcode-video>.ajf-video-preview.ajf-video-preview-hidden>div{position:absolute;right:0;left:0;bottom:-1em;height:2em;box-sizing:border-box;padding:.5em;background-color:#fff;border-radius:.5em}ajf-barcode .ajf-barcode-video>.ajf-barcode-switch-camera{position:absolute;top:1em;right:1em;z-index:10;padding:.5em;border-radius:.5em;background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.AjfDndDirective, selector: "[ajfDnd]", outputs: ["file"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i8.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i8.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "pipe", type: i9.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
72
72
  }
73
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AjfBarcodeComponent, decorators: [{
74
74
  type: Component,
75
- args: [{ selector: 'ajf-barcode', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [BARCODE_CONTROL_VALUE_ACCESSOR], template: "<ng-container *ngIf=\"value; else barcode\">\n <div class=\"ajf-code-container\">\n <span>{{ value }}</span>\n <button mat-raised-button (click)=\"reset()\">\n <mat-icon style=\"transform: rotate(90deg)\">format_align_justify</mat-icon>\n </button>\n </div>\n</ng-container>\n<ng-template #barcode>\n <mat-tab-group (selectedIndexChange)=\"onTabChange($event)\">\n <mat-tab [label]=\"'Image'| transloco\">\n <div class=\"ajf-drop-container\">\n <div class=\"ajf-dropzone\" ajfDnd (file)=\"onSelectDrop($event)\">\n <div class=\"ajf-text-wrapper\">\n <div class=\"ajf-centered\">\n <a mat-button (click)=\"fileInput.click()\"\n >{{'Drop your image here or click to select'|transloco}}</a\n >\n </div>\n </div>\n </div>\n <div #barcodeImagePreview class=\"ajf-barcode-image-preview\"></div>\n </div>\n <input\n #fileInput\n type=\"file\"\n (change)=\"onSelectFile($event)\"\n multiple\n style=\"display: none\"\n />\n </mat-tab>\n <mat-tab [label]=\"'Camera'|transloco\">\n <mat-form-field\n appearance=\"fill\"\n class=\"ajf-video-device-select\"\n >\n <mat-label>Choose Video source</mat-label>\n <mat-select #videoSourceSelect\n ><mat-option *ngFor=\"let device of videoDevices|async\" [value]=\"device.deviceId\">\n {{device.label}}\n </mat-option></mat-select\n ></mat-form-field\n >\n <div class=\"ajf-barcode-video\">\n <ng-container *ngIf=\"supportsVideoStream; else noVideo\">\n <div #barcodeVideoPreview class=\"ajf-video-preview ajf-video-preview-hidden\">\n <div *ngIf=\"value && value.length > 0\">{{ value }}</div>\n </div>\n <video #barcodeVideo autoplay playsinline muted></video>\n </ng-container>\n <ng-template #noVideo>\n <div>NO VIDEO</div>\n </ng-template>\n </div>\n </mat-tab>\n </mat-tab-group>\n</ng-template>\n", styles: ["ajf-barcode{display:block}ajf-barcode .ajf-code-container{display:inline-flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-content:stretch;align-items:center}ajf-barcode .ajf-code-container button{margin-left:10px}ajf-barcode .ajf-drop-container{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:stretch;align-items:stretch;position:relative}ajf-barcode .ajf-drop-container .ajf-barcode-image-preview{position:absolute;inset:0;z-index:1;background-size:contain;background-repeat:no-repeat;background-position:center}ajf-barcode .ajf-drop-container .ajf-dropzone{z-index:2;order:0;flex:1 1 auto;align-self:auto;height:50vh;display:table;background-color:#eeeeee80;border:dotted 1px #aaa;overflow:hidden}ajf-barcode .ajf-drop-container .ajf-dropzone .ajf-text-wrapper{display:table-cell;vertical-align:middle}ajf-barcode .ajf-drop-container .ajf-dropzone .ajf-centered{font-family:sans-serif;font-size:1.3em;font-weight:700;text-align:center}ajf-barcode .ajf-video-device-select{width:100%}ajf-barcode .ajf-barcode-video{height:50vh;position:relative}ajf-barcode .ajf-barcode-video>video{width:100%;height:100%}ajf-barcode .ajf-barcode-video>.ajf-video-preview{position:absolute;inset:0;width:100%;height:100%;z-index:5;border:3px solid #000000}ajf-barcode .ajf-barcode-video>.ajf-video-preview.ajf-video-preview-hidden{display:none;position:relative}ajf-barcode .ajf-barcode-video>.ajf-video-preview.ajf-video-preview-hidden>div{position:absolute;right:0;left:0;bottom:-1em;height:2em;box-sizing:border-box;padding:.5em;background-color:#fff;border-radius:.5em}ajf-barcode .ajf-barcode-video>.ajf-barcode-switch-camera{position:absolute;top:1em;right:1em;z-index:10;padding:.5em;border-radius:.5em;background-color:#fff}\n"] }]
75
+ args: [{ selector: 'ajf-barcode', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [BARCODE_CONTROL_VALUE_ACCESSOR], template: "<ng-container *ngIf=\"value; else barcode\">\n <div class=\"ajf-code-container\">\n <span class=\"ajf-code-value\">{{ value }}</span>\n <button type=\"button\" class=\"ajf-code-scan\" (click)=\"reset()\">\n <mat-icon>qr_code_scanner</mat-icon>\n <span>{{ 'Scan' | transloco }}</span>\n </button>\n </div>\n</ng-container>\n<ng-template #barcode>\n <mat-tab-group (selectedIndexChange)=\"onTabChange($event)\">\n <mat-tab [label]=\"'Image'| transloco\">\n <div class=\"ajf-drop-container\">\n <div class=\"ajf-dropzone\" ajfDnd (file)=\"onSelectDrop($event)\">\n <div class=\"ajf-text-wrapper\">\n <div class=\"ajf-centered\">\n <a mat-button (click)=\"fileInput.click()\"\n >{{'Drop your image here or click to select'|transloco}}</a\n >\n </div>\n </div>\n </div>\n <div #barcodeImagePreview class=\"ajf-barcode-image-preview\"></div>\n </div>\n <input\n #fileInput\n type=\"file\"\n (change)=\"onSelectFile($event)\"\n multiple\n style=\"display: none\"\n />\n </mat-tab>\n <mat-tab [label]=\"'Camera'|transloco\">\n <mat-form-field\n appearance=\"fill\"\n class=\"ajf-video-device-select\"\n >\n <mat-label>Choose Video source</mat-label>\n <mat-select #videoSourceSelect\n ><mat-option *ngFor=\"let device of videoDevices|async\" [value]=\"device.deviceId\">\n {{device.label}}\n </mat-option></mat-select\n ></mat-form-field\n >\n <div class=\"ajf-barcode-video\">\n <ng-container *ngIf=\"supportsVideoStream; else noVideo\">\n <div #barcodeVideoPreview class=\"ajf-video-preview ajf-video-preview-hidden\">\n <div *ngIf=\"value && value.length > 0\">{{ value }}</div>\n </div>\n <video #barcodeVideo autoplay playsinline muted></video>\n </ng-container>\n <ng-template #noVideo>\n <div>NO VIDEO</div>\n </ng-template>\n </div>\n </mat-tab>\n </mat-tab-group>\n</ng-template>\n", styles: ["ajf-barcode{display:block;max-width:380px}ajf-barcode .mat-mdc-tab-header{--mat-tab-header-active-label-text-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-active-focus-label-text-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-active-hover-label-text-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-active-focus-indicator-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-active-hover-indicator-color: var(--ajf-accent, #0f4c5c);--mdc-tab-indicator-active-indicator-color: var(--ajf-accent, #0f4c5c);--mat-tab-header-inactive-label-text-color: var(--ajf-text-muted, #7a736a);--mat-tab-header-label-text-size: 13px;border-bottom:1px solid var(--ajf-border, #e6e2dc)}ajf-barcode .ajf-code-container{display:inline-flex;flex-wrap:wrap;align-items:center;gap:10px}ajf-barcode .ajf-code-value{box-sizing:border-box;min-width:180px;min-height:var(--ajf-control-h, 44px);padding:0 12px;border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff);color:var(--ajf-text, #1c1a17);font-family:var(--ajf-font-mono, monospace);font-size:13px;line-height:calc(var(--ajf-control-h, 44px) - 2px)}ajf-barcode .ajf-code-scan{display:inline-flex;align-items:center;gap:8px;min-height:var(--ajf-control-h, 44px);padding:0 14px;border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff);color:var(--ajf-text, #1c1a17);font-family:inherit;font-size:14px;cursor:pointer}ajf-barcode .ajf-code-scan:hover{border-color:var(--ajf-accent, #0f4c5c)}ajf-barcode .ajf-code-scan .mat-icon{width:18px;height:18px;font-size:18px}ajf-barcode .ajf-drop-container{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:stretch;align-items:stretch;position:relative}ajf-barcode .ajf-drop-container .ajf-barcode-image-preview{position:absolute;inset:0;z-index:1;background-size:contain;background-repeat:no-repeat;background-position:center}ajf-barcode .ajf-drop-container .ajf-dropzone{z-index:2;order:0;flex:1 1 auto;align-self:auto;height:120px;display:table;background-color:var(--ajf-band, #faf8f5);border:dashed 1px var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);overflow:hidden}ajf-barcode .ajf-drop-container .ajf-dropzone .ajf-text-wrapper{display:table-cell;vertical-align:middle}ajf-barcode .ajf-drop-container .ajf-dropzone .ajf-centered{color:var(--ajf-text-muted, #7a736a);font-family:inherit;font-size:14px;text-align:center}ajf-barcode .ajf-video-device-select{width:100%}ajf-barcode .ajf-barcode-video{height:180px;position:relative}ajf-barcode .ajf-barcode-video>video{width:100%;height:100%}ajf-barcode .ajf-barcode-video>.ajf-video-preview{position:absolute;inset:0;width:100%;height:100%;z-index:5;border:3px solid #000000}ajf-barcode .ajf-barcode-video>.ajf-video-preview.ajf-video-preview-hidden{display:none;position:relative}ajf-barcode .ajf-barcode-video>.ajf-video-preview.ajf-video-preview-hidden>div{position:absolute;right:0;left:0;bottom:-1em;height:2em;box-sizing:border-box;padding:.5em;background-color:#fff;border-radius:.5em}ajf-barcode .ajf-barcode-video>.ajf-barcode-switch-camera{position:absolute;top:1em;right:1em;z-index:10;padding:.5em;border-radius:.5em;background-color:#fff}\n"] }]
76
76
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsL2JhcmNvZGUvc3JjL2JhcmNvZGUudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9iYXJjb2RlL3NyYy9iYXJjb2RlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFHVixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBRXpDLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFRO0lBQ2pELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJQUNsRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRjs7R0FFRztBQVNILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxVQUFVO0lBR2pELFlBQVksR0FBc0IsRUFBRSxRQUFtQjtRQUNyRCxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSHZCLG9CQUFlLEdBQWlCLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDbkQsYUFBUSxHQUFpQixZQUFZLENBQUMsS0FBSyxDQUFDO1FBRzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLFNBQVM7WUFBRSxPQUFPO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVzthQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQzsrR0ExQlUsbUJBQW1CO21HQUFuQixtQkFBbUIsc0NBRm5CLENBQUMsOEJBQThCLENBQUMsaURDcEQ3Qyx3aUVBeURBOzs0RkRIYSxtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7QWpmQmFyY29kZX0gZnJvbSAnQGFqZi9jb3JlL2JhcmNvZGUnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY29uc3QgQkFSQ09ERV9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBamZCYXJjb2RlQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG4vKipcbiAqIEFqZiBiYXJjb2RlIGNvbXBvbmVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWpmLWJhcmNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJ2JhcmNvZGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWydiYXJjb2RlLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0JBUkNPREVfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl0sXG59KVxuZXhwb3J0IGNsYXNzIEFqZkJhcmNvZGVDb21wb25lbnQgZXh0ZW5kcyBBamZCYXJjb2RlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgc291cmNlU2VsZWN0U3ViOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG4gIHJlc2V0U3ViOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG4gIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBzdXBlcihjZHIsIHJlbmRlcmVyKTtcbiAgICB0aGlzLnJlc2V0U3ViID0gdGhpcy5yZXNldEV2dC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZXR1cFZpZGVvU291cmNlU3ViKCkpO1xuICB9XG5cbiAgc2V0dXBWaWRlb1NvdXJjZVN1YigpIHtcbiAgICBpZiAodGhpcy52aWRlb1NvdXJjZVNlbGVjdCA9PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICB0aGlzLnNvdXJjZVNlbGVjdFN1Yi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc291cmNlU2VsZWN0U3ViID0gdGhpcy52aWRlb1NvdXJjZVNlbGVjdC52YWx1ZUNoYW5nZVxuICAgICAgLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0U3RyZWFtKCkpKVxuICAgICAgLnN1YnNjcmliZShjID0+IGNvbnNvbGUubG9nKGMpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRWaWRlb1N0cmVhbXMoKTtcbiAgICB0aGlzLnNldHVwVmlkZW9Tb3VyY2VTdWIoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdhJyk7XG4gICAgdGhpcy5zdG9wQ3VycmVudFN0cmVhbSgpO1xuICAgIHRoaXMuc291cmNlU2VsZWN0U3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yZXNldFN1Yi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWU7IGVsc2UgYmFyY29kZVwiPlxuICA8ZGl2IGNsYXNzPVwiYWpmLWNvZGUtY29udGFpbmVyXCI+XG4gICAgPHNwYW4+e3sgdmFsdWUgfX08L3NwYW4+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmVzZXQoKVwiPlxuICAgICAgPG1hdC1pY29uIHN0eWxlPVwidHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpXCI+Zm9ybWF0X2FsaWduX2p1c3RpZnk8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNiYXJjb2RlPlxuICA8bWF0LXRhYi1ncm91cCAoc2VsZWN0ZWRJbmRleENoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPG1hdC10YWIgW2xhYmVsXT1cIidJbWFnZSd8IHRyYW5zbG9jb1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImFqZi1kcm9wLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWpmLWRyb3B6b25lXCIgYWpmRG5kIChmaWxlKT1cIm9uU2VsZWN0RHJvcCgkZXZlbnQpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFqZi10ZXh0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhamYtY2VudGVyZWRcIj5cbiAgICAgICAgICAgICAgPGEgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxuICAgICAgICAgICAgICAgID57eydEcm9wIHlvdXIgaW1hZ2UgaGVyZSBvciBjbGljayB0byBzZWxlY3QnfHRyYW5zbG9jb319PC9hXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAjYmFyY29kZUltYWdlUHJldmlldyBjbGFzcz1cImFqZi1iYXJjb2RlLWltYWdlLXByZXZpZXdcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0XG4gICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0RmlsZSgkZXZlbnQpXCJcbiAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtdGFiPlxuICAgIDxtYXQtdGFiIFtsYWJlbF09XCInQ2FtZXJhJ3x0cmFuc2xvY29cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICBhcHBlYXJhbmNlPVwiZmlsbFwiXG4gICAgICAgIGNsYXNzPVwiYWpmLXZpZGVvLWRldmljZS1zZWxlY3RcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWxhYmVsPkNob29zZSBWaWRlbyBzb3VyY2U8L21hdC1sYWJlbD5cbiAgICAgICAgPG1hdC1zZWxlY3QgI3ZpZGVvU291cmNlU2VsZWN0XG4gICAgICAgICAgPjxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkZXZpY2Ugb2YgdmlkZW9EZXZpY2VzfGFzeW5jXCIgW3ZhbHVlXT1cImRldmljZS5kZXZpY2VJZFwiPlxuICAgICAgICAgICAge3tkZXZpY2UubGFiZWx9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj48L21hdC1zZWxlY3RcbiAgICAgICAgPjwvbWF0LWZvcm0tZmllbGRcbiAgICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJhamYtYmFyY29kZS12aWRlb1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VwcG9ydHNWaWRlb1N0cmVhbTsgZWxzZSBub1ZpZGVvXCI+XG4gICAgICAgICAgPGRpdiAjYmFyY29kZVZpZGVvUHJldmlldyBjbGFzcz1cImFqZi12aWRlby1wcmV2aWV3IGFqZi12aWRlby1wcmV2aWV3LWhpZGRlblwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDBcIj57eyB2YWx1ZSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDx2aWRlbyAjYmFyY29kZVZpZGVvIGF1dG9wbGF5IHBsYXlzaW5saW5lIG11dGVkPjwvdmlkZW8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vVmlkZW8+XG4gICAgICAgICAgPGRpdj5OTyBWSURFTzwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdGFiPlxuICA8L21hdC10YWItZ3JvdXA+XG48L25nLXRlbXBsYXRlPlxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsL2JhcmNvZGUvc3JjL2JhcmNvZGUudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9iYXJjb2RlL3NyYy9iYXJjb2RlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFHVixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBRXpDLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFRO0lBQ2pELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJQUNsRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRjs7R0FFRztBQVNILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxVQUFVO0lBR2pELFlBQVksR0FBc0IsRUFBRSxRQUFtQjtRQUNyRCxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSHZCLG9CQUFlLEdBQWlCLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDbkQsYUFBUSxHQUFpQixZQUFZLENBQUMsS0FBSyxDQUFDO1FBRzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLFNBQVM7WUFBRSxPQUFPO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVzthQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQzsrR0ExQlUsbUJBQW1CO21HQUFuQixtQkFBbUIsc0NBRm5CLENBQUMsOEJBQThCLENBQUMsaURDcEQ3Qyw0bEVBMERBOzs0RkRKYSxtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7QWpmQmFyY29kZX0gZnJvbSAnQGFqZi9jb3JlL2JhcmNvZGUnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY29uc3QgQkFSQ09ERV9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBamZCYXJjb2RlQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG4vKipcbiAqIEFqZiBiYXJjb2RlIGNvbXBvbmVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWpmLWJhcmNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJ2JhcmNvZGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWydiYXJjb2RlLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0JBUkNPREVfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl0sXG59KVxuZXhwb3J0IGNsYXNzIEFqZkJhcmNvZGVDb21wb25lbnQgZXh0ZW5kcyBBamZCYXJjb2RlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgc291cmNlU2VsZWN0U3ViOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG4gIHJlc2V0U3ViOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG4gIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBzdXBlcihjZHIsIHJlbmRlcmVyKTtcbiAgICB0aGlzLnJlc2V0U3ViID0gdGhpcy5yZXNldEV2dC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZXR1cFZpZGVvU291cmNlU3ViKCkpO1xuICB9XG5cbiAgc2V0dXBWaWRlb1NvdXJjZVN1YigpIHtcbiAgICBpZiAodGhpcy52aWRlb1NvdXJjZVNlbGVjdCA9PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICB0aGlzLnNvdXJjZVNlbGVjdFN1Yi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc291cmNlU2VsZWN0U3ViID0gdGhpcy52aWRlb1NvdXJjZVNlbGVjdC52YWx1ZUNoYW5nZVxuICAgICAgLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0U3RyZWFtKCkpKVxuICAgICAgLnN1YnNjcmliZShjID0+IGNvbnNvbGUubG9nKGMpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRWaWRlb1N0cmVhbXMoKTtcbiAgICB0aGlzLnNldHVwVmlkZW9Tb3VyY2VTdWIoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdhJyk7XG4gICAgdGhpcy5zdG9wQ3VycmVudFN0cmVhbSgpO1xuICAgIHRoaXMuc291cmNlU2VsZWN0U3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yZXNldFN1Yi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWU7IGVsc2UgYmFyY29kZVwiPlxuICA8ZGl2IGNsYXNzPVwiYWpmLWNvZGUtY29udGFpbmVyXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJhamYtY29kZS12YWx1ZVwiPnt7IHZhbHVlIH19PC9zcGFuPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWpmLWNvZGUtc2NhblwiIChjbGljayk9XCJyZXNldCgpXCI+XG4gICAgICA8bWF0LWljb24+cXJfY29kZV9zY2FubmVyPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuPnt7ICdTY2FuJyB8IHRyYW5zbG9jbyB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjYmFyY29kZT5cbiAgPG1hdC10YWItZ3JvdXAgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxtYXQtdGFiIFtsYWJlbF09XCInSW1hZ2UnfCB0cmFuc2xvY29cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhamYtZHJvcC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFqZi1kcm9wem9uZVwiIGFqZkRuZCAoZmlsZSk9XCJvblNlbGVjdERyb3AoJGV2ZW50KVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhamYtdGV4dC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWpmLWNlbnRlcmVkXCI+XG4gICAgICAgICAgICAgIDxhIG1hdC1idXR0b24gKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICAgICAgICA+e3snRHJvcCB5b3VyIGltYWdlIGhlcmUgb3IgY2xpY2sgdG8gc2VsZWN0J3x0cmFuc2xvY299fTwvYVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgI2JhcmNvZGVJbWFnZVByZXZpZXcgY2xhc3M9XCJhamYtYmFyY29kZS1pbWFnZS1wcmV2aWV3XCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdEZpbGUoJGV2ZW50KVwiXG4gICAgICAgIG11bHRpcGxlXG4gICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgICAvPlxuICAgIDwvbWF0LXRhYj5cbiAgICA8bWF0LXRhYiBbbGFiZWxdPVwiJ0NhbWVyYSd8dHJhbnNsb2NvXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgYXBwZWFyYW5jZT1cImZpbGxcIlxuICAgICAgICBjbGFzcz1cImFqZi12aWRlby1kZXZpY2Utc2VsZWN0XCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1sYWJlbD5DaG9vc2UgVmlkZW8gc291cmNlPC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0ICN2aWRlb1NvdXJjZVNlbGVjdFxuICAgICAgICAgID48bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIHZpZGVvRGV2aWNlc3xhc3luY1wiIFt2YWx1ZV09XCJkZXZpY2UuZGV2aWNlSWRcIj5cbiAgICAgICAgICAgIHt7ZGV2aWNlLmxhYmVsfX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+PC9tYXQtc2VsZWN0XG4gICAgICAgID48L21hdC1mb3JtLWZpZWxkXG4gICAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWpmLWJhcmNvZGUtdmlkZW9cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1cHBvcnRzVmlkZW9TdHJlYW07IGVsc2Ugbm9WaWRlb1wiPlxuICAgICAgICAgIDxkaXYgI2JhcmNvZGVWaWRlb1ByZXZpZXcgY2xhc3M9XCJhamYtdmlkZW8tcHJldmlldyBhamYtdmlkZW8tcHJldmlldy1oaWRkZW5cIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwXCI+e3sgdmFsdWUgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8dmlkZW8gI2JhcmNvZGVWaWRlbyBhdXRvcGxheSBwbGF5c2lubGluZSBtdXRlZD48L3ZpZGVvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub1ZpZGVvPlxuICAgICAgICAgIDxkaXY+Tk8gVklERU88L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXRhYj5cbiAgPC9tYXQtdGFiLWdyb3VwPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -40,10 +40,10 @@ export class AjfCalendarComponent extends AjfCalendar {
40
40
  super(cdr, service);
41
41
  }
42
42
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AjfCalendarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.AjfCalendarService }], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AjfCalendarComponent, selector: "ajf-calendar", providers: [CALENDAR_CONTROL_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0, template: "<div class=\"ajf-calendar-header\">\n <button (click)=\"prevPage()\" mat-mini-fab>&#8592;</button>\n <button (click)=\"previousViewMode()\" mat-button class=\"ajf-calendar-header-title\">\n {{ viewHeader | transloco }}\n </button>\n <button (click)=\"nextPage()\" mat-mini-fab>&#8594;</button>\n</div>\n<div class=\"ajf-calendar-row\" *ngIf=\"calendarHeaders.length > 0\">\n <div *ngFor=\"let calendarHeader of calendarHeaders\">\n {{ calendarHeader | transloco }}\n </div>\n</div>\n<div class=\"ajf-calendar-row\" *ngFor=\"let row of calendarRows\">\n <button\n *ngFor=\"let entry of row\"\n mat-raised-button\n [class.ajf-calendar-partial-selection]=\"entry.selected === 'partial'\"\n [disabled]=\"disabled || (entry.disabled || false)\"\n [color]=\"entry.selected !== 'none' ? 'warn' : undefined\"\n (click)=\"selectEntry(entry)\"\n >{{ entry|ajfCalendarEntryLabel }}</button>\n</div>\n", styles: ["ajf-calendar{display:flex;box-sizing:border-box;width:100%;height:320px;flex-direction:column}ajf-calendar .ajf-calendar-header,ajf-calendar .ajf-calendar-row{display:flex;box-sizing:border-box;width:100%;flex-direction:row}ajf-calendar .ajf-calendar-header{height:40px}ajf-calendar .ajf-calendar-header .ajf-calendar-header-title{flex:1;margin:0 10px}ajf-calendar .ajf-calendar-row{flex:1}ajf-calendar .ajf-calendar-row button,ajf-calendar .ajf-calendar-row div{flex:1;margin:3px}ajf-calendar .ajf-calendar-row div{line-height:40px;text-align:center}ajf-calendar .ajf-calendar-row .ajf-calendar-partial-selection :before{content:\"\";position:absolute;inset:0;background-color:#ffffff80}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "pipe", type: i1.AjfCalendarEntryLabelPipe, name: "ajfCalendarEntryLabel" }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AjfCalendarComponent, selector: "ajf-calendar", providers: [CALENDAR_CONTROL_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0, template: "<div class=\"ajf-calendar-header\">\n <button (click)=\"prevPage()\" mat-mini-fab>&#8592;</button>\n <button (click)=\"previousViewMode()\" mat-button class=\"ajf-calendar-header-title\">\n {{ viewHeader | transloco }}\n </button>\n <button (click)=\"nextPage()\" mat-mini-fab>&#8594;</button>\n</div>\n<div class=\"ajf-calendar-row\" *ngIf=\"calendarHeaders.length > 0\">\n <div *ngFor=\"let calendarHeader of calendarHeaders\">\n {{ calendarHeader | transloco }}\n </div>\n</div>\n<div class=\"ajf-calendar-row\" *ngFor=\"let row of calendarRows\">\n <button\n *ngFor=\"let entry of row\"\n mat-raised-button\n [class.ajf-calendar-partial-selection]=\"entry.selected === 'partial'\"\n [disabled]=\"disabled || (entry.disabled || false)\"\n [color]=\"entry.selected !== 'none' ? 'warn' : undefined\"\n (click)=\"selectEntry(entry)\"\n >{{ entry|ajfCalendarEntryLabel }}</button>\n</div>\n", styles: ["ajf-calendar{display:flex;box-sizing:border-box;width:100%;max-width:420px;height:320px;flex-direction:column;padding:8px;border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff);font-family:var(--ajf-font-sans, sans-serif)}ajf-calendar .ajf-calendar-header,ajf-calendar .ajf-calendar-row{display:flex;box-sizing:border-box;width:100%;flex-direction:row}ajf-calendar .ajf-calendar-header{height:40px;align-items:center}ajf-calendar .ajf-calendar-header .ajf-calendar-header-title{flex:1;margin:0 10px;color:var(--ajf-text, #1c1a17);font-weight:600}ajf-calendar .ajf-calendar-header .mat-mdc-mini-fab{width:32px;height:32px;box-shadow:none;background:var(--ajf-band, #faf8f5);color:var(--ajf-text-muted, #7a736a)}ajf-calendar .ajf-calendar-row{flex:1}ajf-calendar .ajf-calendar-row button,ajf-calendar .ajf-calendar-row div{flex:1;margin:3px}ajf-calendar .ajf-calendar-row div{line-height:40px;text-align:center}ajf-calendar .ajf-calendar-row:first-of-type div{color:var(--ajf-text-muted, #7a736a);font-family:var(--ajf-font-mono, monospace);font-size:11px;letter-spacing:.06em;text-transform:uppercase}ajf-calendar .ajf-calendar-row .mat-mdc-raised-button{min-width:0;padding:0;border:1px solid transparent;border-radius:var(--ajf-radius, 4px);box-shadow:none;background:var(--ajf-surface, #fff);color:var(--ajf-text, #1c1a17);font-family:var(--ajf-font-mono, monospace);font-size:13px}ajf-calendar .ajf-calendar-row .mat-mdc-raised-button:hover:not([disabled]){background:var(--ajf-band, #faf8f5)}ajf-calendar .ajf-calendar-row .mat-mdc-raised-button[disabled]{color:var(--ajf-text-faint, #a49c92)}ajf-calendar .ajf-calendar-row .mat-mdc-raised-button.mat-warn{background:var(--ajf-accent, #0f4c5c);color:var(--ajf-accent-fg, #fff)}ajf-calendar .ajf-calendar-row .ajf-calendar-partial-selection :before{content:\"\";position:absolute;inset:0;background-color:color-mix(in srgb,var(--ajf-surface, #fff) 50%,transparent)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "pipe", type: i1.AjfCalendarEntryLabelPipe, name: "ajfCalendarEntryLabel" }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
44
44
  }
45
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AjfCalendarComponent, decorators: [{
46
46
  type: Component,
47
- args: [{ selector: 'ajf-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [CALENDAR_CONTROL_VALUE_ACCESSOR], template: "<div class=\"ajf-calendar-header\">\n <button (click)=\"prevPage()\" mat-mini-fab>&#8592;</button>\n <button (click)=\"previousViewMode()\" mat-button class=\"ajf-calendar-header-title\">\n {{ viewHeader | transloco }}\n </button>\n <button (click)=\"nextPage()\" mat-mini-fab>&#8594;</button>\n</div>\n<div class=\"ajf-calendar-row\" *ngIf=\"calendarHeaders.length > 0\">\n <div *ngFor=\"let calendarHeader of calendarHeaders\">\n {{ calendarHeader | transloco }}\n </div>\n</div>\n<div class=\"ajf-calendar-row\" *ngFor=\"let row of calendarRows\">\n <button\n *ngFor=\"let entry of row\"\n mat-raised-button\n [class.ajf-calendar-partial-selection]=\"entry.selected === 'partial'\"\n [disabled]=\"disabled || (entry.disabled || false)\"\n [color]=\"entry.selected !== 'none' ? 'warn' : undefined\"\n (click)=\"selectEntry(entry)\"\n >{{ entry|ajfCalendarEntryLabel }}</button>\n</div>\n", styles: ["ajf-calendar{display:flex;box-sizing:border-box;width:100%;height:320px;flex-direction:column}ajf-calendar .ajf-calendar-header,ajf-calendar .ajf-calendar-row{display:flex;box-sizing:border-box;width:100%;flex-direction:row}ajf-calendar .ajf-calendar-header{height:40px}ajf-calendar .ajf-calendar-header .ajf-calendar-header-title{flex:1;margin:0 10px}ajf-calendar .ajf-calendar-row{flex:1}ajf-calendar .ajf-calendar-row button,ajf-calendar .ajf-calendar-row div{flex:1;margin:3px}ajf-calendar .ajf-calendar-row div{line-height:40px;text-align:center}ajf-calendar .ajf-calendar-row .ajf-calendar-partial-selection :before{content:\"\";position:absolute;inset:0;background-color:#ffffff80}\n"] }]
47
+ args: [{ selector: 'ajf-calendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [CALENDAR_CONTROL_VALUE_ACCESSOR], template: "<div class=\"ajf-calendar-header\">\n <button (click)=\"prevPage()\" mat-mini-fab>&#8592;</button>\n <button (click)=\"previousViewMode()\" mat-button class=\"ajf-calendar-header-title\">\n {{ viewHeader | transloco }}\n </button>\n <button (click)=\"nextPage()\" mat-mini-fab>&#8594;</button>\n</div>\n<div class=\"ajf-calendar-row\" *ngIf=\"calendarHeaders.length > 0\">\n <div *ngFor=\"let calendarHeader of calendarHeaders\">\n {{ calendarHeader | transloco }}\n </div>\n</div>\n<div class=\"ajf-calendar-row\" *ngFor=\"let row of calendarRows\">\n <button\n *ngFor=\"let entry of row\"\n mat-raised-button\n [class.ajf-calendar-partial-selection]=\"entry.selected === 'partial'\"\n [disabled]=\"disabled || (entry.disabled || false)\"\n [color]=\"entry.selected !== 'none' ? 'warn' : undefined\"\n (click)=\"selectEntry(entry)\"\n >{{ entry|ajfCalendarEntryLabel }}</button>\n</div>\n", styles: ["ajf-calendar{display:flex;box-sizing:border-box;width:100%;max-width:420px;height:320px;flex-direction:column;padding:8px;border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff);font-family:var(--ajf-font-sans, sans-serif)}ajf-calendar .ajf-calendar-header,ajf-calendar .ajf-calendar-row{display:flex;box-sizing:border-box;width:100%;flex-direction:row}ajf-calendar .ajf-calendar-header{height:40px;align-items:center}ajf-calendar .ajf-calendar-header .ajf-calendar-header-title{flex:1;margin:0 10px;color:var(--ajf-text, #1c1a17);font-weight:600}ajf-calendar .ajf-calendar-header .mat-mdc-mini-fab{width:32px;height:32px;box-shadow:none;background:var(--ajf-band, #faf8f5);color:var(--ajf-text-muted, #7a736a)}ajf-calendar .ajf-calendar-row{flex:1}ajf-calendar .ajf-calendar-row button,ajf-calendar .ajf-calendar-row div{flex:1;margin:3px}ajf-calendar .ajf-calendar-row div{line-height:40px;text-align:center}ajf-calendar .ajf-calendar-row:first-of-type div{color:var(--ajf-text-muted, #7a736a);font-family:var(--ajf-font-mono, monospace);font-size:11px;letter-spacing:.06em;text-transform:uppercase}ajf-calendar .ajf-calendar-row .mat-mdc-raised-button{min-width:0;padding:0;border:1px solid transparent;border-radius:var(--ajf-radius, 4px);box-shadow:none;background:var(--ajf-surface, #fff);color:var(--ajf-text, #1c1a17);font-family:var(--ajf-font-mono, monospace);font-size:13px}ajf-calendar .ajf-calendar-row .mat-mdc-raised-button:hover:not([disabled]){background:var(--ajf-band, #faf8f5)}ajf-calendar .ajf-calendar-row .mat-mdc-raised-button[disabled]{color:var(--ajf-text-faint, #a49c92)}ajf-calendar .ajf-calendar-row .mat-mdc-raised-button.mat-warn{background:var(--ajf-accent, #0f4c5c);color:var(--ajf-accent-fg, #fff)}ajf-calendar .ajf-calendar-row .ajf-calendar-partial-selection :before{content:\"\";position:absolute;inset:0;background-color:color-mix(in srgb,var(--ajf-surface, #fff) 50%,transparent)}\n"] }]
48
48
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.AjfCalendarService }] });
49
49
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9jYWxlbmRhci9zcmMvY2FsZW5kYXIudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC9jYWxlbmRhci9zcmMvY2FsZW5kYXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsV0FBVyxFQUFxQixNQUFNLG9CQUFvQixDQUFDO0FBQ25FLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUVqRCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBUTtJQUNsRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7SUFDbkQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUY7O0dBRUc7QUFTSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsV0FBVztJQUNuRCxZQUFZLEdBQXNCLEVBQUUsT0FBMkI7UUFDN0QsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0QixDQUFDOytHQUhVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVDQUZwQixDQUFDLCtCQUErQixDQUFDLGlEQy9DOUMsdTZCQXNCQTs7NEZEMkJhLG9CQUFvQjtrQkFSaEMsU0FBUzsrQkFDRSxjQUFjLGlCQUdULGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtBamZDYWxlbmRhciwgQWpmQ2FsZW5kYXJTZXJ2aWNlfSBmcm9tICdAYWpmL2NvcmUvY2FsZW5kYXInO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IENBTEVOREFSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFqZkNhbGVuZGFyQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG4vKipcbiAqIEFqZiBjYWxlbmRhciBjb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FqZi1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnY2FsZW5kYXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWydjYWxlbmRhci5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtDQUxFTkRBUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcbn0pXG5leHBvcnQgY2xhc3MgQWpmQ2FsZW5kYXJDb21wb25lbnQgZXh0ZW5kcyBBamZDYWxlbmRhciB7XG4gIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHNlcnZpY2U6IEFqZkNhbGVuZGFyU2VydmljZSkge1xuICAgIHN1cGVyKGNkciwgc2VydmljZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhamYtY2FsZW5kYXItaGVhZGVyXCI+XG4gIDxidXR0b24gKGNsaWNrKT1cInByZXZQYWdlKClcIiBtYXQtbWluaS1mYWI+JiM4NTkyOzwvYnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJwcmV2aW91c1ZpZXdNb2RlKClcIiBtYXQtYnV0dG9uIGNsYXNzPVwiYWpmLWNhbGVuZGFyLWhlYWRlci10aXRsZVwiPlxuICAgIHt7IHZpZXdIZWFkZXIgfCB0cmFuc2xvY28gfX1cbiAgPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cIm5leHRQYWdlKClcIiBtYXQtbWluaS1mYWI+JiM4NTk0OzwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYWpmLWNhbGVuZGFyLXJvd1wiICpuZ0lmPVwiY2FsZW5kYXJIZWFkZXJzLmxlbmd0aCA+IDBcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgY2FsZW5kYXJIZWFkZXIgb2YgY2FsZW5kYXJIZWFkZXJzXCI+XG4gICAge3sgY2FsZW5kYXJIZWFkZXIgfCB0cmFuc2xvY28gfX1cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJhamYtY2FsZW5kYXItcm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBjYWxlbmRhclJvd3NcIj5cbiAgPGJ1dHRvblxuICAgICAgKm5nRm9yPVwibGV0IGVudHJ5IG9mIHJvd1wiXG4gICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgW2NsYXNzLmFqZi1jYWxlbmRhci1wYXJ0aWFsLXNlbGVjdGlvbl09XCJlbnRyeS5zZWxlY3RlZCA9PT0gJ3BhcnRpYWwnXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCAoZW50cnkuZGlzYWJsZWQgfHwgZmFsc2UpXCJcbiAgICAgIFtjb2xvcl09XCJlbnRyeS5zZWxlY3RlZCAhPT0gJ25vbmUnID8gJ3dhcm4nIDogdW5kZWZpbmVkXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RFbnRyeShlbnRyeSlcIlxuICA+e3sgZW50cnl8YWpmQ2FsZW5kYXJFbnRyeUxhYmVsIH19PC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -36,7 +36,7 @@ export class CheckboxGroupItem extends CoreCheckboxGroupItem {
36
36
  this.notCheckedIcon = 'check_box_outline_blank';
37
37
  }
38
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxGroupItem, deps: [{ token: i1.AjfCheckboxGroup, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckboxGroupItem, selector: "ajf-checkbox-group-item", host: { properties: { "attr.id": "id", "class.ajf-checkbox-group-checked": "checked", "class.ajf-checkbox-group-disable": "disabled" } }, usesInheritance: true, ngImport: i0, template: "<button mat-button (click)=\"onInputChange($event)\"\n type=\"button\"\n [id]=\"checkboxId|async\"\n [attr.aria-checked]=\"checkedState|async\"\n [attr.aria-disabled]=\"disabledState|async\">\n <span class=\"ajf-checkbox-group-content\">\n <ng-content></ng-content>\n </span>\n <mat-icon>{{ icon|async }}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckboxGroupItem, selector: "ajf-checkbox-group-item", host: { properties: { "attr.id": "id", "class.ajf-checkbox-group-checked": "checked", "class.ajf-checkbox-group-disable": "disabled" } }, usesInheritance: true, ngImport: i0, template: "<button\n mat-button\n (click)=\"onInputChange($event)\"\n type=\"button\"\n [id]=\"checkboxId | async\"\n [class.ajf-checked]=\"checkedState | async\"\n [attr.aria-checked]=\"checkedState | async\"\n [attr.aria-disabled]=\"disabledState | async\"\n>\n <mat-icon>{{ icon | async }}</mat-icon>\n <span class=\"ajf-checkbox-group-content\">\n <ng-content></ng-content>\n </span>\n</button>\n", styles: ["ajf-checkbox-group-item{display:inline-flex;min-width:0}ajf-checkbox-group-item .mat-mdc-button{--mdc-text-button-label-text-weight: 400;--mat-text-button-horizontal-padding: 14px;--mat-text-button-with-icon-horizontal-padding: 14px;font-weight:400;height:auto;display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;box-sizing:border-box;min-width:0;min-height:var(--ajf-control-h, 44px);border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff);color:var(--ajf-text, #1c1a17);font-size:14px;letter-spacing:normal}ajf-checkbox-group-item .mat-mdc-button:hover{border-color:var(--ajf-accent, #0f4c5c)}ajf-checkbox-group-item .mat-mdc-button .mat-icon{flex:0 0 auto;width:18px;height:18px;margin:0;color:var(--ajf-text-faint, #a49c92);font-size:18px}ajf-checkbox-group-item .mat-mdc-button .mdc-button__label{min-width:0;overflow-wrap:anywhere;text-align:left}ajf-checkbox-group-item .mat-mdc-button.ajf-checked{border-color:var(--ajf-accent, #0f4c5c);background:var(--ajf-accent-soft, #e8f1f5);color:var(--ajf-accent, #0f4c5c)}ajf-checkbox-group-item .mat-mdc-button.ajf-checked .mat-icon{color:var(--ajf-accent, #0f4c5c)}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
40
  }
41
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxGroupItem, decorators: [{
42
42
  type: Component,
@@ -44,8 +44,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
44
44
  '[attr.id]': 'id',
45
45
  '[class.ajf-checkbox-group-checked]': 'checked',
46
46
  '[class.ajf-checkbox-group-disable]': 'disabled',
47
- }, template: "<button mat-button (click)=\"onInputChange($event)\"\n type=\"button\"\n [id]=\"checkboxId|async\"\n [attr.aria-checked]=\"checkedState|async\"\n [attr.aria-disabled]=\"disabledState|async\">\n <span class=\"ajf-checkbox-group-content\">\n <ng-content></ng-content>\n </span>\n <mat-icon>{{ icon|async }}</mat-icon>\n</button>\n" }]
47
+ }, template: "<button\n mat-button\n (click)=\"onInputChange($event)\"\n type=\"button\"\n [id]=\"checkboxId | async\"\n [class.ajf-checked]=\"checkedState | async\"\n [attr.aria-checked]=\"checkedState | async\"\n [attr.aria-disabled]=\"disabledState | async\"\n>\n <mat-icon>{{ icon | async }}</mat-icon>\n <span class=\"ajf-checkbox-group-content\">\n <ng-content></ng-content>\n </span>\n</button>\n", styles: ["ajf-checkbox-group-item{display:inline-flex;min-width:0}ajf-checkbox-group-item .mat-mdc-button{--mdc-text-button-label-text-weight: 400;--mat-text-button-horizontal-padding: 14px;--mat-text-button-with-icon-horizontal-padding: 14px;font-weight:400;height:auto;display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;box-sizing:border-box;min-width:0;min-height:var(--ajf-control-h, 44px);border:1px solid var(--ajf-border-strong, #d5cfc6);border-radius:var(--ajf-radius, 4px);background:var(--ajf-surface, #fff);color:var(--ajf-text, #1c1a17);font-size:14px;letter-spacing:normal}ajf-checkbox-group-item .mat-mdc-button:hover{border-color:var(--ajf-accent, #0f4c5c)}ajf-checkbox-group-item .mat-mdc-button .mat-icon{flex:0 0 auto;width:18px;height:18px;margin:0;color:var(--ajf-text-faint, #a49c92);font-size:18px}ajf-checkbox-group-item .mat-mdc-button .mdc-button__label{min-width:0;overflow-wrap:anywhere;text-align:left}ajf-checkbox-group-item .mat-mdc-button.ajf-checked{border-color:var(--ajf-accent, #0f4c5c);background:var(--ajf-accent-soft, #e8f1f5);color:var(--ajf-accent, #0f4c5c)}ajf-checkbox-group-item .mat-mdc-button.ajf-checked .mat-icon{color:var(--ajf-accent, #0f4c5c)}\n"] }]
48
48
  }], ctorParameters: () => [{ type: i1.AjfCheckboxGroup, decorators: [{
49
49
  type: Optional
50
50
  }] }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsL2NoZWNrYm94LWdyb3VwL3NyYy9jaGVja2JveC1ncm91cC1pdGVtLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwvY2hlY2tib3gtZ3JvdXAvc3JjL2NoZWNrYm94LWdyb3VwLWl0ZW0uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBRUwsb0JBQW9CLElBQUkscUJBQXFCLEdBQzlDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWM5RixNQUFNLE9BQU8saUJBQXFCLFNBQVEscUJBQXdCO0lBQ2hFO0lBQ0Usb0ZBQW9GO0lBQ3BGLCtDQUErQztJQUNuQyxhQUFrQztRQUU5QyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyx5QkFBeUIsQ0FBQztJQUNsRCxDQUFDOytHQVRVLGlCQUFpQjttR0FBakIsaUJBQWlCLGdPQ3hDOUIsNFZBVUE7OzRGRDhCYSxpQkFBaUI7a0JBWjdCLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixvQ0FBb0MsRUFBRSxTQUFTO3dCQUMvQyxvQ0FBb0MsRUFBRSxVQUFVO3FCQUNqRDs7MEJBTUUsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtcbiAgQWpmQ2hlY2tib3hHcm91cCxcbiAgQWpmQ2hlY2tib3hHcm91cEl0ZW0gYXMgQ29yZUNoZWNrYm94R3JvdXBJdGVtLFxufSBmcm9tICdAYWpmL2NvcmUvY2hlY2tib3gtZ3JvdXAnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPcHRpb25hbCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhamYtY2hlY2tib3gtZ3JvdXAtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnY2hlY2tib3gtZ3JvdXAtaXRlbS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2NoZWNrYm94LWdyb3VwLWl0ZW0uc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbY2xhc3MuYWpmLWNoZWNrYm94LWdyb3VwLWNoZWNrZWRdJzogJ2NoZWNrZWQnLFxuICAgICdbY2xhc3MuYWpmLWNoZWNrYm94LWdyb3VwLWRpc2FibGVdJzogJ2Rpc2FibGVkJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hHcm91cEl0ZW08VD4gZXh0ZW5kcyBDb3JlQ2hlY2tib3hHcm91cEl0ZW08VD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICAvLyBgQWpmQ2hlY2tib3hHcm91cEl0ZW1gIGlzIGNvbW1vbmx5IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBhIGBBamZDaGVja2JveEdyb3VwYC5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGxpZ2h0d2VpZ2h0LXRva2Vuc1xuICAgIEBPcHRpb25hbCgpIGNoZWNrYm94R3JvdXA6IEFqZkNoZWNrYm94R3JvdXA8VD4sXG4gICkge1xuICAgIHN1cGVyKGNoZWNrYm94R3JvdXApO1xuICAgIHRoaXMuY2hlY2tlZEljb24gPSAnY2hlY2tfYm94JztcbiAgICB0aGlzLm5vdENoZWNrZWRJY29uID0gJ2NoZWNrX2JveF9vdXRsaW5lX2JsYW5rJztcbiAgfVxufVxuIiwiPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtpZF09XCJjaGVja2JveElkfGFzeW5jXCJcbiAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiY2hlY2tlZFN0YXRlfGFzeW5jXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkU3RhdGV8YXN5bmNcIj5cbiAgPHNwYW4gY2xhc3M9XCJhamYtY2hlY2tib3gtZ3JvdXAtY29udGVudFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9zcGFuPlxuICA8bWF0LWljb24+e3sgaWNvbnxhc3luYyB9fTwvbWF0LWljb24+XG48L2J1dHRvbj5cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsL2NoZWNrYm94LWdyb3VwL3NyYy9jaGVja2JveC1ncm91cC1pdGVtLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWF0ZXJpYWwvY2hlY2tib3gtZ3JvdXAvc3JjL2NoZWNrYm94LWdyb3VwLWl0ZW0uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBRUwsb0JBQW9CLElBQUkscUJBQXFCLEdBQzlDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWM5RixNQUFNLE9BQU8saUJBQXFCLFNBQVEscUJBQXdCO0lBQ2hFO0lBQ0Usb0ZBQW9GO0lBQ3BGLCtDQUErQztJQUNuQyxhQUFrQztRQUU5QyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyx5QkFBeUIsQ0FBQztJQUNsRCxDQUFDOytHQVRVLGlCQUFpQjttR0FBakIsaUJBQWlCLGdPQ3hDOUIsb1pBY0E7OzRGRDBCYSxpQkFBaUI7a0JBWjdCLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixvQ0FBb0MsRUFBRSxTQUFTO3dCQUMvQyxvQ0FBb0MsRUFBRSxVQUFVO3FCQUNqRDs7MEJBTUUsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtcbiAgQWpmQ2hlY2tib3hHcm91cCxcbiAgQWpmQ2hlY2tib3hHcm91cEl0ZW0gYXMgQ29yZUNoZWNrYm94R3JvdXBJdGVtLFxufSBmcm9tICdAYWpmL2NvcmUvY2hlY2tib3gtZ3JvdXAnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPcHRpb25hbCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhamYtY2hlY2tib3gtZ3JvdXAtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnY2hlY2tib3gtZ3JvdXAtaXRlbS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2NoZWNrYm94LWdyb3VwLWl0ZW0uc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbY2xhc3MuYWpmLWNoZWNrYm94LWdyb3VwLWNoZWNrZWRdJzogJ2NoZWNrZWQnLFxuICAgICdbY2xhc3MuYWpmLWNoZWNrYm94LWdyb3VwLWRpc2FibGVdJzogJ2Rpc2FibGVkJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hHcm91cEl0ZW08VD4gZXh0ZW5kcyBDb3JlQ2hlY2tib3hHcm91cEl0ZW08VD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICAvLyBgQWpmQ2hlY2tib3hHcm91cEl0ZW1gIGlzIGNvbW1vbmx5IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBhIGBBamZDaGVja2JveEdyb3VwYC5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGxpZ2h0d2VpZ2h0LXRva2Vuc1xuICAgIEBPcHRpb25hbCgpIGNoZWNrYm94R3JvdXA6IEFqZkNoZWNrYm94R3JvdXA8VD4sXG4gICkge1xuICAgIHN1cGVyKGNoZWNrYm94R3JvdXApO1xuICAgIHRoaXMuY2hlY2tlZEljb24gPSAnY2hlY2tfYm94JztcbiAgICB0aGlzLm5vdENoZWNrZWRJY29uID0gJ2NoZWNrX2JveF9vdXRsaW5lX2JsYW5rJztcbiAgfVxufVxuIiwiPGJ1dHRvblxuICBtYXQtYnV0dG9uXG4gIChjbGljayk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgW2lkXT1cImNoZWNrYm94SWQgfCBhc3luY1wiXG4gIFtjbGFzcy5hamYtY2hlY2tlZF09XCJjaGVja2VkU3RhdGUgfCBhc3luY1wiXG4gIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkU3RhdGUgfCBhc3luY1wiXG4gIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRTdGF0ZSB8IGFzeW5jXCJcbj5cbiAgPG1hdC1pY29uPnt7IGljb24gfCBhc3luYyB9fTwvbWF0LWljb24+XG4gIDxzcGFuIGNsYXNzPVwiYWpmLWNoZWNrYm94LWdyb3VwLWNvbnRlbnRcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19