ngx-edu-sharing-metaqs2 0.9.32 → 0.9.35

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 (58) hide show
  1. package/README.md +31 -0
  2. package/_index.scss +8 -0
  3. package/esm2022/lib/collection-count-history/collection-count-history.component.mjs +46 -32
  4. package/esm2022/lib/collection-count-history/monthpicker/monthpicker.component.mjs +7 -4
  5. package/esm2022/lib/components/donut-chart/donut-chart.component.mjs +14 -14
  6. package/esm2022/lib/components/donut-chart/donut-chart.model.mjs +1 -1
  7. package/esm2022/lib/components/donut-chart/donut-chart.pipe.mjs +6 -5
  8. package/esm2022/lib/components/donut-chart-tooltip/donut-chart-tooltip.component.mjs +79 -0
  9. package/esm2022/lib/components/filter/datepicker/datepicker.component.mjs +3 -8
  10. package/esm2022/lib/components/node-list/node-list.component.mjs +13 -9
  11. package/esm2022/lib/components/quality-matrix/quality_matrix.mjs +195 -36
  12. package/esm2022/lib/components/quality-matrix/scroll-marker.directive.mjs +17 -0
  13. package/esm2022/lib/config-helper.service.mjs +5 -4
  14. package/esm2022/lib/core/tooltip.service.mjs +146 -0
  15. package/esm2022/lib/counts-with-history/counts-with-history.component.mjs +87 -84
  16. package/esm2022/lib/java-api/api/authProxyController.service.mjs +12 -93
  17. package/esm2022/lib/java-api/api/collectionAPI.service.mjs +91 -178
  18. package/esm2022/lib/java-api/api/editorsAPI.service.mjs +14 -102
  19. package/esm2022/lib/java-api/api/filterAPI.service.mjs +50 -129
  20. package/esm2022/lib/java-api/api/replicationSourceAPI.service.mjs +20 -130
  21. package/esm2022/lib/java-api/api.base.service.mjs +66 -0
  22. package/esm2022/lib/java-api/configuration.mjs +9 -1
  23. package/esm2022/lib/java-api/model/missingAttributeResult.mjs +2 -0
  24. package/esm2022/lib/java-api/model/models.mjs +2 -1
  25. package/esm2022/lib/ng-meta-widgets-lib.module.mjs +19 -12
  26. package/esm2022/lib/tree-collection-details/tree-collection-details.component.mjs +3 -7
  27. package/esm2022/lib/tree-search-counts/tree-search-counts.component.mjs +4 -6
  28. package/esm2022/public-api.mjs +6 -4
  29. package/esm2022/web-components.mjs +36 -0
  30. package/fesm2022/ngx-edu-sharing-metaqs2.mjs +1170 -1239
  31. package/fesm2022/ngx-edu-sharing-metaqs2.mjs.map +1 -1
  32. package/lib/collection-count-history/collection-count-history.component.d.ts +1 -0
  33. package/lib/collection-count-history/monthpicker/monthpicker.component.d.ts +2 -1
  34. package/lib/components/donut-chart/donut-chart.component.d.ts +1 -1
  35. package/lib/components/donut-chart/donut-chart.model.d.ts +1 -0
  36. package/lib/components/donut-chart/donut-chart.pipe.d.ts +1 -1
  37. package/lib/components/donut-chart-tooltip/donut-chart-tooltip.component.d.ts +14 -0
  38. package/lib/components/node-list/node-list.component.d.ts +9 -5
  39. package/lib/components/quality-matrix/quality_matrix.d.ts +25 -6
  40. package/lib/components/quality-matrix/scroll-marker.directive.d.ts +7 -0
  41. package/lib/config-helper.service.d.ts +2 -0
  42. package/lib/core/tooltip.service.d.ts +61 -0
  43. package/lib/counts-with-history/counts-with-history.component.d.ts +27 -25
  44. package/lib/java-api/api/authProxyController.service.d.ts +4 -9
  45. package/lib/java-api/api/collectionAPI.service.d.ts +47 -25
  46. package/lib/java-api/api/editorsAPI.service.d.ts +5 -10
  47. package/lib/java-api/api/filterAPI.service.d.ts +27 -9
  48. package/lib/java-api/api/replicationSourceAPI.service.d.ts +4 -9
  49. package/lib/java-api/api.base.service.d.ts +12 -0
  50. package/lib/java-api/configuration.d.ts +3 -1
  51. package/lib/java-api/model/missingAttributeResult.d.ts +16 -0
  52. package/lib/java-api/model/models.d.ts +1 -0
  53. package/lib/ng-meta-widgets-lib.module.d.ts +34 -32
  54. package/package.json +4 -1
  55. package/public-api.d.ts +5 -3
  56. package/web-components.d.ts +7 -0
  57. package/esm2022/lib/materialtypes-by-sources/materialtypes-by-sources.component.mjs +0 -148
  58. package/lib/materialtypes-by-sources/materialtypes-by-sources.component.d.ts +0 -43
package/README.md CHANGED
@@ -39,6 +39,9 @@ You need to install the lib with the `--force` flag:
39
39
  `npm install ngx-edu-sharing-metaqs2 --save --force`
40
40
 
41
41
  ## Usage
42
+
43
+ ### Module
44
+
42
45
  This library is provided as an Angular module.
43
46
  To use it in your application, import the `NgMetaWidgetsModule` in your `app.module.ts` file:
44
47
 
