@tetacom/svg-charts 1.4.26 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +16 -10
- package/README.md +3 -20
- package/chart/base/series-base.component.d.ts +1 -1
- package/chart/chart/chart.component.d.ts +1 -1
- package/chart/chart-container/annotation/annotation.component.d.ts +1 -1
- package/chart/chart-container/chart-container.component.d.ts +1 -1
- package/chart/chart-container/crosshair/crosshair.component.d.ts +1 -1
- package/chart/chart-container/gridlines/gridlines.component.d.ts +1 -1
- package/chart/chart-container/plotband/plot-band.component.d.ts +1 -1
- package/chart/chart-container/plotline/plotline.component.d.ts +1 -1
- package/chart/chart-container/series/area-series/area-series.component.d.ts +1 -1
- package/chart/chart-container/series/bar/bar-series.component.d.ts +2 -1
- package/chart/chart-container/series/block-area-series/block-area-series.component.d.ts +1 -1
- package/chart/chart-container/series/block-horizontal-series/block-horizontal-series.component.d.ts +1 -1
- package/chart/chart-container/series/block-series/block-series.component.d.ts +1 -1
- package/chart/chart-container/series/line/line-series.component.d.ts +1 -1
- package/chart/chart-container/series/linear-series-base.d.ts +1 -1
- package/chart/chart-container/series/scatter-series/scatter-series.component.d.ts +1 -1
- package/chart/chart-container/series-host/series-host.component.d.ts +1 -1
- package/chart/chart-container/tooltip/tooltip.component.d.ts +2 -1
- package/chart/chart-container/x-axis/x-axis.component.d.ts +1 -1
- package/chart/chart-container/y-axis/y-axis.component.d.ts +1 -1
- package/chart/core/utils/generate-ticks.d.ts +1 -1
- package/chart/core/utils/position-util.d.ts +9 -0
- package/chart/directives/brushable.directive.d.ts +1 -1
- package/chart/directives/draggable-point.directive.d.ts +1 -1
- package/chart/directives/zoomable.directive.d.ts +1 -2
- package/chart/legend/legend.component.d.ts +1 -1
- package/chart/model/enum/align.enum.d.ts +11 -0
- package/chart/model/enum/vertical-align.enum.d.ts +9 -0
- package/chart/model/i-rect.d.ts +8 -0
- package/chart/service/chart.service.d.ts +4 -4
- package/chart/service/zoom.service.d.ts +1 -1
- package/esm2022/chart/base/series-base.component.mjs +10 -14
- package/esm2022/chart/chart/chart.component.mjs +28 -29
- package/esm2022/chart/chart-container/annotation/annotation.component.mjs +14 -17
- package/esm2022/chart/chart-container/chart-container.component.mjs +45 -38
- package/esm2022/chart/chart-container/crosshair/crosshair.component.mjs +13 -13
- package/esm2022/chart/chart-container/gridlines/gridlines.component.mjs +13 -15
- package/esm2022/chart/chart-container/plotband/plot-band.component.mjs +28 -31
- package/esm2022/chart/chart-container/plotline/plotline.component.mjs +15 -20
- package/esm2022/chart/chart-container/series/area-series/area-series.component.mjs +13 -17
- package/esm2022/chart/chart-container/series/bar/bar-series.component.mjs +19 -18
- package/esm2022/chart/chart-container/series/block-area-series/block-area-series.component.mjs +17 -19
- package/esm2022/chart/chart-container/series/block-horizontal-series/block-horizontal-series.component.mjs +17 -19
- package/esm2022/chart/chart-container/series/block-series/block-series.component.mjs +17 -19
- package/esm2022/chart/chart-container/series/line/line-series.component.mjs +42 -41
- package/esm2022/chart/chart-container/series/linear-series-base.mjs +13 -20
- package/esm2022/chart/chart-container/series/scatter-series/scatter-series.component.mjs +15 -18
- package/esm2022/chart/chart-container/series-host/series-host.component.mjs +8 -11
- package/esm2022/chart/chart-container/tooltip/tooltip.component.mjs +22 -23
- package/esm2022/chart/chart-container/x-axis/x-axis.component.mjs +16 -15
- package/esm2022/chart/chart-container/y-axis/y-axis.component.mjs +14 -12
- package/esm2022/chart/core/axis/axis.mjs +21 -28
- package/esm2022/chart/core/axis/builders/axis-size-builder.mjs +6 -4
- package/esm2022/chart/core/axis/builders/extremes-builder.mjs +7 -5
- package/esm2022/chart/core/utils/position-util.mjs +144 -0
- package/esm2022/chart/directives/brushable.directive.mjs +14 -19
- package/esm2022/chart/directives/draggable-point.directive.mjs +11 -16
- package/esm2022/chart/directives/zoomable.directive.mjs +49 -54
- package/esm2022/chart/legend/legend.component.mjs +15 -17
- package/esm2022/chart/model/chart-bounds.mjs +5 -5
- package/esm2022/chart/model/enum/align.enum.mjs +13 -0
- package/esm2022/chart/model/enum/vertical-align.enum.mjs +11 -0
- package/esm2022/chart/model/i-broadcast-message.mjs +1 -10
- package/esm2022/chart/model/i-rect.mjs +2 -0
- package/esm2022/chart/model/plot-band.mjs +2 -13
- package/esm2022/chart/model/plot-line.mjs +1 -9
- package/esm2022/chart/service/broadcast.service.mjs +5 -6
- package/esm2022/chart/service/brush.service.mjs +6 -7
- package/esm2022/chart/service/chart.service.mjs +48 -57
- package/esm2022/chart/service/scale.service.mjs +17 -18
- package/esm2022/chart/service/zoom.service.mjs +8 -11
- package/esm2022/index.mjs +13 -0
- package/esm2022/observable/public-api.mjs +2 -0
- package/esm2022/observable/zoneObservable.mjs +15 -0
- package/esm2022/tetacom-svg-charts.mjs +2 -2
- package/fesm2022/tetacom-svg-charts.mjs +1408 -1498
- package/fesm2022/tetacom-svg-charts.mjs.map +1 -1
- package/index.d.ts +9 -5
- package/observable/public-api.d.ts +1 -0
- package/observable/zoneObservable.d.ts +5 -0
- package/package.json +5 -11
- package/.browserslistrc +0 -16
- package/chart/chart.module.d.ts +0 -33
- package/chart/stories/bandseries/bandseries.component.d.ts +0 -21
- package/esm2022/chart/chart.module.mjs +0 -113
- package/esm2022/chart/stories/bandseries/bandseries.component.mjs +0 -36
- package/esm2022/public-api.mjs +0 -13
- package/public-api.d.ts +0 -9
|
@@ -6,44 +6,38 @@ import { BrushService } from '../service/brush.service';
|
|
|
6
6
|
import { ChartService } from '../service/chart.service';
|
|
7
7
|
import { ScaleService } from '../service/scale.service';
|
|
8
8
|
import { ZoomService } from '../service/zoom.service';
|
|
9
|
+
import { ChartContainerComponent } from '../chart-container/chart-container.component';
|
|
10
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
|
11
|
+
import { LegendComponent } from '../legend/legend.component';
|
|
9
12
|
import * as i0 from "@angular/core";
|
|
10
13
|
import * as i1 from "../service/chart.service";
|
|
11
14
|
import * as i2 from "../service/zoom.service";
|
|
12
15
|
import * as i3 from "../service/brush.service";
|
|
13
16
|
import * as i4 from "../service/scale.service";
|
|
14
|
-
import * as i5 from "@angular/common";
|
|
15
|
-
import * as i6 from "../chart-container/chart-container.component";
|
|
16
|
-
import * as i7 from "../legend/legend.component";
|
|
17
17
|
export class ChartComponent {
|
|
18
|
-
chartService;
|
|
19
|
-
zoomService;
|
|
20
|
-
brushService;
|
|
21
|
-
scaleService;
|
|
22
|
-
hasSeriesData;
|
|
23
|
-
svcConfig;
|
|
24
|
-
pointerMove = new EventEmitter();
|
|
25
|
-
plotBandsMove = new EventEmitter();
|
|
26
|
-
plotBandClick = new EventEmitter();
|
|
27
|
-
plotBandContextMenu = new EventEmitter();
|
|
28
|
-
plotLinesMove = new EventEmitter();
|
|
29
|
-
pointMove = new EventEmitter();
|
|
30
|
-
chartClick = new EventEmitter();
|
|
31
|
-
chartContextMenu = new EventEmitter();
|
|
32
|
-
annotationContextMenu = new EventEmitter();
|
|
33
|
-
annotationClick = new EventEmitter();
|
|
34
|
-
annotationMove = new EventEmitter();
|
|
35
|
-
zoomServiceInstance = new EventEmitter();
|
|
36
|
-
brushServiceInstance = new EventEmitter();
|
|
37
18
|
set config(config) {
|
|
38
19
|
this.chartService.setConfig(config);
|
|
39
20
|
this.zoomService.setBroadcastChannel(config?.zoom?.syncChannel);
|
|
40
21
|
}
|
|
41
|
-
_alive = true;
|
|
42
22
|
constructor(chartService, zoomService, brushService, scaleService) {
|
|
43
23
|
this.chartService = chartService;
|
|
44
24
|
this.zoomService = zoomService;
|
|
45
25
|
this.brushService = brushService;
|
|
46
26
|
this.scaleService = scaleService;
|
|
27
|
+
this.pointerMove = new EventEmitter();
|
|
28
|
+
this.plotBandsMove = new EventEmitter();
|
|
29
|
+
this.plotBandClick = new EventEmitter();
|
|
30
|
+
this.plotBandContextMenu = new EventEmitter();
|
|
31
|
+
this.plotLinesMove = new EventEmitter();
|
|
32
|
+
this.pointMove = new EventEmitter();
|
|
33
|
+
this.chartClick = new EventEmitter();
|
|
34
|
+
this.chartContextMenu = new EventEmitter();
|
|
35
|
+
this.annotationContextMenu = new EventEmitter();
|
|
36
|
+
this.annotationClick = new EventEmitter();
|
|
37
|
+
this.annotationMove = new EventEmitter();
|
|
38
|
+
this.zoomServiceInstance = new EventEmitter();
|
|
39
|
+
this.brushServiceInstance = new EventEmitter();
|
|
40
|
+
this._alive = true;
|
|
47
41
|
this.svcConfig = this.chartService.config;
|
|
48
42
|
this.hasSeriesData = this.svcConfig.pipe(map(_ => _.series?.length > 0 && _.series?.some(_ => _.data?.length > 0)));
|
|
49
43
|
}
|
|
@@ -139,13 +133,18 @@ export class ChartComponent {
|
|
|
139
133
|
ngOnDestroy() {
|
|
140
134
|
this._alive = false;
|
|
141
135
|
}
|
|
142
|
-
static
|
|
143
|
-
static
|
|
136
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ChartComponent, deps: [{ token: i1.ChartService }, { token: i2.ZoomService }, { token: i3.BrushService }, { token: i4.ScaleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
137
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: ChartComponent, isStandalone: true, selector: "teta-svg-chart", inputs: { config: "config" }, outputs: { pointerMove: "pointerMove", plotBandsMove: "plotBandsMove", plotBandClick: "plotBandClick", plotBandContextMenu: "plotBandContextMenu", plotLinesMove: "plotLinesMove", pointMove: "pointMove", chartClick: "chartClick", chartContextMenu: "chartContextMenu", annotationContextMenu: "annotationContextMenu", annotationClick: "annotationClick", annotationMove: "annotationMove", zoomServiceInstance: "zoomServiceInstance", brushServiceInstance: "brushServiceInstance" }, providers: [ChartService, ZoomService, ScaleService, BrushService], ngImport: i0, template: "<ng-container *ngIf=\"{\n hasSeriesData: hasSeriesData | async,\n svcConfig: svcConfig | async\n} as data\">\n <ng-container *ngIf=\"data.hasSeriesData === true else noData\">\n <div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container position-relative\"></teta-chart-container>\n </div>\n <teta-legend *ngIf=\"data.svcConfig.legend?.enable === true\" [series]=\"data.svcConfig.series\"></teta-legend>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <div class=\"column column_auto justify-content-center\">\n <span class=\"font-body-3 color-text-40 overflow-hidden text-overflow-ellipsis nowrap text-align-center\">\n <div #ref><ng-content></ng-content></div>\n <span *ngIf=\"!ref.hasChildNodes()\">\n No data\n </span>\n </span>\n </div>\n</ng-template>\n", styles: [":host{position:relative;display:flex;flex-direction:column;height:100%;width:100%}\n"], dependencies: [{ kind: "component", type: ChartContainerComponent, selector: "teta-chart-container" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LegendComponent, selector: "teta-legend", inputs: ["series"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
144
138
|
}
|
|
145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ChartComponent, decorators: [{
|
|
146
140
|
type: Component,
|
|
147
|
-
args: [{ selector: 'teta-svg-chart', providers: [ChartService, ZoomService, ScaleService, BrushService], changeDetection: ChangeDetectionStrategy.OnPush,
|
|
148
|
-
|
|
141
|
+
args: [{ selector: 'teta-svg-chart', standalone: true, providers: [ChartService, ZoomService, ScaleService, BrushService], changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
142
|
+
ChartContainerComponent,
|
|
143
|
+
AsyncPipe,
|
|
144
|
+
LegendComponent,
|
|
145
|
+
NgIf
|
|
146
|
+
], template: "<ng-container *ngIf=\"{\n hasSeriesData: hasSeriesData | async,\n svcConfig: svcConfig | async\n} as data\">\n <ng-container *ngIf=\"data.hasSeriesData === true else noData\">\n <div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container position-relative\"></teta-chart-container>\n </div>\n <teta-legend *ngIf=\"data.svcConfig.legend?.enable === true\" [series]=\"data.svcConfig.series\"></teta-legend>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <div class=\"column column_auto justify-content-center\">\n <span class=\"font-body-3 color-text-40 overflow-hidden text-overflow-ellipsis nowrap text-align-center\">\n <div #ref><ng-content></ng-content></div>\n <span *ngIf=\"!ref.hasChildNodes()\">\n No data\n </span>\n </span>\n </div>\n</ng-template>\n", styles: [":host{position:relative;display:flex;flex-direction:column;height:100%;width:100%}\n"] }]
|
|
147
|
+
}], ctorParameters: () => [{ type: i1.ChartService }, { type: i2.ZoomService }, { type: i3.BrushService }, { type: i4.ScaleService }], propDecorators: { pointerMove: [{
|
|
149
148
|
type: Output
|
|
150
149
|
}], plotBandsMove: [{
|
|
151
150
|
type: Output
|
|
@@ -174,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
174
173
|
}], config: [{
|
|
175
174
|
type: Input
|
|
176
175
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9qRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQVN0RCxNQUFNLE9BQU8sY0FBYztJQXdFaEI7SUFDQTtJQUNBO0lBQ0E7SUExRVQsYUFBYSxDQUFzQjtJQUNuQyxTQUFTLENBQTJCO0lBRXBDLFdBQVcsR0FDVCxJQUFJLFlBQVksRUFBb0MsQ0FBQztJQUd2RCxhQUFhLEdBQXdDLElBQUksWUFBWSxFQUVsRSxDQUFDO0lBR0osYUFBYSxHQUF3QyxJQUFJLFlBQVksRUFFbEUsQ0FBQztJQUdKLG1CQUFtQixHQUF3QyxJQUFJLFlBQVksRUFFeEUsQ0FBQztJQUdKLGFBQWEsR0FBd0MsSUFBSSxZQUFZLEVBRWxFLENBQUM7SUFHSixTQUFTLEdBQTBDLElBQUksWUFBWSxFQUVoRSxD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a0JBUDFCLFNBQVM7K0JBQ0UsZ0JBQWdCLGFBR2YsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsbUJBQ2pELHVCQUF1QixDQUFDLE1BQU07bUxBTS9DLFdBQVc7c0JBRFYsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBTVAsYUFBYTtzQkFEWixNQUFNO2dCQU1QLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFNUCxhQUFhO3NCQURaLE1BQU07Z0JBTVAsU0FBUztzQkFEUixNQUFNO2dCQU1QLFVBQVU7c0JBRFQsTUFBTTtnQkFNUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFNUCxxQkFBcUI7c0JBRHBCLE1BQU07Z0JBS1AsZUFBZTtzQkFEZCxNQUFNO2dCQU1QLGNBQWM7c0JBRGIsTUFBTTtnQkFNUCxtQkFBbUI7c0JBRGxCLE1BQU07Z0JBS1Asb0JBQW9CO3NCQURuQixNQUFNO2dCQUlNLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgdGFrZVdoaWxlLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBbm5vdGF0aW9uIH0gZnJvbSAnLi4vbW9kZWwvYW5ub3RhdGlvbic7XG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7IFNjYWxlVHlwZSB9IGZyb20gJy4uL21vZGVsL2VudW0vc2NhbGUtdHlwZSc7XG5pbXBvcnQgeyBUb29sdGlwVHJhY2tpbmcgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3Rvb2x0aXAtdHJhY2tpbmcnO1xuaW1wb3J0IHsgSUNoYXJ0Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHsgSUNoYXJ0RXZlbnQgfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWV2ZW50JztcbmltcG9ydCB7IElQb2ludE1vdmUgfSBmcm9tICcuLi9tb2RlbC9pLXBvaW50LW1vdmUnO1xuaW1wb3J0IHsgSVNjYWxlc01hcCB9IGZyb20gJy4uL21vZGVsL2ktc2NhbGVzLW1hcCc7XG5pbXBvcnQgeyBQbG90QmFuZCB9IGZyb20gJy4uL21vZGVsL3Bsb3QtYmFuZCc7XG5pbXBvcnQgeyBQbG90TGluZSB9IGZyb20gJy4uL21vZGVsL3Bsb3QtbGluZSc7XG5pbXBvcnQgeyBCcnVzaFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2JydXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IFNjYWxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBab29tU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1zdmctY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtDaGFydFNlcnZpY2UsIFpvb21TZXJ2aWNlLCBTY2FsZVNlcnZpY2UsIEJydXNoU2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgaGFzU2VyaWVzRGF0YTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc3ZjQ29uZmlnOiBPYnNlcnZhYmxlPElDaGFydENvbmZpZz47XG4gIEBPdXRwdXQoKVxuICBwb2ludGVyTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PE1hcDxudW1iZXIsIG51bWJlcj4+PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxNYXA8bnVtYmVyLCBudW1iZXI+Pj4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdEJhbmRzTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PFBsb3RCYW5kPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHBsb3RCYW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxQbG90QmFuZD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBJQ2hhcnRFdmVudDxQbG90QmFuZD5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwbG90QmFuZENvbnRleHRNZW51OiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdExpbmVzTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RMaW5lPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PFBsb3RMaW5lPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHBvaW50TW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PElQb2ludE1vdmU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8SVBvaW50TW92ZT5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBjaGFydENsaWNrOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QmFzZVBvaW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PEJhc2VQb2ludD5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBjaGFydENvbnRleHRNZW51OiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QmFzZVBvaW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PEJhc2VQb2ludD5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBhbm5vdGF0aW9uQ29udGV4dE1lbnU6IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFubm90YXRpb25DbGljazogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PEFubm90YXRpb24+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBhbm5vdGF0aW9uTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PEFubm90YXRpb24+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICB6b29tU2VydmljZUluc3RhbmNlOiBFdmVudEVtaXR0ZXI8Wm9vbVNlcnZpY2U+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFpvb21TZXJ2aWNlPigpO1xuXG4gIEBPdXRwdXQoKVxuICBicnVzaFNlcnZpY2VJbnN0YW5jZTogRXZlbnRFbWl0dGVyPEJydXNoU2VydmljZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QnJ1c2hTZXJ2aWNlPigpO1xuXG4gIEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBJQ2hhcnRDb25maWcpIHtcbiAgICB0aGlzLmNoYXJ0U2VydmljZS5zZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLnpvb21TZXJ2aWNlLnNldEJyb2FkY2FzdENoYW5uZWwoY29uZmlnPy56b29tPy5zeW5jQ2hhbm5lbCk7XG4gIH1cblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHVibGljIGJydXNoU2VydmljZTogQnJ1c2hTZXJ2aWNlLFxuICAgIHB1YmxpYyBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN2Y0NvbmZpZyA9IHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZztcbiAgICB0aGlzLmhhc1Nlcmllc0RhdGEgPSB0aGlzLnN2Y0NvbmZpZy5waXBlKFxuICAgICAgbWFwKF8gPT4gXy5zZXJpZXM/Lmxlbmd0aCA+IDAgJiYgXy5zZXJpZXM/LnNvbWUoXyA9PiBfLmRhdGE/Lmxlbmd0aCA+IDApKVxuICAgICk7XG4gIH1cblxuICByZXNldFpvb20oKSB7XG4gICAgdGhpcy5zY2FsZVNlcnZpY2UucmVzZXRab29tKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb21TZXJ2aWNlSW5zdGFuY2UuZW1pdCh0aGlzLnpvb21TZXJ2aWNlKTtcbiAgICB0aGlzLmJydXNoU2VydmljZUluc3RhbmNlLmVtaXQodGhpcy5icnVzaFNlcnZpY2UpO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucG9pbnRlck1vdmVcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMsIHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IFtQb2ludGVyRXZlbnQsIElTY2FsZXNNYXAsIElDaGFydENvbmZpZ10pID0+IHtcbiAgICAgICAgY29uc3QgW2V2ZW50LCB7IHgsIHkgfSwgY29uZmlnXSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBUcmFja2luZyA9IGNvbmZpZz8udG9vbHRpcD8udHJhY2tpbmc7XG4gICAgICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy55KSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgICB5LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUuYmFuZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUuc2NhbGUuaW52ZXJ0KGV2ZW50Lm9mZnNldFkpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBvaW50ZXJNb3ZlLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiByZXN1bHQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgICB4LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUuYmFuZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUuc2NhbGUuaW52ZXJ0KGV2ZW50Lm9mZnNldFgpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBvaW50ZXJNb3ZlLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiByZXN1bHQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucGxvdEJhbmRFdmVudFxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMucGxvdEJhbmRzTW92ZS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5wbG90TGluZU1vdmVcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLnBsb3RMaW5lc01vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucG9pbnRNb3ZlXG4gICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5wb2ludE1vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UuY2hhcnRDbGlja1xuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuY2hhcnRDbGljay5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5jaGFydENvbnRleHRNZW51XG4gICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5jaGFydENvbnRleHRNZW51LmVtaXQoXyk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnBsb3RCYW5kQ2xpY2tcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLnBsb3RCYW5kQ2xpY2suZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucGxvdEJhbmRDb250ZXh0TWVudVxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMucGxvdEJhbmRDb250ZXh0TWVudS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uQ29udGV4dE1lbnVcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLmFubm90YXRpb25Db250ZXh0TWVudS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uQ2xpY2tcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLmFubm90YXRpb25DbGljay5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uTW92ZVxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuYW5ub3RhdGlvbk1vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIntcbiAgaGFzU2VyaWVzRGF0YTogaGFzU2VyaWVzRGF0YSB8IGFzeW5jLFxuICBzdmNDb25maWc6IHN2Y0NvbmZpZyB8IGFzeW5jXG59IGFzIGRhdGFcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuaGFzU2VyaWVzRGF0YSA9PT0gdHJ1ZSBlbHNlIG5vRGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG9cIj5cbiAgICAgIDx0ZXRhLWNoYXJ0LWNvbnRhaW5lciBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiPjwvdGV0YS1jaGFydC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHRldGEtbGVnZW5kICpuZ0lmPVwiZGF0YS5zdmNDb25maWcubGVnZW5kPy5lbmFibGUgPT09IHRydWVcIiBbc2VyaWVzXT1cImRhdGEuc3ZjQ29uZmlnLnNlcmllc1wiPjwvdGV0YS1sZWdlbmQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI25vRGF0YT5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5fYXV0byBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb250LWJvZHktMyBjb2xvci10ZXh0LTQwIG92ZXJmbG93LWhpZGRlbiB0ZXh0LW92ZXJmbG93LWVsbGlwc2lzIG5vd3JhcCB0ZXh0LWFsaWduLWNlbnRlclwiPlxuICAgICAgPGRpdiAjcmVmPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIXJlZi5oYXNDaGlsZE5vZGVzKClcIj5cbiAgICAgICAgTm8gZGF0YVxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsR0FBRyxFQUFjLFNBQVMsRUFBRSxjQUFjLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJaEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU8vRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQWdCM0QsTUFBTSxPQUFPLGNBQWM7SUFnRXpCLElBQWEsTUFBTSxDQUFDLE1BQW9CO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxX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TSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOzhHQTdMVSxjQUFjO2tHQUFkLGNBQWMsd2pCQVRkLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLDBCQ2xDcEUsNjBCQXFCQSw4SURnQkksdUJBQXVCLDREQUN2QixTQUFTLDhDQUNULGVBQWUsNEVBQ2YsSUFBSTs7MkZBR0ssY0FBYztrQkFkMUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FHZCxJQUFJLGFBQ0wsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsbUJBQ2pELHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsdUJBQXVCO3dCQUN2QixTQUFTO3dCQUNULGVBQWU7d0JBQ2YsSUFBSTtxQkFDTDtpS0FNRCxXQUFXO3NCQURWLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQU1QLGFBQWE7c0JBRFosTUFBTTtnQkFNUCxtQkFBbUI7c0JBRGxCLE1BQU07Z0JBTVAsYUFBYTtzQkFEWixNQUFNO2dCQU1QLFNBQVM7c0JBRFIsTUFBTTtnQkFNUCxVQUFVO3NCQURULE1BQU07Z0JBTVAsZ0JBQWdCO3NCQURmLE1BQU07Z0JBTVAscUJBQXFCO3NCQURwQixNQUFNO2dCQUtQLGVBQWU7c0JBRGQsTUFBTTtnQkFNUCxjQUFjO3NCQURiLE1BQU07Z0JBTVAsbUJBQW1CO3NCQURsQixNQUFNO2dCQUtQLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFJTSxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge21hcCwgT2JzZXJ2YWJsZSwgdGFrZVdoaWxlLCB3aXRoTGF0ZXN0RnJvbX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QW5ub3RhdGlvbn0gZnJvbSAnLi4vbW9kZWwvYW5ub3RhdGlvbic7XG5pbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQge1NjYWxlVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9zY2FsZS10eXBlJztcbmltcG9ydCB7VG9vbHRpcFRyYWNraW5nfSBmcm9tICcuLi9tb2RlbC9lbnVtL3Rvb2x0aXAtdHJhY2tpbmcnO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7SUNoYXJ0RXZlbnR9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHtJUG9pbnRNb3ZlfSBmcm9tICcuLi9tb2RlbC9pLXBvaW50LW1vdmUnO1xuaW1wb3J0IHtJU2NhbGVzTWFwfSBmcm9tICcuLi9tb2RlbC9pLXNjYWxlcy1tYXAnO1xuaW1wb3J0IHtQbG90QmFuZH0gZnJvbSAnLi4vbW9kZWwvcGxvdC1iYW5kJztcbmltcG9ydCB7UGxvdExpbmV9IGZyb20gJy4uL21vZGVsL3Bsb3QtbGluZSc7XG5pbXBvcnQge0JydXNoU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9icnVzaC5zZXJ2aWNlJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge0NoYXJ0Q29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuLi9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0FzeW5jUGlwZSwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TGVnZW5kQ29tcG9uZW50fSBmcm9tICcuLi9sZWdlbmQvbGVnZW5kLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtc3ZnLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbQ2hhcnRTZXJ2aWNlLCBab29tU2VydmljZSwgU2NhbGVTZXJ2aWNlLCBCcnVzaFNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENoYXJ0Q29udGFpbmVyQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBMZWdlbmRDb21wb25lbnQsXG4gICAgTmdJZlxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBoYXNTZXJpZXNEYXRhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBzdmNDb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcbiAgQE91dHB1dCgpXG4gIHBvaW50ZXJNb3ZlOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8TWFwPG51bWJlciwgbnVtYmVyPj4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PE1hcDxudW1iZXIsIG51bWJlcj4+PigpO1xuXG4gIEBPdXRwdXQoKVxuICBwbG90QmFuZHNNb3ZlOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdEJhbmRDbGljazogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PFBsb3RCYW5kPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHBsb3RCYW5kQ29udGV4dE1lbnU6IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxQbG90QmFuZD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBJQ2hhcnRFdmVudDxQbG90QmFuZD5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwbG90TGluZXNNb3ZlOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8UGxvdExpbmU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8UGxvdExpbmU+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgcG9pbnRNb3ZlOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8SVBvaW50TW92ZT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBJQ2hhcnRFdmVudDxJUG9pbnRNb3ZlPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNoYXJ0Q2xpY2s6IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxCYXNlUG9pbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8QmFzZVBvaW50PlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNoYXJ0Q29udGV4dE1lbnU6IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxCYXNlUG9pbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8QmFzZVBvaW50PlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFubm90YXRpb25Db250ZXh0TWVudTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PEFubm90YXRpb24+PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPj4oKTtcblxuICBAT3V0cHV0KClcbiAgYW5ub3RhdGlvbkNsaWNrOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFubm90YXRpb25Nb3ZlOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHpvb21TZXJ2aWNlSW5zdGFuY2U6IEV2ZW50RW1pdHRlcjxab29tU2VydmljZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Wm9vbVNlcnZpY2U+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGJydXNoU2VydmljZUluc3RhbmNlOiBFdmVudEVtaXR0ZXI8QnJ1c2hTZXJ2aWNlPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxCcnVzaFNlcnZpY2U+KCk7XG5cbiAgQElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IElDaGFydENvbmZpZykge1xuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNldENvbmZpZyhjb25maWcpO1xuICAgIHRoaXMuem9vbVNlcnZpY2Uuc2V0QnJvYWRjYXN0Q2hhbm5lbChjb25maWc/Lnpvb20/LnN5bmNDaGFubmVsKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHVibGljIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwdWJsaWMgYnJ1c2hTZXJ2aWNlOiBCcnVzaFNlcnZpY2UsXG4gICAgcHVibGljIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3ZjQ29uZmlnID0gdGhpcy5jaGFydFNlcnZpY2UuY29uZmlnO1xuICAgIHRoaXMuaGFzU2VyaWVzRGF0YSA9IHRoaXMuc3ZjQ29uZmlnLnBpcGUoXG4gICAgICBtYXAoXyA9PiBfLnNlcmllcz8ubGVuZ3RoID4gMCAmJiBfLnNlcmllcz8uc29tZShfID0+IF8uZGF0YT8ubGVuZ3RoID4gMCkpXG4gICAgKTtcbiAgfVxuXG4gIHJlc2V0Wm9vbSgpIHtcbiAgICB0aGlzLnNjYWxlU2VydmljZS5yZXNldFpvb20oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbVNlcnZpY2VJbnN0YW5jZS5lbWl0KHRoaXMuem9vbVNlcnZpY2UpO1xuICAgIHRoaXMuYnJ1c2hTZXJ2aWNlSW5zdGFuY2UuZW1pdCh0aGlzLmJydXNoU2VydmljZSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5wb2ludGVyTW92ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc2NhbGVTZXJ2aWNlLnNjYWxlcywgdGhpcy5jaGFydFNlcnZpY2UuY29uZmlnKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogW1BvaW50ZXJFdmVudCwgSVNjYWxlc01hcCwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbZXZlbnQsIHt4LCB5fSwgY29uZmlnXSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBUcmFja2luZyA9IGNvbmZpZz8udG9vbHRpcD8udHJhY2tpbmc7XG4gICAgICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy55KSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgICB5LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUuYmFuZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUuc2NhbGUuaW52ZXJ0KGV2ZW50Lm9mZnNldFkpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBvaW50ZXJNb3ZlLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiByZXN1bHQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgICB4LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUuYmFuZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUuc2NhbGUuaW52ZXJ0KGV2ZW50Lm9mZnNldFgpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBvaW50ZXJNb3ZlLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiByZXN1bHQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucGxvdEJhbmRFdmVudFxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMucGxvdEJhbmRzTW92ZS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5wbG90TGluZU1vdmVcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLnBsb3RMaW5lc01vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucG9pbnRNb3ZlXG4gICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5wb2ludE1vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UuY2hhcnRDbGlja1xuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuY2hhcnRDbGljay5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5jaGFydENvbnRleHRNZW51XG4gICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5jaGFydENvbnRleHRNZW51LmVtaXQoXyk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnBsb3RCYW5kQ2xpY2tcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLnBsb3RCYW5kQ2xpY2suZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucGxvdEJhbmRDb250ZXh0TWVudVxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMucGxvdEJhbmRDb250ZXh0TWVudS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uQ29udGV4dE1lbnVcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLmFubm90YXRpb25Db250ZXh0TWVudS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uQ2xpY2tcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLmFubm90YXRpb25DbGljay5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uTW92ZVxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuYW5ub3RhdGlvbk1vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIntcbiAgaGFzU2VyaWVzRGF0YTogaGFzU2VyaWVzRGF0YSB8IGFzeW5jLFxuICBzdmNDb25maWc6IHN2Y0NvbmZpZyB8IGFzeW5jXG59IGFzIGRhdGFcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuaGFzU2VyaWVzRGF0YSA9PT0gdHJ1ZSBlbHNlIG5vRGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG9cIj5cbiAgICAgIDx0ZXRhLWNoYXJ0LWNvbnRhaW5lciBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiPjwvdGV0YS1jaGFydC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHRldGEtbGVnZW5kICpuZ0lmPVwiZGF0YS5zdmNDb25maWcubGVnZW5kPy5lbmFibGUgPT09IHRydWVcIiBbc2VyaWVzXT1cImRhdGEuc3ZjQ29uZmlnLnNlcmllc1wiPjwvdGV0YS1sZWdlbmQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI25vRGF0YT5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5fYXV0byBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb250LWJvZHktMyBjb2xvci10ZXh0LTQwIG92ZXJmbG93LWhpZGRlbiB0ZXh0LW92ZXJmbG93LWVsbGlwc2lzIG5vd3JhcCB0ZXh0LWFsaWduLWNlbnRlclwiPlxuICAgICAgPGRpdiAjcmVmPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIXJlZi5oYXNDaGlsZE5vZGVzKClcIj5cbiAgICAgICAgTm8gZGF0YVxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostListener, Input, ViewChild, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Input, ViewChild, } from '@angular/core';
|
|
2
2
|
import * as d3 from 'd3';
|
|
3
3
|
import { lastValueFrom, map, take } from 'rxjs';
|
|
4
|
+
import { ScaleService } from '../../service/scale.service';
|
|
5
|
+
import { ChartService } from '../../service/chart.service';
|
|
6
|
+
import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';
|
|
4
7
|
import * as i0 from "@angular/core";
|
|
5
8
|
import * as i1 from "../../service/scale.service";
|
|
6
9
|
import * as i2 from "../../service/chart.service";
|
|
7
|
-
import * as i3 from "@angular/common";
|
|
8
10
|
export class AnnotationComponent {
|
|
9
|
-
scaleService;
|
|
10
|
-
cdr;
|
|
11
|
-
chartService;
|
|
12
|
-
visibleRect;
|
|
13
11
|
set annotation(annotation) {
|
|
14
12
|
this._annotation = annotation;
|
|
15
13
|
}
|
|
@@ -24,11 +22,6 @@ export class AnnotationComponent {
|
|
|
24
22
|
get node() {
|
|
25
23
|
return this._node;
|
|
26
24
|
}
|
|
27
|
-
x;
|
|
28
|
-
y;
|
|
29
|
-
drag;
|
|
30
|
-
_annotation;
|
|
31
|
-
_node;
|
|
32
25
|
constructor(scaleService, cdr, chartService) {
|
|
33
26
|
this.scaleService = scaleService;
|
|
34
27
|
this.cdr = cdr;
|
|
@@ -85,13 +78,17 @@ export class AnnotationComponent {
|
|
|
85
78
|
d3.select(this.node.nativeElement).call(this.drag);
|
|
86
79
|
}
|
|
87
80
|
}
|
|
88
|
-
static
|
|
89
|
-
static
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AnnotationComponent, deps: [{ token: i1.ScaleService }, { token: i0.ChangeDetectorRef }, { token: i2.ChartService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AnnotationComponent, isStandalone: true, selector: "[teta-annotation]", inputs: { visibleRect: "visibleRect", annotation: "annotation" }, host: { listeners: { "click": "click($event)", "contextmenu": "contextMenu($event)" } }, viewQueries: [{ propertyName: "node", first: true, predicate: ["annotationNode"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"{\n x: x | async,\n y: y | async\n } as data\">\n <ng-container *ngIf=\"data.x && data.y\">\n\n\n <svg:circle\n [attr.r]=\"annotation.style?.radius ?? 5\"\n [attr.cx]=\"data.x(annotation.point.x)\"\n [attr.fill]=\"annotation?.style?.fill ?? 'var(--color-text-90)'\"\n [attr.cy]=\"data.y(annotation.point.y)\">\n </svg:circle>\n <svg:line\n [attr.x1]=\"data.x(annotation.point.x)\"\n [attr.y1]=\"data.y(annotation.point.y)\"\n [attr.x2]=\"data.x(annotation.point.x) + (annotation.dx ?? 0)\"\n [attr.y2]=\"data.y(annotation.point.y) + (annotation.dy ?? 0)\"\n [attr.stroke]=\"annotation.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"annotation.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"annotation.style?.strokeDasharray ?? null\"\n >\n </svg:line>\n <svg:foreignObject\n class=\"position-absolute\"\n [attr.width]=\"node?.nativeElement.offsetWidth ?? 0\"\n [attr.height]=\"node?.nativeElement.offsetHeight ?? 0\"\n [attr.x]=\"data.x(annotation.point.x) + (annotation.dx ?? 0) - 10\"\n [attr.y]=\"data.y(annotation.point.y) + (annotation.dy ?? 0) - 10\">\n <div\n #annotationNode\n [style.background-color]=\"annotation.style?.fill ?? 'var(--color-global-bgmain)'\"\n [style.cursor]=\"annotation?.draggable ? 'move' : 'default'\"\n [className]=\"'padding-h-2 ' + annotation.className ?? ''\"\n style=\"border-radius: 2px; display: inline-block;\">\n <ng-container *ngIf=\"annotation.template;else default\">\n <ng-container *ngTemplateOutlet=\"annotation.template;context: {$implicit: annotation}\"></ng-container>\n </ng-container>\n </div>\n </svg:foreignObject>\n </ng-container>\n</ng-container>\n<ng-template #default>\n {{ annotation.note?.label}}\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
90
83
|
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AnnotationComponent, decorators: [{
|
|
92
85
|
type: Component,
|
|
93
|
-
args: [{ selector: '[teta-annotation]',
|
|
94
|
-
|
|
86
|
+
args: [{ selector: '[teta-annotation]', standalone: true, imports: [
|
|
87
|
+
NgIf,
|
|
88
|
+
NgTemplateOutlet,
|
|
89
|
+
AsyncPipe
|
|
90
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n x: x | async,\n y: y | async\n } as data\">\n <ng-container *ngIf=\"data.x && data.y\">\n\n\n <svg:circle\n [attr.r]=\"annotation.style?.radius ?? 5\"\n [attr.cx]=\"data.x(annotation.point.x)\"\n [attr.fill]=\"annotation?.style?.fill ?? 'var(--color-text-90)'\"\n [attr.cy]=\"data.y(annotation.point.y)\">\n </svg:circle>\n <svg:line\n [attr.x1]=\"data.x(annotation.point.x)\"\n [attr.y1]=\"data.y(annotation.point.y)\"\n [attr.x2]=\"data.x(annotation.point.x) + (annotation.dx ?? 0)\"\n [attr.y2]=\"data.y(annotation.point.y) + (annotation.dy ?? 0)\"\n [attr.stroke]=\"annotation.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"annotation.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"annotation.style?.strokeDasharray ?? null\"\n >\n </svg:line>\n <svg:foreignObject\n class=\"position-absolute\"\n [attr.width]=\"node?.nativeElement.offsetWidth ?? 0\"\n [attr.height]=\"node?.nativeElement.offsetHeight ?? 0\"\n [attr.x]=\"data.x(annotation.point.x) + (annotation.dx ?? 0) - 10\"\n [attr.y]=\"data.y(annotation.point.y) + (annotation.dy ?? 0) - 10\">\n <div\n #annotationNode\n [style.background-color]=\"annotation.style?.fill ?? 'var(--color-global-bgmain)'\"\n [style.cursor]=\"annotation?.draggable ? 'move' : 'default'\"\n [className]=\"'padding-h-2 ' + annotation.className ?? ''\"\n style=\"border-radius: 2px; display: inline-block;\">\n <ng-container *ngIf=\"annotation.template;else default\">\n <ng-container *ngTemplateOutlet=\"annotation.template;context: {$implicit: annotation}\"></ng-container>\n </ng-container>\n </div>\n </svg:foreignObject>\n </ng-container>\n</ng-container>\n<ng-template #default>\n {{ annotation.note?.label}}\n</ng-template>\n" }]
|
|
91
|
+
}], ctorParameters: () => [{ type: i1.ScaleService }, { type: i0.ChangeDetectorRef }, { type: i2.ChartService }], propDecorators: { visibleRect: [{
|
|
95
92
|
type: Input
|
|
96
93
|
}], annotation: [{
|
|
97
94
|
type: Input
|
|
@@ -105,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
|
|
|
105
102
|
type: HostListener,
|
|
106
103
|
args: ['contextmenu', ['$event']]
|
|
107
104
|
}] } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2Fubm90YXRpb24vYW5ub3RhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2Fubm90YXRpb24vYW5ub3RhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDRyxZQUFZLEVBQ3hCLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFDLGFBQWEsRUFBRSxHQUFHLEVBQWMsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQVUxRCxNQUFNLE9BQU8sbUJBQW1CO0lBOEJwQjtJQUNBO0lBQ0E7SUEvQkQsV0FBVyxDQUFVO0lBRTlCLElBQWEsVUFBVSxDQUFDLFVBQXNCO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksSUFBSSxDQUFDLElBQWdCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsQ0FBQyxDQUFrQjtJQUNuQixDQUFDLENBQWtCO0lBRVgsSUFBSSxDQUFpQztJQUNyQyxXQUFXLENBQWE7SUFDeEIsS0FB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TUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7dUdBcEdVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLDRUQ25CaEMscTNEQTZDQTs7MkZEMUJhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTs4SkFHdEMsV0FBVztzQkFBbkIsS0FBSztnQkFFTyxVQUFVO3NCQUF0QixLQUFLO2dCQVNGLElBQUk7c0JBRFAsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBMkJULEtBQUs7c0JBQXZDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9RLFdBQVc7c0JBQW5ELFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QW5ub3RhdGlvbn0gZnJvbSAnLi4vLi4vbW9kZWwvYW5ub3RhdGlvbic7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge2xhc3RWYWx1ZUZyb20sIG1hcCwgT2JzZXJ2YWJsZSwgdGFrZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbdGV0YS1hbm5vdGF0aW9uXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbm5vdGF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYW5ub3RhdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBbm5vdGF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdmlzaWJsZVJlY3Q6IERPTVJlY3Q7XG5cbiAgQElucHV0KCkgc2V0IGFubm90YXRpb24oYW5ub3RhdGlvbjogQW5ub3RhdGlvbikge1xuICAgIHRoaXMuX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uO1xuICB9XG5cbiAgZ2V0IGFubm90YXRpb24oKTogQW5ub3RhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Fubm90YXRpb247XG4gIH1cblxuICBAVmlld0NoaWxkKCdhbm5vdGF0aW9uTm9kZScsIHtzdGF0aWM6IGZhbHNlfSlcbiAgc2V0IG5vZGUobm9kZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX25vZGUgPSBub2RlO1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBub2RlKCkge1xuICAgIHJldHVybiB0aGlzLl9ub2RlO1xuICB9XG5cbiAgeDogT2JzZXJ2YWJsZTxhbnk+O1xuICB5OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgcHJpdmF0ZSBkcmFnOiBkMy5EcmFnQmVoYXZpb3I8YW55LCBhbnksIGFueT47XG4gIHByaXZhdGUgX2Fubm90YXRpb246IEFubm90YXRpb247XG4gIHByaXZhdGUgX25vZGU6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSkge1xuICAgIHRoaXMueCA9IHRoaXMuc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKG1hcCgoXykgPT4gXy54LmdldCh0aGlzLmFubm90YXRpb24ueEF4aXNJbmRleCA/PyAwKT8uc2NhbGUpKTtcbiAgICB0aGlzLnkgPSB0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMucGlwZShtYXAoKF8pID0+IF8ueS5nZXQodGhpcy5hbm5vdGF0aW9uLnlBeGlzSW5kZXggPz8gMCk/LnNjYWxlKSk7XG4gICAgdGhpcy5kcmFnID0gZDMuZHJhZygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKSBjbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmVtaXRBbm5vdGF0aW9uKHtcbiAgICAgIGV2ZW50LFxuICAgICAgdGFyZ2V0OiB0aGlzLmFubm90YXRpb25cbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgWyckZXZlbnQnXSkgY29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmNoYXJ0U2VydmljZS5lbWl0QW5ub3RhdGlvbih7XG4gICAgICBldmVudCxcbiAgICAgIHRhcmdldDogdGhpcy5hbm5vdGF0aW9uXG4gICAgfSk7XG4gIH1cblxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZHJhZy5vbignZHJhZyBlbmQnLCBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcblxuICAgIGQzLnNlbGVjdCh0aGlzLm5vZGUubmF0aXZlRWxlbWVudCkuZGF0dW0odGhpcy5hbm5vdGF0aW9uKTtcblxuICAgIGNvbnN0IG9mZnNldFB4ID0gMTA7XG4gICAgY29uc3Qgbm9kZVJlY3QgPSB0aGlzLm5vZGUubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmICh0aGlzLmFubm90YXRpb24uZHJhZ2dhYmxlKSB7XG4gICAgICB0aGlzLmRyYWcub24oJ2RyYWcgZW5kJywgYXN5bmMgKGV2ZW50LCBkOiBBbm5vdGF0aW9uKSA9PiB7XG5cbiAgICAgICAgY29uc3QgeCA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy54LnBpcGUodGFrZSgxKSkpO1xuICAgICAgICBjb25zdCB5ID0gYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLnkucGlwZSh0YWtlKDEpKSk7XG5cbiAgICAgICAgZC5keCArPSBldmVudC5keDtcbiAgICAgICAgZC5keSArPSBldmVudC5keTtcblxuICAgICAgICAvLyB4IGNvbnN0cmFpbnRcbiAgICAgICAgaWYgKChkLmR4ICsgeChkLnBvaW50LngpIC0gb2Zmc2V0UHgpIDw9IDApIHtcbiAgICAgICAgICBkLmR4ID0gLXgoZC5wb2ludC54KSArIG9mZnNldFB4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGQuZHggKyB4KGQucG9pbnQueCkgKyBub2RlUmVjdC53aWR0aCAtIG9mZnNldFB4ID49IHRoaXMudmlzaWJsZVJlY3Qud2lkdGgpIHtcbiAgICAgICAgICBkLmR4ID0gdGhpcy52aXNpYmxlUmVjdC53aWR0aCAtIHgoZC5wb2ludC54KSAtIG5vZGVSZWN0LndpZHRoICsgb2Zmc2V0UHg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB5IGNvbnN0cmFpbnRcbiAgICAgICAgaWYgKChkLmR5ICsgeShkLnBvaW50LnkpIC0gb2Zmc2V0UHgpIDw9IDApIHtcbiAgICAgICAgICBkLmR5ID0gLXkoZC5wb2ludC55KSArIG9mZnNldFB4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGQuZHkgKyB5KGQucG9pbnQueSkgKyBub2RlUmVjdC5oZWlnaHQgLSBvZmZzZXRQeCA+PSB0aGlzLnZpc2libGVSZWN0LmhlaWdodCkge1xuICAgICAgICAgIGQuZHkgPSBNYXRoLmFicyh5KGQucG9pbnQueSkgLSB0aGlzLnZpc2libGVSZWN0LmhlaWdodCkgLSBub2RlUmVjdC5oZWlnaHQgK29mZnNldFB4O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmNoYXJ0U2VydmljZS5lbWl0TW92ZUFubm90YXRpb24oe1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHRhcmdldDogZFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkMy5zZWxlY3QodGhpcy5ub2RlLm5hdGl2ZUVsZW1lbnQpLmNhbGwodGhpcy5kcmFnKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7XG4gICAgICB4OiB4IHwgYXN5bmMsXG4gICAgICB5OiB5IHwgYXN5bmNcbiAgICB9IGFzIGRhdGFcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEueCAmJiBkYXRhLnlcIj5cblxuXG4gICAgPHN2ZzpjaXJjbGVcbiAgICAgIFthdHRyLnJdPVwiYW5ub3RhdGlvbi5zdHlsZT8ucmFkaXVzID8/IDVcIlxuICAgICAgW2F0dHIuY3hdPVwiZGF0YS54KGFubm90YXRpb24ucG9pbnQueClcIlxuICAgICAgW2F0dHIuZmlsbF09XCJhbm5vdGF0aW9uPy5zdHlsZT8uZmlsbCA/PyAndmFyKC0tY29sb3ItdGV4dC05MCknXCJcbiAgICAgIFthdHRyLmN5XT1cImRhdGEueShhbm5vdGF0aW9uLnBvaW50LnkpXCI+XG4gICAgPC9zdmc6Y2lyY2xlPlxuICAgIDxzdmc6bGluZVxuICAgICAgW2F0dHIueDFdPVwiZGF0YS54KGFubm90YXRpb24ucG9pbnQueClcIlxuICAgICAgW2F0dHIueTFdPVwiZGF0YS55KGFubm90YXRpb24ucG9pbnQueSlcIlxuICAgICAgW2F0dHIueDJdPVwiZGF0YS54KGFubm90YXRpb24ucG9pbnQueCkgKyAoYW5ub3RhdGlvbi5keCA/PyAwKVwiXG4gICAgICBbYXR0ci55Ml09XCJkYXRhLnkoYW5ub3RhdGlvbi5wb2ludC55KSArIChhbm5vdGF0aW9uLmR5ID8/IDApXCJcbiAgICAgIFthdHRyLnN0cm9rZV09XCJhbm5vdGF0aW9uLnN0eWxlPy5zdHJva2UgPz8gJ3ZhcigtLWNvbG9yLXRleHQtOTApJ1wiXG4gICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwiYW5ub3RhdGlvbi5zdHlsZT8uc3Ryb2tlV2lkdGggPz8gMVwiXG4gICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cImFubm90YXRpb24uc3R5bGU/LnN0cm9rZURhc2hhcnJheSA/PyBudWxsXCJcbiAgICA+XG4gICAgPC9zdmc6bGluZT5cbiAgICA8c3ZnOmZvcmVpZ25PYmplY3RcbiAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxuICAgICAgW2F0dHIud2lkdGhdPVwibm9kZT8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA/PyAwXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJub2RlPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA/PyAwXCJcbiAgICAgIFthdHRyLnhdPVwiZGF0YS54KGFubm90YXRpb24ucG9pbnQueCkgKyAoYW5ub3RhdGlvbi5keCA/PyAwKSAtIDEwXCJcbiAgICAgIFthdHRyLnldPVwiZGF0YS55KGFubm90YXRpb24ucG9pbnQueSkgKyAoYW5ub3RhdGlvbi5keSA/PyAwKSAtIDEwXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICNhbm5vdGF0aW9uTm9kZVxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJhbm5vdGF0aW9uLnN0eWxlPy5maWxsID8/ICd2YXIoLS1jb2xvci1nbG9iYWwtYmdtYWluKSdcIlxuICAgICAgICBbc3R5bGUuY3Vyc29yXT1cImFubm90YXRpb24/LmRyYWdnYWJsZSA/ICdtb3ZlJyA6ICdkZWZhdWx0J1wiXG4gICAgICAgIFtjbGFzc05hbWVdPVwiJ3BhZGRpbmctaC0yICcgKyBhbm5vdGF0aW9uLmNsYXNzTmFtZSA/PyAnJ1wiXG4gICAgICAgIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMnB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbm5vdGF0aW9uLnRlbXBsYXRlO2Vsc2UgZGVmYXVsdFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhbm5vdGF0aW9uLnRlbXBsYXRlO2NvbnRleHQ6IHskaW1wbGljaXQ6IGFubm90YXRpb259XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9zdmc6Zm9yZWlnbk9iamVjdD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAge3sgYW5ub3RhdGlvbi5ub3RlPy5sYWJlbH19XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2Fubm90YXRpb24vYW5ub3RhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL2Fubm90YXRpb24vYW5ub3RhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzFDLFNBQVMsRUFDVCxVQUFVLEVBQUUsWUFBWSxFQUN4QixLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxhQUFhLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFjcEUsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixJQUFhLFVBQVUsQ0FBQyxVQUFzQjtRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLElBQUksQ0FBQyxJQUFnQjtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lB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LENBQUMsa0JBQWtCLENBQUM7b0JBQ25DLEtBQUs7b0JBQ0wsTUFBTSxFQUFFLENBQUM7aUJBQ1YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQzs4R0FwR1UsbUJBQW1CO2tHQUFuQixtQkFBbUIsZ1ZDMUJoQyxxM0RBNkNBLDBERHpCSSxJQUFJLDZGQUNKLGdCQUFnQiwrSUFDaEIsU0FBUzs7MkZBSUEsbUJBQW1CO2tCQVovQixTQUFTOytCQUNFLG1CQUFtQixjQUdqQixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixnQkFBZ0I7d0JBQ2hCLFNBQVM7cUJBQ1YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07NElBR3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRU8sVUFBVTtzQkFBdEIsS0FBSztnQkFTRixJQUFJO3NCQURQLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQTJCVCxLQUFLO3NCQUF2QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPUSxXQUFXO3NCQUFuRCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsXG4gIElucHV0LCBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fubm90YXRpb259IGZyb20gJy4uLy4uL21vZGVsL2Fubm90YXRpb24nO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtsYXN0VmFsdWVGcm9tLCBtYXAsIE9ic2VydmFibGUsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLWFubm90YXRpb25dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fubm90YXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbm5vdGF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgQXN5bmNQaXBlXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFubm90YXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB2aXNpYmxlUmVjdDogRE9NUmVjdDtcblxuICBASW5wdXQoKSBzZXQgYW5ub3RhdGlvbihhbm5vdGF0aW9uOiBBbm5vdGF0aW9uKSB7XG4gICAgdGhpcy5fYW5ub3RhdGlvbiA9IGFubm90YXRpb247XG4gIH1cblxuICBnZXQgYW5ub3RhdGlvbigpOiBBbm5vdGF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fYW5ub3RhdGlvbjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2Fubm90YXRpb25Ob2RlJywge3N0YXRpYzogZmFsc2V9KVxuICBzZXQgbm9kZShub2RlOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5fbm9kZSA9IG5vZGU7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IG5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGU7XG4gIH1cblxuICB4OiBPYnNlcnZhYmxlPGFueT47XG4gIHk6IE9ic2VydmFibGU8YW55PjtcblxuICBwcml2YXRlIGRyYWc6IGQzLkRyYWdCZWhhdmlvcjxhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSBfYW5ub3RhdGlvbjogQW5ub3RhdGlvbjtcbiAgcHJpdmF0ZSBfbm9kZTogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlKSB7XG4gICAgdGhpcy54ID0gdGhpcy5zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUobWFwKChfKSA9PiBfLnguZ2V0KHRoaXMuYW5ub3RhdGlvbi54QXhpc0luZGV4ID8/IDApPy5zY2FsZSkpO1xuICAgIHRoaXMueSA9IHRoaXMuc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKG1hcCgoXykgPT4gXy55LmdldCh0aGlzLmFubm90YXRpb24ueUF4aXNJbmRleCA/PyAwKT8uc2NhbGUpKTtcbiAgICB0aGlzLmRyYWcgPSBkMy5kcmFnKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pIGNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5jaGFydFNlcnZpY2UuZW1pdEFubm90YXRpb24oe1xuICAgICAgZXZlbnQsXG4gICAgICB0YXJnZXQ6IHRoaXMuYW5ub3RhdGlvblxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKSBjb250ZXh0TWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmVtaXRBbm5vdGF0aW9uKHtcbiAgICAgIGV2ZW50LFxuICAgICAgdGFyZ2V0OiB0aGlzLmFubm90YXRpb25cbiAgICB9KTtcbiAgfVxuXG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kcmFnLm9uKCdkcmFnIGVuZCcsIG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuXG4gICAgZDMuc2VsZWN0KHRoaXMubm9kZS5uYXRpdmVFbGVtZW50KS5kYXR1bSh0aGlzLmFubm90YXRpb24pO1xuXG4gICAgY29uc3Qgb2Zmc2V0UHggPSAxMDtcbiAgICBjb25zdCBub2RlUmVjdCA9IHRoaXMubm9kZS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKHRoaXMuYW5ub3RhdGlvbi5kcmFnZ2FibGUpIHtcbiAgICAgIHRoaXMuZHJhZy5vbignZHJhZyBlbmQnLCBhc3luYyAoZXZlbnQsIGQ6IEFubm90YXRpb24pID0+IHtcblxuICAgICAgICBjb25zdCB4ID0gYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLngucGlwZSh0YWtlKDEpKSk7XG4gICAgICAgIGNvbnN0IHkgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMueS5waXBlKHRha2UoMSkpKTtcblxuICAgICAgICBkLmR4ICs9IGV2ZW50LmR4O1xuICAgICAgICBkLmR5ICs9IGV2ZW50LmR5O1xuXG4gICAgICAgIC8vIHggY29uc3RyYWludFxuICAgICAgICBpZiAoKGQuZHggKyB4KGQucG9pbnQueCkgLSBvZmZzZXRQeCkgPD0gMCkge1xuICAgICAgICAgIGQuZHggPSAteChkLnBvaW50LngpICsgb2Zmc2V0UHg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZC5keCArIHgoZC5wb2ludC54KSArIG5vZGVSZWN0LndpZHRoIC0gb2Zmc2V0UHggPj0gdGhpcy52aXNpYmxlUmVjdC53aWR0aCkge1xuICAgICAgICAgIGQuZHggPSB0aGlzLnZpc2libGVSZWN0LndpZHRoIC0geChkLnBvaW50LngpIC0gbm9kZVJlY3Qud2lkdGggKyBvZmZzZXRQeDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHkgY29uc3RyYWludFxuICAgICAgICBpZiAoKGQuZHkgKyB5KGQucG9pbnQueSkgLSBvZmZzZXRQeCkgPD0gMCkge1xuICAgICAgICAgIGQuZHkgPSAteShkLnBvaW50LnkpICsgb2Zmc2V0UHg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZC5keSArIHkoZC5wb2ludC55KSArIG5vZGVSZWN0LmhlaWdodCAtIG9mZnNldFB4ID49IHRoaXMudmlzaWJsZVJlY3QuaGVpZ2h0KSB7XG4gICAgICAgICAgZC5keSA9IE1hdGguYWJzKHkoZC5wb2ludC55KSAtIHRoaXMudmlzaWJsZVJlY3QuaGVpZ2h0KSAtIG5vZGVSZWN0LmhlaWdodCArb2Zmc2V0UHg7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmVtaXRNb3ZlQW5ub3RhdGlvbih7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgdGFyZ2V0OiBkXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGQzLnNlbGVjdCh0aGlzLm5vZGUubmF0aXZlRWxlbWVudCkuY2FsbCh0aGlzLmRyYWcpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIntcbiAgICAgIHg6IHggfCBhc3luYyxcbiAgICAgIHk6IHkgfCBhc3luY1xuICAgIH0gYXMgZGF0YVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS54ICYmIGRhdGEueVwiPlxuXG5cbiAgICA8c3ZnOmNpcmNsZVxuICAgICAgW2F0dHIucl09XCJhbm5vdGF0aW9uLnN0eWxlPy5yYWRpdXMgPz8gNVwiXG4gICAgICBbYXR0ci5jeF09XCJkYXRhLngoYW5ub3RhdGlvbi5wb2ludC54KVwiXG4gICAgICBbYXR0ci5maWxsXT1cImFubm90YXRpb24/LnN0eWxlPy5maWxsID8/ICd2YXIoLS1jb2xvci10ZXh0LTkwKSdcIlxuICAgICAgW2F0dHIuY3ldPVwiZGF0YS55KGFubm90YXRpb24ucG9pbnQueSlcIj5cbiAgICA8L3N2ZzpjaXJjbGU+XG4gICAgPHN2ZzpsaW5lXG4gICAgICBbYXR0ci54MV09XCJkYXRhLngoYW5ub3RhdGlvbi5wb2ludC54KVwiXG4gICAgICBbYXR0ci55MV09XCJkYXRhLnkoYW5ub3RhdGlvbi5wb2ludC55KVwiXG4gICAgICBbYXR0ci54Ml09XCJkYXRhLngoYW5ub3RhdGlvbi5wb2ludC54KSArIChhbm5vdGF0aW9uLmR4ID8/IDApXCJcbiAgICAgIFthdHRyLnkyXT1cImRhdGEueShhbm5vdGF0aW9uLnBvaW50LnkpICsgKGFubm90YXRpb24uZHkgPz8gMClcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cImFubm90YXRpb24uc3R5bGU/LnN0cm9rZSA/PyAndmFyKC0tY29sb3ItdGV4dC05MCknXCJcbiAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJhbm5vdGF0aW9uLnN0eWxlPy5zdHJva2VXaWR0aCA/PyAxXCJcbiAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwiYW5ub3RhdGlvbi5zdHlsZT8uc3Ryb2tlRGFzaGFycmF5ID8/IG51bGxcIlxuICAgID5cbiAgICA8L3N2ZzpsaW5lPlxuICAgIDxzdmc6Zm9yZWlnbk9iamVjdFxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJub2RlPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoID8/IDBcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cIm5vZGU/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8/IDBcIlxuICAgICAgW2F0dHIueF09XCJkYXRhLngoYW5ub3RhdGlvbi5wb2ludC54KSArIChhbm5vdGF0aW9uLmR4ID8/IDApIC0gMTBcIlxuICAgICAgW2F0dHIueV09XCJkYXRhLnkoYW5ub3RhdGlvbi5wb2ludC55KSArIChhbm5vdGF0aW9uLmR5ID8/IDApIC0gMTBcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI2Fubm90YXRpb25Ob2RlXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImFubm90YXRpb24uc3R5bGU/LmZpbGwgPz8gJ3ZhcigtLWNvbG9yLWdsb2JhbC1iZ21haW4pJ1wiXG4gICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiYW5ub3RhdGlvbj8uZHJhZ2dhYmxlID8gJ21vdmUnIDogJ2RlZmF1bHQnXCJcbiAgICAgICAgW2NsYXNzTmFtZV09XCIncGFkZGluZy1oLTIgJyArIGFubm90YXRpb24uY2xhc3NOYW1lID8/ICcnXCJcbiAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAycHg7IGRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFubm90YXRpb24udGVtcGxhdGU7ZWxzZSBkZWZhdWx0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFubm90YXRpb24udGVtcGxhdGU7Y29udGV4dDogeyRpbXBsaWNpdDogYW5ub3RhdGlvbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L3N2Zzpmb3JlaWduT2JqZWN0PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICB7eyBhbm5vdGF0aW9uLm5vdGU/LmxhYmVsfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|