@rfprodz/client-d3-charts 1.2.4 → 1.2.6

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.
@@ -63,9 +63,9 @@ export class AppBarChartComponent {
63
63
  }
64
64
  }
65
65
  }
66
- /** @nocollapse */ AppBarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppBarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
67
- /** @nocollapse */ AppBarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppBarChartComponent, selector: "app-bar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppBarChartComponent, decorators: [{
66
+ /** @nocollapse */ AppBarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppBarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
67
+ /** @nocollapse */ AppBarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppBarChartComponent, selector: "app-bar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppBarChartComponent, decorators: [{
69
69
  type: Component,
70
70
  args: [{ selector: 'app-bar-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
71
71
  }], ctorParameters: function () { return [{ type: Document, decorators: [{
@@ -10,18 +10,6 @@ import * as i5 from "../force-directed-chart/force-directed-chart.component";
10
10
  import * as i6 from "../bar-chart/bar-chart.component";
11
11
  import * as i7 from "../line-chart/line-chart.component";
12
12
  export class AppChartExamplesComponent {
13
- constructor(breakpointObserver) {
14
- this.breakpointObserver = breakpointObserver;
15
- this.breakpoint$ = this.breakpointObserver
16
- .observe([Breakpoints.XSmall, Breakpoints.Small, Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])
17
- .pipe(map(result => Object.keys(result.breakpoints).find(item => result.breakpoints[item]) ?? 'unknown'));
18
- this.barChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.barChartData, options: this.barChartOptions() })))));
19
- this.lineChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.lineChartData, options: this.lineChartOptions() })))));
20
- this.radarChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.radarChartData, options: this.radarChartOptions() })))));
21
- this.pieChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.pieChartData, options: this.pieChartOptions() })))));
22
- this.forceDirectedChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.forceDirectedChartData, options: this.forceDirectedChartOptions() })))));
23
- this.timeout = 100;
24
- }
25
13
  /**
26
14
  * Sample bar chart data.
27
15
  */
@@ -142,6 +130,18 @@ export class AppChartExamplesComponent {
142
130
  };
143
131
  return chartData;
144
132
  }
133
+ constructor(breakpointObserver) {
134
+ this.breakpointObserver = breakpointObserver;
135
+ this.breakpoint$ = this.breakpointObserver
136
+ .observe([Breakpoints.XSmall, Breakpoints.Small, Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])
137
+ .pipe(map(result => Object.keys(result.breakpoints).find(item => result.breakpoints[item]) ?? 'unknown'));
138
+ this.barChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.barChartData, options: this.barChartOptions() })))));
139
+ this.lineChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.lineChartData, options: this.lineChartOptions() })))));
140
+ this.radarChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.radarChartData, options: this.radarChartOptions() })))));
141
+ this.pieChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.pieChartData, options: this.pieChartOptions() })))));
142
+ this.forceDirectedChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.forceDirectedChartData, options: this.forceDirectedChartOptions() })))));
143
+ this.timeout = 100;
144
+ }
145
145
  barChartOptions() {
146
146
  return {
147
147
  chartTitle: 'Example bar chart',
@@ -172,10 +172,10 @@ export class AppChartExamplesComponent {
172
172
  };
173
173
  }
174
174
  }
