@tetacom/svg-charts 1.2.13 → 1.2.14
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.
- package/chart/chart-container/tooltip/tooltip.component.d.ts +8 -6
- package/chart/chart.module.d.ts +2 -1
- package/esm2020/chart/chart-container/tooltip/tooltip.component.mjs +22 -21
- package/esm2020/chart/chart.module.mjs +5 -4
- package/fesm2015/tetacom-svg-charts.mjs +24 -24
- package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/fesm2020/tetacom-svg-charts.mjs +24 -24
- package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectorRef, NgZone, OnInit } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, ElementRef, NgZone, OnInit } from '@angular/core';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { ChartService } from '../../service/chart.service';
|
|
4
4
|
import { ZoomService } from '../../service/zoom.service';
|
|
@@ -12,18 +12,20 @@ export declare class TooltipComponent implements OnInit {
|
|
|
12
12
|
private zoomService;
|
|
13
13
|
private sanitizer;
|
|
14
14
|
private _zone;
|
|
15
|
+
private _elementRef;
|
|
15
16
|
size: DOMRect;
|
|
16
17
|
config: IChartConfig;
|
|
18
|
+
tooltip: ElementRef;
|
|
17
19
|
position: Observable<{
|
|
18
|
-
left
|
|
19
|
-
top
|
|
20
|
-
bottom
|
|
21
|
-
right
|
|
20
|
+
left?: number;
|
|
21
|
+
top?: number;
|
|
22
|
+
bottom?: number;
|
|
23
|
+
right?: number;
|
|
22
24
|
}>;
|
|
23
25
|
displayTooltips: Observable<SafeHtml>;
|
|
24
26
|
display: Observable<number>;
|
|
25
27
|
tooltips: Observable<IDisplayTooltip[]>;
|
|
26
|
-
constructor(svc: ChartService, cdr: ChangeDetectorRef, zoomService: ZoomService, sanitizer: DomSanitizer, _zone: NgZone);
|
|
28
|
+
constructor(svc: ChartService, cdr: ChangeDetectorRef, zoomService: ZoomService, sanitizer: DomSanitizer, _zone: NgZone, _elementRef: ElementRef);
|
|
27
29
|
ngOnInit(): void;
|
|
28
30
|
private getPosition;
|
|
29
31
|
format(input: number | Date): string;
|
package/chart/chart.module.d.ts
CHANGED
|
@@ -22,8 +22,9 @@ import * as i20 from "./chart-container/series/block-area-series/block-area-seri
|
|
|
22
22
|
import * as i21 from "./chart-container/annotation/annotation.component";
|
|
23
23
|
import * as i22 from "./chart-container/crosshair/crosshair.component";
|
|
24
24
|
import * as i23 from "@angular/common";
|
|
25
|
+
import * as i24 from "@tetacom/ng-components";
|
|
25
26
|
export declare class ChartModule {
|
|
26
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChartModule, never>;
|
|
27
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ChartModule, [typeof i1.ChartComponent, typeof i2.SeriesHostComponent, typeof i3.ChartContainerComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i6.LinearSeriesBase, typeof i7.LineSeriesComponent, typeof i8.GridlinesComponent, typeof i9.XAxisComponent, typeof i10.YAxisComponent, typeof i11.PlotlineComponent, typeof i12.PlotBandComponent, typeof i13.BarSeriesComponent, typeof i14.TooltipComponent, typeof i15.ZoomableDirective, typeof i16.BrushableDirective, typeof i17.AreaSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent, typeof i21.AnnotationComponent, typeof i22.CrosshairComponent], [typeof i23.CommonModule], [typeof i1.ChartComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i7.LineSeriesComponent, typeof i13.BarSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i17.AreaSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent]>;
|
|
28
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ChartModule, [typeof i1.ChartComponent, typeof i2.SeriesHostComponent, typeof i3.ChartContainerComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i6.LinearSeriesBase, typeof i7.LineSeriesComponent, typeof i8.GridlinesComponent, typeof i9.XAxisComponent, typeof i10.YAxisComponent, typeof i11.PlotlineComponent, typeof i12.PlotBandComponent, typeof i13.BarSeriesComponent, typeof i14.TooltipComponent, typeof i15.ZoomableDirective, typeof i16.BrushableDirective, typeof i17.AreaSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent, typeof i21.AnnotationComponent, typeof i22.CrosshairComponent], [typeof i23.CommonModule, typeof i24.LetModule], [typeof i1.ChartComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i7.LineSeriesComponent, typeof i13.BarSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i17.AreaSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent]>;
|
|
28
29
|
static ɵinj: i0.ɵɵInjectorDeclaration<ChartModule>;
|
|
29
30
|
}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, } from '@angular/core';
|
|
2
2
|
import { filter, map, tap } from 'rxjs';
|
|
3
3
|
import * as d3 from 'd3';
|
|
4
|
+
import { Align, PositionUtil, VerticalAlign } from '@tetacom/ng-components';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../../service/chart.service";
|
|
6
7
|
import * as i2 from "../../service/zoom.service";
|
|
7
8
|
import * as i3 from "@angular/platform-browser";
|
|
8
9
|
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "@tetacom/ng-components";
|
|
9
11
|
export class TooltipComponent {
|
|
10
|
-
constructor(svc, cdr, zoomService, sanitizer, _zone) {
|
|
12
|
+
constructor(svc, cdr, zoomService, sanitizer, _zone, _elementRef) {
|
|
11
13
|
this.svc = svc;
|
|
12
14
|
this.cdr = cdr;
|
|
13
15
|
this.zoomService = zoomService;
|
|
14
16
|
this.sanitizer = sanitizer;
|
|
15
17
|
this._zone = _zone;
|
|
18
|
+
this._elementRef = _elementRef;
|
|
16
19
|
this.tooltips = this.svc.tooltips.pipe(map((_) => [..._.values()]));
|
|
17
20
|
}
|
|
18
21
|
ngOnInit() {
|
|
@@ -57,20 +60,15 @@ export class TooltipComponent {
|
|
|
57
60
|
}));
|
|
58
61
|
}
|
|
59
62
|
getPosition(event) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
right: event.pageX > centerX
|
|
70
|
-
? `${window.innerWidth - event.pageX + padding.x}px`
|
|
71
|
-
: 'initial',
|
|
72
|
-
};
|
|
73
|
-
return scene;
|
|
63
|
+
if (!this.tooltip) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
return PositionUtil.getPosition({
|
|
67
|
+
top: event.pageY,
|
|
68
|
+
bottom: event.pageY,
|
|
69
|
+
left: event.pageX,
|
|
70
|
+
right: event.pageX,
|
|
71
|
+
}, this.tooltip?.nativeElement?.getBoundingClientRect(), Align.auto, VerticalAlign.top, 12);
|
|
74
72
|
}
|
|
75
73
|
format(input) {
|
|
76
74
|
if (input instanceof Date) {
|
|
@@ -81,14 +79,17 @@ export class TooltipComponent {
|
|
|
81
79
|
return format(input);
|
|
82
80
|
}
|
|
83
81
|
}
|
|
84
|
-
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TooltipComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ZoomService }, { token: i3.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
-
TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TooltipComponent, selector: "teta-tooltip", inputs: { size: "size", config: "config" }, ngImport: i0, template: "<ng-container *
|
|
82
|
+
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TooltipComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ZoomService }, { token: i3.DomSanitizer }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
+
TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TooltipComponent, selector: "teta-tooltip", inputs: { size: "size", config: "config" }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-container *tetaLet=\"position | async as p\">\n <ng-container *ngIf=\"tooltips | async as t\">\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n *ngIf=\"t.length > 0\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"p?.left\"\n [style.top.px]=\"p?.top\"\n [style.bottom.px]=\"p?.bottom\"\n [style.right.px]=\"p?.right\"\n >\n <ng-container *ngIf=\"config.tooltip?.template\">\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: {$implicit: t}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"config.tooltip?.format; else default\">\n <div [innerHTML]=\"displayTooltips | async\"></div>\n </ng-container>\n\n <ng-template #default>\n <div *ngIf=\"!config.tooltip?.template\" class=\"padding-2 border-radius-1\">\n <ng-container *ngFor=\"let tooltip of t\">\n <div class=\"display-flex align-center\">\n <span class=\"display-block margin-right-1\" [style.width.px]=\"10\" [style.height.px]=\"2\"\n [style.background-color]=\"tooltip.series?.color\"></span>\n <span class=\"font-title-3\">\n {{ tooltip.series?.name }}\n <span class=\"font-body-3\">\n x: {{ format(tooltip.point?.x) }}\n y: {{ format(tooltip.point?.y) }}\n </span>\n </span>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n</ng-container>\n\n\n\n", styles: [":host{position:absolute;z-index:2}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.LetDirective, selector: "[tetaLet]", inputs: ["tetaLet"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
86
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
87
85
|
type: Component,
|
|
88
|
-
args: [{ selector: 'teta-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *
|
|
89
|
-
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ZoomService }, { type: i3.DomSanitizer }, { type: i0.NgZone }]; }, propDecorators: { size: [{
|
|
86
|
+
args: [{ selector: 'teta-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *tetaLet=\"position | async as p\">\n <ng-container *ngIf=\"tooltips | async as t\">\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n *ngIf=\"t.length > 0\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"p?.left\"\n [style.top.px]=\"p?.top\"\n [style.bottom.px]=\"p?.bottom\"\n [style.right.px]=\"p?.right\"\n >\n <ng-container *ngIf=\"config.tooltip?.template\">\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: {$implicit: t}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"config.tooltip?.format; else default\">\n <div [innerHTML]=\"displayTooltips | async\"></div>\n </ng-container>\n\n <ng-template #default>\n <div *ngIf=\"!config.tooltip?.template\" class=\"padding-2 border-radius-1\">\n <ng-container *ngFor=\"let tooltip of t\">\n <div class=\"display-flex align-center\">\n <span class=\"display-block margin-right-1\" [style.width.px]=\"10\" [style.height.px]=\"2\"\n [style.background-color]=\"tooltip.series?.color\"></span>\n <span class=\"font-title-3\">\n {{ tooltip.series?.name }}\n <span class=\"font-body-3\">\n x: {{ format(tooltip.point?.x) }}\n y: {{ format(tooltip.point?.y) }}\n </span>\n </span>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n</ng-container>\n\n\n\n", styles: [":host{position:absolute;z-index:2}\n"] }]
|
|
87
|
+
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ZoomService }, { type: i3.DomSanitizer }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { size: [{
|
|
90
88
|
type: Input
|
|
91
89
|
}], config: [{
|
|
92
90
|
type: Input
|
|
91
|
+
}], tooltip: [{
|
|
92
|
+
type: ViewChild,
|
|
93
|
+
args: ['tooltip', { static: false, read: ElementRef }]
|
|
93
94
|
}] } });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQWMsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBT2xELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDOzs7Ozs7QUFPekIsTUFBTSxPQUFPLGdCQUFnQjtJQWUzQixZQUNVLEdBQWlCLEVBQ2pCLEdBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFNBQXVCLEVBQ3ZCLEtBQWE7UUFKYixRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUVyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQzFCLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3ZDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUMxQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNSLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUNwQyxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLEVBQVksRUFBRTtZQUN2QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQTJCLEVBQVksRUFBRTtZQUNqRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDckIsTUFBTSxjQUFjLEdBQUcsOERBQThELENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBRXhHLElBQUksSUFBSSw4RUFBOEUsY0FBYzt1Q0FDckUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJOzttQkFFaEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFTLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzttQkFDckYsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFTLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFRLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzs7d0JBRWpGLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7UUFFL0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzNDLEdBQUcsQ0FBQyxDQUFDLFFBQTJDLEVBQUUsRUFBRTtZQUNsRCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDM0MsSUFBSSxXQUFXLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0IsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUNELE1BQU0sU0FBUyxHQUFHLFNBQVM7Z0JBQ3pCLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBbUI7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFFOUMsTUFBTSxLQUFLLEdBQUc7WUFDWixJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUk7WUFDeEUsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJO1lBQ3ZFLE1BQU0sRUFDSixLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU87Z0JBQ25CLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJO2dCQUNyRCxDQUFDLENBQUMsU0FBUztZQUNmLEtBQUssRUFDSCxLQUFLLENBQUMsS0FBSyxHQUFHLE9BQU87Z0JBQ25CLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJO2dCQUNwRCxDQUFDLENBQUMsU0FBUztTQUNoQixDQUFDO1FBRUYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QsTUFBTSxDQUFDLEtBQW9CO1FBRXpCLElBQUcsS0FBSyxZQUFZLElBQUksRUFBRTtZQUN4QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RCO1FBRUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNqQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QixDQUFDOzs2R0FuSFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsZ0dDdEI3Qixvb0RBMkNBOzJGRHJCYSxnQkFBZ0I7a0JBTjVCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNOzZNQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2ZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge0lEaXNwbGF5VG9vbHRpcH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1kaXNwbGF5LXRvb2x0aXAnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXIsIFNhZmVIdG1sfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge1Nlcmllc30gZnJvbSAnLi4vLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtdG9vbHRpcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sdGlwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG4gIEBJbnB1dCgpIGNvbmZpZzogSUNoYXJ0Q29uZmlnO1xuXG4gIHBvc2l0aW9uOiBPYnNlcnZhYmxlPHtcbiAgICBsZWZ0OiBzdHJpbmc7XG4gICAgdG9wOiBzdHJpbmc7XG4gICAgYm90dG9tOiBzdHJpbmc7XG4gICAgcmlnaHQ6IHN0cmluZztcbiAgfT47XG5cbiAgZGlzcGxheVRvb2x0aXBzOiBPYnNlcnZhYmxlPFNhZmVIdG1sPjtcbiAgZGlzcGxheTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICB0b29sdGlwczogT2JzZXJ2YWJsZTxJRGlzcGxheVRvb2x0aXBbXT5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZVxuICApIHtcbiAgICB0aGlzLnRvb2x0aXBzID0gdGhpcy5zdmMudG9vbHRpcHMucGlwZShtYXAoKF8pID0+IFsuLi5fLnZhbHVlcygpXSkpXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXkgPSB0aGlzLnN2Yy5wb2ludGVyTW92ZS5waXBlKFxuICAgICAgbWFwKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC50eXBlID09PSAnbW91c2Vtb3ZlJyA/IDEgOiAwO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMuc3ZjLnBvaW50ZXJNb3ZlLnBpcGUoXG4gICAgICBmaWx0ZXIoKGV2ZW50KSA9PiAhIWV2ZW50KSxcbiAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQb3NpdGlvbihfKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSlcbiAgICApO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtSHRtbCA9IChodG1sKTogU2FmZUh0bWwgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0Rm9ybWF0dGVyID0gKHRvb2x0aXBzOiBJRGlzcGxheVRvb2x0aXBbXSk6IFNhZmVIdG1sID0+IHtcbiAgICAgIGxldCBodG1sID0gJyc7XG4gICAgICBjb25zdCBmb3JtYXQgPSBkMy50aW1lRm9ybWF0KCclZC4lbS4lWScpO1xuICAgICAgdG9vbHRpcHMuZm9yRWFjaCgoXykgPT4ge1xuICAgICAgICBjb25zdCBpbmRpY2F0b3JTdHlsZSA9IGBkaXNwbGF5OmJsb2NrOyB3aWR0aDogMTBweDsgaGVpZ2h0OiAycHg7IGJhY2tncm91bmQtY29sb3I6ICR7Xz8uc2VyaWVzPy5jb2xvcn1gO1xuXG4gICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9XCJkaXNwbGF5LWZsZXggYWxpZ24tY2VudGVyXCI+PHNwYW4gY2xhc3M9XCJtYXJnaW4tcmlnaHQtMVwiIHN0eWxlPVwiJHtpbmRpY2F0b3JTdHlsZX1cIj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXRpdGxlLTNcIj4ke18uc2VyaWVzLm5hbWV9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9keS0zXCI+XG4gICAgICAgICAgICAgIHg6ICR7KF8ucG9pbnQueCBhcyBhbnkpIGluc3RhbmNlb2YgRGF0ZSA/IGZvcm1hdChfLnBvaW50LnggYXMgYW55KSA6ICBfLnBvaW50Lng/LnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgIHk6ICR7KF8ucG9pbnQueSBhcyBhbnkpIGluc3RhbmNlb2YgRGF0ZSA/IGZvcm1hdChfLnBvaW50LnkgYXMgYW55KSA6ICBfLnBvaW50Lnk/LnRvRml4ZWQoMil9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPjwvZGl2PmA7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybUh0bWwoaHRtbCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGZvcm1hdHRlciA9IHRoaXMuY29uZmlnPy50b29sdGlwPy5mb3JtYXQ7XG5cbiAgICB0aGlzLmRpc3BsYXlUb29sdGlwcyA9IHRoaXMuc3ZjLnRvb2x0aXBzLnBpcGUoXG4gICAgICBtYXAoKHRvb2x0aXBzOiBNYXA8U2VyaWVzPGFueT4sIElEaXNwbGF5VG9vbHRpcD4pID0+IHtcbiAgICAgICAgY29uc3QgdG9vbHRpcExpc3QgPSBbLi4udG9vbHRpcHMudmFsdWVzKCldO1xuICAgICAgICBpZiAodG9vbHRpcExpc3Q/Lmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXG4gICAgICAgICAgPyB0cmFuc2Zvcm1IdG1sKGZvcm1hdHRlcih0b29sdGlwTGlzdCkpXG4gICAgICAgICAgOiBkZWZhdWx0Rm9ybWF0dGVyKHRvb2x0aXBMaXN0KTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9zaXRpb24oZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgIGNvbnN0IGNlbnRlclggPSB0aGlzLnNpemUud2lkdGggLyAyO1xuICAgIGNvbnN0IGNlbnRlclkgPSB0aGlzLnNpemUuaGVpZ2h0IC8gMjtcblxuICAgIGNvbnN0IHBhZGRpbmcgPSB0aGlzLmNvbmZpZz8udG9vbHRpcD8ucGFkZGluZztcblxuICAgIGNvbnN0IHNjZW5lID0ge1xuICAgICAgbGVmdDogZXZlbnQucGFnZVggPiBjZW50ZXJYID8gJ2luaXRpYWwnIDogYCR7ZXZlbnQucGFnZVggKyBwYWRkaW5nLnh9cHhgLFxuICAgICAgdG9wOiBldmVudC5wYWdlWSA+IGNlbnRlclkgPyAnaW5pdGlhbCcgOiBgJHtldmVudC5wYWdlWSArIHBhZGRpbmcueX1weGAsXG4gICAgICBib3R0b206XG4gICAgICAgIGV2ZW50LnBhZ2VZID4gY2VudGVyWVxuICAgICAgICAgID8gYCR7d2luZG93LmlubmVySGVpZ2h0IC0gZXZlbnQucGFnZVkgKyBwYWRkaW5nLnl9cHhgXG4gICAgICAgICAgOiAnaW5pdGlhbCcsXG4gICAgICByaWdodDpcbiAgICAgICAgZXZlbnQucGFnZVggPiBjZW50ZXJYXG4gICAgICAgICAgPyBgJHt3aW5kb3cuaW5uZXJXaWR0aCAtIGV2ZW50LnBhZ2VYICsgcGFkZGluZy54fXB4YFxuICAgICAgICAgIDogJ2luaXRpYWwnLFxuICAgIH07XG5cbiAgICByZXR1cm4gc2NlbmU7XG4gIH1cblxuXG4gIGZvcm1hdChpbnB1dDogbnVtYmVyIHwgRGF0ZSk6IHN0cmluZyB7XG5cbiAgICBpZihpbnB1dCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGQzLnRpbWVGb3JtYXQoJyVkLiVtLiVZJyk7XG4gICAgICByZXR1cm4gZm9ybWF0KGlucHV0KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXQgPSBkMy5mb3JtYXQoJywuNX5yJylcbiAgICByZXR1cm4gZm9ybWF0KGlucHV0KVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwicG9zaXRpb24gfCBhc3luYyBhcyBwXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sdGlwcyB8IGFzeW5jIGFzIHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtdG9vbHRpcCBjb2xvci10ZXh0LTkwIGJnLWJhY2tncm91bmQtNTAgc2hhZG93LTJcIlxuICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cIidmaXhlZCdcIlxuICAgICAgICAgKm5nSWY9XCJ0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwiZGlzcGxheSB8IGFzeW5jXCJcbiAgICAgICAgIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmU7IG1pbi13aWR0aDogMjAwcHg7XCJcbiAgICAgICAgIFtzdHlsZS5sZWZ0XT1cInAubGVmdFwiXG4gICAgICAgICBbc3R5bGUudG9wXT1cInAudG9wXCJcbiAgICAgICAgIFtzdHlsZS5ib3R0b21dPVwicC5ib3R0b21cIlxuICAgICAgICAgW3N0eWxlLnJpZ2h0XT1cInAucmlnaHRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcudG9vbHRpcD8udGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbmZpZy50b29sdGlwLnRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiB0fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcudG9vbHRpcD8uZm9ybWF0OyBlbHNlIGRlZmF1bHRcIj5cbiAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImRpc3BsYXlUb29sdGlwcyB8IGFzeW5jXCI+PC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWNvbmZpZy50b29sdGlwPy50ZW1wbGF0ZVwiIGNsYXNzPVwicGFkZGluZy0yIGJvcmRlci1yYWRpdXMtMVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRvb2x0aXAgb2YgdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGlzcGxheS1ibG9jayBtYXJnaW4tcmlnaHQtMVwiIFtzdHlsZS53aWR0aC5weF09XCIxMFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiMlwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJ0b29sdGlwLnNlcmllcz8uY29sb3JcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC10aXRsZS0zXCI+XG4gICAgICAgICAgICB7eyB0b29sdGlwLnNlcmllcz8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2R5LTNcIj5cbiAgICAgICAgICAgICAgeDoge3sgZm9ybWF0KHRvb2x0aXAucG9pbnQ/LngpIH19XG4gICAgICAgICAgICAgICAgICB5OiB7eyBmb3JtYXQodG9vbHRpcC5wb2ludD8ueSkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG5cblxuIl19
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFPbEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7QUFRMUUsTUFBTSxPQUFPLGdCQUFnQjtJQWlCM0IsWUFDVSxHQUFpQixFQUNqQixHQUFzQixFQUN0QixXQUF3QixFQUN4QixTQUF1QixFQUN2QixLQUFhLEVBQ2IsV0FBdUI7UUFMdkIsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUUvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFD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QWQsS0FBSztnQkFFbUQsT0FBTztzQkFBL0QsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtJRGlzcGxheVRvb2x0aXB9IGZyb20gJy4uLy4uL21vZGVsL2ktZGlzcGxheS10b29sdGlwJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlSHRtbH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtTZXJpZXN9IGZyb20gJy4uLy4uL21vZGVsL3Nlcmllcyc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge0FsaWduLCBQb3NpdGlvblV0aWwsIFZlcnRpY2FsQWxpZ259IGZyb20gJ0B0ZXRhY29tL25nLWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLXRvb2x0aXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICBASW5wdXQoKSBjb25maWc6IElDaGFydENvbmZpZztcblxuICBAVmlld0NoaWxkKCd0b29sdGlwJywge3N0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWZ9KSB0b29sdGlwOiBFbGVtZW50UmVmO1xuXG4gIHBvc2l0aW9uOiBPYnNlcnZhYmxlPHtcbiAgICBsZWZ0PzogbnVtYmVyO1xuICAgIHRvcD86IG51bWJlcjtcbiAgICBib3R0b20/OiBudW1iZXI7XG4gICAgcmlnaHQ/OiBudW1iZXI7XG4gIH0+O1xuXG4gIGRpc3BsYXlUb29sdGlwczogT2JzZXJ2YWJsZTxTYWZlSHRtbD47XG4gIGRpc3BsYXk6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgdG9vbHRpcHM6IE9ic2VydmFibGU8SURpc3BsYXlUb29sdGlwW10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy50b29sdGlwcyA9IHRoaXMuc3ZjLnRvb2x0aXBzLnBpcGUobWFwKChfKSA9PiBbLi4uXy52YWx1ZXMoKV0pKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheSA9IHRoaXMuc3ZjLnBvaW50ZXJNb3ZlLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09ICdtb3VzZW1vdmUnID8gMSA6IDA7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gdGhpcy5zdmMucG9pbnRlck1vdmUucGlwZShcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+ICEhZXZlbnQpLFxuICAgICAgbWFwKChfKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFBvc2l0aW9uKF8pO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1IdG1sID0gKGh0bWwpOiBTYWZlSHRtbCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaHRtbCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRGb3JtYXR0ZXIgPSAodG9vbHRpcHM6IElEaXNwbGF5VG9vbHRpcFtdKTogU2FmZUh0bWwgPT4ge1xuICAgICAgbGV0IGh0bWwgPSAnJztcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGQzLnRpbWVGb3JtYXQoJyVkLiVtLiVZJyk7XG4gICAgICB0b29sdGlwcy5mb3JFYWNoKChfKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGljYXRvclN0eWxlID0gYGRpc3BsYXk6YmxvY2s7IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDJweDsgYmFja2dyb3VuZC1jb2xvcjogJHtfPy5zZXJpZXM/LmNvbG9yfWA7XG5cbiAgICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz1cImRpc3BsYXktZmxleCBhbGlnbi1jZW50ZXJcIj48c3BhbiBjbGFzcz1cIm1hcmdpbi1yaWdodC0xXCIgc3R5bGU9XCIke2luZGljYXRvclN0eWxlfVwiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtdGl0bGUtM1wiPiR7Xy5zZXJpZXMubmFtZX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2R5LTNcIj5cbiAgICAgICAgICAgICAgeDogJHsoXy5wb2ludC54IGFzIGFueSkgaW5zdGFuY2VvZiBEYXRlID8gZm9ybWF0KF8ucG9pbnQueCBhcyBhbnkpIDogXy5wb2ludC54Py50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICB5OiAkeyhfLnBvaW50LnkgYXMgYW55KSBpbnN0YW5jZW9mIERhdGUgPyBmb3JtYXQoXy5wb2ludC55IGFzIGFueSkgOiBfLnBvaW50Lnk/LnRvRml4ZWQoMil9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPjwvZGl2PmA7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybUh0bWwoaHRtbCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGZvcm1hdHRlciA9IHRoaXMuY29uZmlnPy50b29sdGlwPy5mb3JtYXQ7XG5cbiAgICB0aGlzLmRpc3BsYXlUb29sdGlwcyA9IHRoaXMuc3ZjLnRvb2x0aXBzLnBpcGUoXG4gICAgICBtYXAoKHRvb2x0aXBzOiBNYXA8U2VyaWVzPGFueT4sIElEaXNwbGF5VG9vbHRpcD4pID0+IHtcbiAgICAgICAgY29uc3QgdG9vbHRpcExpc3QgPSBbLi4udG9vbHRpcHMudmFsdWVzKCldO1xuICAgICAgICBpZiAodG9vbHRpcExpc3Q/Lmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXG4gICAgICAgICAgPyB0cmFuc2Zvcm1IdG1sKGZvcm1hdHRlcih0b29sdGlwTGlzdCkpXG4gICAgICAgICAgOiBkZWZhdWx0Rm9ybWF0dGVyKHRvb2x0aXBMaXN0KTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9zaXRpb24oZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgIGlmICghdGhpcy50b29sdGlwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFBvc2l0aW9uVXRpbC5nZXRQb3NpdGlvbihcbiAgICAgIHtcbiAgICAgICAgdG9wOiBldmVudC5wYWdlWSxcbiAgICAgICAgYm90dG9tOiBldmVudC5wYWdlWSxcbiAgICAgICAgbGVmdDogZXZlbnQucGFnZVgsXG4gICAgICAgIHJpZ2h0OiBldmVudC5wYWdlWCxcbiAgICAgIH0sXG4gICAgICB0aGlzLnRvb2x0aXA/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgQWxpZ24uYXV0byxcbiAgICAgIFZlcnRpY2FsQWxpZ24udG9wLFxuICAgICAgMTJcbiAgICApO1xuICB9XG5cblxuICBmb3JtYXQoaW5wdXQ6IG51bWJlciB8IERhdGUpOiBzdHJpbmcge1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGQzLnRpbWVGb3JtYXQoJyVkLiVtLiVZJyk7XG4gICAgICByZXR1cm4gZm9ybWF0KGlucHV0KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXQgPSBkMy5mb3JtYXQoJywuNX5yJyk7XG4gICAgcmV0dXJuIGZvcm1hdChpbnB1dCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnRldGFMZXQ9XCJwb3NpdGlvbiB8IGFzeW5jIGFzIHBcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvb2x0aXBzIHwgYXN5bmMgYXMgdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaGFydC10b29sdGlwIGNvbG9yLXRleHQtOTAgYmctYmFja2dyb3VuZC01MCBzaGFkb3ctMlwiXG4gICAgICAgICAjdG9vbHRpcFxuICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cIidmaXhlZCdcIlxuICAgICAgICAgKm5nSWY9XCJ0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwiZGlzcGxheSB8IGFzeW5jXCJcbiAgICAgICAgIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmU7IG1pbi13aWR0aDogMjAwcHg7XCJcbiAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInA/LmxlZnRcIlxuICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJwPy50b3BcIlxuICAgICAgICAgW3N0eWxlLmJvdHRvbS5weF09XCJwPy5ib3R0b21cIlxuICAgICAgICAgW3N0eWxlLnJpZ2h0LnB4XT1cInA/LnJpZ2h0XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnRvb2x0aXA/LnRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maWcudG9vbHRpcC50ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogdH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnRvb2x0aXA/LmZvcm1hdDsgZWxzZSBkZWZhdWx0XCI+XG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJkaXNwbGF5VG9vbHRpcHMgfCBhc3luY1wiPjwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFjb25maWcudG9vbHRpcD8udGVtcGxhdGVcIiBjbGFzcz1cInBhZGRpbmctMiBib3JkZXItcmFkaXVzLTFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0b29sdGlwIG9mIHRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LWZsZXggYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpc3BsYXktYmxvY2sgbWFyZ2luLXJpZ2h0LTFcIiBbc3R5bGUud2lkdGgucHhdPVwiMTBcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjJcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwidG9vbHRpcC5zZXJpZXM/LmNvbG9yXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtdGl0bGUtM1wiPlxuICAgICAgICAgICAge3sgdG9vbHRpcC5zZXJpZXM/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9keS0zXCI+XG4gICAgICAgICAgICAgIHg6IHt7IGZvcm1hdCh0b29sdGlwLnBvaW50Py54KSB9fVxuICAgICAgICAgICAgICAgICAgeToge3sgZm9ybWF0KHRvb2x0aXAucG9pbnQ/LnkpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuXG5cbiJdfQ==
|
|
@@ -22,6 +22,7 @@ import { AreaSeriesComponent } from './chart-container/series/area-series/area-s
|
|
|
22
22
|
import { AnnotationComponent } from './chart-container/annotation/annotation.component';
|
|
23
23
|
import { LinearSeriesBase } from './chart-container/series/linear-series-base';
|
|
24
24
|
import { CrosshairComponent } from './chart-container/crosshair/crosshair.component';
|
|
25
|
+
import { LetModule } from '@tetacom/ng-components';
|
|
25
26
|
import * as i0 from "@angular/core";
|
|
26
27
|
export class ChartModule {
|
|
27
28
|
}
|
|
@@ -47,7 +48,7 @@ ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "1
|
|
|
47
48
|
BlockSeriesComponent,
|
|
48
49
|
BlockAreaSeriesComponent,
|
|
49
50
|
AnnotationComponent,
|
|
50
|
-
CrosshairComponent], imports: [CommonModule], exports: [ChartComponent,
|
|
51
|
+
CrosshairComponent], imports: [CommonModule, LetModule], exports: [ChartComponent,
|
|
51
52
|
LegendComponent,
|
|
52
53
|
SeriesBaseComponent,
|
|
53
54
|
LineSeriesComponent,
|
|
@@ -56,7 +57,7 @@ ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "1
|
|
|
56
57
|
AreaSeriesComponent,
|
|
57
58
|
BlockSeriesComponent,
|
|
58
59
|
BlockAreaSeriesComponent] });
|
|
59
|
-
ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ChartModule, imports: [CommonModule] });
|
|
60
|
+
ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ChartModule, imports: [CommonModule, LetModule] });
|
|
60
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ChartModule, decorators: [{
|
|
61
62
|
type: NgModule,
|
|
62
63
|
args: [{
|
|
@@ -95,7 +96,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
95
96
|
BlockSeriesComponent,
|
|
96
97
|
BlockAreaSeriesComponent,
|
|
97
98
|
],
|
|
98
|
-
imports: [CommonModule],
|
|
99
|
+
imports: [CommonModule, LetModule],
|
|
99
100
|
}]
|
|
100
101
|
}] });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFDeEYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDekUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDakYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDckYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDeEcsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFDbEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDaEgsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDL0YsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDdEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDckYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQXdDakQsTUFBTSxPQUFPLFdBQVc7O3dHQUFYLFdBQVc7eUdBQVgsV0FBVyxpQkFwQ3BCLGNBQWM7UUFDZCxtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLGVBQWU7UUFDZixtQkFBbUI7UUFDbkIsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGNBQWM7UUFDZCxpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsbUJBQW1CO1FBQ25CLGtCQUFrQixhQWFWLFlBQVksRUFBRSxTQUFTLGFBVi9CLGNBQWM7UUFDZCxlQUFlO1FBQ2YsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixrQkFBa0I7UUFDbEIsc0JBQXNCO1FBQ3RCLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsd0JBQXdCO3lHQUlmLFdBQVcsWUFGWixZQUFZLEVBQUUsU0FBUzsyRkFFdEIsV0FBVztrQkF0Q3ZCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixtQkFBbUI7d0JBQ25CLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQix3QkFBd0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhcnRDb21wb25lbnR9IGZyb20gJy4vY2hhcnQvY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7U2VyaWVzSG9zdENvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzLWhvc3Qvc2VyaWVzLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7Q2hhcnRDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL2NoYXJ0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtMZWdlbmRDb21wb25lbnR9IGZyb20gJy4vbGVnZW5kL2xlZ2VuZC5jb21wb25lbnQnO1xuaW1wb3J0IHtTZXJpZXNCYXNlQ29tcG9uZW50fSBmcm9tICcuL2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7TGluZVNlcmllc0NvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzL2xpbmUvbGluZS1zZXJpZXMuY29tcG9uZW50JztcbmltcG9ydCB7R3JpZGxpbmVzQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9ncmlkbGluZXMvZ3JpZGxpbmVzLmNvbXBvbmVudCc7XG5pbXBvcnQge1hBeGlzQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci94LWF4aXMveC1heGlzLmNvbXBvbmVudCc7XG5pbXBvcnQge1lBeGlzQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci95LWF4aXMveS1heGlzLmNvbXBvbmVudCc7XG5pbXBvcnQge1Bsb3RsaW5lQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9wbG90bGluZS9wbG90bGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHtQbG90QmFuZENvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudCc7XG5pbXBvcnQge0JhclNlcmllc0NvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzL2Jhci9iYXItc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQge1Rvb2x0aXBDb21wb25lbnR9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHtab29tYWJsZURpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3RpdmVzL3pvb21hYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0JydXNoYWJsZURpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3RpdmVzL2JydXNoYWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtTY2F0dGVyU2VyaWVzQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvc2NhdHRlci1zZXJpZXMvc2NhdHRlci1zZXJpZXMuY29tcG9uZW50JztcbmltcG9ydCB7QmxvY2tTZXJpZXNDb21wb25lbnR9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Nlcmllcy9ibG9jay1zZXJpZXMvYmxvY2stc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQge0Jsb2NrQXJlYVNlcmllc0NvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzL2Jsb2NrLWFyZWEtc2VyaWVzL2Jsb2NrLWFyZWEtc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQge0FyZWFTZXJpZXNDb21wb25lbnR9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Nlcmllcy9hcmVhLXNlcmllcy9hcmVhLXNlcmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHtBbm5vdGF0aW9uQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9hbm5vdGF0aW9uL2Fubm90YXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7TGluZWFyU2VyaWVzQmFzZX0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzL2xpbmVhci1zZXJpZXMtYmFzZSc7XG5pbXBvcnQgeyBDcm9zc2hhaXJDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9jcm9zc2hhaXIvY3Jvc3NoYWlyLmNvbXBvbmVudCc7XG5pbXBvcnQge0xldE1vZHVsZX0gZnJvbSAnQHRldGFjb20vbmctY29tcG9uZW50cyc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENoYXJ0Q29tcG9uZW50LFxuICAgIFNlcmllc0hvc3RDb21wb25lbnQsXG4gICAgQ2hhcnRDb250YWluZXJDb21wb25lbnQsXG4gICAgTGVnZW5kQ29tcG9uZW50LFxuICAgIFNlcmllc0Jhc2VDb21wb25lbnQsXG4gICAgTGluZWFyU2VyaWVzQmFzZSxcbiAgICBMaW5lU2VyaWVzQ29tcG9uZW50LFxuICAgIEdyaWRsaW5lc0NvbXBvbmVudCxcbiAgICBYQXhpc0NvbXBvbmVudCxcbiAgICBZQXhpc0NvbXBvbmVudCxcbiAgICBQbG90bGluZUNvbXBvbmVudCxcbiAgICBQbG90QmFuZENvbXBvbmVudCxcbiAgICBCYXJTZXJpZXNDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBab29tYWJsZURpcmVjdGl2ZSxcbiAgICBCcnVzaGFibGVEaXJlY3RpdmUsXG4gICAgQXJlYVNlcmllc0NvbXBvbmVudCxcbiAgICBTY2F0dGVyU2VyaWVzQ29tcG9uZW50LFxuICAgIEJsb2NrU2VyaWVzQ29tcG9uZW50LFxuICAgIEJsb2NrQXJlYVNlcmllc0NvbXBvbmVudCxcbiAgICBBbm5vdGF0aW9uQ29tcG9uZW50LFxuICAgIENyb3NzaGFpckNvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENoYXJ0Q29tcG9uZW50LFxuICAgIExlZ2VuZENvbXBvbmVudCxcbiAgICBTZXJpZXNCYXNlQ29tcG9uZW50LFxuICAgIExpbmVTZXJpZXNDb21wb25lbnQsXG4gICAgQmFyU2VyaWVzQ29tcG9uZW50LFxuICAgIFNjYXR0ZXJTZXJpZXNDb21wb25lbnQsXG4gICAgQXJlYVNlcmllc0NvbXBvbmVudCxcbiAgICBCbG9ja1Nlcmllc0NvbXBvbmVudCxcbiAgICBCbG9ja0FyZWFTZXJpZXNDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIExldE1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0TW9kdWxlIHtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, HostListener, Directive, HostBinding,
|
|
2
|
+
import { Injectable, Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, HostListener, ElementRef, ViewChild, Directive, HostBinding, EventEmitter, Output, NgModule } from '@angular/core';
|
|
3
3
|
import * as i4 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { __awaiter } from 'tslib';
|
|
@@ -9,7 +9,8 @@ import { zoomIdentity } from 'd3';
|
|
|
9
9
|
import objectHash from 'object-hash';
|
|
10
10
|
import { maxIndex } from 'd3-array';
|
|
11
11
|
import { debounceTime, tap as tap$1 } from 'rxjs/operators';
|
|
12
|
-
import
|
|
12
|
+
import * as i5 from '@tetacom/ng-components';
|
|
13
|
+
import { PositionUtil, Align, VerticalAlign, tetaZoneFull, LetModule } from '@tetacom/ng-components';
|
|
13
14
|
import * as i3 from '@angular/platform-browser';
|
|
14
15
|
|
|
15
16
|
var ZoomType;
|
|
@@ -1865,12 +1866,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
1865
1866
|
}] } });
|
|
1866
1867
|
|
|
1867
1868
|
class TooltipComponent {
|
|
1868
|
-
constructor(svc, cdr, zoomService, sanitizer, _zone) {
|
|
1869
|
+
constructor(svc, cdr, zoomService, sanitizer, _zone, _elementRef) {
|
|
1869
1870
|
this.svc = svc;
|
|
1870
1871
|
this.cdr = cdr;
|
|
1871
1872
|
this.zoomService = zoomService;
|
|
1872
1873
|
this.sanitizer = sanitizer;
|
|
1873
1874
|
this._zone = _zone;
|
|
1875
|
+
this._elementRef = _elementRef;
|
|
1874
1876
|
this.tooltips = this.svc.tooltips.pipe(map((_) => [..._.values()]));
|
|
1875
1877
|
}
|
|
1876
1878
|
ngOnInit() {
|
|
@@ -1918,20 +1920,15 @@ class TooltipComponent {
|
|
|
1918
1920
|
}
|
|
1919
1921
|
getPosition(event) {
|
|
1920
1922
|
var _a, _b;
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
right: event.pageX > centerX
|
|
1931
|
-
? `${window.innerWidth - event.pageX + padding.x}px`
|
|
1932
|
-
: 'initial',
|
|
1933
|
-
};
|
|
1934
|
-
return scene;
|
|
1923
|
+
if (!this.tooltip) {
|
|
1924
|
+
return null;
|
|
1925
|
+
}
|
|
1926
|
+
return PositionUtil.getPosition({
|
|
1927
|
+
top: event.pageY,
|
|
1928
|
+
bottom: event.pageY,
|
|
1929
|
+
left: event.pageX,
|
|
1930
|
+
right: event.pageX,
|
|
1931
|
+
}, (_b = (_a = this.tooltip) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect(), Align.auto, VerticalAlign.top, 12);
|
|
1935
1932
|
}
|
|
1936
1933
|
format(input) {
|
|
1937
1934
|
if (input instanceof Date) {
|
|
@@ -1942,15 +1939,18 @@ class TooltipComponent {
|
|
|
1942
1939
|
return format(input);
|
|
1943
1940
|
}
|
|
1944
1941
|
}
|
|
1945
|
-
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TooltipComponent, deps: [{ token: ChartService }, { token: i0.ChangeDetectorRef }, { token: ZoomService }, { token: i3.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1946
|
-
TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TooltipComponent, selector: "teta-tooltip", inputs: { size: "size", config: "config" }, ngImport: i0, template: "<ng-container *
|
|
1942
|
+
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TooltipComponent, deps: [{ token: ChartService }, { token: i0.ChangeDetectorRef }, { token: ZoomService }, { token: i3.DomSanitizer }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1943
|
+
TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TooltipComponent, selector: "teta-tooltip", inputs: { size: "size", config: "config" }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-container *tetaLet=\"position | async as p\">\n <ng-container *ngIf=\"tooltips | async as t\">\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n *ngIf=\"t.length > 0\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"p?.left\"\n [style.top.px]=\"p?.top\"\n [style.bottom.px]=\"p?.bottom\"\n [style.right.px]=\"p?.right\"\n >\n <ng-container *ngIf=\"config.tooltip?.template\">\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: {$implicit: t}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"config.tooltip?.format; else default\">\n <div [innerHTML]=\"displayTooltips | async\"></div>\n </ng-container>\n\n <ng-template #default>\n <div *ngIf=\"!config.tooltip?.template\" class=\"padding-2 border-radius-1\">\n <ng-container *ngFor=\"let tooltip of t\">\n <div class=\"display-flex align-center\">\n <span class=\"display-block margin-right-1\" [style.width.px]=\"10\" [style.height.px]=\"2\"\n [style.background-color]=\"tooltip.series?.color\"></span>\n <span class=\"font-title-3\">\n {{ tooltip.series?.name }}\n <span class=\"font-body-3\">\n x: {{ format(tooltip.point?.x) }}\n y: {{ format(tooltip.point?.y) }}\n </span>\n </span>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n</ng-container>\n\n\n\n", styles: [":host{position:absolute;z-index:2}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.LetDirective, selector: "[tetaLet]", inputs: ["tetaLet"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1947
1944
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
1948
1945
|
type: Component,
|
|
1949
|
-
args: [{ selector: 'teta-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *
|
|
1950
|
-
}], ctorParameters: function () { return [{ type: ChartService }, { type: i0.ChangeDetectorRef }, { type: ZoomService }, { type: i3.DomSanitizer }, { type: i0.NgZone }]; }, propDecorators: { size: [{
|
|
1946
|
+
args: [{ selector: 'teta-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *tetaLet=\"position | async as p\">\n <ng-container *ngIf=\"tooltips | async as t\">\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n *ngIf=\"t.length > 0\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"p?.left\"\n [style.top.px]=\"p?.top\"\n [style.bottom.px]=\"p?.bottom\"\n [style.right.px]=\"p?.right\"\n >\n <ng-container *ngIf=\"config.tooltip?.template\">\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: {$implicit: t}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"config.tooltip?.format; else default\">\n <div [innerHTML]=\"displayTooltips | async\"></div>\n </ng-container>\n\n <ng-template #default>\n <div *ngIf=\"!config.tooltip?.template\" class=\"padding-2 border-radius-1\">\n <ng-container *ngFor=\"let tooltip of t\">\n <div class=\"display-flex align-center\">\n <span class=\"display-block margin-right-1\" [style.width.px]=\"10\" [style.height.px]=\"2\"\n [style.background-color]=\"tooltip.series?.color\"></span>\n <span class=\"font-title-3\">\n {{ tooltip.series?.name }}\n <span class=\"font-body-3\">\n x: {{ format(tooltip.point?.x) }}\n y: {{ format(tooltip.point?.y) }}\n </span>\n </span>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n</ng-container>\n\n\n\n", styles: [":host{position:absolute;z-index:2}\n"] }]
|
|
1947
|
+
}], ctorParameters: function () { return [{ type: ChartService }, { type: i0.ChangeDetectorRef }, { type: ZoomService }, { type: i3.DomSanitizer }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { size: [{
|
|
1951
1948
|
type: Input
|
|
1952
1949
|
}], config: [{
|
|
1953
1950
|
type: Input
|
|
1951
|
+
}], tooltip: [{
|
|
1952
|
+
type: ViewChild,
|
|
1953
|
+
args: ['tooltip', { static: false, read: ElementRef }]
|
|
1954
1954
|
}] } });
|
|
1955
1955
|
|
|
1956
1956
|
class ZoomableDirective {
|
|
@@ -2749,7 +2749,7 @@ ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "1
|
|
|
2749
2749
|
BlockSeriesComponent,
|
|
2750
2750
|
BlockAreaSeriesComponent,
|
|
2751
2751
|
AnnotationComponent,
|
|
2752
|
-
CrosshairComponent], imports: [CommonModule], exports: [ChartComponent,
|
|
2752
|
+
CrosshairComponent], imports: [CommonModule, LetModule], exports: [ChartComponent,
|
|
2753
2753
|
LegendComponent,
|
|
2754
2754
|
SeriesBaseComponent,
|
|
2755
2755
|
LineSeriesComponent,
|
|
@@ -2758,7 +2758,7 @@ ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "1
|
|
|
2758
2758
|
AreaSeriesComponent,
|
|
2759
2759
|
BlockSeriesComponent,
|
|
2760
2760
|
BlockAreaSeriesComponent] });
|
|
2761
|
-
ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ChartModule, imports: [CommonModule] });
|
|
2761
|
+
ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ChartModule, imports: [CommonModule, LetModule] });
|
|
2762
2762
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ChartModule, decorators: [{
|
|
2763
2763
|
type: NgModule,
|
|
2764
2764
|
args: [{
|
|
@@ -2797,7 +2797,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
2797
2797
|
BlockSeriesComponent,
|
|
2798
2798
|
BlockAreaSeriesComponent,
|
|
2799
2799
|
],
|
|
2800
|
-
imports: [CommonModule],
|
|
2800
|
+
imports: [CommonModule, LetModule],
|
|
2801
2801
|
}]
|
|
2802
2802
|
}] });
|
|
2803
2803
|
|