@@ -68,8 +71,36 @@ export const appConfig: ApplicationConfig = {
68
71
 
69
72
  ```
70
73
 
74
+ or as webcomponents in your `script.js` file (as an example we use the `CountsWithHistoryComponent`):
75
+ ```javascript
76
+ import { createRegister, CountsWithHistoryComponent, … } from 'ngx-edu-sharing-metaqs2';
77
+
78
+ // create the register function once and use it for all component registrations
79
+ const register = createRegister({
80
+ eduSharingPath: environment.eduSharingPath,
81
+ apiPath: environment.apiPath,
82
+ production: true
83
+ });
84
+
85
+ // register as many components as you like
86
+ register('metaqs2-counts-with-history', CountsWithHistoryComponent);
87
+
88
+ ```
89
+
71
90
  where `eduSharingPath` and `apiPath` are the base paths to the edu-sharing frontend (e.g. https://redaktion.openeduhub.net/edu-sharing) and the MetaDataQualityService backend (e.g. https://metaqs-2.staging.openeduhub.net) respectively.
72
91
 
92
+ ### Theming
93
+
94
+ The library provides mixins for theming. To use them, import the `_index.scss` file in your main `styles.scss` file and include the mixins in your own styles:
95
+
96
+ ```scss
97
+ @use '~ngx-edu-sharing-metaqs2' as metaqs2-widgets;
98
+
99
+ :root {
100
+ @include metaqs2-widgets.donut-chart-tooltip-background-color(white);
101
+ }
102
+ ```
103
+
73
104
  ## Widgets
74
105
  This library provides the following widgets:
75
106
 
package/_index.scss ADDED
@@ -0,0 +1,8 @@
1
+ @mixin donut-chart-tooltip-background-color($color) {
2
+ --metaqs2-donut-chart-tooltip-background-color: #{$color};
3
+ }
4
+ .donut-chart-tooltip {
5
+ background-color: var(--metaqs2-donut-chart-tooltip-background-color);
6
+ box-shadow: 0 0.75rem 1rem rgba(0, 0, 0, 0.3);
7
+ border-radius: 0 0.5rem 0.5rem 0.5rem;
8
+ }
@@ -1,16 +1,18 @@
1
- import { Component, Input, signal, ViewChild } from '@angular/core';
1
+ import { Component, effect, Input, signal, ViewChild } from '@angular/core';
2
2
  import { BaseChartDirective } from 'ng2-charts';
3
3
  import { DateTime } from 'luxon';
4
4
  import { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';
5
- import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
5
+ import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
6
6
  import { MonthpickerComponent } from './monthpicker/monthpicker.component';
7
7
  import { BehaviorSubject } from 'rxjs';
8
- import { AsyncPipe, NgClass, NgIf } from '@angular/common';
8
+ import { AsyncPipe, NgIf } from '@angular/common';
9
9
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
- import { distinctUntilChanged, finalize, take } from 'rxjs/operators';
10
+ import { distinctUntilChanged, filter, finalize, map, switchMap, take, tap } from 'rxjs/operators';
11
+ import { MatSlideToggle } from '@angular/material/slide-toggle';
11
12
  import { ProgressSpinnerComponent } from '../components/loading_indicator/progress-spinner/progress-spinner.component';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "../meta-api.service";
15
+ import * as i2 from "@angular/forms";
14
16
  export class CollectionCountHistoryComponent {
15
17
  constructor(metaApi, destroyRef) {
16
18
  this.metaApi = metaApi;
@@ -33,20 +35,35 @@ export class CollectionCountHistoryComponent {
33
35
  });
34
36
  this.granularities = ['year', 'month', 'week', 'day'];
35
37
  this.granularity = new FormControl('month', { nonNullable: true });
38
+ this.isHistoryEnabled = signal(true);
39
+ effect(() => {
40
+ this.range.controls.end.reset();
41
+ if (!this.isHistoryEnabled()) {
42
+ this.range.controls.start.setValue(this.range.controls.end.value);
43
+ }
44
+ else {
45
+ this.range.controls.start.reset();
46
+ }
47
+ });
36
48
  }
37
49
  ngOnInit() {
38
50
  this.registerDateRangeFilter();
39
51
  }
40
52
  registerDateRangeFilter() {
41
53
  this.range.valueChanges
42
- .pipe(takeUntilDestroyed(this.destroyRef),
54
+ .pipe(filter((range) => !!range.start && !!range.end),
43
55
  //the Material Datepicker emits the initial values 4 times when it starts, so we need to distinct them
44
56
  distinctUntilChanged((prev, curr) => {
45
57
  return prev.start === curr.start && prev.end === curr.end;
46
- }))
47
- .subscribe(() => {
48
- this.loadData();
49
- });
58
+ }), switchMap((range) => {
59
+ if (this.isHistoryEnabled()) {
60
+ return this.loadData(range.start, range.end);
61
+ }
62
+ else {
63
+ return this.loadData(range.end.startOf(this.granularity.value), range.end);
64
+ }
65
+ }), takeUntilDestroyed(this.destroyRef))
66
+ .subscribe();
50
67
  this.metaApi
51
68
  .getTimerangeFilter()
52
69
  .pipe(take(1))
@@ -65,33 +82,29 @@ export class CollectionCountHistoryComponent {
65
82
  }
66
83
  });
67
84
  }
68
- loadData() {
85
+ loadData(start, end) {
69
86
  this.isLoading.set(true);
70
87
  const request = {
71
- startDate: this.range.value.start?.toISO(),
72
- endDate: this.range.value.end?.toISO(),
88
+ startDate: start?.toISO(),
89
+ endDate: end?.toISO(),
73
90
  granularity: this.granularity.value,
74
91
  };
75
- this.metaApi
76
- .getEditorialMaterialCounts(request)
77
- .pipe(take(1), finalize(() => this.isLoading.set(false)))
78
- .subscribe((response) => {
79
- const datapoints = response.map((data) => {
80
- return {
81
- data: data.counts.map((count) => {
82
- return {
83
- date: DateTime.fromISO(count.date).toFormat('LLLL yyyy'),
84
- count: count.count,
85
- };
86
- }),
87
- label: data.name,
88
- };
89
- });
92
+ return this.metaApi.getEditorialMaterialCounts(request).pipe(map((response) => response.map((data) => {
93
+ return {
94
+ data: data.counts.map((count) => {
95
+ return {
96
+ date: DateTime.fromISO(count.date).toFormat('LLLL yyyy'),
97
+ count: count.count,
98
+ };
99
+ }),
100
+ label: data.name,
101
+ };
102
+ })), take(1), tap((datapoints) => {
90
103
  this.datapoints$.next(datapoints);
91
- });
104
+ }), finalize(() => this.isLoading.set(false)));
92
105
  }
93
106
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollectionCountHistoryComponent, deps: [{ token: i1.MetaApiService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CollectionCountHistoryComponent, isStandalone: true, selector: "metaqs2-collection-count-history", inputs: { pageTitle: "pageTitle" }, viewQueries: [{ propertyName: "chart", first: true, predicate: BaseChartDirective, descendants: true }], ngImport: i0, template: "<mat-card appearance=\"outlined\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n {{ pageTitle }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <metaqs2-monthpicker\n [inputGroup]=\"range\"></metaqs2-monthpicker>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n\n <div [ngClass]=\"{'while-loading': isLoading()}\">\n <canvas\n baseChart\n [datasets]=\"(datapoints$ | async) || []\"\n [options]=\"lineChartOptions\"\n [type]=\"'line'\"\n ></canvas>\n </div>\n </mat-card-content>\n</mat-card>", styles: [".while-loading{filter:blur(2px)}\n"], dependencies: [{ kind: "directive", type: BaseChartDirective, selector: "canvas[baseChart]", inputs: ["type", "legend", "data", "options", "plugins", "labels", "datasets"], outputs: ["chartClick", "chartHover"], exportAs: ["base-chart"] }, { kind: "component", type: MonthpickerComponent, selector: "metaqs2-monthpicker", inputs: ["startView", "inputGroup"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ProgressSpinnerComponent, selector: "metaqs2-progress-spinner", inputs: ["color", "diameter", "strokeWidth", "backdropEnabled", "positionGloballyCenter", "displayProgressSpinner"] }] }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CollectionCountHistoryComponent, isStandalone: true, selector: "metaqs2-collection-count-history", inputs: { pageTitle: "pageTitle" }, viewQueries: [{ propertyName: "chart", first: true, predicate: BaseChartDirective, descendants: true }], ngImport: i0, template: "<mat-card appearance=\"outlined\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n {{ pageTitle }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <div style=\"display: flex; gap: 0.5rem; align-items: center\">\n <mat-slide-toggle [(ngModel)]=\"isHistoryEnabled\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n <metaqs2-monthpicker *ngIf=\"isHistoryEnabled()\"\n [inputGroup]=\"range\"></metaqs2-monthpicker>\n </div>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n\n <div [class.while-loading]=\"isLoading()\">\n <canvas\n baseChart\n [datasets]=\"(datapoints$ | async) || []\"\n [options]=\"lineChartOptions\"\n [type]=\"'line'\"\n ></canvas>\n </div>\n </mat-card-content>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}\n"], dependencies: [{ kind: "directive", type: BaseChartDirective, selector: "canvas[baseChart]", inputs: ["type", "legend", "data", "options", "plugins", "labels", "datasets"], outputs: ["chartClick", "chartHover"], exportAs: ["base-chart"] }, { kind: "component", type: MonthpickerComponent, selector: "metaqs2-monthpicker", inputs: ["startView", "inputGroup", "disabled"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ProgressSpinnerComponent, selector: "metaqs2-progress-spinner", inputs: ["color", "diameter", "strokeWidth", "backdropEnabled", "positionGloballyCenter", "displayProgressSpinner"] }] }); }
95
108
  }
96
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CollectionCountHistoryComponent, decorators: [{
97
110
  type: Component,
@@ -104,14 +117,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104
117
  MatCardContent,
105
118
  AsyncPipe,
106
119
  ReactiveFormsModule,
107
- NgClass,
108
120
  NgIf,
121
+ MatSlideToggle,
122
+ FormsModule,
109
123
  ProgressSpinnerComponent,
110
- ], template: "<mat-card appearance=\"outlined\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n {{ pageTitle }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <metaqs2-monthpicker\n [inputGroup]=\"range\"></metaqs2-monthpicker>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n\n <div [ngClass]=\"{'while-loading': isLoading()}\">\n <canvas\n baseChart\n [datasets]=\"(datapoints$ | async) || []\"\n [options]=\"lineChartOptions\"\n [type]=\"'line'\"\n ></canvas>\n </div>\n </mat-card-content>\n</mat-card>", styles: [".while-loading{filter:blur(2px)}\n"] }]
124
+ ], template: "<mat-card appearance=\"outlined\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title>\n {{ pageTitle }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <div style=\"display: flex; gap: 0.5rem; align-items: center\">\n <mat-slide-toggle [(ngModel)]=\"isHistoryEnabled\" [disabled]=\"isLoading()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n <metaqs2-monthpicker *ngIf=\"isHistoryEnabled()\"\n [inputGroup]=\"range\"></metaqs2-monthpicker>\n </div>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n\n <div [class.while-loading]=\"isLoading()\">\n <canvas\n baseChart\n [datasets]=\"(datapoints$ | async) || []\"\n [options]=\"lineChartOptions\"\n [type]=\"'line'\"\n ></canvas>\n </div>\n </mat-card-content>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}\n"] }]
111
125
  }], ctorParameters: () => [{ type: i1.MetaApiService }, { type: i0.DestroyRef }], propDecorators: { chart: [{
112
126
  type: ViewChild,
113
127
  args: [BaseChartDirective]
114
128
  }], pageTitle: [{
115
129
  type: Input
116
130
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb2xsZWN0aW9uLWNvdW50LWhpc3RvcnkvY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb2xsZWN0aW9uLWNvdW50LWhpc3RvcnkvY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztB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QUs7eUJBQ25CLENBQUM7b0JBQ0osQ0FBQyxDQUFDO29CQUNGLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDakIsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQTVGVSwrQkFBK0I7bUdBQS9CLCtCQUErQix1S0FDL0Isa0JBQWtCLGdEQ3JDL0Isc3JCQW9CVyw0RkRDUCxrQkFBa0IsK01BQ2xCLG9CQUFvQixxR0FDcEIsT0FBTyxvR0FDUCxhQUFhLDREQUNiLFlBQVksNkZBQ1osY0FBYyx3REFDZCxTQUFTLDZDQUNULG1CQUFtQiwrQkFDbkIsT0FBTyxvRkFDUCxJQUFJLDZGQUNKLHdCQUF3Qjs7NEZBS2YsK0JBQStCO2tCQW5CM0MsU0FBUzsrQkFDRSxrQ0FBa0MsY0FDaEMsSUFBSSxXQUNQO3dCQUNQLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFNBQVM7d0JBQ1QsbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLElBQUk7d0JBQ0osd0JBQXdCO3FCQUN6Qjs0R0FLOEIsS0FBSztzQkFBbkMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBd0I3QixTQUFTO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIElucHV0LCBPbkluaXQsIHNpZ25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YXNldCB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IEJhc2VDaGFydERpcmVjdGl2ZSB9IGZyb20gJ25nMi1jaGFydHMnO1xuaW1wb3J0IHsgRGF0ZVRpbWUsIERhdGVUaW1lVW5pdCB9IGZyb20gJ2x1eG9uJztcbmltcG9ydCB7IE1hdENhcmQsIE1hdENhcmRDb250ZW50LCBNYXRDYXJkSGVhZGVyLCBNYXRDYXJkVGl0bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1vbnRocGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9tb250aHBpY2tlci9tb250aHBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ291bnQgfSBmcm9tICcuLi9qYXZhLWFwaSc7XG5pbXBvcnQgeyBNZXRhQXBpU2VydmljZSB9IGZyb20gJy4uL21ldGEtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbmFsaXplLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWF0ZXJpYWxDb3VudEZpbHRlciB9IGZyb20gJy4uL2phdmEtYXBpJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9hZGluZ19pbmRpY2F0b3IvcHJvZ3Jlc3Mtc3Bpbm5lci9wcm9ncmVzcy1zcGlubmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEJhc2VDaGFydERpcmVjdGl2ZSxcbiAgICBNb250aHBpY2tlckNvbXBvbmVudCxcbiAgICBNYXRDYXJkLFxuICAgIE1hdENhcmRIZWFkZXIsXG4gICAgTWF0Q2FyZFRpdGxlLFxuICAgIE1hdENhcmRDb250ZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nQ2xhc3MsXG4gICAgTmdJZixcbiAgICBQcm9ncmVzc1NwaW5uZXJDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xsZWN0aW9uLWNvdW50LWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5LmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbkNvdW50SGlzdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoQmFzZUNoYXJ0RGlyZWN0aXZlKSBjaGFydD86IEJhc2VDaGFydERpcmVjdGl2ZTtcbiAgcHJvdGVjdGVkIGxpbmVDaGFydE9wdGlvbnM6IENoYXJ0Q29uZmlndXJhdGlvblsnb3B0aW9ucyddID0ge1xuICAgIHBhcnNpbmc6IHtcbiAgICAgIHhBeGlzS2V5OiAnZGF0ZScsXG4gICAgICB5QXhpc0tleTogJ2NvdW50JyxcbiAgICB9LFxuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogJ01vbnRzZXJyYXQnLFxuICAgIH0sXG4gICAgYW5pbWF0aW9uOiBmYWxzZSxcbiAgfTtcbiAgcHJvdGVjdGVkIGRhdGFwb2ludHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGFydERhdGFzZXQ8J2xpbmUnLCBDb3VudFtdPltdPihbXSk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHJlYWRvbmx5IHJhbmdlOiBGb3JtR3JvdXA8e1xuICAgIHN0YXJ0OiBGb3JtQ29udHJvbDxEYXRlVGltZTxib29sZWFuPj47XG4gICAgZW5kOiBGb3JtQ29udHJvbDxEYXRlVGltZTxib29sZWFuPj47XG4gIH0+ID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgIGVuZDogbmV3IEZvcm1Db250cm9sKCksXG4gIH0pO1xuICBwcm90ZWN0ZWQgZ3JhbnVsYXJpdGllczogRGF0ZVRpbWVVbml0W10gPSBbJ3llYXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknXTtcbiAgcHJvdGVjdGVkIGdyYW51bGFyaXR5ID0gbmV3IEZvcm1Db250cm9sPERhdGVUaW1lVW5pdD4oJ21vbnRoJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcblxuICBASW5wdXQoKVxuICBwYWdlVGl0bGU6IHN0cmluZztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtZXRhQXBpOiBNZXRhQXBpU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXJEYXRlUmFuZ2VGaWx0ZXIoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyRGF0ZVJhbmdlRmlsdGVyKCkge1xuICAgIHRoaXMucmFuZ2UudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgIC8vdGhlIE1hdGVyaWFsIERhdGVwaWNrZXIgZW1pdHMgdGhlIGluaXRpYWwgdmFsdWVzIDQgdGltZXMgd2hlbiBpdCBzdGFydHMsIHNvIHdlIG5lZWQgdG8gZGlzdGluY3QgdGhlbVxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4ge1xuICAgICAgICAgIHJldHVybiBwcmV2LnN0YXJ0ID09PSBjdXJyLnN0YXJ0ICYmIHByZXYuZW5kID09PSBjdXJyLmVuZDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWREYXRhKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLm1ldGFBcGlcbiAgICAgIC5nZXRUaW1lcmFuZ2VGaWx0ZXIoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJhbmdlRmlsdGVyKSA9PiB7XG4gICAgICAgIGlmIChyYW5nZUZpbHRlcikge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IERhdGVUaW1lLmZyb21JU08ocmFuZ2VGaWx0ZXIudmFsdWVzLmZpbmQoKHYpID0+IHYuaWQgPT09ICdyYW5nZVN0YXJ0Jyk/LmxhYmVsISwge1xuICAgICAgICAgICAgem9uZTogJ3V0YycsXG4gICAgICAgICAgfSkuc3RhcnRPZih0aGlzLmdyYW51bGFyaXR5LnZhbHVlKTtcbiAgICAgICAgICBjb25zdCBlbmREYXRlID0gRGF0ZVRpbWUuZnJvbUlTTyhyYW5nZUZpbHRlci52YWx1ZXMuZmluZCgodikgPT4gdi5pZCA9PT0gJ3JhbmdlRW5kJyk/LmxhYmVsISwge1xuICAgICAgICAgICAgem9uZTogJ3V0YycsXG4gICAgICAgICAgfSkuZW5kT2YodGhpcy5ncmFudWxhcml0eS52YWx1ZSk7XG4gICAgICAgICAgdGhpcy5yYW5nZS5zZXRDb250cm9sKCdzdGFydCcsIG5ldyBGb3JtQ29udHJvbDxEYXRlVGltZT4oc3RhcnREYXRlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLCB7XG4gICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMucmFuZ2Uuc2V0Q29udHJvbCgnZW5kJywgbmV3IEZvcm1Db250cm9sPERhdGVUaW1lPihlbmREYXRlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBNYXRlcmlhbENvdW50RmlsdGVyID0ge1xuICAgICAgc3RhcnREYXRlOiB0aGlzLnJhbmdlLnZhbHVlLnN0YXJ0Py50b0lTTygpISxcbiAgICAgIGVuZERhdGU6IHRoaXMucmFuZ2UudmFsdWUuZW5kPy50b0lTTygpISxcbiAgICAgIGdyYW51bGFyaXR5OiB0aGlzLmdyYW51bGFyaXR5LnZhbHVlLFxuICAgIH07XG5cbiAgICB0aGlzLm1ldGFBcGlcbiAgICAgIC5nZXRFZGl0b3JpYWxNYXRlcmlhbENvdW50cyhyZXF1ZXN0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhcG9pbnRzID0gcmVzcG9uc2UubWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IGRhdGEuY291bnRzLm1hcCgoY291bnQpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRlOiBEYXRlVGltZS5mcm9tSVNPKGNvdW50LmRhdGUpLnRvRm9ybWF0KCdMTExMIHl5eXknKSEsXG4gICAgICAgICAgICAgICAgY291bnQ6IGNvdW50LmNvdW50LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBsYWJlbDogZGF0YS5uYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRhdGFwb2ludHMkLm5leHQoZGF0YXBvaW50cyk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJvdXRsaW5lZFwiPlxuICA8bWF0LWNhcmQtaGVhZGVyICpuZ0lmPVwicGFnZVRpdGxlXCI+XG4gICAgPG1hdC1jYXJkLXRpdGxlPlxuICAgICAge3sgcGFnZVRpdGxlIH19e3sgaXNMb2FkaW5nKCkgPyBcIjogTGFkZSBuZXVlIERhdGVuLlwiIDogXCJcIiB9fVxuICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gIDwvbWF0LWNhcmQtaGVhZGVyPlxuICA8bWF0LWNhcmQtY29udGVudD5cbiAgICA8bWV0YXFzMi1tb250aHBpY2tlclxuICAgICAgW2lucHV0R3JvdXBdPVwicmFuZ2VcIj48L21ldGFxczItbW9udGhwaWNrZXI+XG4gICAgPG1ldGFxczItcHJvZ3Jlc3Mtc3Bpbm5lciBbZGlzcGxheVByb2dyZXNzU3Bpbm5lcl09XCJpc0xvYWRpbmcoKVwiPjwvbWV0YXFzMi1wcm9ncmVzcy1zcGlubmVyPlxuXG4gICAgPGRpdiBbbmdDbGFzc109XCJ7J3doaWxlLWxvYWRpbmcnOiBpc0xvYWRpbmcoKX1cIj5cbiAgICAgIDxjYW52YXNcbiAgICAgICAgYmFzZUNoYXJ0XG4gICAgICAgIFtkYXRhc2V0c109XCIoZGF0YXBvaW50cyQgfCBhc3luYykgfHwgW11cIlxuICAgICAgICBbb3B0aW9uc109XCJsaW5lQ2hhcnRPcHRpb25zXCJcbiAgICAgICAgW3R5cGVdPVwiJ2xpbmUnXCJcbiAgICAgID48L2NhbnZhcz5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD4iXX0=
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb2xsZWN0aW9uLWNvdW50LWhpc3RvcnkvY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb2xsZWN0aW9uLWNvdW50LWhpc3RvcnkvY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFnQixNQUFNLE9BQU8sQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFB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VUFBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzFDLENBQUM7SUFDSixDQUFDOytHQTVHVSwrQkFBK0I7bUdBQS9CLCtCQUErQix1S0FDL0Isa0JBQWtCLGdEQ3RDL0IsbzhCQTBCQSw0RkRMSSxrQkFBa0IsK01BQ2xCLG9CQUFvQixpSEFDcEIsT0FBTyxvR0FDUCxhQUFhLDREQUNiLFlBQVksNkZBQ1osY0FBYyx3REFDZCxTQUFTLDZDQUNULG1CQUFtQix1SUFDbkIsSUFBSSw2RkFDSixjQUFjLHlVQUNkLFdBQVcsdVBBQ1gsd0JBQXdCOzs0RkFLZiwrQkFBK0I7a0JBcEIzQyxTQUFTOytCQUNFLGtDQUFrQyxjQUNoQyxJQUFJLFdBQ1A7d0JBQ1Asa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsU0FBUzt3QkFDVCxtQkFBbUI7d0JBQ25CLElBQUk7d0JBQ0osY0FBYzt3QkFDZCxXQUFXO3dCQUNYLHdCQUF3QjtxQkFDekI7NEdBSzhCLEtBQUs7c0JBQW5DLFNBQVM7dUJBQUMsa0JBQWtCO2dCQXdCN0IsU0FBUztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBlZmZlY3QsIElucHV0LCBPbkluaXQsIHNpZ25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YXNldCB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IEJhc2VDaGFydERpcmVjdGl2ZSB9IGZyb20gJ25nMi1jaGFydHMnO1xuaW1wb3J0IHsgRGF0ZVRpbWUsIERhdGVUaW1lVW5pdCB9IGZyb20gJ2x1eG9uJztcbmltcG9ydCB7IE1hdENhcmQsIE1hdENhcmRDb250ZW50LCBNYXRDYXJkSGVhZGVyLCBNYXRDYXJkVGl0bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNb250aHBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vbW9udGhwaWNrZXIvbW9udGhwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvdW50LCBNYXRlcmlhbENvdW50RmlsdGVyIH0gZnJvbSAnLi4vamF2YS1hcGknO1xuaW1wb3J0IHsgTWV0YUFwaVNlcnZpY2UgfSBmcm9tICcuLi9tZXRhLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9sb2FkaW5nX2luZGljYXRvci9wcm9ncmVzcy1zcGlubmVyL3Byb2dyZXNzLXNwaW5uZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWV0YXFzMi1jb2xsZWN0aW9uLWNvdW50LWhpc3RvcnknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQmFzZUNoYXJ0RGlyZWN0aXZlLFxuICAgIE1vbnRocGlja2VyQ29tcG9uZW50LFxuICAgIE1hdENhcmQsXG4gICAgTWF0Q2FyZEhlYWRlcixcbiAgICBNYXRDYXJkVGl0bGUsXG4gICAgTWF0Q2FyZENvbnRlbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmdJZixcbiAgICBNYXRTbGlkZVRvZ2dsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBQcm9ncmVzc1NwaW5uZXJDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xsZWN0aW9uLWNvdW50LWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5LmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbkNvdW50SGlzdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoQmFzZUNoYXJ0RGlyZWN0aXZlKSBjaGFydD86IEJhc2VDaGFydERpcmVjdGl2ZTtcbiAgcHJvdGVjdGVkIGxpbmVDaGFydE9wdGlvbnM6IENoYXJ0Q29uZmlndXJhdGlvblsnb3B0aW9ucyddID0ge1xuICAgIHBhcnNpbmc6IHtcbiAgICAgIHhBeGlzS2V5OiAnZGF0ZScsXG4gICAgICB5QXhpc0tleTogJ2NvdW50JyxcbiAgICB9LFxuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogJ01vbnRzZXJyYXQnLFxuICAgIH0sXG4gICAgYW5pbWF0aW9uOiBmYWxzZSxcbiAgfTtcbiAgcHJvdGVjdGVkIGRhdGFwb2ludHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGFydERhdGFzZXQ8J2xpbmUnLCBDb3VudFtdPltdPihbXSk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHJlYWRvbmx5IHJhbmdlOiBGb3JtR3JvdXA8e1xuICAgIHN0YXJ0OiBGb3JtQ29udHJvbDxEYXRlVGltZTxib29sZWFuPj47XG4gICAgZW5kOiBGb3JtQ29udHJvbDxEYXRlVGltZTxib29sZWFuPj47XG4gIH0+ID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgIGVuZDogbmV3IEZvcm1Db250cm9sKCksXG4gIH0pO1xuICBwcm90ZWN0ZWQgZ3JhbnVsYXJpdGllczogRGF0ZVRpbWVVbml0W10gPSBbJ3llYXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknXTtcbiAgcHJvdGVjdGVkIGdyYW51bGFyaXR5ID0gbmV3IEZvcm1Db250cm9sPERhdGVUaW1lVW5pdD4oJ21vbnRoJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcblxuICBASW5wdXQoKVxuICBwYWdlVGl0bGU6IHN0cmluZztcbiAgaXNIaXN0b3J5RW5hYmxlZCA9IHNpZ25hbCh0cnVlKTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtZXRhQXBpOiBNZXRhQXBpU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMucmFuZ2UuY29udHJvbHMuZW5kLnJlc2V0KCk7XG4gICAgICBpZiAoIXRoaXMuaXNIaXN0b3J5RW5hYmxlZCgpKSB7XG4gICAgICAgIHRoaXMucmFuZ2UuY29udHJvbHMuc3RhcnQuc2V0VmFsdWUodGhpcy5yYW5nZS5jb250cm9scy5lbmQudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yYW5nZS5jb250cm9scy5zdGFydC5yZXNldCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlckRhdGVSYW5nZUZpbHRlcigpO1xuICB9XG5cbiAgcmVnaXN0ZXJEYXRlUmFuZ2VGaWx0ZXIoKSB7XG4gICAgdGhpcy5yYW5nZS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHJhbmdlKTogcmFuZ2UgaXMgeyBzdGFydDogRGF0ZVRpbWU7IGVuZDogRGF0ZVRpbWUgfSA9PiAhIXJhbmdlLnN0YXJ0ICYmICEhcmFuZ2UuZW5kKSxcbiAgICAgICAgLy90aGUgTWF0ZXJpYWwgRGF0ZXBpY2tlciBlbWl0cyB0aGUgaW5pdGlhbCB2YWx1ZXMgNCB0aW1lcyB3aGVuIGl0IHN0YXJ0cywgc28gd2UgbmVlZCB0byBkaXN0aW5jdCB0aGVtXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByZXYuc3RhcnQgPT09IGN1cnIuc3RhcnQgJiYgcHJldi5lbmQgPT09IGN1cnIuZW5kO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChyYW5nZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmlzSGlzdG9yeUVuYWJsZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZERhdGEocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWREYXRhKHJhbmdlLmVuZC5zdGFydE9mKHRoaXMuZ3JhbnVsYXJpdHkudmFsdWUpLCByYW5nZS5lbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5tZXRhQXBpXG4gICAgICAuZ2V0VGltZXJhbmdlRmlsdGVyKClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChyYW5nZUZpbHRlcikgPT4ge1xuICAgICAgICBpZiAocmFuZ2VGaWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlVGltZS5mcm9tSVNPKHJhbmdlRmlsdGVyLnZhbHVlcy5maW5kKCh2KSA9PiB2LmlkID09PSAncmFuZ2VTdGFydCcpPy5sYWJlbCEsIHtcbiAgICAgICAgICAgIHpvbmU6ICd1dGMnLFxuICAgICAgICAgIH0pLnN0YXJ0T2YodGhpcy5ncmFudWxhcml0eS52YWx1ZSk7XG4gICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IERhdGVUaW1lLmZyb21JU08ocmFuZ2VGaWx0ZXIudmFsdWVzLmZpbmQoKHYpID0+IHYuaWQgPT09ICdyYW5nZUVuZCcpPy5sYWJlbCEsIHtcbiAgICAgICAgICAgIHpvbmU6ICd1dGMnLFxuICAgICAgICAgIH0pLmVuZE9mKHRoaXMuZ3JhbnVsYXJpdHkudmFsdWUpO1xuICAgICAgICAgIHRoaXMucmFuZ2Uuc2V0Q29udHJvbCgnc3RhcnQnLCBuZXcgRm9ybUNvbnRyb2w8RGF0ZVRpbWU+KHN0YXJ0RGF0ZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSwge1xuICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnJhbmdlLnNldENvbnRyb2woJ2VuZCcsIG5ldyBGb3JtQ29udHJvbDxEYXRlVGltZT4oZW5kRGF0ZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZERhdGEoc3RhcnQ/OiBEYXRlVGltZTxib29sZWFuPiwgZW5kPzogRGF0ZVRpbWU8Ym9vbGVhbj4pIHtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBNYXRlcmlhbENvdW50RmlsdGVyID0ge1xuICAgICAgc3RhcnREYXRlOiBzdGFydD8udG9JU08oKSEsXG4gICAgICBlbmREYXRlOiBlbmQ/LnRvSVNPKCkhLFxuICAgICAgZ3JhbnVsYXJpdHk6IHRoaXMuZ3JhbnVsYXJpdHkudmFsdWUsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLm1ldGFBcGkuZ2V0RWRpdG9yaWFsTWF0ZXJpYWxDb3VudHMocmVxdWVzdCkucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+XG4gICAgICAgIHJlc3BvbnNlLm1hcCgoZGF0YSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiBkYXRhLmNvdW50cy5tYXAoKGNvdW50KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0ZTogRGF0ZVRpbWUuZnJvbUlTTyhjb3VudC5kYXRlKS50b0Zvcm1hdCgnTExMTCB5eXl5JykhLFxuICAgICAgICAgICAgICAgIGNvdW50OiBjb3VudC5jb3VudCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbGFiZWw6IGRhdGEubmFtZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHRha2UoMSksXG4gICAgICB0YXAoKGRhdGFwb2ludHMpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhcG9pbnRzJC5uZXh0KGRhdGFwb2ludHMpO1xuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpKVxuICAgICk7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZCBhcHBlYXJhbmNlPVwib3V0bGluZWRcIj5cbiAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInBhZ2VUaXRsZVwiPlxuICAgIDxtYXQtY2FyZC10aXRsZT5cbiAgICAgIHt7IHBhZ2VUaXRsZSB9fXt7IGlzTG9hZGluZygpID8gXCI6IExhZGUgbmV1ZSBEYXRlbi5cIiA6IFwiXCIgfX1cbiAgICA8L21hdC1jYXJkLXRpdGxlPlxuICA8L21hdC1jYXJkLWhlYWRlcj5cbiAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMC41cmVtOyBhbGlnbi1pdGVtczogY2VudGVyXCI+XG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImlzSGlzdG9yeUVuYWJsZWRcIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKClcIj5cbiAgICAgICAgPGxhYmVsPlplaWdlIGhpc3RvcmlzY2hlIERhdGVuPC9sYWJlbD5cbiAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgIDxtZXRhcXMyLW1vbnRocGlja2VyICpuZ0lmPVwiaXNIaXN0b3J5RW5hYmxlZCgpXCJcbiAgICAgICAgW2lucHV0R3JvdXBdPVwicmFuZ2VcIj48L21ldGFxczItbW9udGhwaWNrZXI+XG4gICAgPC9kaXY+XG4gICAgPG1ldGFxczItcHJvZ3Jlc3Mtc3Bpbm5lciBbZGlzcGxheVByb2dyZXNzU3Bpbm5lcl09XCJpc0xvYWRpbmcoKVwiPjwvbWV0YXFzMi1wcm9ncmVzcy1zcGlubmVyPlxuXG4gICAgPGRpdiBbY2xhc3Mud2hpbGUtbG9hZGluZ109XCJpc0xvYWRpbmcoKVwiPlxuICAgICAgPGNhbnZhc1xuICAgICAgICBiYXNlQ2hhcnRcbiAgICAgICAgW2RhdGFzZXRzXT1cIihkYXRhcG9pbnRzJCB8IGFzeW5jKSB8fCBbXVwiXG4gICAgICAgIFtvcHRpb25zXT1cImxpbmVDaGFydE9wdGlvbnNcIlxuICAgICAgICBbdHlwZV09XCInbGluZSdcIlxuICAgICAgPjwvY2FudmFzPlxuICAgIDwvZGl2PlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuIl19
@@ -25,6 +25,7 @@ export const datePickerFormats = {
25
25
  export class MonthpickerComponent {
26
26
  constructor() {
27
27
  this.startView = 'year';
28
+ this.disabled = false;
28
29
  }
29
30
  setStart(date, picker) {
30
31
  this.inputGroup.controls.start.setValue(date);
@@ -39,7 +40,7 @@ export class MonthpickerComponent {
39
40
  Promise.resolve().then(() => this.inputGroup.reset());
40
41
  }
41
42
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonthpickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MonthpickerComponent, isStandalone: true, selector: "metaqs2-monthpicker", inputs: { startView: "startView", inputGroup: "inputGroup" }, providers: [
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MonthpickerComponent, isStandalone: true, selector: "metaqs2-monthpicker", inputs: { startView: "startView", inputGroup: "inputGroup", disabled: "disabled" }, providers: [
43
44
  {
44
45
  provide: DateAdapter,
45
46
  useClass: LuxonDateAdapter,
@@ -50,7 +51,7 @@ export class MonthpickerComponent {
50
51
  { provide: LOCALE_ID, useValue: 'de-DE' },
51
52
  { provide: MAT_DATE_LOCALE, useValue: 'de-DE' },
52
53
  { provide: MAT_LUXON_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true, firstDayOfWeek: 1 } },
53
- ], ngImport: i0, template: "<!--\n<mat-card>\n <mat-card-header>\n <mat-card-title> Monatlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n </!-- start date --/>\n -->\n<ng-container [formGroup]=\"inputGroup\" >\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</ng-container>\n<!--\n </mat-card-content>\n</mat-card>\n-->", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
54
+ ], ngImport: i0, template: "<!--\n<mat-card>\n <mat-card-header>\n <mat-card-title> Monatlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n </!-- start date --/>\n -->\n<ng-container [formGroup]=\"inputGroup\" >\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n [disabled]=\"disabled\"\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n [disabled]=\"disabled\"\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</ng-container>\n<!--\n </mat-card-content>\n</mat-card>\n-->\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
54
55
  }
55
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonthpickerComponent, decorators: [{
56
57
  type: Component,
@@ -75,11 +76,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
75
76
  { provide: LOCALE_ID, useValue: 'de-DE' },
76
77
  { provide: MAT_DATE_LOCALE, useValue: 'de-DE' },
77
78
  { provide: MAT_LUXON_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true, firstDayOfWeek: 1 } },
78
- ], template: "<!--\n<mat-card>\n <mat-card-header>\n <mat-card-title> Monatlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n </!-- start date --/>\n -->\n<ng-container [formGroup]=\"inputGroup\" >\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</ng-container>\n<!--\n </mat-card-content>\n</mat-card>\n-->" }]
79
+ ], template: "<!--\n<mat-card>\n <mat-card-header>\n <mat-card-title> Monatlicher Vergleich </mat-card-title>\n </mat-card-header>\n <mat-card-content [formGroup]=\"inputGroup\">\n </!-- start date --/>\n -->\n<ng-container [formGroup]=\"inputGroup\" >\n <mat-form-field>\n <mat-label>Zeitpunkt 1</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker1\" formControlName=\"start\"\n placeholder=\"Starts date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker1\"></mat-datepicker-toggle>\n <mat-datepicker\n [disabled]=\"disabled\"\n #picker1\n [startAt]=\"inputGroup.controls.start.defaultValue\"\n [startView]=\"startView\"\n (monthSelected)=\"setStart($event, picker1)\"\n\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /start date -->\n <!-- end date -->\n <mat-form-field>\n <mat-label>Zeitpunkt2</mat-label>\n <input matInput\n [disabled]=\"disabled\"\n [min]=\"inputGroup.controls.start.defaultValue\"\n [max]=\"inputGroup.controls.end.defaultValue\"\n [matDatepicker]=\"picker2\"\n formControlName=\"end\"\n placeholder=\"End date\"\n >\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker\n [disabled]=\"disabled\"\n #picker2\n [startAt]=\"inputGroup.controls.end.value\"\n [startView]=\"startView\"\n (monthSelected)=\"setEnd($event, picker2)\"\n >\n </mat-datepicker>\n </mat-form-field>\n <!-- /end date -->\n</ng-container>\n<!--\n </mat-card-content>\n</mat-card>\n-->\n" }]
79
80
  }], ctorParameters: () => [], propDecorators: { startView: [{
80
81
  type: Input
81
82
  }], inputGroup: [{
82
83
  type: Input,
83
84
  args: [{ required: true }]
85
+ }], disabled: [{
86
+ type: Input
84
87
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbGxlY3Rpb24tY291bnQtaGlzdG9yeS9tb250aHBpY2tlci9tb250aHBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5L21vbnRocGlja2VyL21vbnRocGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQTBCLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDhCQUE4QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7OztBQUV4RyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBbUI7SUFDL0MsS0FBSyxFQUFFO1FBQ0wsU0FBUyxFQUFFLFdBQVc7S0FDdkI7SUFDRCxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsV0FBVztRQUN0QixjQUFjLEVBQUUsV0FBVztRQUMzQixhQUFhLEVBQUUsS0FBSztRQUNwQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2hDO0NBQ0YsQ0FBQztBQStCRjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBTS9CO1FBSkEsY0FBUyxHQUFvQyxNQUFNLENBQUM7SUFJckMsQ0FBQztJQUVOLFFBQVEsQ0FBQyxJQUF1QixFQUFFLE1BQXdDO1FBQ2xGLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFUyxNQUFNLENBQUMsSUFBdUIsRUFBRSxNQUF3QztRQUNoRixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFdBQVc7UUFDVCw0RkFBNEY7UUFDNUYsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQzsrR0FyQlUsb0JBQW9CO21HQUFwQixvQkFBb0IsZ0lBbkJwQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsOEJBQThCLENBQUM7YUFDeEQ7WUFDRCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7WUFDMUQsNkNBQTZDO1lBQzdDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO1lBQ3pDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO1lBQy9DLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFO1NBQzNGLDBCQzlDSCwwckRBb0RHLHlERDNCQyxXQUFXLG1qQkFDWCxhQUFhLHdGQUNiLGtCQUFrQixtS0FDbEIsbUJBQW1CLDZLQUNuQixZQUFZLDRMQUNaLFFBQVEsaVVBQ1IsUUFBUSxzREFDUixTQUFTLG9IQUNULG1CQUFtQjs7NEZBcUJWLG9CQUFvQjtrQkFqQ2hDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxXQUFXO3dCQUNYLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsbUJBQW1CO3FCQUNwQixhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxXQUFXOzRCQUNwQixRQUFRLEVBQUUsZ0JBQWdCOzRCQUMxQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsOEJBQThCLENBQUM7eUJBQ3hEO3dCQUNELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTt3QkFDMUQsNkNBQTZDO3dCQUM3QyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTt3QkFDekMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7d0JBQy9DLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFO3FCQUMzRjt3REFVRCxTQUFTO3NCQURSLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIExPQ0FMRV9JRCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dCwgTWF0RGF0ZXBpY2tlclRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCwgTWF0U3VmZml4IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgTHV4b25EYXRlQWRhcHRlciwgTUFUX0xVWE9OX0RBVEVfQURBUFRFUl9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbHV4b24tYWRhcHRlcic7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFLCBNYXREYXRlRm9ybWF0cyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgZGF0ZVBpY2tlckZvcm1hdHM6IE1hdERhdGVGb3JtYXRzID0ge1xuICBwYXJzZToge1xuICAgIGRhdGVJbnB1dDogJ0xMTEwgeXl5eScsXG4gIH0sXG4gIGRpc3BsYXk6IHtcbiAgICBkYXRlSW5wdXQ6ICdMTExMIHl5eXknLFxuICAgIG1vbnRoWWVhckxhYmVsOiAnTExMTCB5eXl5JyxcbiAgICBkYXRlQTExeUxhYmVsOiAnTExMJyxcbiAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIHl5eXknLFxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWV0YXFzMi1tb250aHBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyLFxuICAgIE1hdERhdGVwaWNrZXJJbnB1dCxcbiAgICBNYXREYXRlcGlja2VyVG9nZ2xlLFxuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRJbnB1dCxcbiAgICBNYXRMYWJlbCxcbiAgICBNYXRTdWZmaXgsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXG4gICAgICB1c2VDbGFzczogTHV4b25EYXRlQWRhcHRlcixcbiAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBkYXRlUGlja2VyRm9ybWF0cyB9LFxuICAgIC8vcHJvdmlkZUx1eG9uRGF0ZUFkYXB0ZXIoZGF0ZVBpY2tlckZvcm1hdHMpLFxuICAgIHsgcHJvdmlkZTogTE9DQUxFX0lELCB1c2VWYWx1ZTogJ2RlLURFJyB9LFxuICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2RlLURFJyB9LFxuICAgIHsgcHJvdmlkZTogTUFUX0xVWE9OX0RBVEVfQURBUFRFUl9PUFRJT05TLCB1c2VWYWx1ZTogeyB1c2VVdGM6IHRydWUsIGZpcnN0RGF5T2ZXZWVrOiAxIH0gfSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21vbnRocGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21vbnRocGlja2VyLmNvbXBvbmVudC5jc3MnLFxufSlcbi8qKlxuICogVGhlb3JldGljYWxseSwgdGhpcyBjb21wb25lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGJvdGggbW9udGhseSBhbmQgZGFpbHkgZGF0ZSByYW5nZXMuXG4gKiBCdXQgSSBhbSB1bmFibGUgdG8gZmluZCBhIHdheSB0byBjaGFuZ2UgdGhlIGRhdGUgZm9ybWF0IG9mIHRoZSBkYXRlcGlja2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBNb250aHBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHN0YXJ0VmlldzogJ21vbnRoJyB8ICd5ZWFyJyB8ICdtdWx0aS15ZWFyJyA9ICd5ZWFyJztcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaW5wdXRHcm91cDogRm9ybUdyb3VwPHsgc3RhcnQ6IEZvcm1Db250cm9sPERhdGVUaW1lPGJvb2xlYW4+PjsgZW5kOiBGb3JtQ29udHJvbDxEYXRlVGltZTxib29sZWFuPj4gfT47XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHByb3RlY3RlZCBzZXRTdGFydChkYXRlOiBEYXRlVGltZTxib29sZWFuPiwgcGlja2VyOiBNYXREYXRlcGlja2VyPERhdGVUaW1lPGJvb2xlYW4+Pik6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRHcm91cC5jb250cm9scy5zdGFydC5zZXRWYWx1ZShkYXRlKTtcbiAgICBwaWNrZXIuY2xvc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRFbmQoZGF0ZTogRGF0ZVRpbWU8Ym9vbGVhbj4sIHBpY2tlcjogTWF0RGF0ZXBpY2tlcjxEYXRlVGltZTxib29sZWFuPj4pOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0R3JvdXAuY29udHJvbHMuZW5kLnNldFZhbHVlKGRhdGUuZW5kT2YoJ21vbnRoJykpO1xuICAgIHBpY2tlci5jbG9zZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy9kZWZlciB0aGlzIHRvIGF2b2lkIGFuIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3Igb24gdGhlIHBhcmVudCBjb21wb25lbnRcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMuaW5wdXRHcm91cC5yZXNldCgpKTtcbiAgfVxufVxuIiwiPCEtLVxuPG1hdC1jYXJkPlxuICA8bWF0LWNhcmQtaGVhZGVyPlxuICAgIDxtYXQtY2FyZC10aXRsZT4gTW9uYXRsaWNoZXIgVmVyZ2xlaWNoIDwvbWF0LWNhcmQtdGl0bGU+XG4gIDwvbWF0LWNhcmQtaGVhZGVyPlxuICA8bWF0LWNhcmQtY29udGVudCBbZm9ybUdyb3VwXT1cImlucHV0R3JvdXBcIj5cbiAgICA8LyEtLSBzdGFydCBkYXRlIC0tLz5cbiAgICAtLT5cbjxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJpbnB1dEdyb3VwXCIgPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+WmVpdHB1bmt0IDE8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgIFttaW5dPVwiaW5wdXRHcm91cC5jb250cm9scy5zdGFydC5kZWZhdWx0VmFsdWVcIlxuICAgICAgICAgICAgIFttYXhdPVwiaW5wdXRHcm91cC5jb250cm9scy5lbmQuZGVmYXVsdFZhbHVlXCJcbiAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXIxXCIgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnRcIlxuICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU3RhcnRzIGRhdGVcIlxuICAgICAgPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRJY29uU3VmZml4IFtmb3JdPVwicGlja2VyMVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICNwaWNrZXIxXG4gICAgICAgIFtzdGFydEF0XT1cImlucHV0R3JvdXAuY29udHJvbHMuc3RhcnQuZGVmYXVsdFZhbHVlXCJcbiAgICAgICAgW3N0YXJ0Vmlld109XCJzdGFydFZpZXdcIlxuICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJzZXRTdGFydCgkZXZlbnQsIHBpY2tlcjEpXCJcblxuICAgICAgPlxuICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwhLS0gL3N0YXJ0IGRhdGUgLS0+XG4gICAgPCEtLSBlbmQgZGF0ZSAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPlplaXRwdW5rdDI8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgIFttaW5dPVwiaW5wdXRHcm91cC5jb250cm9scy5zdGFydC5kZWZhdWx0VmFsdWVcIlxuICAgICAgICAgICAgIFttYXhdPVwiaW5wdXRHcm91cC5jb250cm9scy5lbmQuZGVmYXVsdFZhbHVlXCJcbiAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXIyXCJcbiAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmRcIlxuICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW5kIGRhdGVcIlxuICAgICAgPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRJY29uU3VmZml4IFtmb3JdPVwicGlja2VyMlwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICNwaWNrZXIyXG4gICAgICAgIFtzdGFydEF0XT1cImlucHV0R3JvdXAuY29udHJvbHMuZW5kLnZhbHVlXCJcbiAgICAgICAgW3N0YXJ0Vmlld109XCJzdGFydFZpZXdcIlxuICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJzZXRFbmQoJGV2ZW50LCBwaWNrZXIyKVwiXG4gICAgICA+XG4gICAgICA8L21hdC1kYXRlcGlja2VyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPCEtLSAvZW5kIGRhdGUgLS0+XG48L25nLWNvbnRhaW5lcj5cbjwhLS1cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cbi0tPiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbGxlY3Rpb24tY291bnQtaGlzdG9yeS9tb250aHBpY2tlci9tb250aHBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY29sbGVjdGlvbi1jb3VudC1oaXN0b3J5L21vbnRocGlja2VyL21vbnRocGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQTBCLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDhCQUE4QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7OztBQUV4RyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBbUI7SUFDL0MsS0FBSyxFQUFFO1FBQ0wsU0FBUyxFQUFFLFdBQVc7S0FDdkI7SUFDRCxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsV0FBVztRQUN0QixjQUFjLEVBQUUsV0FBVztRQUMzQixhQUFhLEVBQUUs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bXBvbmVudCwgSW5wdXQsIExPQ0FMRV9JRCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dCwgTWF0RGF0ZXBpY2tlclRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCwgTWF0U3VmZml4IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgTHV4b25EYXRlQWRhcHRlciwgTUFUX0xVWE9OX0RBVEVfQURBUFRFUl9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbHV4b24tYWRhcHRlcic7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFLCBNYXREYXRlRm9ybWF0cyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgZGF0ZVBpY2tlckZvcm1hdHM6IE1hdERhdGVGb3JtYXRzID0ge1xuICBwYXJzZToge1xuICAgIGRhdGVJbnB1dDogJ0xMTEwgeXl5eScsXG4gIH0sXG4gIGRpc3BsYXk6IHtcbiAgICBkYXRlSW5wdXQ6ICdMTExMIHl5eXknLFxuICAgIG1vbnRoWWVhckxhYmVsOiAnTExMTCB5eXl5JyxcbiAgICBkYXRlQTExeUxhYmVsOiAnTExMJyxcbiAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIHl5eXknLFxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWV0YXFzMi1tb250aHBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyLFxuICAgIE1hdERhdGVwaWNrZXJJbnB1dCxcbiAgICBNYXREYXRlcGlja2VyVG9nZ2xlLFxuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRJbnB1dCxcbiAgICBNYXRMYWJlbCxcbiAgICBNYXRTdWZmaXgsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXG4gICAgICB1c2VDbGFzczogTHV4b25EYXRlQWRhcHRlcixcbiAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBkYXRlUGlja2VyRm9ybWF0cyB9LFxuICAgIC8vcHJvdmlkZUx1eG9uRGF0ZUFkYXB0ZXIoZGF0ZVBpY2tlckZvcm1hdHMpLFxuICAgIHsgcHJvdmlkZTogTE9DQUxFX0lELCB1c2VWYWx1ZTogJ2RlLURFJyB9LFxuICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2RlLURFJyB9LFxuICAgIHsgcHJvdmlkZTogTUFUX0xVWE9OX0RBVEVfQURBUFRFUl9PUFRJT05TLCB1c2VWYWx1ZTogeyB1c2VVdGM6IHRydWUsIGZpcnN0RGF5T2ZXZWVrOiAxIH0gfSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21vbnRocGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21vbnRocGlja2VyLmNvbXBvbmVudC5jc3MnLFxufSlcbi8qKlxuICogVGhlb3JldGljYWxseSwgdGhpcyBjb21wb25lbnQgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGJvdGggbW9udGhseSBhbmQgZGFpbHkgZGF0ZSByYW5nZXMuXG4gKiBCdXQgSSBhbSB1bmFibGUgdG8gZmluZCBhIHdheSB0byBjaGFuZ2UgdGhlIGRhdGUgZm9ybWF0IG9mIHRoZSBkYXRlcGlja2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBNb250aHBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHN0YXJ0VmlldzogJ21vbnRoJyB8ICd5ZWFyJyB8ICdtdWx0aS15ZWFyJyA9ICd5ZWFyJztcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaW5wdXRHcm91cDogRm9ybUdyb3VwPHsgc3RhcnQ6IEZvcm1Db250cm9sPERhdGVUaW1lPGJvb2xlYW4+PjsgZW5kOiBGb3JtQ29udHJvbDxEYXRlVGltZTxib29sZWFuPj4gfT47XG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHByb3RlY3RlZCBzZXRTdGFydChkYXRlOiBEYXRlVGltZTxib29sZWFuPiwgcGlja2VyOiBNYXREYXRlcGlja2VyPERhdGVUaW1lPGJvb2xlYW4+Pik6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRHcm91cC5jb250cm9scy5zdGFydC5zZXRWYWx1ZShkYXRlKTtcbiAgICBwaWNrZXIuY2xvc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRFbmQoZGF0ZTogRGF0ZVRpbWU8Ym9vbGVhbj4sIHBpY2tlcjogTWF0RGF0ZXBpY2tlcjxEYXRlVGltZTxib29sZWFuPj4pOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0R3JvdXAuY29udHJvbHMuZW5kLnNldFZhbHVlKGRhdGUuZW5kT2YoJ21vbnRoJykpO1xuICAgIHBpY2tlci5jbG9zZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy9kZWZlciB0aGlzIHRvIGF2b2lkIGFuIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3Igb24gdGhlIHBhcmVudCBjb21wb25lbnRcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMuaW5wdXRHcm91cC5yZXNldCgpKTtcbiAgfVxufVxuIiwiPCEtLVxuPG1hdC1jYXJkPlxuICA8bWF0LWNhcmQtaGVhZGVyPlxuICAgIDxtYXQtY2FyZC10aXRsZT4gTW9uYXRsaWNoZXIgVmVyZ2xlaWNoIDwvbWF0LWNhcmQtdGl0bGU+XG4gIDwvbWF0LWNhcmQtaGVhZGVyPlxuICA8bWF0LWNhcmQtY29udGVudCBbZm9ybUdyb3VwXT1cImlucHV0R3JvdXBcIj5cbiAgICA8LyEtLSBzdGFydCBkYXRlIC0tLz5cbiAgICAtLT5cbjxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJpbnB1dEdyb3VwXCIgPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+WmVpdHB1bmt0IDE8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgW21pbl09XCJpbnB1dEdyb3VwLmNvbnRyb2xzLnN0YXJ0LmRlZmF1bHRWYWx1ZVwiXG4gICAgICAgICAgICAgW21heF09XCJpbnB1dEdyb3VwLmNvbnRyb2xzLmVuZC5kZWZhdWx0VmFsdWVcIlxuICAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cInBpY2tlcjFcIiBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiXG4gICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTdGFydHMgZGF0ZVwiXG4gICAgICA+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdEljb25TdWZmaXggW2Zvcl09XCJwaWNrZXIxXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgI3BpY2tlcjFcbiAgICAgICAgW3N0YXJ0QXRdPVwiaW5wdXRHcm91cC5jb250cm9scy5zdGFydC5kZWZhdWx0VmFsdWVcIlxuICAgICAgICBbc3RhcnRWaWV3XT1cInN0YXJ0Vmlld1wiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cInNldFN0YXJ0KCRldmVudCwgcGlja2VyMSlcIlxuXG4gICAgICA+XG4gICAgICA8L21hdC1kYXRlcGlja2VyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPCEtLSAvc3RhcnQgZGF0ZSAtLT5cbiAgICA8IS0tIGVuZCBkYXRlIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+WmVpdHB1bmt0MjwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IG1hdElucHV0XG4gICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICBbbWluXT1cImlucHV0R3JvdXAuY29udHJvbHMuc3RhcnQuZGVmYXVsdFZhbHVlXCJcbiAgICAgICAgICAgICBbbWF4XT1cImlucHV0R3JvdXAuY29udHJvbHMuZW5kLmRlZmF1bHRWYWx1ZVwiXG4gICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyMlwiXG4gICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW5kXCJcbiAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVuZCBkYXRlXCJcbiAgICAgID5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0SWNvblN1ZmZpeCBbZm9yXT1cInBpY2tlcjJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAjcGlja2VyMlxuICAgICAgICBbc3RhcnRBdF09XCJpbnB1dEdyb3VwLmNvbnRyb2xzLmVuZC52YWx1ZVwiXG4gICAgICAgIFtzdGFydFZpZXddPVwic3RhcnRWaWV3XCJcbiAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwic2V0RW5kKCRldmVudCwgcGlja2VyMilcIlxuICAgICAgPlxuICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwhLS0gL2VuZCBkYXRlIC0tPlxuPC9uZy1jb250YWluZXI+XG48IS0tXG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG4tLT5cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { DonutChartPipe } from './donut-chart.pipe';
3
+ import { NgForOf, NgIf } from '@angular/common';
2
4
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "./donut-chart.pipe";
5
5
  /**
6
6
  * A donut chart component that displays a list of slices.
7
7
  * The chart is divided into slices, each slice has a color and a label.
@@ -26,7 +26,7 @@ export class DonutChartComponent {
26
26
  return slice.id;
27
27
  }
28
28
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DonutChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DonutChartComponent, selector: "metaqs2-donut-chart", inputs: { radius: "radius", viewBox: "viewBox", borderSize: "borderSize", strokeWidth: "strokeWidth", data: "data" }, ngImport: i0, template: `
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DonutChartComponent, isStandalone: true, selector: "metaqs2-donut-chart", inputs: { radius: "radius", viewBox: "viewBox", borderSize: "borderSize", strokeWidth: "strokeWidth", data: "data" }, ngImport: i0, template: `
30
30
  <svg [attr.viewBox]="'0 0 ' + viewBox + ' ' + viewBox" *ngIf="data">
31
31
  <path
32
32
  *ngFor="
@@ -35,18 +35,18 @@ export class DonutChartComponent {
35
35
  let index = index
36
36
  "
37
37
  [attr.fill]="slice.color"
38
- [attr.stroke]="'white'"
39
- [attr.paint-order]="'stroke'"
40
- [attr.stroke-opacity]="'1'"
38
+ stroke="white"
39
+ paint-order="stroke"
40
+ stroke-opacity="1"
41
41
  [attr.stroke-width]="strokeWidth"
42
42
  [attr.d]="slice.commands"
43
43
  [attr.transform]="'rotate(' + slice.offset + ')'"
44
- (click)="slice.onClickCb ? slice.onClickCb() : null"
44
+ (click)="slice.onClickCb?.()"
45
45
  >
46
46
  <title>{{ slice.label }}</title>
47
47
  </path>
48
48
  </svg>
49
- `, isInline: true, styles: [":host{display:block}svg{overflow:visible;transform-origin:center;width:3.5rem;aspect-ratio:1/1;rotate:-90deg}path{transform-origin:center;fill-opacity:.7;cursor:pointer}path:hover{fill-opacity:1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.DonutChartPipe, name: "slicesWithCommandsAndOffset" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
+ `, isInline: true, styles: [":host{display:block}svg{overflow:visible;transform-origin:center;width:3.5rem;aspect-ratio:1/1;rotate:-90deg}path{transform-origin:center;fill-opacity:.7;cursor:pointer}path:hover{fill-opacity:1}\n"], dependencies: [{ kind: "pipe", type: DonutChartPipe, name: "slicesWithCommandsAndOffset" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DonutChartComponent, decorators: [{
52
52
  type: Component,
@@ -59,18 +59,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
59
59
  let index = index
60
60
  "
61
61
  [attr.fill]="slice.color"
62
- [attr.stroke]="'white'"
63
- [attr.paint-order]="'stroke'"
64
- [attr.stroke-opacity]="'1'"
62
+ stroke="white"
63
+ paint-order="stroke"
64
+ stroke-opacity="1"
65
65
  [attr.stroke-width]="strokeWidth"
66
66
  [attr.d]="slice.commands"
67
67
  [attr.transform]="'rotate(' + slice.offset + ')'"
68
- (click)="slice.onClickCb ? slice.onClickCb() : null"
68
+ (click)="slice.onClickCb?.()"
69
69
  >
70
70
  <title>{{ slice.label }}</title>
71
71
  </path>
72
72
  </svg>
73
- `, styles: [":host{display:block}svg{overflow:visible;transform-origin:center;width:3.5rem;aspect-ratio:1/1;rotate:-90deg}path{transform-origin:center;fill-opacity:.7;cursor:pointer}path:hover{fill-opacity:1}\n"] }]
73
+ `, imports: [DonutChartPipe, NgForOf, NgIf], standalone: true, styles: [":host{display:block}svg{overflow:visible;transform-origin:center;width:3.5rem;aspect-ratio:1/1;rotate:-90deg}path{transform-origin:center;fill-opacity:.7;cursor:pointer}path:hover{fill-opacity:1}\n"] }]
74
74
  }], propDecorators: { radius: [{
75
75
  type: Input
76
76
  }], viewBox: [{
@@ -82,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
82
82
  }], data: [{
83
83
  type: Input
84
84
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udXQtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZG9udXQtY2hhcnQvZG9udXQtY2hhcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7O0FBR2xGOzs7OztHQUtHO0FBMkJILE1BQU0sT0FBTyxtQkFBbUI7SUExQmhDO1FBMkJXLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWixZQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ2QsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixTQUFJLEdBQWlCLEVBQUUsQ0FBQztLQVlsQztJQVZDLFFBQVE7UUFDTixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUVBQXVFLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDakcsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQWlCO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNsQixDQUFDOytHQWhCVSxtQkFBbUI7bUdBQW5CLG1CQUFtQixpTEF0QnBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVDs7NEZBRVUsbUJBQW1CO2tCQTFCL0IsU0FBUzsrQkFDRSxxQkFBcUIsbUJBRWQsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQ7OEJBR1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9udXRTbGljZSB9IGZyb20gJy4vZG9udXQtY2hhcnQubW9kZWwnO1xuXG4vKipcbiAqIEEgZG9udXQgY2hhcnQgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBsaXN0IG9mIHNsaWNlcy5cbiAqIFRoZSBjaGFydCBpcyBkaXZpZGVkIGludG8gc2xpY2VzLCBlYWNoIHNsaWNlIGhhcyBhIGNvbG9yIGFuZCBhIGxhYmVsLlxuICogRWFjaCBzbGljZSBpcyByZXByZXNlbnRlZCBieSBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHRvdGFsIGNoYXJ0LlxuICogYm9ycm93ZWQgZnJvbSBodHRwczovL21lZGl1bS5jb20vQHRoZUFuZ3VsYXJHdXkvaG93LXRvLWNyZWF0ZS1hbi1pbnRlcmFjdGl2ZS1kb251dC1jaGFydC11c2luZy1zdmctMTA3Y2JmMGI1YjZcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWV0YXFzMi1kb251dC1jaGFydCcsXG4gIHN0eWxlVXJsczogWycuL2RvbnV0LWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzdmcgW2F0dHIudmlld0JveF09XCInMCAwICcgKyB2aWV3Qm94ICsgJyAnICsgdmlld0JveFwiICpuZ0lmPVwiZGF0YVwiPlxuICAgICAgPHBhdGhcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IHNsaWNlIG9mIGRhdGEgfCBzbGljZXNXaXRoQ29tbWFuZHNBbmRPZmZzZXQgOiByYWRpdXMgOiB2aWV3Qm94IDogYm9yZGVyU2l6ZTtcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5Rm47XG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuZmlsbF09XCJzbGljZS5jb2xvclwiXG4gICAgICAgIFthdHRyLnN0cm9rZV09XCInd2hpdGUnXCJcbiAgICAgICAgW2F0dHIucGFpbnQtb3JkZXJdPVwiJ3N0cm9rZSdcIlxuICAgICAgICBbYXR0ci5zdHJva2Utb3BhY2l0eV09XCInMSdcIlxuICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwic3Ryb2tlV2lkdGhcIlxuICAgICAgICBbYXR0ci5kXT1cInNsaWNlLmNvbW1hbmRzXCJcbiAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIidyb3RhdGUoJyArIHNsaWNlLm9mZnNldCArICcpJ1wiXG4gICAgICAgIChjbGljayk9XCJzbGljZS5vbkNsaWNrQ2IgPyBzbGljZS5vbkNsaWNrQ2IoKSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8dGl0bGU+e3sgc2xpY2UubGFiZWwgfX08L3RpdGxlPlxuICAgICAgPC9wYXRoPlxuICAgIDwvc3ZnPlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBEb251dENoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcmFkaXVzID0gNTA7XG4gIEBJbnB1dCgpIHZpZXdCb3ggPSAxMDA7XG4gIEBJbnB1dCgpIGJvcmRlclNpemUgPSAyMDtcbiAgQElucHV0KCkgc3Ryb2tlV2lkdGggPSA1O1xuICBASW5wdXQoKSBkYXRhOiBEb251dFNsaWNlW10gPSBbXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBzdW0gPSB0aGlzLmRhdGE/LnJlZHVjZSgoYWNjdSwgc2xpY2UpID0+IGFjY3UgKyBzbGljZS5wZXJjZW50LCAwKTtcbiAgICBpZiAoc3VtICE9PSAxMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHN1bSBvZiBhbGwgc2xpY2VzIG9mIHRoZSBkb251dCBjaGFydCBtdXN0IGVxdWFsIHRvIDEwMCUuIEZvdW5kOiAke3N1bX0uYCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIHNsaWNlOiBEb251dFNsaWNlKSB7XG4gICAgcmV0dXJuIHNsaWNlLmlkO1xuICB9XG59XG4iXX0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udXQtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWV0YS13aWRnZXRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZG9udXQtY2hhcnQvZG9udXQtY2hhcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUVoRDs7Ozs7R0FLRztBQTZCSCxNQUFNLE9BQU8sbUJBQW1CO0lBNUJoQztRQTZCVyxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osWUFBTyxHQUFHLEdBQUcsQ0FBQztRQUNkLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsU0FBSSxHQUFpQixFQUFFLENBQUM7S0FZbEM7SUFWQyxRQUFRO1FBQ04sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RSxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHVFQUF1RSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2pHLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFpQjtRQUN4QyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDbEIsQ0FBQzsrR0FoQlUsbUJBQW1CO21HQUFuQixtQkFBbUIscU1BeEJwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlQsMFFBQ1MsY0FBYyxvRUFBRSxPQUFPLG1IQUFFLElBQUk7OzRGQUc1QixtQkFBbUI7a0JBNUIvQixTQUFTOytCQUNFLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVCxXQUNRLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FDNUIsSUFBSTs4QkFHUCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb251dFNsaWNlIH0gZnJvbSAnLi9kb251dC1jaGFydC5tb2RlbCc7XG5pbXBvcnQgeyBEb251dENoYXJ0UGlwZSB9IGZyb20gJy4vZG9udXQtY2hhcnQucGlwZSc7XG5pbXBvcnQgeyBOZ0Zvck9mLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBBIGRvbnV0IGNoYXJ0IGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGEgbGlzdCBvZiBzbGljZXMuXG4gKiBUaGUgY2hhcnQgaXMgZGl2aWRlZCBpbnRvIHNsaWNlcywgZWFjaCBzbGljZSBoYXMgYSBjb2xvciBhbmQgYSBsYWJlbC5cbiAqIEVhY2ggc2xpY2UgaXMgcmVwcmVzZW50ZWQgYnkgYSBwZXJjZW50YWdlIG9mIHRoZSB0b3RhbCBjaGFydC5cbiAqIGJvcnJvd2VkIGZyb20gaHR0cHM6Ly9tZWRpdW0uY29tL0B0aGVBbmd1bGFyR3V5L2hvdy10by1jcmVhdGUtYW4taW50ZXJhY3RpdmUtZG9udXQtY2hhcnQtdXNpbmctc3ZnLTEwN2NiZjBiNWI2XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItZG9udXQtY2hhcnQnLFxuICBzdHlsZVVybHM6IFsnLi9kb251dC1jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c3ZnIFthdHRyLnZpZXdCb3hdPVwiJzAgMCAnICsgdmlld0JveCArICcgJyArIHZpZXdCb3hcIiAqbmdJZj1cImRhdGFcIj5cbiAgICAgIDxwYXRoXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBzbGljZSBvZiBkYXRhIHwgc2xpY2VzV2l0aENvbW1hbmRzQW5kT2Zmc2V0IDogcmFkaXVzIDogdmlld0JveCA6IGJvcmRlclNpemU7XG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZuO1xuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4XG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmZpbGxdPVwic2xpY2UuY29sb3JcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHBhaW50LW9yZGVyPVwic3Ryb2tlXCJcbiAgICAgICAgc3Ryb2tlLW9wYWNpdHk9XCIxXCJcbiAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInN0cm9rZVdpZHRoXCJcbiAgICAgICAgW2F0dHIuZF09XCJzbGljZS5jb21tYW5kc1wiXG4gICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCIncm90YXRlKCcgKyBzbGljZS5vZmZzZXQgKyAnKSdcIlxuICAgICAgICAoY2xpY2spPVwic2xpY2Uub25DbGlja0NiPy4oKVwiXG4gICAgICA+XG4gICAgICAgIDx0aXRsZT57eyBzbGljZS5sYWJlbCB9fTwvdGl0bGU+XG4gICAgICA8L3BhdGg+XG4gICAgPC9zdmc+XG4gIGAsXG4gIGltcG9ydHM6IFtEb251dENoYXJ0UGlwZSwgTmdGb3JPZiwgTmdJZl0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIERvbnV0Q2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSByYWRpdXMgPSA1MDtcbiAgQElucHV0KCkgdmlld0JveCA9IDEwMDtcbiAgQElucHV0KCkgYm9yZGVyU2l6ZSA9IDIwO1xuICBASW5wdXQoKSBzdHJva2VXaWR0aCA9IDU7XG4gIEBJbnB1dCgpIGRhdGE6IERvbnV0U2xpY2VbXSA9IFtdO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHN1bSA9IHRoaXMuZGF0YT8ucmVkdWNlKChhY2N1LCBzbGljZSkgPT4gYWNjdSArIHNsaWNlLnBlcmNlbnQsIDApO1xuICAgIGlmIChzdW0gIT09IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc3VtIG9mIGFsbCBzbGljZXMgb2YgdGhlIGRvbnV0IGNoYXJ0IG11c3QgZXF1YWwgdG8gMTAwJS4gRm91bmQ6ICR7c3VtfS5gKTtcbiAgICB9XG4gIH1cblxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgc2xpY2U6IERvbnV0U2xpY2UpIHtcbiAgICByZXR1cm4gc2xpY2UuaWQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udXQtY2hhcnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9kb251dC1jaGFydC9kb251dC1jaGFydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEb251dFNsaWNlIHtcbiAgaWQ6IG51bWJlcjtcbiAgcGVyY2VudDogbnVtYmVyO1xuICBjb2xvcjogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgb25DbGlja0NiPzogKCkgPT4gdm9pZDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udXQtY2hhcnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9kb251dC1jaGFydC9kb251dC1jaGFydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEb251dFNsaWNlIHtcbiAgaWQ6IG51bWJlcjtcbiAgcGVyY2VudDogbnVtYmVyO1xuICBjb2xvcjogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgdmVyYm9zZUxhYmVsPzogc3RyaW5nO1xuICBvbkNsaWNrQ2I/OiAoKSA9PiB2b2lkO1xufVxuIl19
@@ -3,7 +3,7 @@ import * as i0 from "@angular/core";
3
3
  export class DonutChartPipe {
4
4
  transform(donutSlices, radius, svgSize, borderSize) {
5
5
  let previousPercent = 0;
6
- return donutSlices.map(slice => {
6
+ return donutSlices.map((slice) => {
7
7
  // this is a hack to that the circle is rendered when the percent is 100
8
8
  slice.percent = slice.percent === 100 ? 99.999 : slice.percent;
9
9
  const sliceWithCommands = {
@@ -27,8 +27,8 @@ export class DonutChartPipe {
27
27
  return commands.join(' ');
28
28
  }
29
29
  getCoordFromDegrees(angle, radius, svgSize) {
30
- const x = Math.cos(angle * Math.PI / 180);
31
- const y = Math.sin(angle * Math.PI / 180);
30
+ const x = Math.cos((angle * Math.PI) / 180);
31
+ const y = Math.sin((angle * Math.PI) / 180);
32
32
  const coordX = x * radius + svgSize / 2;
33
33
  const coordY = y * -radius + svgSize / 2;
34
34
  return `${coordX} ${coordY}`;
@@ -37,13 +37,14 @@ export class DonutChartPipe {
37
37
  return percent * 3.6;
38
38
  }
39
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DonutChartPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
40
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DonutChartPipe, name: "slicesWithCommandsAndOffset" }); }
40
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DonutChartPipe, isStandalone: true, name: "slicesWithCommandsAndOffset" }); }
41
41
  }
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DonutChartPipe, decorators: [{
43
43
  type: Pipe,
44
44
  args: [{
45
45
  name: 'slicesWithCommandsAndOffset',
46
46
  pure: true,
47
+ standalone: true,
47
48
  }]
48
49
  }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udXQtY2hhcnQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2RvbnV0LWNoYXJ0L2RvbnV0LWNoYXJ0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBWXBELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFNBQVMsQ0FBQyxXQUF5QixFQUFFLE1BQWMsRUFBRSxPQUFlLEVBQUUsVUFBa0I7UUFDdEYsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3Qix3RUFBd0U7WUFDeEUsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQSxDQUFDLENBQUEsTUFBTSxDQUFBLENBQUMsQ0FBQSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQzNELE1BQU0saUJBQWlCLEdBQTJCO2dCQUNoRCxHQUFHLEtBQUs7Z0JBQ1IsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJO2dCQUMxRSxNQUFNLEVBQUUsZUFBZSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7YUFDbkMsQ0FBQztZQUNGLGVBQWUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2pDLE9BQU8saUJBQWlCLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBc0IsRUFBRSxNQUFjLEVBQUUsT0FBZSxFQUFFLFVBQWtCO1FBQzFGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUV4QyxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDOUIsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsTUFBTyxJQUFLLE9BQU8sR0FBRyxDQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlELFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBTSxNQUFPLElBQUssTUFBTyxNQUFPLFlBQWEsTUFBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUUsRUFBRSxDQUFDLENBQUM7UUFDekgsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBRSxFQUFFLENBQUMsQ0FBQztRQUNoRixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQU0sV0FBWSxJQUFLLFdBQVksTUFBTyxZQUFhLE1BQU8sT0FBTyxHQUFHLENBQUMsR0FBRyxXQUFZLElBQUssT0FBTyxHQUFHLENBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0gsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLE9BQWU7UUFDaEUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUN6QyxPQUFPLEdBQUcsTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFlO1FBQzlCLE9BQU8sT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN2QixDQUFDOytHQXZDVSxjQUFjOzZHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBSjFCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLDZCQUE2QjtvQkFDbkMsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb251dFNsaWNlIH0gZnJvbSAnLi9kb251dC1jaGFydC5tb2RlbCc7XG5cbmludGVyZmFjZSBEb251dFNsaWNlV2l0aENvbW1hbmRzIGV4dGVuZHMgRG9udXRTbGljZSB7XG4gIG9mZnNldDogbnVtYmVyO1xuICBjb21tYW5kczogc3RyaW5nO1xufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdzbGljZXNXaXRoQ29tbWFuZHNBbmRPZmZzZXQnLFxuICBwdXJlOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBEb251dENoYXJ0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oZG9udXRTbGljZXM6IERvbnV0U2xpY2VbXSwgcmFkaXVzOiBudW1iZXIsIHN2Z1NpemU6IG51bWJlciwgYm9yZGVyU2l6ZTogbnVtYmVyKTogRG9udXRTbGljZVdpdGhDb21tYW5kc1tdIHtcbiAgICBsZXQgcHJldmlvdXNQZXJjZW50ID0gMDtcbiAgICByZXR1cm4gZG9udXRTbGljZXMubWFwKHNsaWNlID0+IHtcbiAgICAgIC8vIHRoaXMgaXMgYSBoYWNrIHRvIHRoYXQgdGhlIGNpcmNsZSBpcyByZW5kZXJlZCB3aGVuIHRoZSBwZXJjZW50IGlzIDEwMFxuICAgICAgc2xpY2UucGVyY2VudCA9IHNsaWNlLnBlcmNlbnQgPT09IDEwMD85OS45OTk6c2xpY2UucGVyY2VudDtcbiAgICAgIGNvbnN0IHNsaWNlV2l0aENvbW1hbmRzOiBEb251dFNsaWNlV2l0aENvbW1hbmRzID0ge1xuICAgICAgICAuLi5zbGljZSxcbiAgICAgICAgY29tbWFuZHM6IGAke3RoaXMuZ2V0U2xpY2VDb21tYW5kcyhzbGljZSwgcmFkaXVzLCBzdmdTaXplLCBib3JkZXJTaXplKX0gemAsXG4gICAgICAgIG9mZnNldDogcHJldmlvdXNQZXJjZW50ICogMy42ICogLTEsXG4gICAgICB9O1xuICAgICAgcHJldmlvdXNQZXJjZW50ICs9IHNsaWNlLnBlcmNlbnQ7XG4gICAgICByZXR1cm4gc2xpY2VXaXRoQ29tbWFuZHM7XG4gICAgfSk7XG4gIH1cblxuICBnZXRTbGljZUNvbW1hbmRzKGRvbnV0U2xpY2U6IERvbnV0U2xpY2UsIHJhZGl1czogbnVtYmVyLCBzdmdTaXplOiBudW1iZXIsIGJvcmRlclNpemU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgZGVncmVlcyA9IHRoaXMucGVyY2VudFRvRGVncmVlcyhkb251dFNsaWNlLnBlcmNlbnQpO1xuICAgIGNvbnN0IGxvbmdQYXRoRmxhZyA9IGRlZ3JlZXMgPiAxODAgPyAxIDogMDtcbiAgICBjb25zdCBpbm5lclJhZGl1cyA9IHJhZGl1cyAtIGJvcmRlclNpemU7XG5cbiAgICBjb25zdCBjb21tYW5kczogc3RyaW5nW10gPSBbXTtcbiAgICBjb21tYW5kcy5wdXNoKGBNICR7IHN2Z1NpemUgLyAyICsgcmFkaXVzIH0gJHsgc3ZnU2l6ZSAvIDIgfWApO1xuICAgIGNvbW1hbmRzLnB1c2goYEEgJHsgcmFkaXVzIH0gJHsgcmFkaXVzIH0gMCAkeyBsb25nUGF0aEZsYWcgfSAwICR7IHRoaXMuZ2V0Q29vcmRGcm9tRGVncmVlcyhkZWdyZWVzLCByYWRpdXMsIHN2Z1NpemUpIH1gKTtcbiAgICBjb21tYW5kcy5wdXNoKGBMICR7IHRoaXMuZ2V0Q29vcmRGcm9tRGVncmVlcyhkZWdyZWVzLCBpbm5lclJhZGl1cywgc3ZnU2l6ZSkgfWApO1xuICAgIGNvbW1hbmRzLnB1c2goYEEgJHsgaW5uZXJSYWRpdXMgfSAkeyBpbm5lclJhZGl1cyB9IDAgJHsgbG9uZ1BhdGhGbGFnIH0gMSAkeyBzdmdTaXplIC8gMiArIGlubmVyUmFkaXVzIH0gJHsgc3ZnU2l6ZSAvIDIgfWApO1xuICAgIHJldHVybiBjb21tYW5kcy5qb2luKCcgJyk7XG4gIH1cblxuICBnZXRDb29yZEZyb21EZWdyZWVzKGFuZ2xlOiBudW1iZXIsIHJhZGl1czogbnVtYmVyLCBzdmdTaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHggPSBNYXRoLmNvcyhhbmdsZSAqIE1hdGguUEkgLyAxODApO1xuICAgIGNvbnN0IHkgPSBNYXRoLnNpbihhbmdsZSAqIE1hdGguUEkgLyAxODApO1xuICAgIGNvbnN0IGNvb3JkWCA9IHggKiByYWRpdXMgKyBzdmdTaXplIC8gMjtcbiAgICBjb25zdCBjb29yZFkgPSB5ICogLXJhZGl1cyArIHN2Z1NpemUgLyAyO1xuICAgIHJldHVybiBgJHtjb29yZFh9ICR7Y29vcmRZfWA7XG4gIH1cblxuICBwZXJjZW50VG9EZWdyZWVzKHBlcmNlbnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHBlcmNlbnQgKiAzLjY7XG4gIH1cblxufVxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udXQtY2hhcnQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2RvbnV0LWNoYXJ0L2RvbnV0LWNoYXJ0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBYXBELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFNBQVMsQ0FBQyxXQUF5QixFQUFFLE1BQWMsRUFBRSxPQUFlLEVBQUUsVUFBa0I7UUFDdEYsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9CLHdFQUF3RTtZQUN4RSxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDL0QsTUFBTSxpQkFBaUIsR0FBMkI7Z0JBQ2hELEdBQUcsS0FBSztnQkFDUixRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQzFFLE1BQU0sRUFBRSxlQUFlLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQzthQUNuQyxDQUFDO1lBQ0YsZUFBZSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakMsT0FBTyxpQkFBaUIsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFzQixFQUFFLE1BQWMsRUFBRSxPQUFlLEVBQUUsVUFBa0I7UUFDMUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxNQUFNLFlBQVksR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQyxNQUFNLFdBQVcsR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDO1FBRXhDLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM5QixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssT0FBTyxHQUFHLENBQUMsR0FBRyxNQUFNLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUQsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLE1BQU0sSUFBSSxNQUFNLE1BQU0sWUFBWSxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqSCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksV0FBVyxNQUFNLFlBQVksTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFdBQVcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqSCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsT0FBZTtRQUNoRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsTUFBTSxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDekMsT0FBTyxHQUFHLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixPQUFPLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQzsrR0F2Q1UsY0FBYzs2R0FBZCxjQUFjOzs0RkFBZCxjQUFjO2tCQUwxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSw2QkFBNkI7b0JBQ25DLElBQUksRUFBRSxJQUFJO29CQUNWLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbnV0U2xpY2UgfSBmcm9tICcuL2RvbnV0LWNoYXJ0Lm1vZGVsJztcblxuaW50ZXJmYWNlIERvbnV0U2xpY2VXaXRoQ29tbWFuZHMgZXh0ZW5kcyBEb251dFNsaWNlIHtcbiAgb2Zmc2V0OiBudW1iZXI7XG4gIGNvbW1hbmRzOiBzdHJpbmc7XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NsaWNlc1dpdGhDb21tYW5kc0FuZE9mZnNldCcsXG4gIHB1cmU6IHRydWUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIERvbnV0Q2hhcnRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShkb251dFNsaWNlczogRG9udXRTbGljZVtdLCByYWRpdXM6IG51bWJlciwgc3ZnU2l6ZTogbnVtYmVyLCBib3JkZXJTaXplOiBudW1iZXIpOiBEb251dFNsaWNlV2l0aENvbW1hbmRzW10ge1xuICAgIGxldCBwcmV2aW91c1BlcmNlbnQgPSAwO1xuICAgIHJldHVybiBkb251dFNsaWNlcy5tYXAoKHNsaWNlKSA9PiB7XG4gICAgICAvLyB0aGlzIGlzIGEgaGFjayB0byB0aGF0IHRoZSBjaXJjbGUgaXMgcmVuZGVyZWQgd2hlbiB0aGUgcGVyY2VudCBpcyAxMDBcbiAgICAgIHNsaWNlLnBlcmNlbnQgPSBzbGljZS5wZXJjZW50ID09PSAxMDAgPyA5OS45OTkgOiBzbGljZS5wZXJjZW50O1xuICAgICAgY29uc3Qgc2xpY2VXaXRoQ29tbWFuZHM6IERvbnV0U2xpY2VXaXRoQ29tbWFuZHMgPSB7XG4gICAgICAgIC4uLnNsaWNlLFxuICAgICAgICBjb21tYW5kczogYCR7dGhpcy5nZXRTbGljZUNvbW1hbmRzKHNsaWNlLCByYWRpdXMsIHN2Z1NpemUsIGJvcmRlclNpemUpfSB6YCxcbiAgICAgICAgb2Zmc2V0OiBwcmV2aW91c1BlcmNlbnQgKiAzLjYgKiAtMSxcbiAgICAgIH07XG4gICAgICBwcmV2aW91c1BlcmNlbnQgKz0gc2xpY2UucGVyY2VudDtcbiAgICAgIHJldHVybiBzbGljZVdpdGhDb21tYW5kcztcbiAgICB9KTtcbiAgfVxuXG4gIGdldFNsaWNlQ29tbWFuZHMoZG9udXRTbGljZTogRG9udXRTbGljZSwgcmFkaXVzOiBudW1iZXIsIHN2Z1NpemU6IG51bWJlciwgYm9yZGVyU2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBkZWdyZWVzID0gdGhpcy5wZXJjZW50VG9EZWdyZWVzKGRvbnV0U2xpY2UucGVyY2VudCk7XG4gICAgY29uc3QgbG9uZ1BhdGhGbGFnID0gZGVncmVlcyA+IDE4MCA/IDEgOiAwO1xuICAgIGNvbnN0IGlubmVyUmFkaXVzID0gcmFkaXVzIC0gYm9yZGVyU2l6ZTtcblxuICAgIGNvbnN0IGNvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbW1hbmRzLnB1c2goYE0gJHtzdmdTaXplIC8gMiArIHJhZGl1c30gJHtzdmdTaXplIC8gMn1gKTtcbiAgICBjb21tYW5kcy5wdXNoKGBBICR7cmFkaXVzfSAke3JhZGl1c30gMCAke2xvbmdQYXRoRmxhZ30gMCAke3RoaXMuZ2V0Q29vcmRGcm9tRGVncmVlcyhkZWdyZWVzLCByYWRpdXMsIHN2Z1NpemUpfWApO1xuICAgIGNvbW1hbmRzLnB1c2goYEwgJHt0aGlzLmdldENvb3JkRnJvbURlZ3JlZXMoZGVncmVlcywgaW5uZXJSYWRpdXMsIHN2Z1NpemUpfWApO1xuICAgIGNvbW1hbmRzLnB1c2goYEEgJHtpbm5lclJhZGl1c30gJHtpbm5lclJhZGl1c30gMCAke2xvbmdQYXRoRmxhZ30gMSAke3N2Z1NpemUgLyAyICsgaW5uZXJSYWRpdXN9ICR7c3ZnU2l6ZSAvIDJ9YCk7XG4gICAgcmV0dXJuIGNvbW1hbmRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGdldENvb3JkRnJvbURlZ3JlZXMoYW5nbGU6IG51bWJlciwgcmFkaXVzOiBudW1iZXIsIHN2Z1NpemU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgeCA9IE1hdGguY29zKChhbmdsZSAqIE1hdGguUEkpIC8gMTgwKTtcbiAgICBjb25zdCB5ID0gTWF0aC5zaW4oKGFuZ2xlICogTWF0aC5QSSkgLyAxODApO1xuICAgIGNvbnN0IGNvb3JkWCA9IHggKiByYWRpdXMgKyBzdmdTaXplIC8gMjtcbiAgICBjb25zdCBjb29yZFkgPSB5ICogLXJhZGl1cyArIHN2Z1NpemUgLyAyO1xuICAgIHJldHVybiBgJHtjb29yZFh9ICR7Y29vcmRZfWA7XG4gIH1cblxuICBwZXJjZW50VG9EZWdyZWVzKHBlcmNlbnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHBlcmNlbnQgKiAzLjY7XG4gIH1cbn1cbiJdfQ==