@tetacom/svg-charts 1.4.23 → 1.4.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/.eslintrc.json +37 -0
  2. package/chart/base/series-base.component.d.ts +3 -3
  3. package/chart/chart/chart.component.d.ts +11 -13
  4. package/chart/chart-container/chart-container.component.d.ts +15 -12
  5. package/chart/chart-container/plotband/plot-band.component.d.ts +7 -11
  6. package/chart/chart-container/series/area-series/area-series.component.d.ts +1 -1
  7. package/chart/chart-container/series/block-area-series/block-area-series.component.d.ts +2 -2
  8. package/chart/chart-container/series/block-horizontal-series/block-horizontal-series.component.d.ts +28 -0
  9. package/chart/chart-container/series/block-series/block-series.component.d.ts +5 -6
  10. package/chart/chart-container/series/public-api.d.ts +2 -1
  11. package/chart/chart.module.d.ts +4 -3
  12. package/chart/model/i-scales-map.d.ts +1 -1
  13. package/chart/model/plot-band.d.ts +2 -0
  14. package/chart/service/scale.service.d.ts +2 -2
  15. package/esm2022/chart/base/series-base.component.mjs +5 -6
  16. package/esm2022/chart/chart/chart.component.mjs +28 -26
  17. package/esm2022/chart/chart-container/annotation/annotation.component.mjs +3 -3
  18. package/esm2022/chart/chart-container/chart-container.component.mjs +58 -38
  19. package/esm2022/chart/chart-container/crosshair/crosshair.component.mjs +3 -3
  20. package/esm2022/chart/chart-container/gridlines/gridlines.component.mjs +3 -3
  21. package/esm2022/chart/chart-container/plotband/plot-band.component.mjs +43 -50
  22. package/esm2022/chart/chart-container/plotline/plotline.component.mjs +3 -3
  23. package/esm2022/chart/chart-container/series/area-series/area-series.component.mjs +6 -6
  24. package/esm2022/chart/chart-container/series/bar/bar-series.component.mjs +3 -3
  25. package/esm2022/chart/chart-container/series/block-area-series/block-area-series.component.mjs +11 -12
  26. package/esm2022/chart/chart-container/series/block-horizontal-series/block-horizontal-series.component.mjs +67 -0
  27. package/esm2022/chart/chart-container/series/block-series/block-series.component.mjs +10 -12
  28. package/esm2022/chart/chart-container/series/line/line-series.component.mjs +3 -3
  29. package/esm2022/chart/chart-container/series/linear-series-base.mjs +3 -3
  30. package/esm2022/chart/chart-container/series/public-api.mjs +3 -2
  31. package/esm2022/chart/chart-container/series/scatter-series/scatter-series.component.mjs +3 -3
  32. package/esm2022/chart/chart-container/series-host/series-host.component.mjs +3 -3
  33. package/esm2022/chart/chart-container/tooltip/tooltip.component.mjs +3 -3
  34. package/esm2022/chart/chart-container/x-axis/x-axis.component.mjs +3 -3
  35. package/esm2022/chart/chart-container/y-axis/y-axis.component.mjs +3 -3
  36. package/esm2022/chart/chart.module.mjs +29 -24
  37. package/esm2022/chart/core/axis/axis.mjs +4 -2
  38. package/esm2022/chart/core/axis/builders/extremes-builder.mjs +20 -10
  39. package/esm2022/chart/directives/brushable.directive.mjs +3 -3
  40. package/esm2022/chart/directives/draggable-point.directive.mjs +3 -3
  41. package/esm2022/chart/directives/zoomable.directive.mjs +43 -35
  42. package/esm2022/chart/legend/legend.component.mjs +3 -3
  43. package/esm2022/chart/model/i-scales-map.mjs +1 -1
  44. package/esm2022/chart/model/plot-band.mjs +3 -1
  45. package/esm2022/chart/service/broadcast.service.mjs +3 -3
  46. package/esm2022/chart/service/brush.service.mjs +3 -3
  47. package/esm2022/chart/service/chart.service.mjs +3 -3
  48. package/esm2022/chart/service/scale.service.mjs +27 -23
  49. package/esm2022/chart/service/zoom.service.mjs +3 -3
  50. package/esm2022/chart/stories/bandseries/bandseries.component.mjs +3 -3
  51. package/fesm2022/tetacom-svg-charts.mjs +464 -362
  52. package/fesm2022/tetacom-svg-charts.mjs.map +1 -1
  53. package/package.json +1 -1
package/.eslintrc.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "extends": "../../.eslintrc.json",
3
+ "ignorePatterns": [
4
+ "!**/*"
5
+ ],
6
+ "overrides": [
7
+ {
8
+ "files": [
9
+ "*.ts"
10
+ ],
11
+ "rules": {
12
+ "@angular-eslint/directive-selector": [
13
+ "error",
14
+ {
15
+ "type": "attribute",
16
+ "prefix": "teta",
17
+ "style": "camelCase"
18
+ }
19
+ ],
20
+ "@angular-eslint/component-selector": [
21
+ "error",
22
+ {
23
+ "type": "element",
24
+ "prefix": "teta",
25
+ "style": "kebab-case"
26
+ }
27
+ ]
28
+ }
29
+ },
30
+ {
31
+ "files": [
32
+ "*.html"
33
+ ],
34
+ "rules": {}
35
+ }
36
+ ]
37
+ }
@@ -1,10 +1,10 @@
1
1
  import { ChangeDetectorRef, ElementRef, NgZone, OnInit } from '@angular/core';
2
- import { ChartService } from '../service/chart.service';
3
- import { Series } from '../model/series';
4
2
  import { BasePoint } from '../model/base-point';
3
+ import { IChartConfig } from '../model/i-chart-config';
4
+ import { Series } from '../model/series';
5
+ import { ChartService } from '../service/chart.service';
5
6
  import { ScaleService } from '../service/scale.service';
6
7
  import { ZoomService } from '../service/zoom.service';