175
- /** @nocollapse */ AppChartExamplesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppChartExamplesComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
176
- /** @nocollapse */ AppChartExamplesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppChartExamplesComponent, selector: "app-chart-examples", ngImport: i0, template: "<div class=\"container\" *ngIf=\"barChartConfig$ | async as config\">\n <app-bar-chart [chartId]=\"'bar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-bar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"lineChartConfig$ | async as config\">\n <app-line-chart [chartId]=\"'line-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-line-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"radarChartConfig$ | async as config\">\n <app-radar-chart [chartId]=\"'radar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-radar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"pieChartConfig$ | async as config\">\n <app-pie-chart [chartId]=\"'pie-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-pie-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"forceDirectedChartConfig$ | async as config\">\n <app-force-directed-chart\n [chartId]=\"'force-directed-example-1'\"\n [data]=\"config.data\"\n [options]=\"config.options\"\n ></app-force-directed-chart>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}:host .container{flex:1 1 auto;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.AppPieChartComponent, selector: "app-pie-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: i4.AppRadarChartComponent, selector: "app-radar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: i5.AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: i6.AppBarChartComponent, selector: "app-bar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: i7.AppLineChartComponent, selector: "app-line-chart", inputs: ["chartId", "data", "options"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppChartExamplesComponent, decorators: [{
175
+ /** @nocollapse */ AppChartExamplesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppChartExamplesComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
176
+ /** @nocollapse */ AppChartExamplesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppChartExamplesComponent, selector: "app-chart-examples", ngImport: i0, template: "<div class=\"container\" *ngIf=\"barChartConfig$ | async as config\">\n <app-bar-chart [chartId]=\"'bar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-bar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"lineChartConfig$ | async as config\">\n <app-line-chart [chartId]=\"'line-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-line-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"radarChartConfig$ | async as config\">\n <app-radar-chart [chartId]=\"'radar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-radar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"pieChartConfig$ | async as config\">\n <app-pie-chart [chartId]=\"'pie-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-pie-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"forceDirectedChartConfig$ | async as config\">\n <app-force-directed-chart\n [chartId]=\"'force-directed-example-1'\"\n [data]=\"config.data\"\n [options]=\"config.options\"\n ></app-force-directed-chart>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}:host .container{flex:1 1 auto;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.AppPieChartComponent, selector: "app-pie-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: i4.AppRadarChartComponent, selector: "app-radar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: i5.AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: i6.AppBarChartComponent, selector: "app-bar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: i7.AppLineChartComponent, selector: "app-line-chart", inputs: ["chartId", "data", "options"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppChartExamplesComponent, decorators: [{
178
178
  type: Component,
179
179
  args: [{ selector: 'app-chart-examples', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" *ngIf=\"barChartConfig$ | async as config\">\n <app-bar-chart [chartId]=\"'bar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-bar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"lineChartConfig$ | async as config\">\n <app-line-chart [chartId]=\"'line-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-line-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"radarChartConfig$ | async as config\">\n <app-radar-chart [chartId]=\"'radar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-radar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"pieChartConfig$ | async as config\">\n <app-pie-chart [chartId]=\"'pie-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-pie-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"forceDirectedChartConfig$ | async as config\">\n <app-force-directed-chart\n [chartId]=\"'force-directed-example-1'\"\n [data]=\"config.data\"\n [options]=\"config.options\"\n ></app-force-directed-chart>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}:host .container{flex:1 1 auto;width:100%}\n"] }]
180
180
  }], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtZXhhbXBsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZDMtY2hhcnRzL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC1leGFtcGxlcy9jaGFydC1leGFtcGxlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0LWV4YW1wbGVzL2NoYXJ0LWV4YW1wbGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQWtCcEQsTUFBTSxPQUFPLHlCQUF5QjtJQStLcEMsWUFBNkIsa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFqRGxELGdCQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjthQUNuRCxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMzRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJ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QU0sS0FBSyxHQUFHO1lBQ1osT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7WUFDckMsUUFBUSxFQUFFO2dCQUNSLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO2dCQUM1QyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtnQkFDN0MsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7Z0JBQzlDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtnQkFDdkQsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7Z0JBQzlDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtnQkFDdEQsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7Z0JBQy9DLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO2FBQy9DO1NBQ0YsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUF1QyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFD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QUMzQyxDQUFDO0lBQ0osQ0FBQzs7eUlBbk5VLHlCQUF5Qjs2SEFBekIseUJBQXlCLDBEQ3BCdEMsZ3RDQStCQTsyRkRYYSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElCYXJDaGFydE9wdGlvbnMsIFRCYXJDaGFydERhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Jhci1jaGFydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgSUZvcmNlRGlyZWN0ZWRDaGFydERhdGEsXG4gIElGb3JjZURpcmVjdGVkQ2hhcnRPcHRpb25zLFxuICBJRm9yY2VEaXJlY3RlZEdyYXBoRW50aXR5LFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ZvcmNlLWRpcmVjdGVkLWNoYXJ0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJTGluZUNoYXJ0T3B0aW9ucywgVExpbmVDaGFydERhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2xpbmUtY2hhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElQaWVDaGFydERhdGFOb2RlLCBJUGllQ2hhcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9waWUtY2hhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElSYWRhckNoYXJ0RGF0YU5vZGUsIElSYWRhckNoYXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmFkYXItY2hhcnQuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoYXJ0LWV4YW1wbGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LWV4YW1wbGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnQtZXhhbXBsZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFwcENoYXJ0RXhhbXBsZXNDb21wb25lbnQge1xuICAvKipcbiAgICogU2FtcGxlIGJhciBjaGFydCBkYXRhLlxuICAgKi9cbiAgcHVibGljIGdldCBiYXJDaGFydERhdGEoKSB7XG4gICAgcmV0dXJuIDxUQmFyQ2hhcnREYXRhPltcbiAgICAgIHsgdGl0bGU6ICdvbmUnLCB2YWx1ZTogMSB9LFxuICAgICAgeyB0aXRsZTogJ3R3bycsIHZhbHVlOiAyIH0sXG4gICAgICB7IHRpdGxlOiAndGhyZWUnLCB2YWx1ZTogMyB9LFxuICAgICAgeyB0aXRsZTogJ2ZvdXInLCB2YWx1ZTogNCB9LFxuICAgICAgeyB0aXRsZTogJ2ZpdmUnLCB2YWx1ZTogNSB9LFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogU2FtcGxlIGxpbmUgY2hhcnQgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBnZXQgbGluZUNoYXJ0RGF0YSgpIHtcbiAgICBjb25zdCBpbmNyZW1lbnQgPSAxMDAwMDtcbiAgICBjb25zdCBtdWx0aXBsaWVyID0gMjtcbiAgICByZXR1cm4gPFRMaW5lQ2hhcnREYXRhPltcbiAgICAgIHsgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSwgdmFsdWU6IDEgfSxcbiAgICAgIHsgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIGluY3JlbWVudCwgdmFsdWU6IDEwIH0sXG4gICAgICB7IHRpbWVzdGFtcDogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBpbmNyZW1lbnQgKiBtdWx0aXBsaWVyLCB2YWx1ZTogMyB9LFxuICAgICAgeyB0aW1lc3RhbXA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgaW5jcmVtZW50ICogTWF0aC5wb3cobXVsdGlwbGllciwgbXVsdGlwbGllciksIHZhbHVlOiA1IH0sXG4gICAgICB7IHRpbWVzdGFtcDogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBpbmNyZW1lbnQgKiBNYXRoLnBvdyhtdWx0aXBsaWVyLCBtdWx0aXBsaWVyKSAqIG11bHRpcGxpZXIsIHZhbHVlOiA0IH0sXG4gICAgICB7IHRpbWVzdGFtcDogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBpbmNyZW1lbnQgKiBNYXRoLnBvdyhtdWx0aXBsaWVyLCBtdWx0aXBsaWVyKSAqIE1hdGgucG93KG11bHRpcGxpZXIsIG11bHRpcGxpZXIpLCB2YWx1ZTogNyB9LFxuICAgICAge1xuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgaW5jcmVtZW50ICogTWF0aC5wb3cobXVsdGlwbGllciwgbXVsdGlwbGllcikgKiBNYXRoLnBvdyhtdWx0aXBsaWVyLCBtdWx0aXBsaWVyKSAqIG11bHRpcGxpZXIsXG4gICAgICAgIHZhbHVlOiA4LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhbXBsZSByYWRhciBjaGFydCBkYXRhLlxuICAgKi9cbiAgcHVibGljIGdldCByYWRhckNoYXJ0RGF0YSgpIHtcbiAgICByZXR1cm4gPElSYWRhckNoYXJ0RGF0YU5vZGVbXVtdPltcbiAgICAgIFtcbiAgICAgICAgeyBheGlzOiAnb25lJywgdmFsdWU6IDEsIHVuaXQ6ICd4JyB9LFxuICAgICAgICB7IGF4aXM6ICd0d28nLCB2YWx1ZTogMiwgdW5pdDogJ3gnIH0sXG4gICAgICAgIHsgYXhpczogJ3RocmVlJywgdmFsdWU6IDMsIHVuaXQ6ICd4JyB9LFxuICAgICAgICB7IGF4aXM6ICdmb3VyJywgdmFsdWU6IDQsIHVuaXQ6ICd4JyB9LFxuICAgICAgICB7IGF4aXM6ICdmaXZlJywgdmFsdWU6IDUsIHVuaXQ6ICd4JyB9LFxuICAgICAgICB7IGF4aXM6ICdzaXgnLCB2YWx1ZTogNiwgdW5pdDogJ3gnIH0sXG4gICAgICAgIHsgYXhpczogJ3NldmVuJywgdmFsdWU6IDcsIHVuaXQ6ICd4JyB9LFxuICAgICAgICB7IGF4aXM6ICdlaWdodCcsIHZhbHVlOiA4LCB1bml0OiAneCcgfSxcbiAgICAgICAgeyBheGlzOiAnbmluZSAobG9uZyBsYWJlbHMgYXJlIHdyYXBwZWQpJywgdmFsdWU6IDksIHVuaXQ6ICd4JyB9LFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgeyBheGlzOiAnb25lJywgdmFsdWU6IDksIHVuaXQ6ICd5JyB9LFxuICAgICAgICB7IGF4aXM6ICd0d28nLCB2YWx1ZTogOCwgdW5pdDogJ3knIH0sXG4gICAgICAgIHsgYXhpczogJ3RocmVlJywgdmFsdWU6IDcsIHVuaXQ6ICd5JyB9LFxuICAgICAgICB7IGF4aXM6ICdmb3VyJywgdmFsdWU6IDYsIHVuaXQ6ICd5JyB9LFxuICAgICAgICB7IGF4aXM6ICdmaXZlJywgdmFsdWU6IDUsIHVuaXQ6ICd5JyB9LFxuICAgICAgICB7IGF4aXM6ICdzaXgnLCB2YWx1ZTogNCwgdW5pdDogJ3knIH0sXG4gICAgICAgIHsgYXhpczogJ3NldmVuJywgdmFsdWU6IDMsIHVuaXQ6ICd5JyB9LFxuICAgICAgICB7IGF4aXM6ICdlaWdodCcsIHZhbHVlOiAyLCB1bml0OiAneScgfSxcbiAgICAgICAgeyBheGlzOiAnbmluZSAobG9uZyBsYWJlbHMgYXJlIHdyYXBwZWQpJywgdmFsdWU6IDEsIHVuaXQ6ICd5JyB9LFxuICAgICAgXSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhbXBsZSBwaWUgY2hhcnQgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBnZXQgcGllQ2hhcnREYXRhKCkge1xuICAgIHJldHVybiA8SVBpZUNoYXJ0RGF0YU5vZGVbXT5bXG4gICAgICB7IGtleTogJ29uZScsIHk6IDEgfSxcbiAgICAgIHsga2V5OiAndHdvJywgeTogMiB9LFxuICAgICAgeyBrZXk6ICd0aHJlZScsIHk6IDMgfSxcbiAgICAgIHsga2V5OiAnZm91cicsIHk6IDQgfSxcbiAgICAgIHsga2V5OiAnZml2ZScsIHk6IDUgfSxcbiAgICAgIHsga2V5OiAnc2l4JywgeTogNiB9LFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogU2FtcGxlIGZvcmNlIGRpcmVjdGVkIGNoYXJ0IGRhdGEuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZvcmNlRGlyZWN0ZWRDaGFydERhdGEoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB7XG4gICAgICBkb21haW5zOiBbJ2ZpcnN0JywgJ3NlY29uZCcsICd0aGlyZCddLFxuICAgICAgZW50aXRpZXM6IFtcbiAgICAgICAgeyBuYW1lOiAnb25lJywgZG9tYWluczogWydmaXJzdCddLCBpbWc6ICcnIH0sXG4gICAgICAgIHsgbmFtZTogJ3R3bycsIGRvbWFpbnM6IFsnc2Vjb25kJ10sIGltZzogJycgfSxcbiAgICAgICAgeyBuYW1lOiAndGhyZWUnLCBkb21haW5zOiBbJ3RoaXJkJ10sIGltZzogJycgfSxcbiAgICAgICAgeyBuYW1lOiAnZm91cicsIGRvbWFpbnM6IFsnZmlyc3QnLCAnc2Vjb25kJ10sIGltZzogJycgfSxcbiAgICAgICAgeyBuYW1lOiAnZml2ZScsIGRvbWFpbnM6IFsnc2Vjb25kJ10sIGltZzogJycgfSxcbiAgICAgICAgeyBuYW1lOiAnc2l4JywgZG9tYWluczogWyd0aGlyZCcsICdzZWNvbmQnXSwgaW1nOiAnJyB9LFxuICAgICAgICB7IG5hbWU6ICdzZXZlbicsIGRvbWFpbnM6IFsnc2Vjb25kJ10sIGltZzogJycgfSxcbiAgICAgICAgeyBuYW1lOiAnZWlnaHQnLCBkb21haW5zOiBbJ3RoaXJkJ10sIGltZzogJycgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgICBjb25zdCBkb21haW5zOiBJRm9yY2VEaXJlY3RlZENoYXJ0RGF0YVsnZG9tYWlucyddID0gaW5wdXQuZG9tYWlucy5tYXAoKG5hbWUsIGluZGV4KSA9PiAoeyBpbmRleCwgbmFtZSwgdmFsdWU6IDEgfSkpO1xuICAgIGNvbnN0IGVudGl0aWVzOiBJRm9yY2VEaXJlY3RlZENoYXJ0RGF0YVsnZW50aXRpZXMnXSA9IGlucHV0LmVudGl0aWVzLm1hcCgoYXBwLCBpbmRleCkgPT4gKHtcbiAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgIG5hbWU6IGFwcC5uYW1lLFxuICAgICAgZG9tYWluczogWy4uLmFwcC5kb21haW5zXSxcbiAgICAgIGltZzogYXBwLmltZyxcbiAgICAgIGxpbmtzQ291bnQ6IDAsXG4gICAgfSkpO1xuICAgIGNvbnN0IG5vZGVzOiBJRm9yY2VEaXJlY3RlZEdyYXBoRW50aXR5W10gPSBbLi4uZW50aXRpZXNdO1xuICAgIGNvbnN0IGxpbmtzOiBJRm9yY2VEaXJlY3RlZENoYXJ0RGF0YVsnbGlua3MnXSA9IGVudGl0aWVzXG4gICAgICAubWFwKGVudGl0eSA9PiB7XG4gICAgICAgIHJldHVybiBlbnRpdHkuZG9tYWlucy5tYXAoZG9tYWluID0+IHtcbiAgICAgICAgICBjb25zdCBzb3VyY2UgPSBkb21haW5zLmZpbmQodmFsdWUgPT4gZG9tYWluID09PSB2YWx1ZS5uYW1lKT8uaW5kZXggPz8gLTE7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZW50aXR5LmluZGV4O1xuICAgICAgICAgIHJldHVybiB7IHNvdXJjZSwgdGFyZ2V0IH07XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBpdGVtKSA9PiAoQXJyYXkuaXNBcnJheShpdGVtKSA/IFsuLi5hY2N1bXVsYXRvciwgLi4uaXRlbV0gOiBbLi4uYWNjdW11bGF0b3IsIGl0ZW1dKSwgW10pXG4gICAgICAuZmlsdGVyKGxpbmsgPT4gbGluay5zb3VyY2UgIT09IC0xICYmIGxpbmsudGFyZ2V0ICE9PSAtMSAmJiB0eXBlb2YgbGluay50YXJnZXQgIT09ICd1bmRlZmluZWQnKTtcbiAgICBjb25zdCBjaGFydERhdGE6IElGb3JjZURpcmVjdGVkQ2hhcnREYXRhID0ge1xuICAgICAgZG9tYWlucyxcbiAgICAgIGVudGl0aWVzOiBlbnRpdGllcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBsaW5rc0NvdW50OiBsaW5rcy5yZWR1Y2UoKGFjYywgbGluaykgPT4gKGxpbmsudGFyZ2V0ID09PSBpdGVtLmluZGV4ID8gYWNjICsgMSA6IGFjYyksIDApLFxuICAgICAgfSkpLFxuICAgICAgbGlua3MsXG4gICAgICBub2RlcyxcbiAgICB9O1xuICAgIHJldHVybiBjaGFydERhdGE7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGJyZWFrcG9pbnQkID0gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcbiAgICAub2JzZXJ2ZShbQnJlYWtwb2ludHMuWFNtYWxsLCBCcmVha3BvaW50cy5TbWFsbCwgQnJlYWtwb2ludHMuTWVkaXVtLCBCcmVha3BvaW50cy5MYXJnZSwgQnJlYWtwb2ludHMuWExhcmdlXSlcbiAgICAucGlwZShtYXAocmVzdWx0ID0+IE9iamVjdC5rZXlzKHJlc3VsdC5icmVha3BvaW50cykuZmluZChpdGVtID0+IHJlc3VsdC5icmVha3BvaW50c1tpdGVtXSkgPz8gJ3Vua25vd24nKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGJhckNoYXJ0Q29uZmlnJCA9IHRoaXMuYnJlYWtwb2ludCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRpbWVyKHRoaXMudGltZW91dCkucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWFwKCgpID0+ICh7IGRhdGE6IHRoaXMuYmFyQ2hhcnREYXRhLCBvcHRpb25zOiB0aGlzLmJhckNoYXJ0T3B0aW9ucygpIH0pKSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbGluZUNoYXJ0Q29uZmlnJCA9IHRoaXMuYnJlYWtwb2ludCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRpbWVyKHRoaXMudGltZW91dCkucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWFwKCgpID0+ICh7IGRhdGE6IHRoaXMubGluZUNoYXJ0RGF0YSwgb3B0aW9uczogdGhpcy5saW5lQ2hhcnRPcHRpb25zKCkgfSkpLFxuICAgICAgKSxcbiAgICApLFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSByYWRhckNoYXJ0Q29uZmlnJCA9IHRoaXMuYnJlYWtwb2ludCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRpbWVyKHRoaXMudGltZW91dCkucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWFwKCgpID0+ICh7IGRhdGE6IHRoaXMucmFkYXJDaGFydERhdGEsIG9wdGlvbnM6IHRoaXMucmFkYXJDaGFydE9wdGlvbnMoKSB9KSksXG4gICAgICApLFxuICAgICksXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBpZUNoYXJ0Q29uZmlnJCA9IHRoaXMuYnJlYWtwb2ludCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRpbWVyKHRoaXMudGltZW91dCkucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWFwKCgpID0+ICh7IGRhdGE6IHRoaXMucGllQ2hhcnREYXRhLCBvcHRpb25zOiB0aGlzLnBpZUNoYXJ0T3B0aW9ucygpIH0pKSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9yY2VEaXJlY3RlZENoYXJ0Q29uZmlnJCA9IHRoaXMuYnJlYWtwb2ludCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRpbWVyKHRoaXMudGltZW91dCkucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgbWFwKCgpID0+ICh7IGRhdGE6IHRoaXMuZm9yY2VEaXJlY3RlZENoYXJ0RGF0YSwgb3B0aW9uczogdGhpcy5mb3JjZURpcmVjdGVkQ2hhcnRPcHRpb25zKCkgfSkpLFxuICAgICAgKSxcbiAgICApLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIpIHt9XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0aW1lb3V0ID0gMTAwO1xuXG4gIHB1YmxpYyBiYXJDaGFydE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIDxQYXJ0aWFsPElCYXJDaGFydE9wdGlvbnM+PntcbiAgICAgIGNoYXJ0VGl0bGU6ICdFeGFtcGxlIGJhciBjaGFydCcsXG4gICAgICB4QXhpc1RpdGxlOiAnbG9uZyB4IGF4aXMgdGl0bGUnLFxuICAgICAgeUF4aXNUaXRsZTogJ2xvbmcgeSBheGlzIHRpdGxlJyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGxpbmVDaGFydE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIDxQYXJ0aWFsPElMaW5lQ2hhcnRPcHRpb25zPj57XG4gICAgICBjaGFydFRpdGxlOiAnRXhhbXBsZSBsaW5lIGNoYXJ0JyxcbiAgICAgIHhBeGlzVGl0bGU6ICdEYXRlIHJhbmdlJyxcbiAgICAgIHlBeGlzVGl0bGU6ICdWYWx1ZSByYW5nZScsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyByYWRhckNoYXJ0T3B0aW9ucygpIHtcbiAgICByZXR1cm4gPFBhcnRpYWw8SVJhZGFyQ2hhcnRPcHRpb25zPj57XG4gICAgICBjaGFydFRpdGxlOiAnRXhhbXBsZSByYWRhciBjaGFydCcsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBwaWVDaGFydE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIDxQYXJ0aWFsPElQaWVDaGFydE9wdGlvbnM+PntcbiAgICAgIGNoYXJ0VGl0bGU6ICdFeGFtcGxlIHBpZSBjaGFydCcsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JjZURpcmVjdGVkQ2hhcnRPcHRpb25zKCkge1xuICAgIHJldHVybiA8UGFydGlhbDxJRm9yY2VEaXJlY3RlZENoYXJ0T3B0aW9ucz4+e1xuICAgICAgY2hhcnRUaXRsZTogJ0V4YW1wbGUgZm9yY2UgZGlyZWN0ZWQgY2hhcnQnLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIiAqbmdJZj1cImJhckNoYXJ0Q29uZmlnJCB8IGFzeW5jIGFzIGNvbmZpZ1wiPlxuICA8YXBwLWJhci1jaGFydCBbY2hhcnRJZF09XCInYmFyLWV4YW1wbGUtMSdcIiBbZGF0YV09XCJjb25maWcuZGF0YVwiIFtvcHRpb25zXT1cImNvbmZpZy5vcHRpb25zXCI+PC9hcHAtYmFyLWNoYXJ0PlxuPC9kaXY+XG5cbjxociBbbmdTdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiIC8+XG5cbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIiAqbmdJZj1cImxpbmVDaGFydENvbmZpZyQgfCBhc3luYyBhcyBjb25maWdcIj5cbiAgPGFwcC1saW5lLWNoYXJ0IFtjaGFydElkXT1cIidsaW5lLWV4YW1wbGUtMSdcIiBbZGF0YV09XCJjb25maWcuZGF0YVwiIFtvcHRpb25zXT1cImNvbmZpZy5vcHRpb25zXCI+PC9hcHAtbGluZS1jaGFydD5cbjwvZGl2PlxuXG48aHIgW25nU3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIiAvPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKm5nSWY9XCJyYWRhckNoYXJ0Q29uZmlnJCB8IGFzeW5jIGFzIGNvbmZpZ1wiPlxuICA8YXBwLXJhZGFyLWNoYXJ0IFtjaGFydElkXT1cIidyYWRhci1leGFtcGxlLTEnXCIgW2RhdGFdPVwiY29uZmlnLmRhdGFcIiBbb3B0aW9uc109XCJjb25maWcub3B0aW9uc1wiPjwvYXBwLXJhZGFyLWNoYXJ0PlxuPC9kaXY+XG5cbjxociBbbmdTdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiIC8+XG5cbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIiAqbmdJZj1cInBpZUNoYXJ0Q29uZmlnJCB8IGFzeW5jIGFzIGNvbmZpZ1wiPlxuICA8YXBwLXBpZS1jaGFydCBbY2hhcnRJZF09XCIncGllLWV4YW1wbGUtMSdcIiBbZGF0YV09XCJjb25maWcuZGF0YVwiIFtvcHRpb25zXT1cImNvbmZpZy5vcHRpb25zXCI+PC9hcHAtcGllLWNoYXJ0PlxuPC9kaXY+XG5cbjxociBbbmdTdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiIC8+XG5cbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIiAqbmdJZj1cImZvcmNlRGlyZWN0ZWRDaGFydENvbmZpZyQgfCBhc3luYyBhcyBjb25maWdcIj5cbiAgPGFwcC1mb3JjZS1kaXJlY3RlZC1jaGFydFxuICAgIFtjaGFydElkXT1cIidmb3JjZS1kaXJlY3RlZC1leGFtcGxlLTEnXCJcbiAgICBbZGF0YV09XCJjb25maWcuZGF0YVwiXG4gICAgW29wdGlvbnNdPVwiY29uZmlnLm9wdGlvbnNcIlxuICA+PC9hcHAtZm9yY2UtZGlyZWN0ZWQtY2hhcnQ+XG48L2Rpdj5cbiJdfQ==
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtZXhhbXBsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZDMtY2hhcnRzL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC1leGFtcGxlcy9jaGFydC1leGFtcGxlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0LWV4YW1wbGVzL2NoYXJ0LWV4YW1wbGVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQWtCcEQsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQzs7T0FFRztJQUNILElBQVcsWUFBWTtRQUNyQixPQUFzQjtZQUNwQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMxQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUM1QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUMzQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtTQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxhQUFhO1FBQ3RCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN4QixNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDckIsT0FBdUI7WUFDckIsRUFBRSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQzdDLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDMUQsRUFBRSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7WUFDdEUsRUFBRSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUM1RixFQUFFLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN6RyxFQUFFLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQy9IO2dCQUNFLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMs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M0MsQ0FBQztJQUNKLENBQUM7O3lJQW5OVSx5QkFBeUI7NkhBQXpCLHlCQUF5QiwwRENwQnRDLGd0Q0ErQkE7MkZEWGEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QsIG1hcCwgc3dpdGNoTWFwLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJQmFyQ2hhcnRPcHRpb25zLCBUQmFyQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9iYXItY2hhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIElGb3JjZURpcmVjdGVkQ2hhcnREYXRhLFxuICBJRm9yY2VEaXJlY3RlZENoYXJ0T3B0aW9ucyxcbiAgSUZvcmNlRGlyZWN0ZWRHcmFwaEVudGl0eSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb3JjZS1kaXJlY3RlZC1jaGFydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxpbmVDaGFydE9wdGlvbnMsIFRMaW5lQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9saW5lLWNoYXJ0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUGllQ2hhcnREYXRhTm9kZSwgSVBpZUNoYXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGllLWNoYXJ0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUmFkYXJDaGFydERhdGFOb2RlLCBJUmFkYXJDaGFydE9wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JhZGFyLWNoYXJ0LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaGFydC1leGFtcGxlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC1leGFtcGxlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0LWV4YW1wbGVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBDaGFydEV4YW1wbGVzQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFNhbXBsZSBiYXIgY2hhcnQgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYmFyQ2hhcnREYXRhKCkge1xuICAgIHJldHVybiA8VEJhckNoYXJ0RGF0YT5bXG4gICAgICB7IHRpdGxlOiAnb25lJywgdmFsdWU6IDEgfSxcbiAgICAgIHsgdGl0bGU6ICd0d28nLCB2YWx1ZTogMiB9LFxuICAgICAgeyB0aXRsZTogJ3RocmVlJywgdmFsdWU6IDMgfSxcbiAgICAgIHsgdGl0bGU6ICdmb3VyJywgdmFsdWU6IDQgfSxcbiAgICAgIHsgdGl0bGU6ICdmaXZlJywgdmFsdWU6IDUgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhbXBsZSBsaW5lIGNoYXJ0IGRhdGEuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGxpbmVDaGFydERhdGEoKSB7XG4gICAgY29uc3QgaW5jcmVtZW50ID0gMTAwMDA7XG4gICAgY29uc3QgbXVsdGlwbGllciA9IDI7XG4gICAgcmV0dXJuIDxUTGluZUNoYXJ0RGF0YT5bXG4gICAgICB7IHRpbWVzdGFtcDogbmV3IERhdGUoKS5nZXRUaW1lKCksIHZhbHVlOiAxIH0sXG4gICAgICB7IHRpbWVzdGFtcDogbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBpbmNyZW1lbnQsIHZhbHVlOiAxMCB9LFxuICAgICAgeyB0aW1lc3RhbXA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgaW5jcmVtZW50ICogbXVsdGlwbGllciwgdmFsdWU6IDMgfSxcbiAgICAgIHsgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIGluY3JlbWVudCAqIE1hdGgucG93KG11bHRpcGxpZXIsIG11bHRpcGxpZXIpLCB2YWx1ZTogNSB9LFxuICAgICAgeyB0aW1lc3RhbXA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgaW5jcmVtZW50ICogTWF0aC5wb3cobXVsdGlwbGllciwgbXVsdGlwbGllcikgKiBtdWx0aXBsaWVyLCB2YWx1ZTogNCB9LFxuICAgICAgeyB0aW1lc3RhbXA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgaW5jcmVtZW50ICogTWF0aC5wb3cobXVsdGlwbGllciwgbXVsdGlwbGllcikgKiBNYXRoLnBvdyhtdWx0aXBsaWVyLCBtdWx0aXBsaWVyKSwgdmFsdWU6IDcgfSxcbiAgICAgIHtcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIGluY3JlbWVudCAqIE1hdGgucG93KG11bHRpcGxpZXIsIG11bHRpcGxpZXIpICogTWF0aC5wb3cobXVsdGlwbGllciwgbXVsdGlwbGllcikgKiBtdWx0aXBsaWVyLFxuICAgICAgICB2YWx1ZTogOCxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW1wbGUgcmFkYXIgY2hhcnQgZGF0YS5cbiAgICovXG4gIHB1YmxpYyBnZXQgcmFkYXJDaGFydERhdGEoKSB7XG4gICAgcmV0dXJuIDxJUmFkYXJDaGFydERhdGFOb2RlW11bXT5bXG4gICAgICBbXG4gICAgICAgIHsgYXhpczogJ29uZScsIHZhbHVlOiAxLCB1bml0OiAneCcgfSxcbiAgICAgICAgeyBheGlzOiAndHdvJywgdmFsdWU6IDIsIHVuaXQ6ICd4JyB9LFxuICAgICAgICB7IGF4aXM6ICd0aHJlZScsIHZhbHVlOiAzLCB1bml0OiAneCcgfSxcbiAgICAgICAgeyBheGlzOiAnZm91cicsIHZhbHVlOiA0LCB1bml0OiAneCcgfSxcbiAgICAgICAgeyBheGlzOiAnZml2ZScsIHZhbHVlOiA1LCB1bml0OiAneCcgfSxcbiAgICAgICAgeyBheGlzOiAnc2l4JywgdmFsdWU6IDYsIHVuaXQ6ICd4JyB9LFxuICAgICAgICB7IGF4aXM6ICdzZXZlbicsIHZhbHVlOiA3LCB1bml0OiAneCcgfSxcbiAgICAgICAgeyBheGlzOiAnZWlnaHQnLCB2YWx1ZTogOCwgdW5pdDogJ3gnIH0sXG4gICAgICAgIHsgYXhpczogJ25pbmUgKGxvbmcgbGFiZWxzIGFyZSB3cmFwcGVkKScsIHZhbHVlOiA5LCB1bml0OiAneCcgfSxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHsgYXhpczogJ29uZScsIHZhbHVlOiA5LCB1bml0OiAneScgfSxcbiAgICAgICAgeyBheGlzOiAndHdvJywgdmFsdWU6IDgsIHVuaXQ6ICd5JyB9LFxuICAgICAgICB7IGF4aXM6ICd0aHJlZScsIHZhbHVlOiA3LCB1bml0OiAneScgfSxcbiAgICAgICAgeyBheGlzOiAnZm91cicsIHZhbHVlOiA2LCB1bml0OiAneScgfSxcbiAgICAgICAgeyBheGlzOiAnZml2ZScsIHZhbHVlOiA1LCB1bml0OiAneScgfSxcbiAgICAgICAgeyBheGlzOiAnc2l4JywgdmFsdWU6IDQsIHVuaXQ6ICd5JyB9LFxuICAgICAgICB7IGF4aXM6ICdzZXZlbicsIHZhbHVlOiAzLCB1bml0OiAneScgfSxcbiAgICAgICAgeyBheGlzOiAnZWlnaHQnLCB2YWx1ZTogMiwgdW5pdDogJ3knIH0sXG4gICAgICAgIHsgYXhpczogJ25pbmUgKGxvbmcgbGFiZWxzIGFyZSB3cmFwcGVkKScsIHZhbHVlOiAxLCB1bml0OiAneScgfSxcbiAgICAgIF0sXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW1wbGUgcGllIGNoYXJ0IGRhdGEuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBpZUNoYXJ0RGF0YSgpIHtcbiAgICByZXR1cm4gPElQaWVDaGFydERhdGFOb2RlW10+W1xuICAgICAgeyBrZXk6ICdvbmUnLCB5OiAxIH0sXG4gICAgICB7IGtleTogJ3R3bycsIHk6IDIgfSxcbiAgICAgIHsga2V5OiAndGhyZWUnLCB5OiAzIH0sXG4gICAgICB7IGtleTogJ2ZvdXInLCB5OiA0IH0sXG4gICAgICB7IGtleTogJ2ZpdmUnLCB5OiA1IH0sXG4gICAgICB7IGtleTogJ3NpeCcsIHk6IDYgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhbXBsZSBmb3JjZSBkaXJlY3RlZCBjaGFydCBkYXRhLlxuICAgKi9cbiAgcHVibGljIGdldCBmb3JjZURpcmVjdGVkQ2hhcnREYXRhKCkge1xuICAgIGNvbnN0IGlucHV0ID0ge1xuICAgICAgZG9tYWluczogWydmaXJzdCcsICdzZWNvbmQnLCAndGhpcmQnXSxcbiAgICAgIGVudGl0aWVzOiBbXG4gICAgICAgIHsgbmFtZTogJ29uZScsIGRvbWFpbnM6IFsnZmlyc3QnXSwgaW1nOiAnJyB9LFxuICAgICAgICB7IG5hbWU6ICd0d28nLCBkb21haW5zOiBbJ3NlY29uZCddLCBpbWc6ICcnIH0sXG4gICAgICAgIHsgbmFtZTogJ3RocmVlJywgZG9tYWluczogWyd0aGlyZCddLCBpbWc6ICcnIH0sXG4gICAgICAgIHsgbmFtZTogJ2ZvdXInLCBkb21haW5zOiBbJ2ZpcnN0JywgJ3NlY29uZCddLCBpbWc6ICcnIH0sXG4gICAgICAgIHsgbmFtZTogJ2ZpdmUnLCBkb21haW5zOiBbJ3NlY29uZCddLCBpbWc6ICcnIH0sXG4gICAgICAgIHsgbmFtZTogJ3NpeCcsIGRvbWFpbnM6IFsndGhpcmQnLCAnc2Vjb25kJ10sIGltZzogJycgfSxcbiAgICAgICAgeyBuYW1lOiAnc2V2ZW4nLCBkb21haW5zOiBbJ3NlY29uZCddLCBpbWc6ICcnIH0sXG4gICAgICAgIHsgbmFtZTogJ2VpZ2h0JywgZG9tYWluczogWyd0aGlyZCddLCBpbWc6ICcnIH0sXG4gICAgICBdLFxuICAgIH07XG4gICAgY29uc3QgZG9tYWluczogSUZvcmNlRGlyZWN0ZWRDaGFydERhdGFbJ2RvbWFpbnMnXSA9IGlucHV0LmRvbWFpbnMubWFwKChuYW1lLCBpbmRleCkgPT4gKHsgaW5kZXgsIG5hbWUsIHZhbHVlOiAxIH0pKTtcbiAgICBjb25zdCBlbnRpdGllczogSUZvcmNlRGlyZWN0ZWRDaGFydERhdGFbJ2VudGl0aWVzJ10gPSBpbnB1dC5lbnRpdGllcy5tYXAoKGFwcCwgaW5kZXgpID0+ICh7XG4gICAgICBpbmRleDogaW5kZXgsXG4gICAgICBuYW1lOiBhcHAubmFtZSxcbiAgICAgIGRvbWFpbnM6IFsuLi5hcHAuZG9tYWluc10sXG4gICAgICBpbWc6IGFwcC5pbWcsXG4gICAgICBsaW5rc0NvdW50OiAwLFxuICAgIH0pKTtcbiAgICBjb25zdCBub2RlczogSUZvcmNlRGlyZWN0ZWRHcmFwaEVudGl0eVtdID0gWy4uLmVudGl0aWVzXTtcbiAgICBjb25zdCBsaW5rczogSUZvcmNlRGlyZWN0ZWRDaGFydERhdGFbJ2xpbmtzJ10gPSBlbnRpdGllc1xuICAgICAgLm1hcChlbnRpdHkgPT4ge1xuICAgICAgICByZXR1cm4gZW50aXR5LmRvbWFpbnMubWFwKGRvbWFpbiA9PiB7XG4gICAgICAgICAgY29uc3Qgc291cmNlID0gZG9tYWlucy5maW5kKHZhbHVlID0+IGRvbWFpbiA9PT0gdmFsdWUubmFtZSk/LmluZGV4ID8/IC0xO1xuICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGVudGl0eS5pbmRleDtcbiAgICAgICAgICByZXR1cm4geyBzb3VyY2UsIHRhcmdldCB9O1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAucmVkdWNlKChhY2N1bXVsYXRvciwgaXRlbSkgPT4gKEFycmF5LmlzQXJyYXkoaXRlbSkgPyBbLi4uYWNjdW11bGF0b3IsIC4uLml0ZW1dIDogWy4uLmFjY3VtdWxhdG9yLCBpdGVtXSksIFtdKVxuICAgICAgLmZpbHRlcihsaW5rID0+IGxpbmsuc291cmNlICE9PSAtMSAmJiBsaW5rLnRhcmdldCAhPT0gLTEgJiYgdHlwZW9mIGxpbmsudGFyZ2V0ICE9PSAndW5kZWZpbmVkJyk7XG4gICAgY29uc3QgY2hhcnREYXRhOiBJRm9yY2VEaXJlY3RlZENoYXJ0RGF0YSA9IHtcbiAgICAgIGRvbWFpbnMsXG4gICAgICBlbnRpdGllczogZW50aXRpZXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgbGlua3NDb3VudDogbGlua3MucmVkdWNlKChhY2MsIGxpbmspID0+IChsaW5rLnRhcmdldCA9PT0gaXRlbS5pbmRleCA/IGFjYyArIDEgOiBhY2MpLCAwKSxcbiAgICAgIH0pKSxcbiAgICAgIGxpbmtzLFxuICAgICAgbm9kZXMsXG4gICAgfTtcbiAgICByZXR1cm4gY2hhcnREYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBicmVha3BvaW50JCA9IHRoaXMuYnJlYWtwb2ludE9ic2VydmVyXG4gICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLlhTbWFsbCwgQnJlYWtwb2ludHMuU21hbGwsIEJyZWFrcG9pbnRzLk1lZGl1bSwgQnJlYWtwb2ludHMuTGFyZ2UsIEJyZWFrcG9pbnRzLlhMYXJnZV0pXG4gICAgLnBpcGUobWFwKHJlc3VsdCA9PiBPYmplY3Qua2V5cyhyZXN1bHQuYnJlYWtwb2ludHMpLmZpbmQoaXRlbSA9PiByZXN1bHQuYnJlYWtwb2ludHNbaXRlbV0pID8/ICd1bmtub3duJykpO1xuXG4gIHB1YmxpYyByZWFkb25seSBiYXJDaGFydENvbmZpZyQgPSB0aGlzLmJyZWFrcG9pbnQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aW1lcih0aGlzLnRpbWVvdXQpLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIG1hcCgoKSA9PiAoeyBkYXRhOiB0aGlzLmJhckNoYXJ0RGF0YSwgb3B0aW9uczogdGhpcy5iYXJDaGFydE9wdGlvbnMoKSB9KSksXG4gICAgICApLFxuICAgICksXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxpbmVDaGFydENvbmZpZyQgPSB0aGlzLmJyZWFrcG9pbnQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aW1lcih0aGlzLnRpbWVvdXQpLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIG1hcCgoKSA9PiAoeyBkYXRhOiB0aGlzLmxpbmVDaGFydERhdGEsIG9wdGlvbnM6IHRoaXMubGluZUNoYXJ0T3B0aW9ucygpIH0pKSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmFkYXJDaGFydENvbmZpZyQgPSB0aGlzLmJyZWFrcG9pbnQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aW1lcih0aGlzLnRpbWVvdXQpLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIG1hcCgoKSA9PiAoeyBkYXRhOiB0aGlzLnJhZGFyQ2hhcnREYXRhLCBvcHRpb25zOiB0aGlzLnJhZGFyQ2hhcnRPcHRpb25zKCkgfSkpLFxuICAgICAgKSxcbiAgICApLFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBwaWVDaGFydENvbmZpZyQgPSB0aGlzLmJyZWFrcG9pbnQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aW1lcih0aGlzLnRpbWVvdXQpLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIG1hcCgoKSA9PiAoeyBkYXRhOiB0aGlzLnBpZUNoYXJ0RGF0YSwgb3B0aW9uczogdGhpcy5waWVDaGFydE9wdGlvbnMoKSB9KSksXG4gICAgICApLFxuICAgICksXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcmNlRGlyZWN0ZWRDaGFydENvbmZpZyQgPSB0aGlzLmJyZWFrcG9pbnQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aW1lcih0aGlzLnRpbWVvdXQpLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIG1hcCgoKSA9PiAoeyBkYXRhOiB0aGlzLmZvcmNlRGlyZWN0ZWRDaGFydERhdGEsIG9wdGlvbnM6IHRoaXMuZm9yY2VEaXJlY3RlZENoYXJ0T3B0aW9ucygpIH0pKSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyKSB7fVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgdGltZW91dCA9IDEwMDtcblxuICBwdWJsaWMgYmFyQ2hhcnRPcHRpb25zKCkge1xuICAgIHJldHVybiA8UGFydGlhbDxJQmFyQ2hhcnRPcHRpb25zPj57XG4gICAgICBjaGFydFRpdGxlOiAnRXhhbXBsZSBiYXIgY2hhcnQnLFxuICAgICAgeEF4aXNUaXRsZTogJ2xvbmcgeCBheGlzIHRpdGxlJyxcbiAgICAgIHlBeGlzVGl0bGU6ICdsb25nIHkgYXhpcyB0aXRsZScsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBsaW5lQ2hhcnRPcHRpb25zKCkge1xuICAgIHJldHVybiA8UGFydGlhbDxJTGluZUNoYXJ0T3B0aW9ucz4+e1xuICAgICAgY2hhcnRUaXRsZTogJ0V4YW1wbGUgbGluZSBjaGFydCcsXG4gICAgICB4QXhpc1RpdGxlOiAnRGF0ZSByYW5nZScsXG4gICAgICB5QXhpc1RpdGxlOiAnVmFsdWUgcmFuZ2UnLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcmFkYXJDaGFydE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIDxQYXJ0aWFsPElSYWRhckNoYXJ0T3B0aW9ucz4+e1xuICAgICAgY2hhcnRUaXRsZTogJ0V4YW1wbGUgcmFkYXIgY2hhcnQnLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcGllQ2hhcnRPcHRpb25zKCkge1xuICAgIHJldHVybiA8UGFydGlhbDxJUGllQ2hhcnRPcHRpb25zPj57XG4gICAgICBjaGFydFRpdGxlOiAnRXhhbXBsZSBwaWUgY2hhcnQnLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZm9yY2VEaXJlY3RlZENoYXJ0T3B0aW9ucygpIHtcbiAgICByZXR1cm4gPFBhcnRpYWw8SUZvcmNlRGlyZWN0ZWRDaGFydE9wdGlvbnM+PntcbiAgICAgIGNoYXJ0VGl0bGU6ICdFeGFtcGxlIGZvcmNlIGRpcmVjdGVkIGNoYXJ0JyxcbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKm5nSWY9XCJiYXJDaGFydENvbmZpZyQgfCBhc3luYyBhcyBjb25maWdcIj5cbiAgPGFwcC1iYXItY2hhcnQgW2NoYXJ0SWRdPVwiJ2Jhci1leGFtcGxlLTEnXCIgW2RhdGFdPVwiY29uZmlnLmRhdGFcIiBbb3B0aW9uc109XCJjb25maWcub3B0aW9uc1wiPjwvYXBwLWJhci1jaGFydD5cbjwvZGl2PlxuXG48aHIgW25nU3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIiAvPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKm5nSWY9XCJsaW5lQ2hhcnRDb25maWckIHwgYXN5bmMgYXMgY29uZmlnXCI+XG4gIDxhcHAtbGluZS1jaGFydCBbY2hhcnRJZF09XCInbGluZS1leGFtcGxlLTEnXCIgW2RhdGFdPVwiY29uZmlnLmRhdGFcIiBbb3B0aW9uc109XCJjb25maWcub3B0aW9uc1wiPjwvYXBwLWxpbmUtY2hhcnQ+XG48L2Rpdj5cblxuPGhyIFtuZ1N0eWxlXT1cInsgd2lkdGg6ICcxMDAlJyB9XCIgLz5cblxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiICpuZ0lmPVwicmFkYXJDaGFydENvbmZpZyQgfCBhc3luYyBhcyBjb25maWdcIj5cbiAgPGFwcC1yYWRhci1jaGFydCBbY2hhcnRJZF09XCIncmFkYXItZXhhbXBsZS0xJ1wiIFtkYXRhXT1cImNvbmZpZy5kYXRhXCIgW29wdGlvbnNdPVwiY29uZmlnLm9wdGlvbnNcIj48L2FwcC1yYWRhci1jaGFydD5cbjwvZGl2PlxuXG48aHIgW25nU3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIiAvPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKm5nSWY9XCJwaWVDaGFydENvbmZpZyQgfCBhc3luYyBhcyBjb25maWdcIj5cbiAgPGFwcC1waWUtY2hhcnQgW2NoYXJ0SWRdPVwiJ3BpZS1leGFtcGxlLTEnXCIgW2RhdGFdPVwiY29uZmlnLmRhdGFcIiBbb3B0aW9uc109XCJjb25maWcub3B0aW9uc1wiPjwvYXBwLXBpZS1jaGFydD5cbjwvZGl2PlxuXG48aHIgW25nU3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIiAvPlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKm5nSWY9XCJmb3JjZURpcmVjdGVkQ2hhcnRDb25maWckIHwgYXN5bmMgYXMgY29uZmlnXCI+XG4gIDxhcHAtZm9yY2UtZGlyZWN0ZWQtY2hhcnRcbiAgICBbY2hhcnRJZF09XCInZm9yY2UtZGlyZWN0ZWQtZXhhbXBsZS0xJ1wiXG4gICAgW2RhdGFdPVwiY29uZmlnLmRhdGFcIlxuICAgIFtvcHRpb25zXT1cImNvbmZpZy5vcHRpb25zXCJcbiAgPjwvYXBwLWZvcmNlLWRpcmVjdGVkLWNoYXJ0PlxuPC9kaXY+XG4iXX0=
@@ -68,9 +68,9 @@ export class AppForceDirectedChartComponent {
68
68
  }
69
69
  }
70
70
  }
71
- /** @nocollapse */ AppForceDirectedChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppForceDirectedChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
72
- /** @nocollapse */ AppForceDirectedChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppForceDirectedChartComponent, decorators: [{
71
+ /** @nocollapse */ AppForceDirectedChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppForceDirectedChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
72
+ /** @nocollapse */ AppForceDirectedChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppForceDirectedChartComponent, decorators: [{
74
74
  type: Component,
75
75
  args: [{ selector: 'app-force-directed-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"] }]
76
76
  }], ctorParameters: function () { return [{ type: Document, decorators: [{
@@ -67,9 +67,9 @@ export class AppLineChartComponent {
67
67
  }
68
68
  }
69
69
  }
70
- /** @nocollapse */ AppLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppLineChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
71
- /** @nocollapse */ AppLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppLineChartComponent, selector: "app-line-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppLineChartComponent, decorators: [{
70
+ /** @nocollapse */ AppLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppLineChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
71
+ /** @nocollapse */ AppLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppLineChartComponent, selector: "app-line-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppLineChartComponent, decorators: [{
73
73
  type: Component,
74
74
  args: [{ selector: 'app-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
75
75
  }], ctorParameters: function () { return [{ type: Document, decorators: [{
@@ -66,9 +66,9 @@ export class AppPieChartComponent {
66
66
  }
67
67
  }
68
68
  }
69
- /** @nocollapse */ AppPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppPieChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
70
- /** @nocollapse */ AppPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppPieChartComponent, selector: "app-pie-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppPieChartComponent, decorators: [{
69
+ /** @nocollapse */ AppPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppPieChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
70
+ /** @nocollapse */ AppPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppPieChartComponent, selector: "app-pie-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppPieChartComponent, decorators: [{
72
72
  type: Component,
73
73
  args: [{ selector: 'app-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"] }]
74
74
  }], ctorParameters: function () { return [{ type: Document, decorators: [{
@@ -78,9 +78,9 @@ export class AppRadarChartComponent {
78
78
  }
79
79
  }
80
80
  }
81
- /** @nocollapse */ AppRadarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppRadarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
82
- /** @nocollapse */ AppRadarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppRadarChartComponent, selector: "app-radar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppRadarChartComponent, decorators: [{
81
+ /** @nocollapse */ AppRadarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppRadarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
82
+ /** @nocollapse */ AppRadarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppRadarChartComponent, selector: "app-radar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppRadarChartComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{ selector: 'app-radar-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
86
86
  }], ctorParameters: function () { return [{ type: Document, decorators: [{
@@ -9,8 +9,8 @@ import { AppRadarChartComponent } from './components/radar-chart/radar-chart.com
9
9
  import * as i0 from "@angular/core";
10
10
  export class AppD3ChartsModule {
11
11
  }
12
- /** @nocollapse */ AppD3ChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppD3ChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
- /** @nocollapse */ AppD3ChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: AppD3ChartsModule, declarations: [AppPieChartComponent,
12
+ /** @nocollapse */ AppD3ChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppD3ChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ /** @nocollapse */ AppD3ChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: AppD3ChartsModule, declarations: [AppPieChartComponent,
14
14
  AppRadarChartComponent,
15
15
  AppForceDirectedChartComponent,
16
16
  AppBarChartComponent,
@@ -21,8 +21,8 @@ export class AppD3ChartsModule {
21
21
  AppBarChartComponent,
22
22
  AppLineChartComponent,
23
23
  AppChartExamplesComponent] });
24
- /** @nocollapse */ AppD3ChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppD3ChartsModule, imports: [CommonModule] });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppD3ChartsModule, decorators: [{
24
+ /** @nocollapse */ AppD3ChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppD3ChartsModule, imports: [CommonModule] });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppD3ChartsModule, decorators: [{
26
26
  type: NgModule,
27
27
  args: [{
28
28
  imports: [CommonModule],
@@ -1272,9 +1272,9 @@ class AppBarChartComponent {
1272
1272
  }
1273
1273
  }
1274
1274
  }
1275
- /** @nocollapse */ AppBarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppBarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1276
- /** @nocollapse */ AppBarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppBarChartComponent, selector: "app-bar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1277
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppBarChartComponent, decorators: [{
1275
+ /** @nocollapse */ AppBarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppBarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1276
+ /** @nocollapse */ AppBarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppBarChartComponent, selector: "app-bar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppBarChartComponent, decorators: [{
1278
1278
  type: Component,
1279
1279
  args: [{ selector: 'app-bar-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
1280
1280
  }], ctorParameters: function () {
@@ -1358,9 +1358,9 @@ class AppPieChartComponent {
1358
1358
  }
1359
1359
  }
1360
1360
  }
1361
- /** @nocollapse */ AppPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppPieChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1362
- /** @nocollapse */ AppPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppPieChartComponent, selector: "app-pie-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppPieChartComponent, decorators: [{
1361
+ /** @nocollapse */ AppPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppPieChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1362
+ /** @nocollapse */ AppPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppPieChartComponent, selector: "app-pie-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1363
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppPieChartComponent, decorators: [{
1364
1364
  type: Component,
1365
1365
  args: [{ selector: 'app-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host canvas{width:auto!important;height:150px}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"] }]
1366
1366
  }], ctorParameters: function () {
@@ -1452,9 +1452,9 @@ class AppRadarChartComponent {
1452
1452
  }
1453
1453
  }
1454
1454
  }
1455
- /** @nocollapse */ AppRadarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppRadarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1456
- /** @nocollapse */ AppRadarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppRadarChartComponent, selector: "app-radar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1457
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppRadarChartComponent, decorators: [{
1455
+ /** @nocollapse */ AppRadarChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppRadarChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1456
+ /** @nocollapse */ AppRadarChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppRadarChartComponent, selector: "app-radar-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1457
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppRadarChartComponent, decorators: [{
1458
1458
  type: Component,
1459
1459
  args: [{ selector: 'app-radar-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
1460
1460
  }], ctorParameters: function () {
@@ -1543,9 +1543,9 @@ class AppForceDirectedChartComponent {
1543
1543
  }
1544
1544
  }
1545
1545
  }
1546
- /** @nocollapse */ AppForceDirectedChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppForceDirectedChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1547
- /** @nocollapse */ AppForceDirectedChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1548
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppForceDirectedChartComponent, decorators: [{
1546
+ /** @nocollapse */ AppForceDirectedChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppForceDirectedChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1547
+ /** @nocollapse */ AppForceDirectedChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppForceDirectedChartComponent, decorators: [{
1549
1549
  type: Component,
1550
1550
  args: [{ selector: 'app-force-directed-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\">\n <div id=\"{{ chartId }}\" #container></div>\n\n <small class=\"container--chart-title\">{{ options.chartTitle }}</small>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}:host .container--chart-title{display:block;text-align:center}\n"] }]
1551
1551
  }], ctorParameters: function () {
@@ -1630,9 +1630,9 @@ class AppLineChartComponent {
1630
1630
  }
1631
1631
  }
1632
1632
  }
1633
- /** @nocollapse */ AppLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppLineChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1634
- /** @nocollapse */ AppLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppLineChartComponent, selector: "app-line-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1635
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppLineChartComponent, decorators: [{
1633
+ /** @nocollapse */ AppLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppLineChartComponent, deps: [{ token: DOCUMENT }, { token: D3_CHART_FACTORY }], target: i0.ɵɵFactoryTarget.Component });
1634
+ /** @nocollapse */ AppLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppLineChartComponent, selector: "app-line-chart", inputs: { chartId: "chartId", data: "data", options: "options" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1635
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppLineChartComponent, decorators: [{
1636
1636
  type: Component,
1637
1637
  args: [{ selector: 'app-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" id=\"{{ chartId }}\" #container></div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center}:host .container{flex:0 1 auto}\n"] }]
1638
1638
  }], ctorParameters: function () {
@@ -1655,18 +1655,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1655
1655
  }] } });
1656
1656
 
1657
1657
  class AppChartExamplesComponent {
1658
- constructor(breakpointObserver) {
1659
- this.breakpointObserver = breakpointObserver;
1660
- this.breakpoint$ = this.breakpointObserver
1661
- .observe([Breakpoints.XSmall, Breakpoints.Small, Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])
1662
- .pipe(map(result => { var _a; return (_a = Object.keys(result.breakpoints).find(item => result.breakpoints[item])) !== null && _a !== void 0 ? _a : 'unknown'; }));
1663
- this.barChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.barChartData, options: this.barChartOptions() })))));
1664
- this.lineChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.lineChartData, options: this.lineChartOptions() })))));
1665
- this.radarChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.radarChartData, options: this.radarChartOptions() })))));
1666
- this.pieChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.pieChartData, options: this.pieChartOptions() })))));
1667
- this.forceDirectedChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.forceDirectedChartData, options: this.forceDirectedChartOptions() })))));
1668
- this.timeout = 100;
1669
- }
1670
1658
  /**
1671
1659
  * Sample bar chart data.
1672
1660
  */
