@tetacom/svg-charts 1.5.2 → 1.6.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/chart/chart-container/chart-container.component.d.ts +0 -1
- package/chart/directives/zoomable.directive.d.ts +1 -0
- package/esm2022/chart/base/series-base.component.mjs +3 -3
- package/esm2022/chart/chart/chart.component.mjs +6 -7
- package/esm2022/chart/chart-container/annotation/annotation.component.mjs +6 -7
- package/esm2022/chart/chart-container/chart-container.component.mjs +6 -11
- package/esm2022/chart/chart-container/crosshair/crosshair.component.mjs +6 -7
- package/esm2022/chart/chart-container/gridlines/gridlines.component.mjs +6 -8
- package/esm2022/chart/chart-container/plotband/plot-band.component.mjs +5 -8
- package/esm2022/chart/chart-container/plotline/plotline.component.mjs +5 -6
- package/esm2022/chart/chart-container/series/area-series/area-series.component.mjs +6 -6
- package/esm2022/chart/chart-container/series/bar/bar-series.component.mjs +8 -9
- package/esm2022/chart/chart-container/series/block-area-series/block-area-series.component.mjs +6 -8
- package/esm2022/chart/chart-container/series/block-horizontal-series/block-horizontal-series.component.mjs +7 -8
- package/esm2022/chart/chart-container/series/block-series/block-series.component.mjs +6 -8
- package/esm2022/chart/chart-container/series/line/line-series.component.mjs +6 -8
- package/esm2022/chart/chart-container/series/linear-series-base.mjs +3 -3
- package/esm2022/chart/chart-container/series/scatter-series/scatter-series.component.mjs +6 -8
- package/esm2022/chart/chart-container/series-host/series-host.component.mjs +3 -3
- package/esm2022/chart/chart-container/tooltip/tooltip.component.mjs +6 -8
- package/esm2022/chart/chart-container/x-axis/x-axis.component.mjs +6 -8
- package/esm2022/chart/chart-container/y-axis/y-axis.component.mjs +6 -8
- package/esm2022/chart/directives/brushable.directive.mjs +3 -3
- package/esm2022/chart/directives/draggable-point.directive.mjs +3 -3
- package/esm2022/chart/directives/zoomable.directive.mjs +3 -3
- package/esm2022/chart/legend/legend.component.mjs +3 -3
- package/esm2022/chart/service/broadcast.service.mjs +3 -3
- package/esm2022/chart/service/brush.service.mjs +3 -3
- package/esm2022/chart/service/chart.service.mjs +3 -3
- package/esm2022/chart/service/scale.service.mjs +3 -3
- package/esm2022/chart/service/zoom.service.mjs +3 -3
- package/fesm2022/tetacom-svg-charts.mjs +108 -136
- package/fesm2022/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { ChartService } from '../../../service/chart.service';
|
|
|
3
3
|
import { ScaleService } from '../../../service/scale.service';
|
|
4
4
|
import { ZoomService } from '../../../service/zoom.service';
|
|
5
5
|
import { LinearSeriesBase } from '../linear-series-base';
|
|
6
|
-
import { AsyncPipe
|
|
6
|
+
import { AsyncPipe } from '@angular/common';
|
|
7
7
|
import { DraggablePointDirective } from '../../../directives/draggable-point.directive';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "../../../service/chart.service";
|
|
@@ -85,16 +85,14 @@ export class LineSeriesComponent extends LinearSeriesBase {
|
|
|
85
85
|
label.dx = this.labelStart.dx + event.deltaX;
|
|
86
86
|
label.dy = this.labelStart.dy + event.deltaY;
|
|
87
87
|
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
89
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
88
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: LineSeriesComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: LineSeriesComponent, isStandalone: true, selector: "svg:svg[teta-line-series]", usesInheritance: true, ngImport: i0, template: "<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n@if (transform | async; as t) {\n @if (t?.x != null && t?.y != null) {\n <svg:circle r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\">\n </svg:circle>\n }\n}\n@if (markers; as draggablePoints) {\n @if (x && y) {\n @for (point of draggablePoints; track point) {\n <svg:g\n [attr.transform]=\"'translate(' + x(point.x) + ',' + y(point.y) + ')'\">\n <svg:g [tetaDraggablePoint]=\"point.marker.draggable\"\n [dragDirection]=\"point.marker.dragType\"\n [allowDrag]=\"allowDrag(point)\"\n #dragPoint=\"tetaDraggablePoint\"\n (moveStart)=\"moveStart($event, point)\"\n (moveEnd)=\"moveEnd($event, point);dragPoint.resetTransform();\"\n (moveProcess)=\"moveProcess($event, point);dragPoint.resetTransform();\"\n [class.draggable-marker]=\"point?.marker?.draggable\">\n <svg:circle\n class=\"marker\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"0\"\n [attr.cy]=\"0\">\n </svg:circle>\n @if (point.marker.label?.text) {\n <svg:line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"point.marker.label?.dx\"\n [attr.y2]=\"point.marker.label?.dy\"\n [attr.stroke]=\"point.marker.label?.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"point.marker.label?.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"point.marker.label?.style?.strokeDasharray ?? null\">\n </svg:line>\n <svg:foreignObject\n [tetaDraggablePoint]=\"point.marker.label?.draggable\"\n [dragDirection]=\"point.marker.label.dragType\"\n #labelPoint=\"tetaDraggablePoint\"\n (moveStart)=\"startLabel($event, point.marker.label)\"\n (moveProcess)=\"moveLabel($event, point.marker.label); labelPoint.resetTransform();\"\n (moveEnd)=\"labelPoint.resetTransform();\"\n [attr.width]=\"annotationNode?.offsetWidth ?? 0\"\n [attr.height]=\"annotationNode?.offsetHeight ?? 0\"\n [attr.x]=\"point.marker.label?.dx\"\n [attr.y]=\"point.marker.label?.dy\"\n class=\"position-absolute\">\n <div\n #annotationNode\n class=\"shadow-2 padding-2\"\n [style.color]=\"'var(--color-text-90)'\"\n [style.background-color]=\"'var(--color-global-bgcard)'\"\n [style.cursor]=\"'move'\"\n style=\"border-radius: 2px; display: inline-block;\">\n {{ point.marker.label?.text }}\n </div>\n </svg:foreignObject>\n }\n </svg:g>\n </svg:g>\n }\n }\n}\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: DraggablePointDirective, selector: "[tetaDraggablePoint]", inputs: ["tetaDraggablePoint", "dragDirection", "allowDrag"], outputs: ["moveStart", "moveProcess", "moveEnd"], exportAs: ["tetaDraggablePoint"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
90
90
|
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: LineSeriesComponent, decorators: [{
|
|
92
92
|
type: Component,
|
|
93
93
|
args: [{ selector: 'svg:svg[teta-line-series]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
94
94
|
AsyncPipe,
|
|
95
|
-
NgForOf,
|
|
96
95
|
DraggablePointDirective,
|
|
97
|
-
|
|
98
|
-
], template: "<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y!=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"markers as draggablePoints\">\n <ng-container *ngIf=\"x && y\">\n <svg:g\n *ngFor=\"let point of draggablePoints\"\n [attr.transform]=\"'translate(' + x(point.x) + ',' + y(point.y) + ')'\">\n <svg:g [tetaDraggablePoint]=\"point.marker.draggable\"\n [dragDirection]=\"point.marker.dragType\"\n [allowDrag]=\"allowDrag(point)\"\n #dragPoint=\"tetaDraggablePoint\"\n (moveStart)=\"moveStart($event, point)\"\n (moveEnd)=\"moveEnd($event, point);dragPoint.resetTransform();\"\n (moveProcess)=\"moveProcess($event, point);dragPoint.resetTransform();\"\n [class.draggable-marker]=\"point?.marker?.draggable\">\n <svg:circle\n class=\"marker\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"0\"\n [attr.cy]=\"0\">\n </svg:circle>\n <ng-container *ngIf=\"point.marker.label?.text\">\n <svg:line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"point.marker.label?.dx\"\n [attr.y2]=\"point.marker.label?.dy\"\n [attr.stroke]=\"point.marker.label?.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"point.marker.label?.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"point.marker.label?.style?.strokeDasharray ?? null\">\n </svg:line>\n <svg:foreignObject\n [tetaDraggablePoint]=\"point.marker.label?.draggable\"\n [dragDirection]=\"point.marker.label.dragType\"\n #labelPoint=\"tetaDraggablePoint\"\n (moveStart)=\"startLabel($event, point.marker.label)\"\n (moveProcess)=\"moveLabel($event, point.marker.label); labelPoint.resetTransform();\"\n (moveEnd)=\"labelPoint.resetTransform();\"\n [attr.width]=\"annotationNode?.offsetWidth ?? 0\"\n [attr.height]=\"annotationNode?.offsetHeight ?? 0\"\n [attr.x]=\"point.marker.label?.dx\"\n [attr.y]=\"point.marker.label?.dy\"\n class=\"position-absolute\">\n <div\n #annotationNode\n class=\"shadow-2 padding-2\"\n [style.color]=\"'var(--color-text-90)'\"\n [style.background-color]=\"'var(--color-global-bgcard)'\"\n [style.cursor]=\"'move'\"\n style=\"border-radius: 2px; display: inline-block;\">\n {{point.marker.label?.text}}\n </div>\n </svg:foreignObject>\n </ng-container>\n </svg:g>\n </svg:g>\n </ng-container>\n\n</ng-container>\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"] }]
|
|
96
|
+
], template: "<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n@if (transform | async; as t) {\n @if (t?.x != null && t?.y != null) {\n <svg:circle r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\">\n </svg:circle>\n }\n}\n@if (markers; as draggablePoints) {\n @if (x && y) {\n @for (point of draggablePoints; track point) {\n <svg:g\n [attr.transform]=\"'translate(' + x(point.x) + ',' + y(point.y) + ')'\">\n <svg:g [tetaDraggablePoint]=\"point.marker.draggable\"\n [dragDirection]=\"point.marker.dragType\"\n [allowDrag]=\"allowDrag(point)\"\n #dragPoint=\"tetaDraggablePoint\"\n (moveStart)=\"moveStart($event, point)\"\n (moveEnd)=\"moveEnd($event, point);dragPoint.resetTransform();\"\n (moveProcess)=\"moveProcess($event, point);dragPoint.resetTransform();\"\n [class.draggable-marker]=\"point?.marker?.draggable\">\n <svg:circle\n class=\"marker\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"0\"\n [attr.cy]=\"0\">\n </svg:circle>\n @if (point.marker.label?.text) {\n <svg:line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"point.marker.label?.dx\"\n [attr.y2]=\"point.marker.label?.dy\"\n [attr.stroke]=\"point.marker.label?.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"point.marker.label?.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"point.marker.label?.style?.strokeDasharray ?? null\">\n </svg:line>\n <svg:foreignObject\n [tetaDraggablePoint]=\"point.marker.label?.draggable\"\n [dragDirection]=\"point.marker.label.dragType\"\n #labelPoint=\"tetaDraggablePoint\"\n (moveStart)=\"startLabel($event, point.marker.label)\"\n (moveProcess)=\"moveLabel($event, point.marker.label); labelPoint.resetTransform();\"\n (moveEnd)=\"labelPoint.resetTransform();\"\n [attr.width]=\"annotationNode?.offsetWidth ?? 0\"\n [attr.height]=\"annotationNode?.offsetHeight ?? 0\"\n [attr.x]=\"point.marker.label?.dx\"\n [attr.y]=\"point.marker.label?.dy\"\n class=\"position-absolute\">\n <div\n #annotationNode\n class=\"shadow-2 padding-2\"\n [style.color]=\"'var(--color-text-90)'\"\n [style.background-color]=\"'var(--color-global-bgcard)'\"\n [style.cursor]=\"'move'\"\n style=\"border-radius: 2px; display: inline-block;\">\n {{ point.marker.label?.text }}\n </div>\n </svg:foreignObject>\n }\n </svg:g>\n </svg:g>\n }\n }\n}\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"] }]
|
|
99
97
|
}], ctorParameters: () => [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }] });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9saW5lL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEdBR1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRTVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7O0FBZXhGLE1BQU0sT0FBTyxtQkFDWCxTQUFRLGdCQUFtQjtJQUczQixZQUNxQixHQUFpQixFQUNqQixHQUFzQixFQUN0QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUFtQjtRQUV0QyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTmpDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFX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RSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSztRQUNwQixLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDN0MsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQy9DLENBQUM7OEdBOURVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDRHQzdCaEMsdTJHQWlGQSxzSUQxREksU0FBUyw4Q0FDVCxPQUFPLG1IQUNQLHVCQUF1QixtTkFDdkIsSUFBSTs7MkZBR0ssbUJBQW1CO2tCQWIvQixTQUFTOytCQUNFLDJCQUEyQixjQUd6QixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsU0FBUzt3QkFDVCxPQUFPO3dCQUNQLHVCQUF1Qjt3QkFDdkIsSUFBSTtxQkFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7QmFzZVBvaW50fSBmcm9tICcuLi8uLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtMaW5lYXJTZXJpZXNCYXNlfSBmcm9tICcuLi9saW5lYXItc2VyaWVzLWJhc2UnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERyYWdnYWJsZVBvaW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9kcmFnZ2FibGUtcG9pbnQuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3ZnOnN2Z1t0ZXRhLWxpbmUtc2VyaWVzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5lLXNlcmllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIE5nRm9yT2YsXG4gICAgRHJhZ2dhYmxlUG9pbnREaXJlY3RpdmUsXG4gICAgTmdJZlxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpbmVTZXJpZXNDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VQb2ludD5cbiAgZXh0ZW5kcyBMaW5lYXJTZXJpZXNCYXNlPFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzdmM6IENoYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgKSB7XG4gICAgc3VwZXIoc3ZjLCBjZHIsIHNjYWxlU2VydmljZSwgem9vbVNlcnZpY2UsIGVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydDogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9O1xuICBwcml2YXRlIGxhYmVsU3RhcnQ6IHsgZHg6IG51bWJlciwgZHk6IG51bWJlciB9O1xuXG4gIG1vdmVTdGFydChldmVudCwgcG9pbnQpIHtcbiAgICB0aGlzLnN0YXJ0ID0ge3g6IHBvaW50LngsIHk6IHBvaW50Lnl9O1xuICB9XG5cbiAgbW92ZUVuZChldmVudCwgcG9pbnQpIHtcbiAgICBwb2ludC54ID0gdGhpcy54LmludmVydCh0aGlzLngodGhpcy5zdGFydC54KSArIGV2ZW50LmRlbHRhWCk7XG4gICAgcG9pbnQueSA9IHRoaXMueS5pbnZlcnQodGhpcy55KHRoaXMuc3RhcnQueSkgKyBldmVudC5kZWx0YVkpO1xuICAgIHRoaXMuX3VwZGF0ZS5uZXh0KCk7XG4gICAgY29uc3QgZW1pdEV2ZW50ID0ge1xuICAgICAgdHlwZTogJ2VuZCcsXG4gICAgICBzb3VyY2VFdmVudDogZXZlbnRcbiAgICB9O1xuICAgIHRoaXMuc3ZjLmVtaXRQb2ludCh7XG4gICAgICB0YXJnZXQ6IHtcbiAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgICAgcG9pbnQ6IHBvaW50LFxuICAgICAgfSxcbiAgICAgIGV2ZW50OiBlbWl0RXZlbnQsXG4gICAgfSk7XG4gIH1cblxuICBtb3ZlUHJvY2VzcyhldmVudCwgcG9pbnQpIHtcbiAgICBwb2ludC54ID0gdGhpcy54LmludmVydCh0aGlzLngodGhpcy5zdGFydC54KSArIGV2ZW50LmRlbHRhWCk7XG4gICAgcG9pbnQueSA9IHRoaXMueS5pbnZlcnQodGhpcy55KHRoaXMuc3RhcnQueSkgKyBldmVudC5kZWx0YVkpO1xuICAgIHRoaXMuX3VwZGF0ZS5uZXh0KCk7XG4gICAgY29uc3QgZW1pdEV2ZW50ID0ge1xuICAgICAgdHlwZTogJ2RyYWcnLFxuICAgICAgc291cmNlRXZlbnQ6IGV2ZW50XG4gICAgfTtcbiAgICB0aGlzLnN2Yy5lbWl0UG9pbnQoe1xuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgIHBvaW50OiBwb2ludCxcbiAgICAgIH0sXG4gICAgICBldmVudDogZW1pdEV2ZW50LFxuICAgIH0pO1xuICB9XG5cbiAgc3RhcnRMYWJlbChldmVudCwgbGFiZWwpIHtcbiAgICB0aGlzLmxhYmVsU3RhcnQgPSB7ZHg6IGxhYmVsLmR4LCBkeTogbGFiZWwuZHl9O1xuICB9XG5cbiAgbW92ZUxhYmVsKGV2ZW50LCBsYWJlbCkge1xuICAgIGxhYmVsLmR4ID0gdGhpcy5sYWJlbFN0YXJ0LmR4ICsgZXZlbnQuZGVsdGFYO1xuICAgIGxhYmVsLmR5ID0gdGhpcy5sYWJlbFN0YXJ0LmR5ICsgZXZlbnQuZGVsdGFZO1xuICB9XG5cbiAgYWxsb3dEcmFnID0gKHBvaW50OiBCYXNlUG9pbnQpID0+IHtcbiAgICByZXR1cm4gKG5ld1BvaW50KSA9PiB7XG4gICAgICBpZiAocG9pbnQubWFya2VyLm1pblggIT09IG51bGwgJiYgcG9pbnQubWFya2VyLm1pblggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodGhpcy54LmludmVydCh0aGlzLngodGhpcy5zdGFydC54KSArIG5ld1BvaW50LmRlbHRhWCkgPCBwb2ludC5tYXJrZXIubWluWCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBvaW50Lm1hcmtlci5tYXhYICE9PSBudWxsICYmIHBvaW50Lm1hcmtlci5tYXhYICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHRoaXMueC5pbnZlcnQodGhpcy54KHRoaXMuc3RhcnQueCkgKyBuZXdQb2ludC5kZWx0YVgpID4gcG9pbnQubWFya2VyLm1heFgpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwb2ludC5tYXJrZXIubWluWSAhPT0gbnVsbCAmJiBwb2ludC5tYXJrZXIubWluWSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLnkuaW52ZXJ0KHRoaXMueSh0aGlzLnN0YXJ0LnkpICsgbmV3UG9pbnQuZGVsdGFZKSA8IHBvaW50Lm1hcmtlci5taW5ZKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocG9pbnQubWFya2VyLm1heFkgIT09IG51bGwgJiYgcG9pbnQubWFya2VyLm1heFkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodGhpcy55LmludmVydCh0aGlzLnkodGhpcy5zdGFydC55KSArIG5ld1BvaW50LmRlbHRhWSkgPiBwb2ludC5tYXJrZXIubWF4WSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgfTtcbn1cbiIsIjxzdmc6cGF0aFxuICBjbGFzcz1cImxpbmVcIlxuICBbYXR0ci5kXT1cInBhdGggfCBhc3luY1wiXG4gIFthdHRyLnN0cm9rZV09XCJzZXJpZXMuY29sb3JcIlxuICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInNlcmllcy5zdHlsZT8uc3Ryb2tlRGFzaGFycmF5XCJcbiAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInNlcmllcy5zdHlsZT8uc3Ryb2tlV2lkdGhcIlxuICBmaWxsPVwibm9uZVwiPlxuPC9zdmc6cGF0aD5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmFuc2Zvcm0gfCBhc3luYyBhcyB0XCI+XG4gIDxzdmc6Y2lyY2xlXG4gICAgKm5nSWY9XCJ0Py54ICE9bnVsbCAmJiB0Py55IT1udWxsXCJcbiAgICByPVwiM1wiXG4gICAgW2F0dHIuZmlsbF09XCJzZXJpZXMuY29sb3JcIlxuICAgIFthdHRyLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlKCcrIHQueCArJywgJysgdC55ICsnKSdcIlxuICA+XG4gIDwvc3ZnOmNpcmNsZT5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hcmtlcnMgYXMgZHJhZ2dhYmxlUG9pbnRzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ4ICYmIHlcIj5cbiAgICA8c3ZnOmdcbiAgICAgICpuZ0Zvcj1cImxldCBwb2ludCBvZiBkcmFnZ2FibGVQb2ludHNcIlxuICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJyArIHgocG9pbnQueCkgKyAnLCcgKyB5KHBvaW50LnkpICsgJyknXCI+XG4gICAgICA8c3ZnOmcgW3RldGFEcmFnZ2FibGVQb2ludF09XCJwb2ludC5tYXJrZXIuZHJhZ2dhYmxlXCJcbiAgICAgICAgICAgICBbZHJhZ0RpcmVjdGlvbl09XCJwb2ludC5tYXJrZXIuZHJhZ1R5cGVcIlxuICAgICAgICAgICAgIFthbGxvd0RyYWddPVwiYWxsb3dEcmFnKHBvaW50KVwiXG4gICAgICAgICAgICAgI2RyYWdQb2ludD1cInRldGFEcmFnZ2FibGVQb2ludFwiXG4gICAgICAgICAgICAgKG1vdmVTdGFydCk9XCJtb3ZlU3RhcnQoJGV2ZW50LCBwb2ludClcIlxuICAgICAgICAgICAgIChtb3ZlRW5kKT1cIm1vdmVFbmQoJGV2ZW50LCBwb2ludCk7ZHJhZ1BvaW50LnJlc2V0VHJhbnNmb3JtKCk7XCJcbiAgICAgICAgICAgICAobW92ZVByb2Nlc3MpPVwibW92ZVByb2Nlc3MoJGV2ZW50LCBwb2ludCk7ZHJhZ1BvaW50LnJlc2V0VHJhbnNmb3JtKCk7XCJcbiAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dhYmxlLW1hcmtlcl09XCJwb2ludD8ubWFya2VyPy5kcmFnZ2FibGVcIj5cbiAgICAgICAgPHN2ZzpjaXJjbGVcbiAgICAgICAgICBjbGFzcz1cIm1hcmtlclwiXG4gICAgICAgICAgW2F0dHIucl09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnJhZGl1cyA/PyA1XCJcbiAgICAgICAgICBbYXR0ci5maWxsXT1cInBvaW50Lm1hcmtlci5zdHlsZT8uZmlsbCA/PyAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2VdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2UgPz8gJ25vbmUnXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2VXaWR0aFwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZURhc2hhcnJheVwiXG4gICAgICAgICAgW2F0dHIuY3hdPVwiMFwiXG4gICAgICAgICAgW2F0dHIuY3ldPVwiMFwiPlxuICAgICAgICA8L3N2ZzpjaXJjbGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwb2ludC5tYXJrZXIubGFiZWw/LnRleHRcIj5cbiAgICAgICAgICA8c3ZnOmxpbmVcbiAgICAgICAgICAgIFthdHRyLngxXT1cIjBcIlxuICAgICAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgICAgICBbYXR0ci54Ml09XCJwb2ludC5tYXJrZXIubGFiZWw/LmR4XCJcbiAgICAgICAgICAgIFthdHRyLnkyXT1cInBvaW50Lm1hcmtlci5sYWJlbD8uZHlcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBvaW50Lm1hcmtlci5sYWJlbD8uc3R5bGU/LnN0cm9rZSA/PyAndmFyKC0tY29sb3ItdGV4dC05MCknXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwb2ludC5tYXJrZXIubGFiZWw/LnN0eWxlPy5zdHJva2VXaWR0aCA/PyAxXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwicG9pbnQubWFya2VyLmxhYmVsPy5zdHlsZT8uc3Ryb2tlRGFzaGFycmF5ID8/IG51bGxcIj5cbiAgICAgICAgICA8L3N2ZzpsaW5lPlxuICAgICAgICAgIDxzdmc6Zm9yZWlnbk9iamVjdFxuICAgICAgICAgICAgW3RldGFEcmFnZ2FibGVQb2ludF09XCJwb2ludC5tYXJrZXIubGFiZWw/LmRyYWdnYWJsZVwiXG4gICAgICAgICAgICBbZHJhZ0RpcmVjdGlvbl09XCJwb2ludC5tYXJrZXIubGFiZWwuZHJhZ1R5cGVcIlxuICAgICAgICAgICAgI2xhYmVsUG9pbnQ9XCJ0ZXRhRHJhZ2dhYmxlUG9pbnRcIlxuICAgICAgICAgICAgKG1vdmVTdGFydCk9XCJzdGFydExhYmVsKCRldmVudCwgcG9pbnQubWFya2VyLmxhYmVsKVwiXG4gICAgICAgICAgICAobW92ZVByb2Nlc3MpPVwibW92ZUxhYmVsKCRldmVudCwgcG9pbnQubWFya2VyLmxhYmVsKTsgbGFiZWxQb2ludC5yZXNldFRyYW5zZm9ybSgpO1wiXG4gICAgICAgICAgICAobW92ZUVuZCk9XCJsYWJlbFBvaW50LnJlc2V0VHJhbnNmb3JtKCk7XCJcbiAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImFubm90YXRpb25Ob2RlPy5vZmZzZXRXaWR0aCA/PyAwXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJhbm5vdGF0aW9uTm9kZT8ub2Zmc2V0SGVpZ2h0ID8/IDBcIlxuICAgICAgICAgICAgW2F0dHIueF09XCJwb2ludC5tYXJrZXIubGFiZWw/LmR4XCJcbiAgICAgICAgICAgIFthdHRyLnldPVwicG9pbnQubWFya2VyLmxhYmVsPy5keVwiXG4gICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICNhbm5vdGF0aW9uTm9kZVxuICAgICAgICAgICAgICBjbGFzcz1cInNoYWRvdy0yIHBhZGRpbmctMlwiXG4gICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIndmFyKC0tY29sb3ItdGV4dC05MCknXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJ3ZhcigtLWNvbG9yLWdsb2JhbC1iZ2NhcmQpJ1wiXG4gICAgICAgICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiJ21vdmUnXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAycHg7IGRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5cbiAgICAgICAgICAgICAge3twb2ludC5tYXJrZXIubGFiZWw/LnRleHR9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zdmc6Zm9yZWlnbk9iamVjdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3N2ZzpnPlxuICAgIDwvc3ZnOmc+XG4gIDwvbmctY29udGFpbmVyPlxuXG48L25nLWNvbnRhaW5lcj5cblxuXG5cbiJdfQ==
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9saW5lL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEdBR1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRTVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7OztBQWF4RixNQUFNLE9BQU8sbUJBQ1gsU0FBUSxnQkFBbUI7SUFHM0IsWUFDcUIsR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsT0FBbUI7UUFFdEMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQU5qQyxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUF1RHhDLGNBQVMsR0FBRyxDQUFDLEtBQWdCLEVBQUUsRUFBRTtZQUMvQixPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNsRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDOUUsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNsRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDOUUsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNsRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDOUUsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNsRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDOUUsT0FBTyxLQUFLLENBQUM7b0JBQ2YsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBNUVGLENBQUM7SUFLRCxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSztRQUNsQixLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsTUFBTSxTQUFTLEdBQUc7WUFDaEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDakIsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsS0FBSyxFQUFFLEtBQUs7YUFDYjtZQUNELEtBQUssRUFBRSxTQUFTO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDdEIsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLE1BQU0sU0FBUyxHQUFHO1lBQ2hCLElBQUksRUFBRSxNQUFNO1lBQ1osV0FBVyxFQUFFLEtBQUs7U0FDbkIsQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQ2pCLE1BQU0sRUFBRTtnQkFDTixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLEtBQUssRUFBRSxLQUFLO2FBQ2I7WUFDRCxLQUFLLEVBQUUsU0FBUztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDcEIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzdDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUMvQyxDQUFDOzhHQTlEVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw0R0MzQmhDLHczR0E2RUEsc0lEdERJLFNBQVMsOENBQ1QsdUJBQXVCOzsyRkFHZCxtQkFBbUI7a0JBWC9CLFNBQVM7K0JBQ0UsMkJBQTJCLGNBR3pCLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxTQUFTO3dCQUNULHVCQUF1QjtxQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7TGluZWFyU2VyaWVzQmFzZX0gZnJvbSAnLi4vbGluZWFyLXNlcmllcy1iYXNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEcmFnZ2FibGVQb2ludERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLXBvaW50LmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N2ZzpzdmdbdGV0YS1saW5lLXNlcmllc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluZS1zZXJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saW5lLXNlcmllcy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBEcmFnZ2FibGVQb2ludERpcmVjdGl2ZSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaW5lU2VyaWVzQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlUG9pbnQ+XG4gIGV4dGVuZHMgTGluZWFyU2VyaWVzQmFzZTxUPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICkge1xuICAgIHN1cGVyKHN2YywgY2RyLCBzY2FsZVNlcnZpY2UsIHpvb21TZXJ2aWNlLCBlbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnQ6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfTtcbiAgcHJpdmF0ZSBsYWJlbFN0YXJ0OiB7IGR4OiBudW1iZXIsIGR5OiBudW1iZXIgfTtcblxuICBtb3ZlU3RhcnQoZXZlbnQsIHBvaW50KSB7XG4gICAgdGhpcy5zdGFydCA9IHt4OiBwb2ludC54LCB5OiBwb2ludC55fTtcbiAgfVxuXG4gIG1vdmVFbmQoZXZlbnQsIHBvaW50KSB7XG4gICAgcG9pbnQueCA9IHRoaXMueC5pbnZlcnQodGhpcy54KHRoaXMuc3RhcnQueCkgKyBldmVudC5kZWx0YVgpO1xuICAgIHBvaW50LnkgPSB0aGlzLnkuaW52ZXJ0KHRoaXMueSh0aGlzLnN0YXJ0LnkpICsgZXZlbnQuZGVsdGFZKTtcbiAgICB0aGlzLl91cGRhdGUubmV4dCgpO1xuICAgIGNvbnN0IGVtaXRFdmVudCA9IHtcbiAgICAgIHR5cGU6ICdlbmQnLFxuICAgICAgc291cmNlRXZlbnQ6IGV2ZW50XG4gICAgfTtcbiAgICB0aGlzLnN2Yy5lbWl0UG9pbnQoe1xuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgIHBvaW50OiBwb2ludCxcbiAgICAgIH0sXG4gICAgICBldmVudDogZW1pdEV2ZW50LFxuICAgIH0pO1xuICB9XG5cbiAgbW92ZVByb2Nlc3MoZXZlbnQsIHBvaW50KSB7XG4gICAgcG9pbnQueCA9IHRoaXMueC5pbnZlcnQodGhpcy54KHRoaXMuc3RhcnQueCkgKyBldmVudC5kZWx0YVgpO1xuICAgIHBvaW50LnkgPSB0aGlzLnkuaW52ZXJ0KHRoaXMueSh0aGlzLnN0YXJ0LnkpICsgZXZlbnQuZGVsdGFZKTtcbiAgICB0aGlzLl91cGRhdGUubmV4dCgpO1xuICAgIGNvbnN0IGVtaXRFdmVudCA9IHtcbiAgICAgIHR5cGU6ICdkcmFnJyxcbiAgICAgIHNvdXJjZUV2ZW50OiBldmVudFxuICAgIH07XG4gICAgdGhpcy5zdmMuZW1pdFBvaW50KHtcbiAgICAgIHRhcmdldDoge1xuICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICBwb2ludDogcG9pbnQsXG4gICAgICB9LFxuICAgICAgZXZlbnQ6IGVtaXRFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0TGFiZWwoZXZlbnQsIGxhYmVsKSB7XG4gICAgdGhpcy5sYWJlbFN0YXJ0ID0ge2R4OiBsYWJlbC5keCwgZHk6IGxhYmVsLmR5fTtcbiAgfVxuXG4gIG1vdmVMYWJlbChldmVudCwgbGFiZWwpIHtcbiAgICBsYWJlbC5keCA9IHRoaXMubGFiZWxTdGFydC5keCArIGV2ZW50LmRlbHRhWDtcbiAgICBsYWJlbC5keSA9IHRoaXMubGFiZWxTdGFydC5keSArIGV2ZW50LmRlbHRhWTtcbiAgfVxuXG4gIGFsbG93RHJhZyA9IChwb2ludDogQmFzZVBvaW50KSA9PiB7XG4gICAgcmV0dXJuIChuZXdQb2ludCkgPT4ge1xuICAgICAgaWYgKHBvaW50Lm1hcmtlci5taW5YICE9PSBudWxsICYmIHBvaW50Lm1hcmtlci5taW5YICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHRoaXMueC5pbnZlcnQodGhpcy54KHRoaXMuc3RhcnQueCkgKyBuZXdQb2ludC5kZWx0YVgpIDwgcG9pbnQubWFya2VyLm1pblgpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwb2ludC5tYXJrZXIubWF4WCAhPT0gbnVsbCAmJiBwb2ludC5tYXJrZXIubWF4WCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLnguaW52ZXJ0KHRoaXMueCh0aGlzLnN0YXJ0LngpICsgbmV3UG9pbnQuZGVsdGFYKSA+IHBvaW50Lm1hcmtlci5tYXhYKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocG9pbnQubWFya2VyLm1pblkgIT09IG51bGwgJiYgcG9pbnQubWFya2VyLm1pblkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodGhpcy55LmludmVydCh0aGlzLnkodGhpcy5zdGFydC55KSArIG5ld1BvaW50LmRlbHRhWSkgPCBwb2ludC5tYXJrZXIubWluWSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBvaW50Lm1hcmtlci5tYXhZICE9PSBudWxsICYmIHBvaW50Lm1hcmtlci5tYXhZICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHRoaXMueS5pbnZlcnQodGhpcy55KHRoaXMuc3RhcnQueSkgKyBuZXdQb2ludC5kZWx0YVkpID4gcG9pbnQubWFya2VyLm1heFkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gIH07XG59XG4iLCI8c3ZnOnBhdGhcbiAgY2xhc3M9XCJsaW5lXCJcbiAgW2F0dHIuZF09XCJwYXRoIHwgYXN5bmNcIlxuICBbYXR0ci5zdHJva2VdPVwic2VyaWVzLmNvbG9yXCJcbiAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJzZXJpZXMuc3R5bGU/LnN0cm9rZURhc2hhcnJheVwiXG4gIFthdHRyLnN0cm9rZS13aWR0aF09XCJzZXJpZXMuc3R5bGU/LnN0cm9rZVdpZHRoXCJcbiAgZmlsbD1cIm5vbmVcIj5cbjwvc3ZnOnBhdGg+XG5AaWYgKHRyYW5zZm9ybSB8IGFzeW5jOyBhcyB0KSB7XG4gIEBpZiAodD8ueCAhPSBudWxsICYmIHQ/LnkgIT0gbnVsbCkge1xuICAgIDxzdmc6Y2lyY2xlIHI9XCIzXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cInNlcmllcy5jb2xvclwiXG4gICAgICAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgdC54ICsnLCAnKyB0LnkgKycpJ1wiPlxuICAgIDwvc3ZnOmNpcmNsZT5cbiAgfVxufVxuQGlmIChtYXJrZXJzOyBhcyBkcmFnZ2FibGVQb2ludHMpIHtcbiAgQGlmICh4ICYmIHkpIHtcbiAgICBAZm9yIChwb2ludCBvZiBkcmFnZ2FibGVQb2ludHM7IHRyYWNrIHBvaW50KSB7XG4gICAgICA8c3ZnOmdcbiAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJyArIHgocG9pbnQueCkgKyAnLCcgKyB5KHBvaW50LnkpICsgJyknXCI+XG4gICAgICAgIDxzdmc6ZyBbdGV0YURyYWdnYWJsZVBvaW50XT1cInBvaW50Lm1hcmtlci5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICAgW2RyYWdEaXJlY3Rpb25dPVwicG9pbnQubWFya2VyLmRyYWdUeXBlXCJcbiAgICAgICAgICAgICAgIFthbGxvd0RyYWddPVwiYWxsb3dEcmFnKHBvaW50KVwiXG4gICAgICAgICAgICAgICAjZHJhZ1BvaW50PVwidGV0YURyYWdnYWJsZVBvaW50XCJcbiAgICAgICAgICAgICAgIChtb3ZlU3RhcnQpPVwibW92ZVN0YXJ0KCRldmVudCwgcG9pbnQpXCJcbiAgICAgICAgICAgICAgIChtb3ZlRW5kKT1cIm1vdmVFbmQoJGV2ZW50LCBwb2ludCk7ZHJhZ1BvaW50LnJlc2V0VHJhbnNmb3JtKCk7XCJcbiAgICAgICAgICAgICAgIChtb3ZlUHJvY2Vzcyk9XCJtb3ZlUHJvY2VzcygkZXZlbnQsIHBvaW50KTtkcmFnUG9pbnQucmVzZXRUcmFuc2Zvcm0oKTtcIlxuICAgICAgICAgICAgICAgW2NsYXNzLmRyYWdnYWJsZS1tYXJrZXJdPVwicG9pbnQ/Lm1hcmtlcj8uZHJhZ2dhYmxlXCI+XG4gICAgICAgICAgPHN2ZzpjaXJjbGVcbiAgICAgICAgICAgIGNsYXNzPVwibWFya2VyXCJcbiAgICAgICAgICAgIFthdHRyLnJdPVwicG9pbnQubWFya2VyLnN0eWxlPy5yYWRpdXMgPz8gNVwiXG4gICAgICAgICAgICBbYXR0ci5maWxsXT1cInBvaW50Lm1hcmtlci5zdHlsZT8uZmlsbCA/PyAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZSA/PyAnbm9uZSdcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInBvaW50Lm1hcmtlci5zdHlsZT8uc3Ryb2tlV2lkdGhcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLWRhc2hhcnJheV09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZURhc2hhcnJheVwiXG4gICAgICAgICAgICBbYXR0ci5jeF09XCIwXCJcbiAgICAgICAgICAgIFthdHRyLmN5XT1cIjBcIj5cbiAgICAgICAgICA8L3N2ZzpjaXJjbGU+XG4gICAgICAgICAgQGlmIChwb2ludC5tYXJrZXIubGFiZWw/LnRleHQpIHtcbiAgICAgICAgICAgIDxzdmc6bGluZVxuICAgICAgICAgICAgICBbYXR0ci54MV09XCIwXCJcbiAgICAgICAgICAgICAgW2F0dHIueTFdPVwiMFwiXG4gICAgICAgICAgICAgIFthdHRyLngyXT1cInBvaW50Lm1hcmtlci5sYWJlbD8uZHhcIlxuICAgICAgICAgICAgICBbYXR0ci55Ml09XCJwb2ludC5tYXJrZXIubGFiZWw/LmR5XCJcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBvaW50Lm1hcmtlci5sYWJlbD8uc3R5bGU/LnN0cm9rZSA/PyAndmFyKC0tY29sb3ItdGV4dC05MCknXCJcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInBvaW50Lm1hcmtlci5sYWJlbD8uc3R5bGU/LnN0cm9rZVdpZHRoID8/IDFcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInBvaW50Lm1hcmtlci5sYWJlbD8uc3R5bGU/LnN0cm9rZURhc2hhcnJheSA/PyBudWxsXCI+XG4gICAgICAgICAgICA8L3N2ZzpsaW5lPlxuICAgICAgICAgICAgPHN2Zzpmb3JlaWduT2JqZWN0XG4gICAgICAgICAgICAgIFt0ZXRhRHJhZ2dhYmxlUG9pbnRdPVwicG9pbnQubWFya2VyLmxhYmVsPy5kcmFnZ2FibGVcIlxuICAgICAgICAgICAgICBbZHJhZ0RpcmVjdGlvbl09XCJwb2ludC5tYXJrZXIubGFiZWwuZHJhZ1R5cGVcIlxuICAgICAgICAgICAgICAjbGFiZWxQb2ludD1cInRldGFEcmFnZ2FibGVQb2ludFwiXG4gICAgICAgICAgICAgIChtb3ZlU3RhcnQpPVwic3RhcnRMYWJlbCgkZXZlbnQsIHBvaW50Lm1hcmtlci5sYWJlbClcIlxuICAgICAgICAgICAgICAobW92ZVByb2Nlc3MpPVwibW92ZUxhYmVsKCRldmVudCwgcG9pbnQubWFya2VyLmxhYmVsKTsgbGFiZWxQb2ludC5yZXNldFRyYW5zZm9ybSgpO1wiXG4gICAgICAgICAgICAgIChtb3ZlRW5kKT1cImxhYmVsUG9pbnQucmVzZXRUcmFuc2Zvcm0oKTtcIlxuICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJhbm5vdGF0aW9uTm9kZT8ub2Zmc2V0V2lkdGggPz8gMFwiXG4gICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJhbm5vdGF0aW9uTm9kZT8ub2Zmc2V0SGVpZ2h0ID8/IDBcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cInBvaW50Lm1hcmtlci5sYWJlbD8uZHhcIlxuICAgICAgICAgICAgICBbYXR0ci55XT1cInBvaW50Lm1hcmtlci5sYWJlbD8uZHlcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAjYW5ub3RhdGlvbk5vZGVcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNoYWRvdy0yIHBhZGRpbmctMlwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIid2YXIoLS1jb2xvci10ZXh0LTkwKSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid2YXIoLS1jb2xvci1nbG9iYWwtYmdjYXJkKSdcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jdXJzb3JdPVwiJ21vdmUnXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDJweDsgZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPlxuICAgICAgICAgICAgICAgIHt7IHBvaW50Lm1hcmtlci5sYWJlbD8udGV4dCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc3ZnOmZvcmVpZ25PYmplY3Q+XG4gICAgICAgICAgfVxuICAgICAgICA8L3N2ZzpnPlxuICAgICAgPC9zdmc6Zz5cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -207,10 +207,10 @@ export class LinearSeriesBase extends SeriesBaseComponent {
|
|
|
207
207
|
}
|
|
208
208
|
return null;
|
|
209
209
|
}
|
|
210
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
211
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
210
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: LinearSeriesBase, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
211
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.1", type: LinearSeriesBase, isStandalone: true, selector: "ng-component", inputs: { series: "series" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
212
212
|
}
|
|
213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
213
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: LinearSeriesBase, decorators: [{
|
|
214
214
|
type: Component,
|
|
215
215
|
args: [{
|
|
216
216
|
template: '',
|
|
@@ -4,7 +4,7 @@ import { map } from 'rxjs';
|
|
|
4
4
|
import { ChartService } from '../../../service/chart.service';
|
|
5
5
|
import { ScaleService } from '../../../service/scale.service';
|
|
6
6
|
import { ZoomService } from '../../../service/zoom.service';
|
|
7
|
-
import { AsyncPipe
|
|
7
|
+
import { AsyncPipe } from '@angular/common';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "../../../service/chart.service";
|
|
10
10
|
import * as i2 from "../../../service/scale.service";
|
|
@@ -36,15 +36,13 @@ export class ScatterSeriesComponent extends SeriesBaseComponent {
|
|
|
36
36
|
series: this.series,
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
40
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: ScatterSeriesComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: ScatterSeriesComponent, isStandalone: true, selector: "svg:svg[teta-scatter-series]", usesInheritance: true, ngImport: i0, template: "@if ({\n y: y | async,\n x: x | async\n}; as scales) {\n @if (scales.x && scales.y) {\n @for (point of series.data; track point) {\n <svg:circle\n class=\"line\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.cx]=\"scales.x(point.x)\"\n [attr.cy]=\"scales.y(point.y)\"\n [attr.r]=\"series.style?.radius ?? 1\"\n [attr.stroke]=\"point.color ?? series.color\"\n [attr.fill]=\"point.color ?? series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n </svg:circle>\n }\n }\n}\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41
41
|
}
|
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: ScatterSeriesComponent, decorators: [{
|
|
43
43
|
type: Component,
|
|
44
44
|
args: [{ selector: 'svg:svg[teta-scatter-series]', standalone: true, imports: [
|
|
45
|
-
NgForOf,
|
|
46
|
-
NgIf,
|
|
47
45
|
AsyncPipe
|
|
48
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "
|
|
46
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if ({\n y: y | async,\n x: x | async\n}; as scales) {\n @if (scales.x && scales.y) {\n @for (point of series.data; track point) {\n <svg:circle\n class=\"line\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.cx]=\"scales.x(point.x)\"\n [attr.cy]=\"scales.y(point.y)\"\n [attr.r]=\"series.style?.radius ?? 1\"\n [attr.stroke]=\"point.color ?? series.color\"\n [attr.fill]=\"point.color ?? series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n </svg:circle>\n }\n }\n}\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"] }]
|
|
49
47
|
}], ctorParameters: () => [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhdHRlci1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvc2NhdHRlci1zZXJpZXMvc2NhdHRlci1zZXJpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvc2NhdHRlci1zZXJpZXMvc2NhdHRlci1zZXJpZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBRXZILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxHQUFHLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVk1QyxNQUFNLE9BQU8sc0JBQ1gsU0FBUSxtQkFBc0I7SUFROUIsWUFDcUIsR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsT0FBbUI7UUFFdEMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQU5qQyxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQVk7SUFHeEMsQ0FBQztJQUVRLFFBQVE7UUFDZixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxlQUFlO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFnQjtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUNsQixLQUFLLEVBQUUsS0FBSztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWdCO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2xCLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBdkNVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLCtHQ25CbkMsNmxCQW9CQSxzSURMSSxTQUFTOzsyRkFJQSxzQkFBc0I7a0JBVmxDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUDt3QkFDUCxTQUFTO3FCQUNWLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmFzZVBvaW50fSBmcm9tICcuLi8uLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7U2VyaWVzQmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vYmFzZS9zZXJpZXMtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHttYXAsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N2ZzpzdmdbdGV0YS1zY2F0dGVyLXNlcmllc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2NhdHRlci1zZXJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2F0dGVyLXNlcmllcy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNjYXR0ZXJTZXJpZXNDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VQb2ludD5cbiAgZXh0ZW5kcyBTZXJpZXNCYXNlQ29tcG9uZW50PFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgdHJhbnNmb3JtOiBPYnNlcnZhYmxlPFBpY2s8QmFzZVBvaW50LCAneCcgfCAneSc+PjtcbiAgZGlzcGxheTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICBwYXRoOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHg6IE9ic2VydmFibGU8YW55PjtcbiAgeTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzdmM6IENoYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHtcbiAgICBzdXBlcihzdmMsIGNkciwgc2NhbGVTZXJ2aWNlLCB6b29tU2VydmljZSwgZWxlbWVudCk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnggPSB0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMucGlwZShtYXAoXyA9PiBfLnguZ2V0KHRoaXMuc2VyaWVzLnhBeGlzSW5kZXgpPy5zY2FsZSkpO1xuICAgIHRoaXMueSA9IHRoaXMuc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKG1hcChfID0+IF8ueS5nZXQodGhpcy5zZXJpZXMueUF4aXNJbmRleCk/LnNjYWxlKSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cblxuICBtb3VzZWVudGVyKHBvaW50OiBCYXNlUG9pbnQpIHtcbiAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgIHBvaW50OiBwb2ludCxcbiAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgfSk7XG4gIH1cblxuICBtb3VzZWxlYXZlKHBvaW50OiBCYXNlUG9pbnQpIHtcbiAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgIHBvaW50OiBudWxsLFxuICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICB9KTtcbiAgfVxufVxuIiwiQGlmICh7XG4gIHk6IHkgfCBhc3luYyxcbiAgeDogeCB8IGFzeW5jXG59OyBhcyBzY2FsZXMpIHtcbiAgQGlmIChzY2FsZXMueCAmJiBzY2FsZXMueSkge1xuICAgIEBmb3IgKHBvaW50IG9mIHNlcmllcy5kYXRhOyB0cmFjayBwb2ludCkge1xuICAgICAgPHN2ZzpjaXJjbGVcbiAgICAgICAgY2xhc3M9XCJsaW5lXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwibW91c2VlbnRlcihwb2ludClcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZWxlYXZlKHBvaW50KVwiXG4gICAgICAgIFthdHRyLmN4XT1cInNjYWxlcy54KHBvaW50LngpXCJcbiAgICAgICAgW2F0dHIuY3ldPVwic2NhbGVzLnkocG9pbnQueSlcIlxuICAgICAgICBbYXR0ci5yXT1cInNlcmllcy5zdHlsZT8ucmFkaXVzID8/IDFcIlxuICAgICAgICBbYXR0ci5zdHJva2VdPVwicG9pbnQuY29sb3IgPz8gc2VyaWVzLmNvbG9yXCJcbiAgICAgICAgW2F0dHIuZmlsbF09XCJwb2ludC5jb2xvciA/PyBzZXJpZXMuY29sb3JcIlxuICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwic2VyaWVzLnN0eWxlPy5zdHJva2VXaWR0aFwiPlxuICAgICAgPC9zdmc6Y2lyY2xlPlxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -28,10 +28,10 @@ export class SeriesHostComponent {
|
|
|
28
28
|
this._componentRef.injector.get(ChangeDetectorRef).detectChanges();
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: SeriesHostComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.1", type: SeriesHostComponent, isStandalone: true, selector: "[teta-series-host]", inputs: { config: "config", series: "series" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33
33
|
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: SeriesHostComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
36
|
args: [{
|
|
37
37
|
selector: '[teta-series-host]',
|
|
@@ -4,7 +4,7 @@ import * as d3 from 'd3';
|
|
|
4
4
|
import { filter, map, tap } from 'rxjs';
|
|
5
5
|
import { ChartService } from '../../service/chart.service';
|
|
6
6
|
import { ZoomService } from '../../service/zoom.service';
|
|
7
|
-
import { AsyncPipe,
|
|
7
|
+
import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
8
8
|
import { PositionUtil } from '../../core/utils/position-util';
|
|
9
9
|
import { Align } from '../../model/enum/align.enum';
|
|
10
10
|
import { VerticalAlign } from '../../model/enum/vertical-align.enum';
|
|
@@ -89,17 +89,15 @@ export class TooltipComponent {
|
|
|
89
89
|
const format = d3.format(',.5~r');
|
|
90
90
|
return format(input);
|
|
91
91
|
}
|
|
92
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
93
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
92
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", 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 }); }
|
|
93
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: TooltipComponent, isStandalone: true, selector: "teta-tooltip", inputs: { size: "size", config: "config" }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if ({p: position | async}; as data) {\n @if ((tooltips | async); as t) {\n @if (t.length > 0) {\n <div class=\"chart-tooltip color-text-90 bg-global-bgcard shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n [style.opacity]=\"display | async\"\n [hidden]=\"!data.p\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"data.p?.left\"\n [style.top.px]=\"data.p?.top\"\n [style.bottom.px]=\"data.p?.bottom\"\n [style.right.px]=\"data.p?.right\">\n @if (config.tooltip?.template) {\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: getImplicit(t)\"></ng-container>\n }\n @if (config.tooltip?.format) {\n <div [innerHTML]=\"displayTooltips | async\"></div>\n } @else {\n @if (!config.tooltip?.template) {\n <div class=\"padding-2 border-radius-1\">\n @for (tooltip of t; track tooltip) {\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\">\n </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 }\n </div>\n }\n }\n </div>\n }\n }\n}\n", styles: [":host{position:absolute;z-index:2}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
94
94
|
}
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
96
96
|
type: Component,
|
|
97
97
|
args: [{ selector: 'teta-tooltip', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
98
98
|
AsyncPipe,
|
|
99
|
-
NgForOf,
|
|
100
|
-
NgIf,
|
|
101
99
|
NgTemplateOutlet
|
|
102
|
-
], template: "
|
|
100
|
+
], template: "@if ({p: position | async}; as data) {\n @if ((tooltips | async); as t) {\n @if (t.length > 0) {\n <div class=\"chart-tooltip color-text-90 bg-global-bgcard shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n [style.opacity]=\"display | async\"\n [hidden]=\"!data.p\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"data.p?.left\"\n [style.top.px]=\"data.p?.top\"\n [style.bottom.px]=\"data.p?.bottom\"\n [style.right.px]=\"data.p?.right\">\n @if (config.tooltip?.template) {\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: getImplicit(t)\"></ng-container>\n }\n @if (config.tooltip?.format) {\n <div [innerHTML]=\"displayTooltips | async\"></div>\n } @else {\n @if (!config.tooltip?.template) {\n <div class=\"padding-2 border-radius-1\">\n @for (tooltip of t; track tooltip) {\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\">\n </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 }\n </div>\n }\n }\n </div>\n }\n }\n}\n", styles: [":host{position:absolute;z-index:2}\n"] }]
|
|
103
101
|
}], ctorParameters: () => [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ZoomService }, { type: i3.DomSanitizer }, { type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { size: [{
|
|
104
102
|
type: Input
|
|
105
103
|
}], config: [{
|
|
@@ -108,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
108
106
|
type: ViewChild,
|
|
109
107
|
args: ['tooltip', { static: false, read: ElementRef }]
|
|
110
108
|
}] } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFlckUsTUFBTSxPQUFPLGdCQUFnQjtJQWtCM0IsWUFDVSxHQUFpQixFQUNqQixHQUFzQixFQUN0QixXQUF3QixFQUN4QixTQUF1QixFQUN2QixLQUFhLEVBQ2IsV0FBdUI7UUFMdkIsUUFBRyxHQUFILEdBQUcs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LFlBQVksSUFBSSxFQUFFLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6QyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDOzhHQTNIVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQixtTUFJa0IsVUFBVSw2QkN6Q3pELG11REE2Q0EseUZEZEksU0FBUyw4Q0FDVCxPQUFPLG1IQUNQLElBQUksNkZBQ0osZ0JBQWdCOzsyRkFHUCxnQkFBZ0I7a0JBYjVCLFNBQVM7K0JBQ0UsY0FBYyxjQUVaLElBQUksbUJBRUMsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxTQUFTO3dCQUNULE9BQU87d0JBQ1AsSUFBSTt3QkFDSixnQkFBZ0I7cUJBQ2pCO29OQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR04sT0FBTztzQkFETixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IElEaXNwbGF5VG9vbHRpcCB9IGZyb20gJy4uLy4uL21vZGVsL2ktZGlzcGxheS10b29sdGlwJztcbmltcG9ydCB7IFNlcmllcyB9IGZyb20gJy4uLy4uL21vZGVsL3Nlcmllcyc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUG9zaXRpb25VdGlsIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9wb3NpdGlvbi11dGlsJztcbmltcG9ydCB7IEFsaWduIH0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9hbGlnbi5lbnVtJztcbmltcG9ydCB7IFZlcnRpY2FsQWxpZ24gfSBmcm9tICcuLi8uLi9tb2RlbC9lbnVtL3ZlcnRpY2FsLWFsaWduLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLXRvb2x0aXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgTmdGb3JPZixcbiAgICBOZ0lmLFxuICAgIE5nVGVtcGxhdGVPdXRsZXRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUb29sdGlwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcbiAgQElucHV0KCkgY29uZmlnOiBJQ2hhcnRDb25maWc7XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICB0b29sdGlwOiBFbGVtZW50UmVmO1xuXG4gIHBvc2l0aW9uOiBPYnNlcnZhYmxlPHtcbiAgICBsZWZ0PzogbnVtYmVyO1xuICAgIHRvcD86IG51bWJlcjtcbiAgICBib3R0b20/OiBudW1iZXI7XG4gICAgcmlnaHQ/OiBudW1iZXI7XG4gIH0+O1xuXG4gIGRpc3BsYXlUb29sdGlwczogT2JzZXJ2YWJsZTxTYWZlSHRtbD47XG4gIGRpc3BsYXk6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgdG9vbHRpcHM6IE9ic2VydmFibGU8SURpc3BsYXlUb29sdGlwW10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy50b29sdGlwcyA9IHRoaXMuc3ZjLnRvb2x0aXBzLnBpcGUobWFwKF8gPT4gWy4uLl8udmFsdWVzKCldKSk7XG4gIH1cbiAgZ2V0SW1wbGljaXQodCl7XG4gICAgcmV0dXJuIHskaW1wbGljaXQ6IHR9IGFzIGFueVxuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheSA9IHRoaXMuc3ZjLnBvaW50ZXJNb3ZlLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LnR5cGUgPT09ICdtb3VzZW1vdmUnID8gMSA6IDA7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gdGhpcy5zdmMucG9pbnRlck1vdmUucGlwZShcbiAgICAgIGZpbHRlcihldmVudCA9PiAhIWV2ZW50KSxcbiAgICAgIG1hcChfID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UG9zaXRpb24oXyk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpXG4gICAgKTtcblxuICAgIGNvbnN0IHRyYW5zZm9ybUh0bWwgPSAoaHRtbCk6IFNhZmVIdG1sID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdEZvcm1hdHRlciA9ICh0b29sdGlwczogSURpc3BsYXlUb29sdGlwW10pOiBTYWZlSHRtbCA9PiB7XG4gICAgICBsZXQgaHRtbCA9ICcnO1xuICAgICAgY29uc3QgZm9ybWF0ID0gZDMudGltZUZvcm1hdCgnJWQuJW0uJVknKTtcbiAgICAgIHRvb2x0aXBzLmZvckVhY2goXyA9PiB7XG4gICAgICAgIGNvbnN0IGluZGljYXRvclN0eWxlID0gYGRpc3BsYXk6YmxvY2s7IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDJweDsgYmFja2dyb3VuZC1jb2xvcjogJHtfPy5zZXJpZXM/LmNvbG9yfWA7XG5cbiAgICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz0nZGlzcGxheS1mbGV4IGFsaWduLWNlbnRlcic+PHNwYW4gY2xhc3M9J21hcmdpbi1yaWdodC0xJyBzdHlsZT0nJHtpbmRpY2F0b3JTdHlsZX0nPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz0nZm9udC10aXRsZS0zJz4ke18uc2VyaWVzLm5hbWV9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz0nZm9udC1ib2R5LTMnPlxuICAgICAgICAgICAgICB4OiAke1xuICAgICAgICAgICAgICAgIChfLnBvaW50LnggYXMgYW55KSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgICAgICAgID8gZm9ybWF0KF8ucG9pbnQueCBhcyBhbnkpXG4gICAgICAgICAgICAgICAgICA6IF8ucG9pbnQueD8udG9GaXhlZCgyKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHk6ICR7XG4gICAgICAgICAgICAgICAgKF8ucG9pbnQueSBhcyBhbnkpIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgICAgICAgPyBmb3JtYXQoXy5wb2ludC55IGFzIGFueSlcbiAgICAgICAgICAgICAgICAgIDogXy5wb2ludC55Py50b0ZpeGVkKDIpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+PC9kaXY+YDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdHJhbnNmb3JtSHRtbChodG1sKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZm9ybWF0dGVyID0gdGhpcy5jb25maWc/LnRvb2x0aXA/LmZvcm1hdDtcblxuICAgIHRoaXMuZGlzcGxheVRvb2x0aXBzID0gdGhpcy5zdmMudG9vbHRpcHMucGlwZShcbiAgICAgIG1hcCgodG9vbHRpcHM6IE1hcDxTZXJpZXM8YW55PiwgSURpc3BsYXlUb29sdGlwPikgPT4ge1xuICAgICAgICBjb25zdCB0b29sdGlwTGlzdCA9IFsuLi50b29sdGlwcy52YWx1ZXMoKV07XG4gICAgICAgIGlmICh0b29sdGlwTGlzdD8ubGVuZ3RoIDwgMSkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBmb3JtYXR0ZXJcbiAgICAgICAgICA/IHRyYW5zZm9ybUh0bWwoZm9ybWF0dGVyKHRvb2x0aXBMaXN0KSlcbiAgICAgICAgICA6IGRlZmF1bHRGb3JtYXR0ZXIodG9vbHRpcExpc3QpO1xuICAgICAgICByZXR1cm4gZm9ybWF0dGVkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb3NpdGlvbihldmVudDogUG9pbnRlckV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gUG9zaXRpb25VdGlsLmdldFBvc2l0aW9uKFxuICAgICAge1xuICAgICAgICB0b3A6IGV2ZW50LnBhZ2VZLFxuICAgICAgICBib3R0b206IGV2ZW50LnBhZ2VZLFxuICAgICAgICBsZWZ0OiBldmVudC5wYWdlWCxcbiAgICAgICAgcmlnaHQ6IGV2ZW50LnBhZ2VYLFxuICAgICAgfSxcbiAgICAgIHRoaXMudG9vbHRpcD8ubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBBbGlnbi5hdXRvLFxuICAgICAgVmVydGljYWxBbGlnbi50b3AsXG4gICAgICAxMlxuICAgICk7XG4gIH1cblxuICBmb3JtYXQoaW5wdXQ6IG51bWJlciB8IERhdGUpOiBzdHJpbmcge1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGQzLnRpbWVGb3JtYXQoJyVkLiVtLiVZJyk7XG4gICAgICByZXR1cm4gZm9ybWF0KGlucHV0KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXQgPSBkMy5mb3JtYXQoJywuNX5yJyk7XG4gICAgcmV0dXJuIGZvcm1hdChpbnB1dCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7cDpwb3NpdGlvbiB8IGFzeW5jfSBhcyBkYXRhXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIodG9vbHRpcHMgfCBhc3luYykgYXMgdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaGFydC10b29sdGlwIGNvbG9yLXRleHQtOTAgYmctZ2xvYmFsLWJnY2FyZCBzaGFkb3ctMlwiXG4gICAgICAgICAjdG9vbHRpcFxuICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cIidmaXhlZCdcIlxuICAgICAgICAgKm5nSWY9XCJ0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwiZGlzcGxheSB8IGFzeW5jXCJcbiAgICAgICAgIFtoaWRkZW5dPVwiIWRhdGEucFwiXG4gICAgICAgICBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBub25lOyBtaW4td2lkdGg6IDIwMHB4O1wiXG4gICAgICAgICBbc3R5bGUubGVmdC5weF09XCJkYXRhLnA/LmxlZnRcIlxuICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJkYXRhLnA/LnRvcFwiXG4gICAgICAgICBbc3R5bGUuYm90dG9tLnB4XT1cImRhdGEucD8uYm90dG9tXCJcbiAgICAgICAgIFtzdHlsZS5yaWdodC5weF09XCJkYXRhLnA/LnJpZ2h0XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnRvb2x0aXA/LnRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maWcudG9vbHRpcC50ZW1wbGF0ZTsgY29udGV4dDogZ2V0SW1wbGljaXQodClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnRvb2x0aXA/LmZvcm1hdDsgZWxzZSBkZWZhdWx0XCI+XG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJkaXNwbGF5VG9vbHRpcHMgfCBhc3luY1wiPjwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFjb25maWcudG9vbHRpcD8udGVtcGxhdGVcIiBjbGFzcz1cInBhZGRpbmctMiBib3JkZXItcmFkaXVzLTFcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0b29sdGlwIG9mIHRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXNwbGF5LWZsZXggYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpc3BsYXktYmxvY2sgbWFyZ2luLXJpZ2h0LTFcIiBbc3R5bGUud2lkdGgucHhdPVwiMTBcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjJcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwidG9vbHRpcC5zZXJpZXM/LmNvbG9yXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtdGl0bGUtM1wiPlxuICAgICAgICAgICAge3sgdG9vbHRpcC5zZXJpZXM/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9keS0zXCI+XG4gICAgICAgICAgICAgIHg6IHt7IGZvcm1hdCh0b29sdGlwLnBvaW50Py54KSB9fVxuICAgICAgICAgICAgICAgICAgeToge3sgZm9ybWF0KHRvb2x0aXAucG9pbnQ/LnkpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuXG5cbiJdfQ==
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBYXJFLE1BQU0sT0FBTyxnQkFBZ0I7SUFrQjNCLFlBQ1UsR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsV0FBd0IsRUFDeEIsU0FBdUIsRUFDdkIsS0FBYSxFQUNiLFdBQXVCO1FBTHZCLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFI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O1lBQzFCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs4R0EzSFUsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsbU1BSWtCLFVBQVUsNkJDdkN6RCx1cERBMENBLHlGRFhJLFNBQVMsOENBQ1QsZ0JBQWdCOzsyRkFHUCxnQkFBZ0I7a0JBWDVCLFNBQVM7K0JBQ0UsY0FBYyxjQUVaLElBQUksbUJBRUMsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxTQUFTO3dCQUNULGdCQUFnQjtxQkFDakI7b05BR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHTixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSUNoYXJ0Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHsgSURpc3BsYXlUb29sdGlwIH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1kaXNwbGF5LXRvb2x0aXAnO1xuaW1wb3J0IHsgU2VyaWVzIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBab29tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQb3NpdGlvblV0aWwgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL3Bvc2l0aW9uLXV0aWwnO1xuaW1wb3J0IHsgQWxpZ24gfSBmcm9tICcuLi8uLi9tb2RlbC9lbnVtL2FsaWduLmVudW0nO1xuaW1wb3J0IHsgVmVydGljYWxBbGlnbiB9IGZyb20gJy4uLy4uL21vZGVsL2VudW0vdmVydGljYWwtYWxpZ24uZW51bSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtdG9vbHRpcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sdGlwLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG4gIEBJbnB1dCgpIGNvbmZpZzogSUNoYXJ0Q29uZmlnO1xuXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgdG9vbHRpcDogRWxlbWVudFJlZjtcblxuICBwb3NpdGlvbjogT2JzZXJ2YWJsZTx7XG4gICAgbGVmdD86IG51bWJlcjtcbiAgICB0b3A/OiBudW1iZXI7XG4gICAgYm90dG9tPzogbnVtYmVyO1xuICAgIHJpZ2h0PzogbnVtYmVyO1xuICB9PjtcblxuICBkaXNwbGF5VG9vbHRpcHM6IE9ic2VydmFibGU8U2FmZUh0bWw+O1xuICBkaXNwbGF5OiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIHRvb2x0aXBzOiBPYnNlcnZhYmxlPElEaXNwbGF5VG9vbHRpcFtdPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICkge1xuICAgIHRoaXMudG9vbHRpcHMgPSB0aGlzLnN2Yy50b29sdGlwcy5waXBlKG1hcChfID0+IFsuLi5fLnZhbHVlcygpXSkpO1xuICB9XG4gIGdldEltcGxpY2l0KHQpe1xuICAgIHJldHVybiB7JGltcGxpY2l0OiB0fSBhcyBhbnlcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXkgPSB0aGlzLnN2Yy5wb2ludGVyTW92ZS5waXBlKFxuICAgICAgbWFwKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC50eXBlID09PSAnbW91c2Vtb3ZlJyA/IDEgOiAwO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMuc3ZjLnBvaW50ZXJNb3ZlLnBpcGUoXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gISFldmVudCksXG4gICAgICBtYXAoXyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFBvc2l0aW9uKF8pO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1IdG1sID0gKGh0bWwpOiBTYWZlSHRtbCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaHRtbCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRGb3JtYXR0ZXIgPSAodG9vbHRpcHM6IElEaXNwbGF5VG9vbHRpcFtdKTogU2FmZUh0bWwgPT4ge1xuICAgICAgbGV0IGh0bWwgPSAnJztcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGQzLnRpbWVGb3JtYXQoJyVkLiVtLiVZJyk7XG4gICAgICB0b29sdGlwcy5mb3JFYWNoKF8gPT4ge1xuICAgICAgICBjb25zdCBpbmRpY2F0b3JTdHlsZSA9IGBkaXNwbGF5OmJsb2NrOyB3aWR0aDogMTBweDsgaGVpZ2h0OiAycHg7IGJhY2tncm91bmQtY29sb3I6ICR7Xz8uc2VyaWVzPy5jb2xvcn1gO1xuXG4gICAgICAgIGh0bWwgKz0gYDxkaXYgY2xhc3M9J2Rpc3BsYXktZmxleCBhbGlnbi1jZW50ZXInPjxzcGFuIGNsYXNzPSdtYXJnaW4tcmlnaHQtMScgc3R5bGU9JyR7aW5kaWNhdG9yU3R5bGV9Jz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9J2ZvbnQtdGl0bGUtMyc+JHtfLnNlcmllcy5uYW1lfVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9J2ZvbnQtYm9keS0zJz5cbiAgICAgICAgICAgICAgeDogJHtcbiAgICAgICAgICAgICAgICAoXy5wb2ludC54IGFzIGFueSkgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgICAgICAgICA/IGZvcm1hdChfLnBvaW50LnggYXMgYW55KVxuICAgICAgICAgICAgICAgICAgOiBfLnBvaW50Lng/LnRvRml4ZWQoMilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB5OiAke1xuICAgICAgICAgICAgICAgIChfLnBvaW50LnkgYXMgYW55KSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgICAgICAgID8gZm9ybWF0KF8ucG9pbnQueSBhcyBhbnkpXG4gICAgICAgICAgICAgICAgICA6IF8ucG9pbnQueT8udG9GaXhlZCgyKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPjwvZGl2PmA7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybUh0bWwoaHRtbCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGZvcm1hdHRlciA9IHRoaXMuY29uZmlnPy50b29sdGlwPy5mb3JtYXQ7XG5cbiAgICB0aGlzLmRpc3BsYXlUb29sdGlwcyA9IHRoaXMuc3ZjLnRvb2x0aXBzLnBpcGUoXG4gICAgICBtYXAoKHRvb2x0aXBzOiBNYXA8U2VyaWVzPGFueT4sIElEaXNwbGF5VG9vbHRpcD4pID0+IHtcbiAgICAgICAgY29uc3QgdG9vbHRpcExpc3QgPSBbLi4udG9vbHRpcHMudmFsdWVzKCldO1xuICAgICAgICBpZiAodG9vbHRpcExpc3Q/Lmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0dGVyXG4gICAgICAgICAgPyB0cmFuc2Zvcm1IdG1sKGZvcm1hdHRlcih0b29sdGlwTGlzdCkpXG4gICAgICAgICAgOiBkZWZhdWx0Rm9ybWF0dGVyKHRvb2x0aXBMaXN0KTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9zaXRpb24oZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgIGlmICghdGhpcy50b29sdGlwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIFBvc2l0aW9uVXRpbC5nZXRQb3NpdGlvbihcbiAgICAgIHtcbiAgICAgICAgdG9wOiBldmVudC5wYWdlWSxcbiAgICAgICAgYm90dG9tOiBldmVudC5wYWdlWSxcbiAgICAgICAgbGVmdDogZXZlbnQucGFnZVgsXG4gICAgICAgIHJpZ2h0OiBldmVudC5wYWdlWCxcbiAgICAgIH0sXG4gICAgICB0aGlzLnRvb2x0aXA/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgQWxpZ24uYXV0byxcbiAgICAgIFZlcnRpY2FsQWxpZ24udG9wLFxuICAgICAgMTJcbiAgICApO1xuICB9XG5cbiAgZm9ybWF0KGlucHV0OiBudW1iZXIgfCBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCBmb3JtYXQgPSBkMy50aW1lRm9ybWF0KCclZC4lbS4lWScpO1xuICAgICAgcmV0dXJuIGZvcm1hdChpbnB1dCk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0ID0gZDMuZm9ybWF0KCcsLjV+cicpO1xuICAgIHJldHVybiBmb3JtYXQoaW5wdXQpO1xuICB9XG59XG4iLCJAaWYgKHtwOiBwb3NpdGlvbiB8IGFzeW5jfTsgYXMgZGF0YSkge1xuICBAaWYgKCh0b29sdGlwcyB8IGFzeW5jKTsgYXMgdCkge1xuICAgIEBpZiAodC5sZW5ndGggPiAwKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtdG9vbHRpcCBjb2xvci10ZXh0LTkwIGJnLWdsb2JhbC1iZ2NhcmQgc2hhZG93LTJcIlxuICAgICAgICAgICAjdG9vbHRpcFxuICAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiJ2ZpeGVkJ1wiXG4gICAgICAgICAgIFtzdHlsZS5vcGFjaXR5XT1cImRpc3BsYXkgfCBhc3luY1wiXG4gICAgICAgICAgIFtoaWRkZW5dPVwiIWRhdGEucFwiXG4gICAgICAgICAgIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmU7IG1pbi13aWR0aDogMjAwcHg7XCJcbiAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiZGF0YS5wPy5sZWZ0XCJcbiAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJkYXRhLnA/LnRvcFwiXG4gICAgICAgICAgIFtzdHlsZS5ib3R0b20ucHhdPVwiZGF0YS5wPy5ib3R0b21cIlxuICAgICAgICAgICBbc3R5bGUucmlnaHQucHhdPVwiZGF0YS5wPy5yaWdodFwiPlxuICAgICAgICBAaWYgKGNvbmZpZy50b29sdGlwPy50ZW1wbGF0ZSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maWcudG9vbHRpcC50ZW1wbGF0ZTsgY29udGV4dDogZ2V0SW1wbGljaXQodClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGNvbmZpZy50b29sdGlwPy5mb3JtYXQpIHtcbiAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZGlzcGxheVRvb2x0aXBzIHwgYXN5bmNcIj48L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGlmICghY29uZmlnLnRvb2x0aXA/LnRlbXBsYXRlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFkZGluZy0yIGJvcmRlci1yYWRpdXMtMVwiPlxuICAgICAgICAgICAgICBAZm9yICh0b29sdGlwIG9mIHQ7IHRyYWNrIHRvb2x0aXApIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzcGxheS1mbGV4IGFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpc3BsYXktYmxvY2sgbWFyZ2luLXJpZ2h0LTFcIiBbc3R5bGUud2lkdGgucHhdPVwiMTBcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjJcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJ0b29sdGlwLnNlcmllcz8uY29sb3JcIj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXRpdGxlLTNcIj5cbiAgICAgICAgICAgICAgICB7eyB0b29sdGlwLnNlcmllcz8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9keS0zXCI+XG4gICAgICAgICAgICAgICAgICB4OiB7eyBmb3JtYXQodG9vbHRpcC5wb2ludD8ueCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICB5OiB7eyBmb3JtYXQodG9vbHRpcC5wb2ludD8ueSkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -5,7 +5,7 @@ import { ScaleService } from '../../service/scale.service';
|
|
|
5
5
|
import { getTextWidth } from '../../core/utils/get-text-width';
|
|
6
6
|
import * as d3 from 'd3';
|
|
7
7
|
import { ChartService } from '../../service/chart.service';
|
|
8
|
-
import { AsyncPipe
|
|
8
|
+
import { AsyncPipe } from '@angular/common';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "../../service/scale.service";
|
|
11
11
|
import * as i2 from "../../service/chart.service";
|
|
@@ -37,19 +37,17 @@ export class XAxisComponent {
|
|
|
37
37
|
this.update$.next();
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
41
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: XAxisComponent, deps: [{ token: i1.ScaleService }, { token: i2.ChartService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: XAxisComponent, isStandalone: true, selector: "[teta-x-axis]", inputs: { axis: "axis", size: "size" }, usesOnChanges: true, ngImport: i0, template: "@if ({x: x | async, ticks: ticks | async}; as data) {\n @for (tick of data.ticks; track tick) {\n <svg:g text-anchor=\"middle\" [attr.transform]=\"'translate('+ data.x(tick) +', 0)'\">\n <text fill=\"var(--color-text-70)\" [attr.dy]=\"axis.options.opposite ? '-0.71em' : '0.71em'\"\n [attr.y]=\"axis.options.opposite ? 0 : 9\">\n {{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}\n </text>\n <line stroke=\"var(--color-text-30)\" [attr.y2]=\"axis.options.opposite ? -6 : 6\"></line>\n </svg:g>\n }\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text fill=\"var(--color-text-70)\" text-anchor=\"middle\" dominant-baseline=\"middle\">\n {{ axis.options.title }}\n </text>\n </svg:g>\n}\n", styles: [":host .tick{stroke:var(--color-text-20)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42
42
|
}
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: XAxisComponent, decorators: [{
|
|
44
44
|
type: Component,
|
|
45
45
|
args: [{ selector: '[teta-x-axis]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
46
46
|
AsyncPipe,
|
|
47
|
-
|
|
48
|
-
NgIf
|
|
49
|
-
], template: "<ng-container *ngIf=\"{x: x | async, ticks: ticks | async} as data\">\n <svg:g text-anchor=\"middle\" *ngFor=\"let tick of data.ticks\" [attr.transform]=\"'translate('+ data.x(tick) +', 0)'\">\n <text fill=\"var(--color-text-70)\" [attr.dy]=\"axis.options.opposite ? '-0.71em' : '0.71em'\" [attr.y]=\"axis.options.opposite ? 0 : 9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.y2]=\"axis.options.opposite ? -6 : 6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text fill=\"var(--color-text-70)\" text-anchor=\"middle\" dominant-baseline=\"middle\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n", styles: [":host .tick{stroke:var(--color-text-20)}\n"] }]
|
|
47
|
+
], template: "@if ({x: x | async, ticks: ticks | async}; as data) {\n @for (tick of data.ticks; track tick) {\n <svg:g text-anchor=\"middle\" [attr.transform]=\"'translate('+ data.x(tick) +', 0)'\">\n <text fill=\"var(--color-text-70)\" [attr.dy]=\"axis.options.opposite ? '-0.71em' : '0.71em'\"\n [attr.y]=\"axis.options.opposite ? 0 : 9\">\n {{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}\n </text>\n <line stroke=\"var(--color-text-30)\" [attr.y2]=\"axis.options.opposite ? -6 : 6\"></line>\n </svg:g>\n }\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text fill=\"var(--color-text-70)\" text-anchor=\"middle\" dominant-baseline=\"middle\">\n {{ axis.options.title }}\n </text>\n </svg:g>\n}\n", styles: [":host .tick{stroke:var(--color-text-20)}\n"] }]
|
|
50
48
|
}], ctorParameters: () => [{ type: i1.ScaleService }, { type: i2.ChartService }], propDecorators: { axis: [{
|
|
51
49
|
type: Input
|
|
52
50
|
}], size: [{
|
|
53
51
|
type: Input
|
|
54
52
|
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieC1heGlzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIveC1heGlzL3gtYXhpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3gtYXhpcy94LWF4aXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQXVCLGNBQWMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFZNUMsTUFBTSxPQUFPLGNBQWM7SUFVekIsWUFBb0IsWUFBMEIsRUFBVSxJQUFrQjtRQUF0RCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFNBQUksR0FBSixJQUFJLENBQWM7UUFIbEUsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksQ0FBQyxDQUFDO1FBQzFDLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFHcEIsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBR0osSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDckQsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQzlCLEdBQUcsQ0FBQyxDQUFDLENBQXlCLEVBQUUsRUFBRTtZQUNoQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFdEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEssT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLGFBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FDcEIsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNoRCxDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDOzhHQTVDVSxjQUFjO2tHQUFkLGNBQWMsc0lDeEIzQix5MEJBZ0JBLCtGREtJLFNBQVM7OzJGQUdBLGNBQWM7a0JBVjFCLFNBQVM7K0JBQ0UsZUFBZSxjQUdiLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxTQUFTO3FCQUNWOzRHQU1RLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCwgU2ltcGxlQ2hhbmdlLCBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQge2dldFRleHRXaWR0aH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9nZXQtdGV4dC13aWR0aCc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLXgtYXhpc10nLFxuICB0ZW1wbGF0ZVVybDogJy4veC1heGlzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4veC1heGlzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFhBeGlzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHg6IE9ic2VydmFibGU8YW55PjtcbiAgdGlja3M6IE9ic2VydmFibGU8YW55W10+O1xuXG4gIEBJbnB1dCgpIGF4aXM6IEF4aXM7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG5cbiAgcHJpdmF0ZSB1cGRhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPihudWxsKTtcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsIHByaXZhdGUgX3N2YzogQ2hhcnRTZXJ2aWNlKSB7XG4gICAgdGhpcy54ID0gdGhpcy5zY2FsZVNlcnZpY2Uuc2NhbGVzLnBpcGUobWFwKChfKSA9PiB7XG4gICAgICByZXR1cm4gXy54LmdldCh0aGlzLmF4aXMuaW5kZXgpPy5zY2FsZTtcbiAgICB9KSk7XG5cblxuICAgIHRoaXMudGlja3MgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLngsIHRoaXMudXBkYXRlJF0pLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLl9zdmMuc2l6ZSksXG4gICAgICBtYXAoKF86IFtbYW55LCB2b2lkXSwgRE9NUmVjdF0pID0+IHtcbiAgICAgICAgY29uc3QgW1t4XSwgc2l6ZV0gPSBfO1xuXG4gICAgICAgIGNvbnN0IHRpY2tTaXplID0geC50aWNrcygpLm1hcCgoXykgPT4gZ2V0VGV4dFdpZHRoKHRoaXMuYXhpcy5vcHRpb25zLnRpY2tGb3JtYXQgPyB0aGlzLmF4aXMub3B0aW9ucy50aWNrRm9ybWF0KF8pIDogdGhpcy5heGlzLmRlZmF1bHRGb3JtYXR0ZXIoKShfKSwgMC40NSwgMTEpKTtcbiAgICAgICAgcmV0dXJuIHgudGlja3Moc2l6ZS53aWR0aCAvIHBhcnNlSW50KGQzLm1heCh0aWNrU2l6ZSksIDEwKSAvIDUpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0TGFiZWxUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtcbiAgICAgIHRoaXMuc2l6ZS53aWR0aCAvIDJcbiAgICB9LCAke3RoaXMuYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gLTMyIDogMzJ9KWA7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2F4aXMnKSkge1xuICAgICAgdGhpcy51cGRhdGUkLm5leHQoKTtcbiAgICB9XG4gIH1cblxufVxuIiwiQGlmICh7eDogeCB8IGFzeW5jLCB0aWNrczogdGlja3MgfCBhc3luY307IGFzIGRhdGEpIHtcbiAgQGZvciAodGljayBvZiBkYXRhLnRpY2tzOyB0cmFjayB0aWNrKSB7XG4gICAgPHN2ZzpnIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgZGF0YS54KHRpY2spICsnLCAwKSdcIj5cbiAgICAgIDx0ZXh0IGZpbGw9XCJ2YXIoLS1jb2xvci10ZXh0LTcwKVwiIFthdHRyLmR5XT1cImF4aXMub3B0aW9ucy5vcHBvc2l0ZSA/ICctMC43MWVtJyA6ICcwLjcxZW0nXCJcbiAgICAgICAgICAgIFthdHRyLnldPVwiYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gMCA6IDlcIj5cbiAgICAgICAge3sgdGhpcy5heGlzLm9wdGlvbnMudGlja0Zvcm1hdCA/IHRoaXMuYXhpcy5vcHRpb25zLnRpY2tGb3JtYXQodGljaykgOiB0aGlzLmF4aXMuZGVmYXVsdEZvcm1hdHRlcigpKHRpY2spIH19XG4gICAgICA8L3RleHQ+XG4gICAgICA8bGluZSBzdHJva2U9XCJ2YXIoLS1jb2xvci10ZXh0LTMwKVwiIFthdHRyLnkyXT1cImF4aXMub3B0aW9ucy5vcHBvc2l0ZSA/IC02IDogNlwiPjwvbGluZT5cbiAgICA8L3N2ZzpnPlxuICB9XG4gIDxzdmc6ZyBjbGFzcz1cImxhYmVsLWF4aXMgZm9udC1jYXB0aW9uXCIgW2F0dHIudHJhbnNmb3JtXT1cImdldExhYmVsVHJhbnNmb3JtKClcIj5cbiAgICA8dGV4dCBmaWxsPVwidmFyKC0tY29sb3ItdGV4dC03MClcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIGRvbWluYW50LWJhc2VsaW5lPVwibWlkZGxlXCI+XG4gICAgICB7eyBheGlzLm9wdGlvbnMudGl0bGUgfX1cbiAgICA8L3RleHQ+XG4gIDwvc3ZnOmc+XG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
|
2
2
|
import { Axis } from '../../core/axis/axis';
|
|
3
3
|
import { ScaleService } from "../../service/scale.service";
|
|
4
4
|
import { map } from "rxjs";
|
|
5
|
-
import { AsyncPipe
|
|
5
|
+
import { AsyncPipe } from '@angular/common';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "../../service/scale.service";
|
|
8
8
|
export class YAxisComponent {
|
|
@@ -24,19 +24,17 @@ export class YAxisComponent {
|
|
|
24
24
|
? this.axis.selfSize
|
|
25
25
|
: -this.axis.selfSize}, ${this.size.height / 2}) rotate(-90)`;
|
|
26
26
|
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: YAxisComponent, deps: [{ token: i1.ScaleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: YAxisComponent, isStandalone: true, selector: "[teta-y-axis]", inputs: { axis: "axis", size: "size" }, ngImport: i0, template: "@if (y | async; as scale) {\n @for (tick of scale.ticks(); track tick) {\n <svg:g [attr.text-anchor]=\"axis.options.opposite ? 'start' : 'end'\"\n [attr.transform]=\"'translate(0, '+ scale(tick) +')'\">\n <text fill=\"var(--color-text-70)\" dy=\"0.32em\"\n [attr.x]=\"axis.options.opposite ? 10 : -9\">\n {{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}\n </text>\n <line stroke=\"var(--color-text-30)\" [attr.x2]=\"axis.options.opposite ? 6 : -6\"></line>\n </svg:g>\n }\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text [attr.dy]=\"axis.options.opposite ? '-4px' : '4px'\" text-anchor=\"middle\"\n [attr.dominant-baseline]=\"axis.options.opposite ? 'auto' : 'hanging'\">\n {{ axis.options.title }}\n </text>\n </svg:g>\n}\n", styles: [":host{shape-rendering:crispEdges}:host .label-axis{fill:var(--color-text-70)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: YAxisComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{ selector: '[teta-y-axis]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
33
33
|
AsyncPipe,
|
|
34
|
-
|
|
35
|
-
NgIf
|
|
36
|
-
], template: "<ng-container *ngIf=\"y | async as scale\">\n <svg:g [attr.text-anchor]=\"axis.options.opposite ? 'start' : 'end'\" *ngFor=\"let tick of scale.ticks()\" [attr.transform]=\"'translate(0, '+ scale(tick) +')'\">\n <text fill=\"var(--color-text-70)\" dy=\"0.32em\" [attr.x]=\"axis.options.opposite ? 10 : -9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.x2]=\"axis.options.opposite ? 6 : -6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text [attr.dy]=\"axis.options.opposite ? '-4px' : '4px'\" text-anchor=\"middle\" [attr.dominant-baseline]=\"axis.options.opposite ? 'auto' : 'hanging'\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n", styles: [":host{shape-rendering:crispEdges}:host .label-axis{fill:var(--color-text-70)}\n"] }]
|
|
34
|
+
], template: "@if (y | async; as scale) {\n @for (tick of scale.ticks(); track tick) {\n <svg:g [attr.text-anchor]=\"axis.options.opposite ? 'start' : 'end'\"\n [attr.transform]=\"'translate(0, '+ scale(tick) +')'\">\n <text fill=\"var(--color-text-70)\" dy=\"0.32em\"\n [attr.x]=\"axis.options.opposite ? 10 : -9\">\n {{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}\n </text>\n <line stroke=\"var(--color-text-30)\" [attr.x2]=\"axis.options.opposite ? 6 : -6\"></line>\n </svg:g>\n }\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text [attr.dy]=\"axis.options.opposite ? '-4px' : '4px'\" text-anchor=\"middle\"\n [attr.dominant-baseline]=\"axis.options.opposite ? 'auto' : 'hanging'\">\n {{ axis.options.title }}\n </text>\n </svg:g>\n}\n", styles: [":host{shape-rendering:crispEdges}:host .label-axis{fill:var(--color-text-70)}\n"] }]
|
|
37
35
|
}], ctorParameters: () => [{ type: i1.ScaleService }], propDecorators: { axis: [{
|
|
38
36
|
type: Input
|
|
39
37
|
}], size: [{
|
|
40
38
|
type: Input
|
|
41
39
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieS1heGlzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIveS1heGlzL3ktYXhpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3ktYXhpcy95LWF4aXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLEdBQUcsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVk1QyxNQUFNLE9BQU8sY0FBYztJQVN6QixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUZ0QyxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBR3BCLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQy9DLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUE7UUFDeEMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFFRCxRQUFRLEtBQVUsQ0FBQztJQUVuQixXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWU7SUFDZixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxhQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUNwQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQ2pCLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxlQUFlLENBQUM7SUFDM0MsQ0FBQzs4R0E5QlUsY0FBYztrR0FBZCxjQUFjLGlIQ3ZCM0IsdTRCQWtCQSxvSURFSSxTQUFTOzsyRkFHQSxjQUFjO2tCQVYxQixTQUFTOytCQUNFLGVBQWUsY0FFYixJQUFJLG1CQUVDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsU0FBUztxQkFDVjtpRkFNUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vLi4vY29yZS9heGlzL2F4aXMnO1xuXG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZVwiO1xuaW1wb3J0IHttYXAsIE9ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbdGV0YS15LWF4aXNdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ktYXhpcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHN0eWxlVXJsczogWycuL3ktYXhpcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBZQXhpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgeTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIEBJbnB1dCgpIGF4aXM6IEF4aXM7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG5cbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UpIHtcbiAgICB0aGlzLnkgPSB0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMucGlwZShtYXAoKF8pID0+IHtcbiAgICAgIHJldHVybiBfLnkuZ2V0KHRoaXMuYXhpcy5pbmRleCk/LnNjYWxlXG4gICAgfSkpXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIGdldExhYmVsVHJhbnNmb3JtKCkge1xuICAgIHJldHVybiBgdHJhbnNsYXRlKCR7XG4gICAgICB0aGlzLmF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICA/IHRoaXMuYXhpcy5zZWxmU2l6ZVxuICAgICAgICA6IC10aGlzLmF4aXMuc2VsZlNpemVcbiAgICB9LCAke3RoaXMuc2l6ZS5oZWlnaHQgLyAyfSkgcm90YXRlKC05MClgO1xuICB9XG5cbn1cbiIsIkBpZiAoeSB8IGFzeW5jOyBhcyBzY2FsZSkge1xuICBAZm9yICh0aWNrIG9mIHNjYWxlLnRpY2tzKCk7IHRyYWNrIHRpY2spIHtcbiAgICA8c3ZnOmcgW2F0dHIudGV4dC1hbmNob3JdPVwiYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gJ3N0YXJ0JyA6ICdlbmQnXCJcbiAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoMCwgJysgc2NhbGUodGljaykgKycpJ1wiPlxuICAgICAgPHRleHQgZmlsbD1cInZhcigtLWNvbG9yLXRleHQtNzApXCIgZHk9XCIwLjMyZW1cIlxuICAgICAgICAgICAgW2F0dHIueF09XCJheGlzLm9wdGlvbnMub3Bwb3NpdGUgPyAxMCA6IC05XCI+XG4gICAgICAgIHt7IHRoaXMuYXhpcy5vcHRpb25zLnRpY2tGb3JtYXQgPyB0aGlzLmF4aXMub3B0aW9ucy50aWNrRm9ybWF0KHRpY2spIDogdGhpcy5heGlzLmRlZmF1bHRGb3JtYXR0ZXIoKSh0aWNrKSB9fVxuICAgICAgPC90ZXh0PlxuICAgICAgPGxpbmUgc3Ryb2tlPVwidmFyKC0tY29sb3ItdGV4dC0zMClcIiBbYXR0ci54Ml09XCJheGlzLm9wdGlvbnMub3Bwb3NpdGUgPyA2IDogLTZcIj48L2xpbmU+XG4gICAgPC9zdmc6Zz5cbiAgfVxuICA8c3ZnOmcgY2xhc3M9XCJsYWJlbC1heGlzIGZvbnQtY2FwdGlvblwiIFthdHRyLnRyYW5zZm9ybV09XCJnZXRMYWJlbFRyYW5zZm9ybSgpXCI+XG4gICAgPHRleHQgW2F0dHIuZHldPVwiYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gJy00cHgnIDogJzRweCdcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gICAgICAgICAgW2F0dHIuZG9taW5hbnQtYmFzZWxpbmVdPVwiYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gJ2F1dG8nIDogJ2hhbmdpbmcnXCI+XG4gICAgICB7eyBheGlzLm9wdGlvbnMudGl0bGUgfX1cbiAgICA8L3RleHQ+XG4gIDwvc3ZnOmc+XG59XG4iXX0=
|
|
@@ -140,10 +140,10 @@ export class BrushableDirective {
|
|
|
140
140
|
clearPreviousSelection() {
|
|
141
141
|
this.selection = null;
|
|
142
142
|
}
|
|
143
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
144
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
143
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: BrushableDirective, deps: [{ token: i1.BrushService }, { token: i2.ChartService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
144
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.1", type: BrushableDirective, isStandalone: true, selector: "[tetaBrushable]", inputs: { config: "config", axis: "axis" }, usesOnChanges: true, ngImport: i0 }); }
|
|
145
145
|
}
|
|
146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: BrushableDirective, decorators: [{
|
|
147
147
|
type: Directive,
|
|
148
148
|
args: [{
|
|
149
149
|
selector: '[tetaBrushable]',
|
|
@@ -98,10 +98,10 @@ export class DraggablePointDirective {
|
|
|
98
98
|
this.setTransform(0, 0);
|
|
99
99
|
this.transformCache = null;
|
|
100
100
|
}
|
|
101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
102
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: DraggablePointDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
102
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.1", type: DraggablePointDirective, isStandalone: true, selector: "[tetaDraggablePoint]", inputs: { tetaDraggablePoint: "tetaDraggablePoint", dragDirection: "dragDirection", allowDrag: "allowDrag" }, outputs: { moveStart: "moveStart", moveProcess: "moveProcess", moveEnd: "moveEnd" }, host: { listeners: { "mousedown": "mouseDown($event)", "touchstart": "mouseDown($event)", "window:mouseup": "mouseUp($event)", "window:touchend": "mouseUp($event)", "window:mousemove": "mouseMove($event)", "window:touchmove": "mouseMove($event)" } }, exportAs: ["tetaDraggablePoint"], ngImport: i0 }); }
|
|
103
103
|
}
|
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: DraggablePointDirective, decorators: [{
|
|
105
105
|
type: Directive,
|
|
106
106
|
args: [{
|
|
107
107
|
selector: '[tetaDraggablePoint]',
|
|
@@ -235,10 +235,10 @@ export class ZoomableDirective {
|
|
|
235
235
|
});
|
|
236
236
|
});
|
|
237
237
|
}
|
|
238
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
239
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
238
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: ZoomableDirective, deps: [{ token: i0.ElementRef }, { token: i1.ZoomService }, { token: i2.ChartService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
239
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.1", type: ZoomableDirective, isStandalone: true, selector: "[tetaZoomable]", inputs: { config: "config", axis: "axis", size: "size" }, host: { listeners: { "mouseenter": "mouseenter()", "mouseleave": "mouseleave()" }, properties: { "class.zoomable": "this.zoomable", "class.crosshair": "this.crosshair" } }, ngImport: i0 }); }
|
|
240
240
|
}
|
|
241
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: ZoomableDirective, decorators: [{
|
|
242
242
|
type: Directive,
|
|
243
243
|
args: [{
|
|
244
244
|
selector: '[tetaZoomable]',
|