7
- import { IChartConfig } from '../model/i-chart-config';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class SeriesBaseComponent<T extends BasePoint> implements OnInit {
10
10
  protected svc: ChartService;
@@ -1,18 +1,18 @@
1
- import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
- import { ChartService } from '../service/chart.service';
3
- import { IChartConfig } from '../model/i-chart-config';
1
+ import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { Annotation } from '../model/annotation';
4
4
  import { BasePoint } from '../model/base-point';
5
- import { ZoomService } from '../service/zoom.service';
6
- import { ScaleService } from '../service/scale.service';
7
- import { BrushService } from '../service/brush.service';
5
+ import { IChartConfig } from '../model/i-chart-config';
8
6
  import { IChartEvent } from '../model/i-chart-event';
9
- import { PlotLine } from '../model/plot-line';
10
- import { PlotBand } from '../model/plot-band';
11
7
  import { IPointMove } from '../model/i-point-move';
12
- import { Observable } from 'rxjs';
13
- import { Annotation } from '../model/annotation';
8
+ import { PlotBand } from '../model/plot-band';
9
+ import { PlotLine } from '../model/plot-line';
10
+ import { BrushService } from '../service/brush.service';
11
+ import { ChartService } from '../service/chart.service';
12
+ import { ScaleService } from '../service/scale.service';
13
+ import { ZoomService } from '../service/zoom.service';
14
14
  import * as i0 from "@angular/core";
15
- export declare class ChartComponent implements OnInit, OnChanges, OnDestroy {
15
+ export declare class ChartComponent implements OnInit, OnDestroy {
16
16
  chartService: ChartService;
17
17
  zoomService: ZoomService;
18
18
  brushService: BrushService;
@@ -36,9 +36,7 @@ export declare class ChartComponent implements OnInit, OnChanges, OnDestroy {
36
36
  private _alive;
37
37
  constructor(chartService: ChartService, zoomService: ZoomService, brushService: BrushService, scaleService: ScaleService);
38
38
  resetZoom(): void;
39
- ngOnChanges(changes: SimpleChanges): void;
40
39
  ngOnInit(): void;
41
- ngAfterViewInit(): void;
42
40
  ngOnDestroy(): void;
43
41
  static ɵfac: i0.ɵɵFactoryDeclaration<ChartComponent, never>;
44
42
  static ɵcmp: i0.ɵɵComponentDeclaration<ChartComponent, "teta-svg-chart", never, { "config": { "alias": "config"; "required": false; }; }, { "pointerMove": "pointerMove"; "plotBandsMove": "plotBandsMove"; "plotBandClick": "plotBandClick"; "plotBandContextMenu": "plotBandContextMenu"; "plotLinesMove": "plotLinesMove"; "pointMove": "pointMove"; "chartClick": "chartClick"; "chartContextMenu": "chartContextMenu"; "annotationContextMenu": "annotationContextMenu"; "annotationClick": "annotationClick"; "annotationMove": "annotationMove"; "zoomServiceInstance": "zoomServiceInstance"; "brushServiceInstance": "brushServiceInstance"; }, never, ["*"], false, never>;
@@ -1,20 +1,22 @@
1
- import { ChangeDetectorRef, ElementRef, NgZone, OnDestroy, OnInit } from '@angular/core';
2
- import { IChartConfig } from '../model/i-chart-config';
3
- import { ChartService } from '../service/chart.service';
1
+ import { AfterViewInit, ElementRef, NgZone, OnDestroy } from '@angular/core';
4
2
  import { Observable } from 'rxjs';
5
3
  import { Axis } from '../core/axis/axis';
6
- import { ScaleService } from '../service/scale.service';
7
- import { ZoomService } from '../service/zoom.service';
4
+ import { BasePoint } from '../model/base-point';
8
5
  import { ZoomType } from '../model/enum/zoom-type';
6
+ import { IChartConfig } from '../model/i-chart-config';
9
7
  import { IScalesMap } from '../model/i-scales-map';
10
- import { Series } from "../model/series";
11
- import { BasePoint } from "../model/base-point";
8
+ import { PlotBand } from '../model/plot-band';
9
+ import { Series } from '../model/series';
10
+ import { ChartService } from '../service/chart.service';
11
+ import { ScaleService } from '../service/scale.service';
12
12
  import * as i0 from "@angular/core";
13
- export declare class ChartContainerComponent implements OnInit, OnDestroy {
13
+ type DisplayPlotBand = {
14
+ axis: Axis;
15
+ plotBand: PlotBand;
16
+ };
17
+ export declare class ChartContainerComponent implements AfterViewInit, OnDestroy {
14
18
  private _svc;
15
- private _cdr;
16
19
  private _scaleService;
17
- private _zoomService;
18
20
  private _elementRef;
19
21
  private _zone;
20
22
  config: Observable<IChartConfig>;
@@ -23,10 +25,10 @@ export declare class ChartContainerComponent implements OnInit, OnDestroy {
23
25
  visibleRect: Observable<any>;
24
26
  brushScale: Observable<any>;
25
27
  zoomType: typeof ZoomType;
28
+ plotBands: Observable<DisplayPlotBand[]>;
26
29
  private _observer;
27
30
  private filterPositionMap;
28
- constructor(_svc: ChartService, _cdr: ChangeDetectorRef, _scaleService: ScaleService, _zoomService: ZoomService, _elementRef: ElementRef, _zone: NgZone);
29
- ngOnInit(): void;
31
+ constructor(_svc: ChartService, _scaleService: ScaleService, _elementRef: ElementRef, _zone: NgZone);
30
32
  ngAfterViewInit(): void;
31
33
  ngOnDestroy(): void;
32
34
  private sumSize;
@@ -40,3 +42,4 @@ export declare class ChartContainerComponent implements OnInit, OnDestroy {
40
42
  static ɵfac: i0.ɵɵFactoryDeclaration<ChartContainerComponent, never>;
41
43
  static ɵcmp: i0.ɵɵComponentDeclaration<ChartContainerComponent, "teta-chart-container", never, {}, {}, never, never, false, never>;
42
44
  }
45
+ export {};
@@ -1,15 +1,11 @@
1
1
  import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy } from '@angular/core';
2
- import { PlotBand } from '../../model/plot-band';
3
- import { ScaleService } from '../../service/scale.service';
4
2
  import { Axis } from '../../core/axis/axis';
5
- import { ZoomService } from '../../service/zoom.service';
6
3
  import { AxisOrientation } from '../../model/enum/axis-orientation';
7
4
  import { IChartEvent } from '../../model/i-chart-event';
5
+ import { PlotBand } from '../../model/plot-band';
8
6
  import { ChartService } from '../../service/chart.service';
9
7
  import * as i0 from "@angular/core";
10
8
  export declare class PlotBandComponent implements AfterViewInit, OnDestroy {
11
- private scaleService;
12
- private zoomService;
13
9
  private chartService;
14
10
  private cdr;
15
11
  private element;
@@ -17,20 +13,20 @@ export declare class PlotBandComponent implements AfterViewInit, OnDestroy {
17
13
  axis: Axis;
18
14
  scale: any;
19
15
  size: DOMRect;
16
+ click(event: MouseEvent): void;
17
+ contextMenu(event: MouseEvent): void;
20
18
  orientation: typeof AxisOrientation;
21
19
  resizeElements: any;
22
20
  dragElements: any;
23
- constructor(scaleService: ScaleService, zoomService: ZoomService, chartService: ChartService, cdr: ChangeDetectorRef, element: ElementRef);
24
- click(event: MouseEvent): void;
25
- contextMenu(event: MouseEvent): void;
26
- emit(event: IChartEvent<PlotBand>): void;
27
- ngAfterViewInit(): void;
28
- ngOnDestroy(): void;
29
21
  get height(): number;
30
22
  get width(): number;
31
23
  get from(): number;
32
24
  get to(): number;
33
25
  get bandSize(): number;
26
+ constructor(chartService: ChartService, cdr: ChangeDetectorRef, element: ElementRef);
27
+ emit(event: IChartEvent<PlotBand>): void;
28
+ ngAfterViewInit(): void;
29
+ ngOnDestroy(): void;
34
30
  getTextPosition: () => any;
35
31
  getFill(d: PlotBand): string;
36
32
  static ɵfac: i0.ɵɵFactoryDeclaration<PlotBandComponent, never>;
@@ -20,5 +20,5 @@ export declare class AreaSeriesComponent<T extends BasePoint> extends LinearSeri
20
20
  constructor(svc: ChartService, cdr: ChangeDetectorRef, scaleService: ScaleService, zoomService: ZoomService, element: ElementRef);
21
21
  ngOnInit(): void;
22
22
  static ɵfac: i0.ɵɵFactoryDeclaration<AreaSeriesComponent<any>, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<AreaSeriesComponent<any>, "svg:svg[teta-area-series]", never, {}, {}, never, never, false, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<AreaSeriesComponent<any>, "svg:svg[teta-area-3d-series]", never, {}, {}, never, never, false, never>;
24
24
  }
@@ -1,11 +1,11 @@
1
1
  import { AfterViewInit, ChangeDetectorRef, ElementRef, OnInit } from '@angular/core';
2
+ import { Observable } from 'rxjs';
2
3
  import { SeriesBaseComponent } from '../../../base/series-base.component';
3
4
  import { BasePoint } from '../../../model/base-point';
5
+ import { FillType } from '../../../model/enum/fill-type';
4
6
  import { ChartService } from '../../../service/chart.service';
5
7
  import { ScaleService } from '../../../service/scale.service';
6
8
  import { ZoomService } from '../../../service/zoom.service';
7
- import { Observable } from 'rxjs';
8
- import { FillType } from '../../../model/enum/fill-type';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class BlockAreaSeriesComponent<T extends BasePoint> extends SeriesBaseComponent<T> implements OnInit, AfterViewInit {
11
11
  protected svc: ChartService;
@@ -0,0 +1,28 @@
1
+ import { ChangeDetectorRef, ElementRef, OnInit } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { SeriesBaseComponent } from '../../../base/series-base.component';
4
+ import { BasePoint } from '../../../model/base-point';
5
+ import { FillType } from '../../../model/enum/fill-type';
6
+ import { ChartService } from '../../../service/chart.service';
7
+ import { ScaleService } from '../../../service/scale.service';
8
+ import { ZoomService } from '../../../service/zoom.service';
9
+ import * as i0 from "@angular/core";
10
+ export declare class BlockHorizontalSeriesComponent<T extends BasePoint> extends SeriesBaseComponent<T> implements OnInit {
11
+ protected svc: ChartService;
12
+ protected cdr: ChangeDetectorRef;
13
+ protected scaleService: ScaleService;
14
+ protected zoomService: ZoomService;
15
+ protected element: ElementRef;
16
+ x: Observable<any>;
17
+ y: Observable<any>;
18
+ displayPoints: Observable<BasePoint[]>;
19
+ fillType: typeof FillType;
20
+ id: string;
21
+ Math: Math;
22
+ constructor(svc: ChartService, cdr: ChangeDetectorRef, scaleService: ScaleService, zoomService: ZoomService, element: ElementRef);
23
+ ngOnInit(): void;
24
+ mouseenter(point: BasePoint): void;
25
+ mouseleave(point: BasePoint): void;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<BlockHorizontalSeriesComponent<any>, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<BlockHorizontalSeriesComponent<any>, "svg:svg[teta-block-horizontal-series]", never, {}, {}, never, never, false, never>;
28
+ }
@@ -1,13 +1,13 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, OnInit } from '@angular/core';
2
- import { BasePoint } from '../../../model/base-point';
3
- import { SeriesBaseComponent } from '../../../base/series-base.component';
1
+ import { ChangeDetectorRef, ElementRef, OnInit } from '@angular/core';
4
2
  import { Observable } from 'rxjs';
3
+ import { SeriesBaseComponent } from '../../../base/series-base.component';
4
+ import { BasePoint } from '../../../model/base-point';
5
+ import { FillType } from '../../../model/enum/fill-type';
5
6
  import { ChartService } from '../../../service/chart.service';
6
7
  import { ScaleService } from '../../../service/scale.service';
7
8
  import { ZoomService } from '../../../service/zoom.service';
8
- import { FillType } from '../../../model/enum/fill-type';
9
9
  import * as i0 from "@angular/core";
10
- export declare class BlockSeriesComponent<T extends BasePoint> extends SeriesBaseComponent<T> implements OnInit, AfterViewInit {
10
+ export declare class BlockSeriesComponent<T extends BasePoint> extends SeriesBaseComponent<T> implements OnInit {
11
11
  protected svc: ChartService;
12
12
  protected cdr: ChangeDetectorRef;
13
13
  protected scaleService: ScaleService;
@@ -23,7 +23,6 @@ export declare class BlockSeriesComponent<T extends BasePoint> extends SeriesBas
23
23
  ngOnInit(): void;
24
24
  mouseenter(point: BasePoint): void;
25
25
  mouseleave(point: BasePoint): void;
26
- ngAfterViewInit(): void;
27
26
  static ɵfac: i0.ɵɵFactoryDeclaration<BlockSeriesComponent<any>, never>;
28
27
  static ɵcmp: i0.ɵɵComponentDeclaration<BlockSeriesComponent<any>, "svg:svg[teta-block-series]", never, {}, {}, never, never, false, never>;
29
28
  }
@@ -1,6 +1,7 @@
1
+ export * from './area-series/area-series.component';
1
2
  export * from './bar/bar-series.component';
2
3
  export * from './block-area-series/block-area-series.component';
4
+ export * from './block-horizontal-series/block-horizontal-series.component';
3
5
  export * from './block-series/block-series.component';
4
6
  export * from './line/line-series.component';
5
7
  export * from './scatter-series/scatter-series.component';
6
- export * from './area-series/area-series.component';
@@ -23,10 +23,11 @@ import * as i21 from "./chart-container/annotation/annotation.component";
23
23
  import * as i22 from "./chart-container/crosshair/crosshair.component";
24
24
  import * as i23 from "./directives/draggable-point.directive";
25
25
  import * as i24 from "./stories/bandseries/bandseries.component";
26
- import * as i25 from "@angular/common";
27
- import * as i26 from "@tetacom/ng-components";
26
+ import * as i25 from "./chart-container/series/block-horizontal-series/block-horizontal-series.component";
27
+ import * as i26 from "@angular/common";
28
+ import * as i27 from "@tetacom/ng-components";
28
29
  export declare class ChartModule {
29
30
  static ɵfac: i0.ɵɵFactoryDeclaration<ChartModule, never>;
30
- static ɵmod: i0.ɵɵNgModuleDeclaration<ChartModule, [typeof i1.ChartComponent, typeof i2.SeriesHostComponent, typeof i3.ChartContainerComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i6.LinearSeriesBase, typeof i7.LineSeriesComponent, typeof i8.GridlinesComponent, typeof i9.XAxisComponent, typeof i10.YAxisComponent, typeof i11.PlotlineComponent, typeof i12.PlotBandComponent, typeof i13.BarSeriesComponent, typeof i14.TooltipComponent, typeof i15.ZoomableDirective, typeof i16.BrushableDirective, typeof i17.AreaSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent, typeof i21.AnnotationComponent, typeof i22.CrosshairComponent, typeof i23.DraggablePointDirective, typeof i24.BandseriesComponent], [typeof i25.CommonModule, typeof i26.LetModule], [typeof i1.ChartComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i7.LineSeriesComponent, typeof i13.BarSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i17.AreaSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent]>;
31
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ChartModule, [typeof i1.ChartComponent, typeof i2.SeriesHostComponent, typeof i3.ChartContainerComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i6.LinearSeriesBase, typeof i7.LineSeriesComponent, typeof i8.GridlinesComponent, typeof i9.XAxisComponent, typeof i10.YAxisComponent, typeof i11.PlotlineComponent, typeof i12.PlotBandComponent, typeof i13.BarSeriesComponent, typeof i14.TooltipComponent, typeof i15.ZoomableDirective, typeof i16.BrushableDirective, typeof i17.AreaSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent, typeof i21.AnnotationComponent, typeof i22.CrosshairComponent, typeof i23.DraggablePointDirective, typeof i24.BandseriesComponent, typeof i25.BlockHorizontalSeriesComponent], [typeof i26.CommonModule, typeof i27.LetModule], [typeof i1.ChartComponent, typeof i4.LegendComponent, typeof i5.SeriesBaseComponent, typeof i7.LineSeriesComponent, typeof i13.BarSeriesComponent, typeof i18.ScatterSeriesComponent, typeof i17.AreaSeriesComponent, typeof i19.BlockSeriesComponent, typeof i20.BlockAreaSeriesComponent, typeof i25.BlockHorizontalSeriesComponent]>;
31
32
  static ɵinj: i0.ɵɵInjectorDeclaration<ChartModule>;
32
33
  }
@@ -1,4 +1,4 @@
1
- import { Axis } from "../core/axis/axis";
1
+ import { Axis } from '../core/axis/axis';
2
2
  export interface IScalesMap {
3
3
  x: Map<number, Axis>;
4
4
  y: Map<number, Axis>;
@@ -10,6 +10,7 @@ export declare class PlotBand {
10
10
  resizable?: boolean;
11
11
  min?: number;
12
12
  max?: number;
13
+ order: number;
13
14
  style?: {
14
15
  plotBand?: SvgAttributes;
15
16
  grabbers?: SvgAttributes;
@@ -25,6 +26,7 @@ export declare class PlotBand {
25
26
  resizable?: boolean;
26
27
  min?: number;
27
28
  max?: number;
29
+ order?: number;
28
30
  style?: {
29
31
  plotBand?: SvgAttributes;
30
32
  grabbers?: SvgAttributes;
@@ -1,7 +1,7 @@
1
- import { ChartService } from './chart.service';
2
1
  import { Observable } from 'rxjs';
3
- import { ZoomService } from './zoom.service';
4
2
  import { IScalesMap } from '../model/i-scales-map';
3
+ import { ChartService } from './chart.service';
4
+ import { ZoomService } from './zoom.service';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class ScaleService {
7
7
  private chartService;
@@ -32,12 +32,11 @@ export class SeriesBaseComponent {
32
32
  this.element = element;
33
33
  this.zone = zone;
34
34
  }
35
- ngOnInit() {
36
- }
37
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SeriesBaseComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
38
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: SeriesBaseComponent, selector: "ng-component", inputs: { config: "config", series: "series" }, ngImport: i0, template: '', isInline: true });
35
+ ngOnInit() { }
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SeriesBaseComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: SeriesBaseComponent, selector: "ng-component", inputs: { config: "config", series: "series" }, ngImport: i0, template: '', isInline: true });
39
38
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: SeriesBaseComponent, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: SeriesBaseComponent, decorators: [{
41
40
  type: Component,
42
41
  args: [{
43
42
  template: '',
@@ -47,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
47
46
  }], series: [{
48
47
  type: Input
49
48
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWVzLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDOzs7OztBQVd2QixNQUFNLE9BQU8sbUJBQW1CO0lBdUJsQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUEzQlosSUFDSSxNQUFNLENBQUMsTUFBb0I7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDSSxNQUFNLENBQUMsTUFBaUI7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRVMsT0FBTyxDQUFZO0lBQ25CLE9BQU8sQ0FBZTtJQUVoQyxZQUNZLEdBQWlCLEVBQ2pCLEdBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE9BQW1CLEVBQ25CLElBQWE7UUFMYixRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUztJQUV6QixDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7dUdBakNVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLG9HQUZwQixFQUFFOzsyRkFFRCxtQkFBbUI7a0JBSC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7c09BR0ssTUFBTTtzQkFEVCxLQUFLO2dCQVVGLE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LCBOZ1pvbmUsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7U2VyaWVzfSBmcm9tICcuLi9tb2RlbC9zZXJpZXMnO1xuaW1wb3J0IHtCYXNlUG9pbnR9IGZyb20gJy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHtTY2FsZVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQge1pvb21TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBjbGFzcyBTZXJpZXNCYXNlQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlUG9pbnQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgc2V0IGNvbmZpZyhjb25maWc6IElDaGFydENvbmZpZykge1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIGdldCBjb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzZXJpZXMoc2VyaWVzOiBTZXJpZXM8VD4pIHtcbiAgICB0aGlzLl9zZXJpZXMgPSBzZXJpZXM7XG4gIH1cblxuICBnZXQgc2VyaWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZXJpZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NlcmllczogU2VyaWVzPFQ+O1xuICBwcm90ZWN0ZWQgX2NvbmZpZzogSUNoYXJ0Q29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzdmM6IENoYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgem9uZT86IE5nWm9uZVxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG59XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWVzLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDOzs7OztBQVl2QixNQUFNLE9BQU8sbUJBQW1CO0lBdUJsQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUEzQlosSUFDSSxNQUFNLENBQUMsTUFBb0I7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDSSxNQUFNLENBQUMsTUFBaUI7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRVMsT0FBTyxDQUFZO0lBQ25CLE9BQU8sQ0FBZTtJQUVoQyxZQUNZLEdBQWlCLEVBQ2pCLEdBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE9BQW1CLEVBQ25CLElBQWE7UUFMYixRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUztJQUN0QixDQUFDO0lBRUosUUFBUSxLQUFVLENBQUM7dUdBL0JSLG1CQUFtQjsyRkFBbkIsbUJBQW1CLG9HQUZwQixFQUFFOzsyRkFFRCxtQkFBbUI7a0JBSC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7c09BR0ssTUFBTTtzQkFEVCxLQUFLO2dCQVVGLE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHsgSUNoYXJ0Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHsgU2VyaWVzIH0gZnJvbSAnLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTY2FsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIFNlcmllc0Jhc2VDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VQb2ludD4gaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBzZXQgY29uZmlnKGNvbmZpZzogSUNoYXJ0Q29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgZ2V0IGNvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHNlcmllcyhzZXJpZXM6IFNlcmllczxUPikge1xuICAgIHRoaXMuX3NlcmllcyA9IHNlcmllcztcbiAgfVxuXG4gIGdldCBzZXJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcmllcztcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2VyaWVzOiBTZXJpZXM8VD47XG4gIHByb3RlY3RlZCBfY29uZmlnOiBJQ2hhcnRDb25maWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHN2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCB6b25lPzogTmdab25lXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG59XG4iXX0=
@@ -1,11 +1,11 @@
1
1
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
- import { ChartService } from '../service/chart.service';
3
- import { ZoomService } from '../service/zoom.service';
4
- import { ScaleService } from '../service/scale.service';
5
- import { BrushService } from '../service/brush.service';
6
2
  import { map, takeWhile, withLatestFrom } from 'rxjs';
3
+ import { ScaleType } from '../model/enum/scale-type';
7
4
  import { TooltipTracking } from '../model/enum/tooltip-tracking';
8
- import { ScaleType } from "../model/enum/scale-type";
5
+ import { BrushService } from '../service/brush.service';
6
+ import { ChartService } from '../service/chart.service';
7
+ import { ScaleService } from '../service/scale.service';
8
+ import { ZoomService } from '../service/zoom.service';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "../service/chart.service";
11
11
  import * as i2 from "../service/zoom.service";
@@ -45,13 +45,11 @@ export class ChartComponent {
45
45
  this.brushService = brushService;
46
46
  this.scaleService = scaleService;
47
47
  this.svcConfig = this.chartService.config;
48
- this.hasSeriesData = this.svcConfig.pipe(map((_) => _.series?.length > 0 && _.series?.some((_) => _.data?.length > 0)));
48
+ this.hasSeriesData = this.svcConfig.pipe(map(_ => _.series?.length > 0 && _.series?.some(_ => _.data?.length > 0)));
49
49
  }
50
50
  resetZoom() {
51
51
  this.scaleService.resetZoom();
52
52
  }
53
- ngOnChanges(changes) {
54
- }
55
53
  ngOnInit() {
56
54
  this.zoomServiceInstance.emit(this.zoomService);
57
55
  this.brushServiceInstance.emit(this.brushService);
@@ -70,7 +68,7 @@ export class ChartComponent {
70
68
  });
71
69
  this.pointerMove.emit({
72
70
  event: event,
73
- target: result
71
+ target: result,
74
72
  });
75
73
  }
76
74
  else {
@@ -83,64 +81,68 @@ export class ChartComponent {
83
81
  });
84
82
  this.pointerMove.emit({
85
83
  event: event,
86
- target: result
84
+ target: result,
87
85
  });
88
86
  }
89
87
  });
90
88
  this.chartService.plotBandEvent
91
89
  .pipe(takeWhile(() => this._alive))
92
- .subscribe((_) => {
90
+ .subscribe(_ => {
93
91
  this.plotBandsMove.emit(_);
94
92
  });
95
- this.chartService.plotLineMove.pipe(takeWhile(() => this._alive)).subscribe((_) => {
93
+ this.chartService.plotLineMove
94
+ .pipe(takeWhile(() => this._alive))
95
+ .subscribe(_ => {
96
96
  this.plotLinesMove.emit(_);
97
97
  });
98
- this.chartService.pointMove.pipe(takeWhile(() => this._alive)).subscribe((_) => {
98
+ this.chartService.pointMove
99
+ .pipe(takeWhile(() => this._alive))
100
+ .subscribe(_ => {
99
101
  this.pointMove.emit(_);
100
102
  });
101
103
  this.chartService.chartClick
102
- .pipe(takeWhile(() => this._alive)).subscribe((_) => {
104
+ .pipe(takeWhile(() => this._alive))
105
+ .subscribe(_ => {
103
106
  this.chartClick.emit(_);
104
107
  });
105
108
  this.chartService.chartContextMenu
106
- .pipe(takeWhile(() => this._alive)).subscribe((_) => {
109
+ .pipe(takeWhile(() => this._alive))
110
+ .subscribe(_ => {
107
111
  this.chartContextMenu.emit(_);
108
112
  });
109
113
  this.chartService.plotBandClick
110
114
  .pipe(takeWhile(() => this._alive))
111
- .subscribe((_) => {
115
+ .subscribe(_ => {
112
116
  this.plotBandClick.emit(_);
113
117
  });
114
118
  this.chartService.plotBandContextMenu
115
119
  .pipe(takeWhile(() => this._alive))
116
- .subscribe((_) => {
120
+ .subscribe(_ => {
117
121
  this.plotBandContextMenu.emit(_);
118
122
  });
119
123
  this.chartService.annotationContextMenu
120
124
  .pipe(takeWhile(() => this._alive))
121
- .subscribe((_) => {
125
+ .subscribe(_ => {
122
126
  this.annotationContextMenu.emit(_);
123
127
  });
124
128
  this.chartService.annotationClick
125
129
  .pipe(takeWhile(() => this._alive))
126
- .subscribe((_) => {
130
+ .subscribe(_ => {
127
131
  this.annotationClick.emit(_);
128
132
  });
129
133
  this.chartService.annotationMove
130
134
  .pipe(takeWhile(() => this._alive))
131
- .subscribe((_) => {
135
+ .subscribe(_ => {
132
136
  this.annotationMove.emit(_);
133
137
  });
134
138
  }
135
- ngAfterViewInit() {
136
- }
137
139
  ngOnDestroy() {
138
140
  this._alive = false;
139
141
  }
140
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ChartComponent, deps: [{ token: i1.ChartService }, { token: i2.ZoomService }, { token: i3.BrushService }, { token: i4.ScaleService }], target: i0.ɵɵFactoryTarget.Component });
141
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: ChartComponent, selector: "teta-svg-chart", inputs: { config: "config" }, outputs: { pointerMove: "pointerMove", plotBandsMove: "plotBandsMove", plotBandClick: "plotBandClick", plotBandContextMenu: "plotBandContextMenu", plotLinesMove: "plotLinesMove", pointMove: "pointMove", chartClick: "chartClick", chartContextMenu: "chartContextMenu", annotationContextMenu: "annotationContextMenu", annotationClick: "annotationClick", annotationMove: "annotationMove", zoomServiceInstance: "zoomServiceInstance", brushServiceInstance: "brushServiceInstance" }, providers: [ChartService, ZoomService, ScaleService, BrushService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"{\n hasSeriesData: hasSeriesData | async,\n svcConfig: svcConfig | async\n} as data\">\n <ng-container *ngIf=\"data.hasSeriesData === true else noData\">\n <div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container position-relative\"></teta-chart-container>\n </div>\n <teta-legend *ngIf=\"data.svcConfig.legend?.enable === true\" [series]=\"data.svcConfig.series\"></teta-legend>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <div class=\"column column_auto justify-content-center\">\n <span class=\"font-body-3 color-text-40 overflow-hidden text-overflow-ellipsis nowrap text-align-center\">\n <div #ref><ng-content></ng-content></div>\n <span *ngIf=\"!ref.hasChildNodes()\">\n No data\n </span>\n </span>\n </div>\n</ng-template>\n", styles: [":host{position:relative;display:flex;flex-direction:column;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.ChartContainerComponent, selector: "teta-chart-container" }, { kind: "component", type: i7.LegendComponent, selector: "teta-legend", inputs: ["series"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
142
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ChartComponent, deps: [{ token: i1.ChartService }, { token: i2.ZoomService }, { token: i3.BrushService }, { token: i4.ScaleService }], target: i0.ɵɵFactoryTarget.Component });
143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: ChartComponent, selector: "teta-svg-chart", inputs: { config: "config" }, outputs: { pointerMove: "pointerMove", plotBandsMove: "plotBandsMove", plotBandClick: "plotBandClick", plotBandContextMenu: "plotBandContextMenu", plotLinesMove: "plotLinesMove", pointMove: "pointMove", chartClick: "chartClick", chartContextMenu: "chartContextMenu", annotationContextMenu: "annotationContextMenu", annotationClick: "annotationClick", annotationMove: "annotationMove", zoomServiceInstance: "zoomServiceInstance", brushServiceInstance: "brushServiceInstance" }, providers: [ChartService, ZoomService, ScaleService, BrushService], ngImport: i0, template: "<ng-container *ngIf=\"{\n hasSeriesData: hasSeriesData | async,\n svcConfig: svcConfig | async\n} as data\">\n <ng-container *ngIf=\"data.hasSeriesData === true else noData\">\n <div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container position-relative\"></teta-chart-container>\n </div>\n <teta-legend *ngIf=\"data.svcConfig.legend?.enable === true\" [series]=\"data.svcConfig.series\"></teta-legend>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <div class=\"column column_auto justify-content-center\">\n <span class=\"font-body-3 color-text-40 overflow-hidden text-overflow-ellipsis nowrap text-align-center\">\n <div #ref><ng-content></ng-content></div>\n <span *ngIf=\"!ref.hasChildNodes()\">\n No data\n </span>\n </span>\n </div>\n</ng-template>\n", styles: [":host{position:relative;display:flex;flex-direction:column;height:100%;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.ChartContainerComponent, selector: "teta-chart-container" }, { kind: "component", type: i7.LegendComponent, selector: "teta-legend", inputs: ["series"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
142
144
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ChartComponent, decorators: [{
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: ChartComponent, decorators: [{
144
146
  type: Component,
145
147
  args: [{ selector: 'teta-svg-chart', providers: [ChartService, ZoomService, ScaleService, BrushService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n hasSeriesData: hasSeriesData | async,\n svcConfig: svcConfig | async\n} as data\">\n <ng-container *ngIf=\"data.hasSeriesData === true else noData\">\n <div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container position-relative\"></teta-chart-container>\n </div>\n <teta-legend *ngIf=\"data.svcConfig.legend?.enable === true\" [series]=\"data.svcConfig.series\"></teta-legend>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <div class=\"column column_auto justify-content-center\">\n <span class=\"font-body-3 color-text-40 overflow-hidden text-overflow-ellipsis nowrap text-align-center\">\n <div #ref><ng-content></ng-content></div>\n <span *ngIf=\"!ref.hasChildNodes()\">\n No data\n </span>\n </span>\n </div>\n</ng-template>\n", styles: [":host{position:relative;display:flex;flex-direction:column;height:100%;width:100%}\n"] }]
146
148
  }], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i2.ZoomService }, { type: i3.BrushService }, { type: i4.ScaleService }]; }, propDecorators: { pointerMove: [{
@@ -172,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
172
174
  }], config: [{
173
175
  type: Input
174
176
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFHdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFLdEQsT0FBTyxFQUFDLEdBQUcsRUFBYyxTQUFTLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUvRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQVNuRCxNQUFNLE9BQU8sY0FBYztJQWlETjtJQUNBO0lBQ0E7SUFDQTtJQW5EbkIsYUFBYSxDQUFzQjtJQUNuQyxTQUFTLENBQTJCO0lBRXBDLFdBQVcsR0FBbUQsSUFBSSxZQUFZLEVBQW9DLENBQUM7SUFHbkgsYUFBYSxHQUF3QyxJQUFJLFlBQVksRUFBeUIsQ0FBQztJQUcvRixhQUFhLEdBQXdDLElBQUksWUFBWSxFQUF5QixDQUFDO0lBRy9GLG1CQUFtQixHQUF3QyxJQUFJLFlBQVksRUFBeUIsQ0FBQztJQUdyRyxhQUFhLEdBQXdDLElBQUksWUFBWSxFQUF5QixDQUFDO0lBRy9GLFNBQVMsR0FBMEMsSUFBSSxZQUFZLEVB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QUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7dUdBdExVLGNBQWM7MkZBQWQsY0FBYyxvaUJBSGQsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsK0NDL0JwRSw2MEJBcUJBOzsyRkRhYSxjQUFjO2tCQVAxQixTQUFTOytCQUNFLGdCQUFnQixhQUdmLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLG1CQUNqRCx1QkFBdUIsQ0FBQyxNQUFNO21MQU0vQyxXQUFXO3NCQURWLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNO2dCQUlQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxtQkFBbUI7c0JBRGxCLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNO2dCQUlQLFNBQVM7c0JBRFIsTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsZ0JBQWdCO3NCQURmLE1BQU07Z0JBSVAscUJBQXFCO3NCQURwQixNQUFNO2dCQUlQLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCxjQUFjO3NCQURiLE1BQU07Z0JBSVAsbUJBQW1CO3NCQURsQixNQUFNO2dCQUlQLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFHTSxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7QmFzZVBvaW50fSBmcm9tICcuLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtCcnVzaFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvYnJ1c2guc2VydmljZSc7XG5pbXBvcnQge0lDaGFydEV2ZW50fSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWV2ZW50JztcbmltcG9ydCB7UGxvdExpbmV9IGZyb20gJy4uL21vZGVsL3Bsb3QtbGluZSc7XG5pbXBvcnQge1Bsb3RCYW5kfSBmcm9tICcuLi9tb2RlbC9wbG90LWJhbmQnO1xuaW1wb3J0IHtJUG9pbnRNb3ZlfSBmcm9tICcuLi9tb2RlbC9pLXBvaW50LW1vdmUnO1xuaW1wb3J0IHttYXAsIE9ic2VydmFibGUsIHRha2VXaGlsZSwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBbm5vdGF0aW9ufSBmcm9tICcuLi9tb2RlbC9hbm5vdGF0aW9uJztcbmltcG9ydCB7VG9vbHRpcFRyYWNraW5nfSBmcm9tICcuLi9tb2RlbC9lbnVtL3Rvb2x0aXAtdHJhY2tpbmcnO1xuaW1wb3J0IHtJU2NhbGVzTWFwfSBmcm9tICcuLi9tb2RlbC9pLXNjYWxlcy1tYXAnO1xuaW1wb3J0IHtTY2FsZVR5cGV9IGZyb20gXCIuLi9tb2RlbC9lbnVtL3NjYWxlLXR5cGVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1zdmctY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtDaGFydFNlcnZpY2UsIFpvb21TZXJ2aWNlLCBTY2FsZVNlcnZpY2UsIEJydXNoU2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBoYXNTZXJpZXNEYXRhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBzdmNDb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcbiAgQE91dHB1dCgpXG4gIHBvaW50ZXJNb3ZlOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8TWFwPG51bWJlciwgbnVtYmVyPj4+ID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxNYXA8bnVtYmVyLCBudW1iZXI+Pj4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdEJhbmRzTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4gPSBuZXcgRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdEJhbmRDbGljazogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4gPSBuZXcgRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdEJhbmRDb250ZXh0TWVudTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4gPSBuZXcgRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdExpbmVzTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RMaW5lPj4gPSBuZXcgRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RMaW5lPj4oKTtcblxuICBAT3V0cHV0KClcbiAgcG9pbnRNb3ZlOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8SVBvaW50TW92ZT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxJUG9pbnRNb3ZlPj4oKTtcblxuICBAT3V0cHV0KClcbiAgY2hhcnRDbGljazogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PEJhc2VQb2ludD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxCYXNlUG9pbnQ+PigpO1xuXG4gIEBPdXRwdXQoKVxuICBjaGFydENvbnRleHRNZW51OiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QmFzZVBvaW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PEJhc2VQb2ludD4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFubm90YXRpb25Db250ZXh0TWVudTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PEFubm90YXRpb24+PiA9IG5ldyBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFubm90YXRpb25DbGljazogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PEFubm90YXRpb24+PiA9IG5ldyBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFubm90YXRpb25Nb3ZlOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+ID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPj4oKTtcblxuICBAT3V0cHV0KClcbiAgem9vbVNlcnZpY2VJbnN0YW5jZTogRXZlbnRFbWl0dGVyPFpvb21TZXJ2aWNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Wm9vbVNlcnZpY2U+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGJydXNoU2VydmljZUluc3RhbmNlOiBFdmVudEVtaXR0ZXI8QnJ1c2hTZXJ2aWNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8QnJ1c2hTZXJ2aWNlPigpO1xuXG4gIEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBJQ2hhcnRDb25maWcpIHtcbiAgICB0aGlzLmNoYXJ0U2VydmljZS5zZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLnpvb21TZXJ2aWNlLnNldEJyb2FkY2FzdENoYW5uZWwoY29uZmlnPy56b29tPy5zeW5jQ2hhbm5lbCk7XG4gIH1cblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwdWJsaWMgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgICAgICAgICAgICBwdWJsaWMgYnJ1c2hTZXJ2aWNlOiBCcnVzaFNlcnZpY2UsXG4gICAgICAgICAgICAgIHB1YmxpYyBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSkge1xuICAgIHRoaXMuc3ZjQ29uZmlnID0gdGhpcy5jaGFydFNlcnZpY2UuY29uZmlnO1xuICAgIHRoaXMuaGFzU2VyaWVzRGF0YSA9IHRoaXMuc3ZjQ29uZmlnLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChfKSA9PiBfLnNlcmllcz8ubGVuZ3RoID4gMCAmJiBfLnNlcmllcz8uc29tZSgoXykgPT4gXy5kYXRhPy5sZW5ndGggPiAwKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICByZXNldFpvb20oKSB7XG4gICAgdGhpcy5zY2FsZVNlcnZpY2UucmVzZXRab29tKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb21TZXJ2aWNlSW5zdGFuY2UuZW1pdCh0aGlzLnpvb21TZXJ2aWNlKTtcbiAgICB0aGlzLmJydXNoU2VydmljZUluc3RhbmNlLmVtaXQodGhpcy5icnVzaFNlcnZpY2UpO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucG9pbnRlck1vdmVcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMsIHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IFtQb2ludGVyRXZlbnQsIElTY2FsZXNNYXAsIElDaGFydENvbmZpZ10pID0+IHtcbiAgICAgICAgY29uc3QgW2V2ZW50LCB7eCwgeX0sIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCB0b29sdGlwVHJhY2tpbmcgPSBjb25maWc/LnRvb2x0aXA/LnRyYWNraW5nO1xuICAgICAgICBpZiAodG9vbHRpcFRyYWNraW5nID09PSBUb29sdGlwVHJhY2tpbmcueSkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8bnVtYmVyLCBudW1iZXI+KCk7XG4gICAgICAgICAgeS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUub3B0aW9ucy5zY2FsZVR5cGUudHlwZSA9PT0gU2NhbGVUeXBlLmJhbmQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnNldChrZXksIHZhbHVlLnNjYWxlLmludmVydChldmVudC5vZmZzZXRZKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5wb2ludGVyTW92ZS5lbWl0KHtcbiAgICAgICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIHRhcmdldDogcmVzdWx0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgICB4LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUuYmFuZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUuc2NhbGUuaW52ZXJ0KGV2ZW50Lm9mZnNldFgpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBvaW50ZXJNb3ZlLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiByZXN1bHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5wbG90QmFuZEV2ZW50XG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICB0aGlzLnBsb3RCYW5kc01vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucGxvdExpbmVNb3ZlLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpXG4gICAgKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMucGxvdExpbmVzTW92ZS5lbWl0KF8pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucG9pbnRNb3ZlLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpXG4gICAgKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMucG9pbnRNb3ZlLmVtaXQoXyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5jaGFydENsaWNrXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKVxuICAgICAgKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMuY2hhcnRDbGljay5lbWl0KF8pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UuY2hhcnRDb250ZXh0TWVudVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSlcbiAgICAgICkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLmNoYXJ0Q29udGV4dE1lbnUuZW1pdChfKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnBsb3RCYW5kQ2xpY2tcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICB0aGlzLnBsb3RCYW5kQ2xpY2suZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucGxvdEJhbmRDb250ZXh0TWVudVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgIHRoaXMucGxvdEJhbmRDb250ZXh0TWVudS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uQ29udGV4dE1lbnVcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICB0aGlzLmFubm90YXRpb25Db250ZXh0TWVudS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uQ2xpY2tcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICB0aGlzLmFubm90YXRpb25DbGljay5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uTW92ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgIHRoaXMuYW5ub3RhdGlvbk1vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIntcbiAgaGFzU2VyaWVzRGF0YTogaGFzU2VyaWVzRGF0YSB8IGFzeW5jLFxuICBzdmNDb25maWc6IHN2Y0NvbmZpZyB8IGFzeW5jXG59IGFzIGRhdGFcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuaGFzU2VyaWVzRGF0YSA9PT0gdHJ1ZSBlbHNlIG5vRGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG9cIj5cbiAgICAgIDx0ZXRhLWNoYXJ0LWNvbnRhaW5lciBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiPjwvdGV0YS1jaGFydC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHRldGEtbGVnZW5kICpuZ0lmPVwiZGF0YS5zdmNDb25maWcubGVnZW5kPy5lbmFibGUgPT09IHRydWVcIiBbc2VyaWVzXT1cImRhdGEuc3ZjQ29uZmlnLnNlcmllc1wiPjwvdGV0YS1sZWdlbmQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI25vRGF0YT5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5fYXV0byBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb250LWJvZHktMyBjb2xvci10ZXh0LTQwIG92ZXJmbG93LWhpZGRlbiB0ZXh0LW92ZXJmbG93LWVsbGlwc2lzIG5vd3JhcCB0ZXh0LWFsaWduLWNlbnRlclwiPlxuICAgICAgPGRpdiAjcmVmPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIXJlZi5oYXNDaGlsZE5vZGVzKClcIj5cbiAgICAgICAgTm8gZGF0YVxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9qRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQVN0RCxNQUFNLE9BQU8sY0FBYztJQXdFaEI7SUFDQTtJQUNBO0lBQ0E7SUExRVQsYUFBYSxDQUFzQjtJQUNuQyxTQUFTLENBQTJCO0lBRXBDLFdBQVcsR0FDVCxJQUFJLFlBQVksRUFBb0MsQ0FBQztJQUd2RCxhQUFhLEdBQXdDLElBQUksWUFBWSxFQUVsRSxDQUFDO0lBR0osYUFBYSxHQUF3QyxJQUFJLFlBQVksRUFFbEUsQ0FBQztJQUdKLG1CQUFtQixHQUF3QyxJQUFJLFlBQVksRUFFeEUsQ0FBQztJQUdKLGFBQWEsR0FBd0MsSUFBSSxZQUFZLEVBRWxFLENBQUM7SUFHSixTQUFTLEdBQTBDLElBQUksWUFBWSxFQUVoRSxD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a0JBUDFCLFNBQVM7K0JBQ0UsZ0JBQWdCLGFBR2YsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsbUJBQ2pELHVCQUF1QixDQUFDLE1BQU07bUxBTS9DLFdBQVc7c0JBRFYsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBTVAsYUFBYTtzQkFEWixNQUFNO2dCQU1QLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFNUCxhQUFhO3NCQURaLE1BQU07Z0JBTVAsU0FBUztzQkFEUixNQUFNO2dCQU1QLFVBQVU7c0JBRFQsTUFBTTtnQkFNUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFNUCxxQkFBcUI7c0JBRHBCLE1BQU07Z0JBS1AsZUFBZTtzQkFEZCxNQUFNO2dCQU1QLGNBQWM7c0JBRGIsTUFBTTtnQkFNUCxtQkFBbUI7c0JBRGxCLE1BQU07Z0JBS1Asb0JBQW9CO3NCQURuQixNQUFNO2dCQUlNLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgdGFrZVdoaWxlLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBbm5vdGF0aW9uIH0gZnJvbSAnLi4vbW9kZWwvYW5ub3RhdGlvbic7XG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7IFNjYWxlVHlwZSB9IGZyb20gJy4uL21vZGVsL2VudW0vc2NhbGUtdHlwZSc7XG5pbXBvcnQgeyBUb29sdGlwVHJhY2tpbmcgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3Rvb2x0aXAtdHJhY2tpbmcnO1xuaW1wb3J0IHsgSUNoYXJ0Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHsgSUNoYXJ0RXZlbnQgfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWV2ZW50JztcbmltcG9ydCB7IElQb2ludE1vdmUgfSBmcm9tICcuLi9tb2RlbC9pLXBvaW50LW1vdmUnO1xuaW1wb3J0IHsgSVNjYWxlc01hcCB9IGZyb20gJy4uL21vZGVsL2ktc2NhbGVzLW1hcCc7XG5pbXBvcnQgeyBQbG90QmFuZCB9IGZyb20gJy4uL21vZGVsL3Bsb3QtYmFuZCc7XG5pbXBvcnQgeyBQbG90TGluZSB9IGZyb20gJy4uL21vZGVsL3Bsb3QtbGluZSc7XG5pbXBvcnQgeyBCcnVzaFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2JydXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IFNjYWxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBab29tU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1zdmctY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtDaGFydFNlcnZpY2UsIFpvb21TZXJ2aWNlLCBTY2FsZVNlcnZpY2UsIEJydXNoU2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgaGFzU2VyaWVzRGF0YTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc3ZjQ29uZmlnOiBPYnNlcnZhYmxlPElDaGFydENvbmZpZz47XG4gIEBPdXRwdXQoKVxuICBwb2ludGVyTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PE1hcDxudW1iZXIsIG51bWJlcj4+PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxNYXA8bnVtYmVyLCBudW1iZXI+Pj4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdEJhbmRzTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PFBsb3RCYW5kPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHBsb3RCYW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxQbG90QmFuZD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBJQ2hhcnRFdmVudDxQbG90QmFuZD5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwbG90QmFuZENvbnRleHRNZW51OiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdExpbmVzTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RMaW5lPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PFBsb3RMaW5lPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHBvaW50TW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PElQb2ludE1vdmU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8SVBvaW50TW92ZT5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBjaGFydENsaWNrOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QmFzZVBvaW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PEJhc2VQb2ludD5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBjaGFydENvbnRleHRNZW51OiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QmFzZVBvaW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PEJhc2VQb2ludD5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBhbm5vdGF0aW9uQ29udGV4dE1lbnU6IEV2ZW50RW1pdHRlcjxJQ2hhcnRFdmVudDxBbm5vdGF0aW9uPj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGFubm90YXRpb25DbGljazogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PEFubm90YXRpb24+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBhbm5vdGF0aW9uTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PEFubm90YXRpb24+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8QW5ub3RhdGlvbj5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICB6b29tU2VydmljZUluc3RhbmNlOiBFdmVudEVtaXR0ZXI8Wm9vbVNlcnZpY2U+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFpvb21TZXJ2aWNlPigpO1xuXG4gIEBPdXRwdXQoKVxuICBicnVzaFNlcnZpY2VJbnN0YW5jZTogRXZlbnRFbWl0dGVyPEJydXNoU2VydmljZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QnJ1c2hTZXJ2aWNlPigpO1xuXG4gIEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBJQ2hhcnRDb25maWcpIHtcbiAgICB0aGlzLmNoYXJ0U2VydmljZS5zZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLnpvb21TZXJ2aWNlLnNldEJyb2FkY2FzdENoYW5uZWwoY29uZmlnPy56b29tPy5zeW5jQ2hhbm5lbCk7XG4gIH1cblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHVibGljIGJydXNoU2VydmljZTogQnJ1c2hTZXJ2aWNlLFxuICAgIHB1YmxpYyBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN2Y0NvbmZpZyA9IHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZztcbiAgICB0aGlzLmhhc1Nlcmllc0RhdGEgPSB0aGlzLnN2Y0NvbmZpZy5waXBlKFxuICAgICAgbWFwKF8gPT4gXy5zZXJpZXM/Lmxlbmd0aCA+IDAgJiYgXy5zZXJpZXM/LnNvbWUoXyA9PiBfLmRhdGE/Lmxlbmd0aCA+IDApKVxuICAgICk7XG4gIH1cblxuICByZXNldFpvb20oKSB7XG4gICAgdGhpcy5zY2FsZVNlcnZpY2UucmVzZXRab29tKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb21TZXJ2aWNlSW5zdGFuY2UuZW1pdCh0aGlzLnpvb21TZXJ2aWNlKTtcbiAgICB0aGlzLmJydXNoU2VydmljZUluc3RhbmNlLmVtaXQodGhpcy5icnVzaFNlcnZpY2UpO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucG9pbnRlck1vdmVcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMsIHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IFtQb2ludGVyRXZlbnQsIElTY2FsZXNNYXAsIElDaGFydENvbmZpZ10pID0+IHtcbiAgICAgICAgY29uc3QgW2V2ZW50LCB7IHgsIHkgfSwgY29uZmlnXSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBUcmFja2luZyA9IGNvbmZpZz8udG9vbHRpcD8udHJhY2tpbmc7XG4gICAgICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy55KSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgICB5LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUuYmFuZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUuc2NhbGUuaW52ZXJ0KGV2ZW50Lm9mZnNldFkpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBvaW50ZXJNb3ZlLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiByZXN1bHQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbiAgICAgICAgICB4LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUuYmFuZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUuc2NhbGUuaW52ZXJ0KGV2ZW50Lm9mZnNldFgpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBvaW50ZXJNb3ZlLmVtaXQoe1xuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0OiByZXN1bHQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucGxvdEJhbmRFdmVudFxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMucGxvdEJhbmRzTW92ZS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5wbG90TGluZU1vdmVcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLnBsb3RMaW5lc01vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucG9pbnRNb3ZlXG4gICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5wb2ludE1vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UuY2hhcnRDbGlja1xuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuY2hhcnRDbGljay5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5jaGFydENvbnRleHRNZW51XG4gICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5jaGFydENvbnRleHRNZW51LmVtaXQoXyk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnBsb3RCYW5kQ2xpY2tcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLnBsb3RCYW5kQ2xpY2suZW1pdChfKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5jaGFydFNlcnZpY2UucGxvdEJhbmRDb250ZXh0TWVudVxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMucGxvdEJhbmRDb250ZXh0TWVudS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uQ29udGV4dE1lbnVcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLmFubm90YXRpb25Db250ZXh0TWVudS5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uQ2xpY2tcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICB0aGlzLmFubm90YXRpb25DbGljay5lbWl0KF8pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmNoYXJ0U2VydmljZS5hbm5vdGF0aW9uTW92ZVxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMuYW5ub3RhdGlvbk1vdmUuZW1pdChfKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIntcbiAgaGFzU2VyaWVzRGF0YTogaGFzU2VyaWVzRGF0YSB8IGFzeW5jLFxuICBzdmNDb25maWc6IHN2Y0NvbmZpZyB8IGFzeW5jXG59IGFzIGRhdGFcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuaGFzU2VyaWVzRGF0YSA9PT0gdHJ1ZSBlbHNlIG5vRGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG9cIj5cbiAgICAgIDx0ZXRhLWNoYXJ0LWNvbnRhaW5lciBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lciBwb3NpdGlvbi1yZWxhdGl2ZVwiPjwvdGV0YS1jaGFydC1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHRldGEtbGVnZW5kICpuZ0lmPVwiZGF0YS5zdmNDb25maWcubGVnZW5kPy5lbmFibGUgPT09IHRydWVcIiBbc2VyaWVzXT1cImRhdGEuc3ZjQ29uZmlnLnNlcmllc1wiPjwvdGV0YS1sZWdlbmQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI25vRGF0YT5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5fYXV0byBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb250LWJvZHktMyBjb2xvci10ZXh0LTQwIG92ZXJmbG93LWhpZGRlbiB0ZXh0LW92ZXJmbG93LWVsbGlwc2lzIG5vd3JhcCB0ZXh0LWFsaWduLWNlbnRlclwiPlxuICAgICAgPGRpdiAjcmVmPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIXJlZi5oYXNDaGlsZE5vZGVzKClcIj5cbiAgICAgICAgTm8gZGF0YVxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19