@@ -1785,6 +1773,18 @@ class AppChartExamplesComponent {
1785
1773
  };
1786
1774
  return chartData;
1787
1775
  }
1776
+ constructor(breakpointObserver) {
1777
+ this.breakpointObserver = breakpointObserver;
1778
+ this.breakpoint$ = this.breakpointObserver
1779
+ .observe([Breakpoints.XSmall, Breakpoints.Small, Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])
1780
+ .pipe(map(result => { var _a; return (_a = Object.keys(result.breakpoints).find(item => result.breakpoints[item])) !== null && _a !== void 0 ? _a : 'unknown'; }));
1781
+ this.barChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.barChartData, options: this.barChartOptions() })))));
1782
+ this.lineChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.lineChartData, options: this.lineChartOptions() })))));
1783
+ this.radarChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.radarChartData, options: this.radarChartOptions() })))));
1784
+ this.pieChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.pieChartData, options: this.pieChartOptions() })))));
1785
+ this.forceDirectedChartConfig$ = this.breakpoint$.pipe(switchMap(() => timer(this.timeout).pipe(first(), map(() => ({ data: this.forceDirectedChartData, options: this.forceDirectedChartOptions() })))));
1786
+ this.timeout = 100;
1787
+ }
1788
1788
  barChartOptions() {
1789
1789
  return {
1790
1790
  chartTitle: 'Example bar chart',
@@ -1815,17 +1815,17 @@ class AppChartExamplesComponent {
1815
1815
  };
1816
1816
  }
1817
1817
  }
1818
- /** @nocollapse */ AppChartExamplesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppChartExamplesComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
1819
- /** @nocollapse */ AppChartExamplesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AppChartExamplesComponent, selector: "app-chart-examples", ngImport: i0, template: "<div class=\"container\" *ngIf=\"barChartConfig$ | async as config\">\n <app-bar-chart [chartId]=\"'bar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-bar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"lineChartConfig$ | async as config\">\n <app-line-chart [chartId]=\"'line-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-line-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"radarChartConfig$ | async as config\">\n <app-radar-chart [chartId]=\"'radar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-radar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"pieChartConfig$ | async as config\">\n <app-pie-chart [chartId]=\"'pie-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-pie-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"forceDirectedChartConfig$ | async as config\">\n <app-force-directed-chart\n [chartId]=\"'force-directed-example-1'\"\n [data]=\"config.data\"\n [options]=\"config.options\"\n ></app-force-directed-chart>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}:host .container{flex:1 1 auto;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: AppPieChartComponent, selector: "app-pie-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppRadarChartComponent, selector: "app-radar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppBarChartComponent, selector: "app-bar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppLineChartComponent, selector: "app-line-chart", inputs: ["chartId", "data", "options"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1820
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppChartExamplesComponent, decorators: [{
1818
+ /** @nocollapse */ AppChartExamplesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppChartExamplesComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
1819
+ /** @nocollapse */ AppChartExamplesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: AppChartExamplesComponent, selector: "app-chart-examples", ngImport: i0, template: "<div class=\"container\" *ngIf=\"barChartConfig$ | async as config\">\n <app-bar-chart [chartId]=\"'bar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-bar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"lineChartConfig$ | async as config\">\n <app-line-chart [chartId]=\"'line-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-line-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"radarChartConfig$ | async as config\">\n <app-radar-chart [chartId]=\"'radar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-radar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"pieChartConfig$ | async as config\">\n <app-pie-chart [chartId]=\"'pie-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-pie-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"forceDirectedChartConfig$ | async as config\">\n <app-force-directed-chart\n [chartId]=\"'force-directed-example-1'\"\n [data]=\"config.data\"\n [options]=\"config.options\"\n ></app-force-directed-chart>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}:host .container{flex:1 1 auto;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: AppPieChartComponent, selector: "app-pie-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppRadarChartComponent, selector: "app-radar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppForceDirectedChartComponent, selector: "app-force-directed-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppBarChartComponent, selector: "app-bar-chart", inputs: ["chartId", "data", "options"] }, { kind: "component", type: AppLineChartComponent, selector: "app-line-chart", inputs: ["chartId", "data", "options"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1820
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppChartExamplesComponent, decorators: [{
1821
1821
  type: Component,
1822
1822
  args: [{ selector: 'app-chart-examples', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container\" *ngIf=\"barChartConfig$ | async as config\">\n <app-bar-chart [chartId]=\"'bar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-bar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"lineChartConfig$ | async as config\">\n <app-line-chart [chartId]=\"'line-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-line-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"radarChartConfig$ | async as config\">\n <app-radar-chart [chartId]=\"'radar-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-radar-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"pieChartConfig$ | async as config\">\n <app-pie-chart [chartId]=\"'pie-example-1'\" [data]=\"config.data\" [options]=\"config.options\"></app-pie-chart>\n</div>\n\n<hr [ngStyle]=\"{ width: '100%' }\" />\n\n<div class=\"container\" *ngIf=\"forceDirectedChartConfig$ | async as config\">\n <app-force-directed-chart\n [chartId]=\"'force-directed-example-1'\"\n [data]=\"config.data\"\n [options]=\"config.options\"\n ></app-force-directed-chart>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}:host .container{flex:1 1 auto;width:100%}\n"] }]
1823
1823
  }], ctorParameters: function () { return [{ type: i1.BreakpointObserver }]; } });
1824
1824
 
1825
1825
  class AppD3ChartsModule {
1826
1826
  }
1827
- /** @nocollapse */ AppD3ChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppD3ChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1828
- /** @nocollapse */ AppD3ChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: AppD3ChartsModule, declarations: [AppPieChartComponent,
1827
+ /** @nocollapse */ AppD3ChartsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppD3ChartsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1828
+ /** @nocollapse */ AppD3ChartsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: AppD3ChartsModule, declarations: [AppPieChartComponent,
1829
1829
  AppRadarChartComponent,
1830
1830
  AppForceDirectedChartComponent,
1831
1831
  AppBarChartComponent,
@@ -1836,8 +1836,8 @@ class AppD3ChartsModule {
1836
1836
  AppBarChartComponent,
1837
1837
  AppLineChartComponent,
1838
1838
  AppChartExamplesComponent] });
1839
- /** @nocollapse */ AppD3ChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppD3ChartsModule, imports: [CommonModule] });
1840
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AppD3ChartsModule, decorators: [{
1839
+ /** @nocollapse */ AppD3ChartsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppD3ChartsModule, imports: [CommonModule] });
1840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AppD3ChartsModule, decorators: [{
1841
1841
  type: NgModule,
1842
1842
  args: [{
1843
1843
  imports: [CommonModule],