@taiga-ui/addon-charts 3.23.1 → 3.24.0-dev.main-cf04d14

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.
@@ -1,4 +1,4 @@
1
- import { AfterContentInit, NgZone, QueryList, Renderer2 } from '@angular/core';
1
+ import { AfterViewInit, NgZone, QueryList, Renderer2 } from '@angular/core';
2
2
  import { TuiLineChartHintContext } from '@taiga-ui/addon-charts/interfaces';
3
3
  import { TuiContextWithImplicit, TuiDestroyService } from '@taiga-ui/cdk';
4
4
  import { TuiPoint } from '@taiga-ui/core';
@@ -6,7 +6,7 @@ import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus';
6
6
  import { Observable } from 'rxjs';
7
7
  import { TuiLineChartComponent } from './line-chart.component';
8
8
  import * as i0 from "@angular/core";
9
- export declare class TuiLineChartHintDirective implements AfterContentInit {
9
+ export declare class TuiLineChartHintDirective implements AfterViewInit {
10
10
  private readonly renderer;
11
11
  private readonly destroy$;
12
12
  private readonly ngZone;
@@ -15,7 +15,7 @@ export declare class TuiLineChartHintDirective implements AfterContentInit {
15
15
  private readonly chartsRef;
16
16
  hint: PolymorpheusContent<TuiContextWithImplicit<readonly TuiPoint[]>>;
17
17
  constructor(renderer: Renderer2, destroy$: TuiDestroyService, ngZone: NgZone, hovered$: Observable<boolean>);
18
- ngAfterContentInit(): void;
18
+ ngAfterViewInit(): void;
19
19
  getContext(index: number, _chart: TuiLineChartComponent): TuiLineChartHintContext<readonly TuiPoint[]>;
20
20
  raise(index: number, _chart: TuiLineChartComponent): void;
21
21
  private computeContext;
@@ -25,7 +25,7 @@ const GAP = {
25
25
  xl: 0.25,
26
26
  };
27
27
  export class TuiArcChartComponent {
28
- constructor(sanitizer, changeDetectorRef) {
28
+ constructor(sanitizer, cdr) {
29
29
  this.sanitizer = sanitizer;
30
30
  this.arcs$ = new ReplaySubject(1);
31
31
  this.value = [];
@@ -41,7 +41,7 @@ export class TuiArcChartComponent {
41
41
  // So initial animation works
42
42
  setTimeout(() => {
43
43
  this.initialized = true;
44
- changeDetectorRef.markForCheck();
44
+ cdr.markForCheck();
45
45
  });
46
46
  }
47
47
  set arcs(arcs) {
@@ -139,4 +139,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
139
139
  function arcsToIndex(arcs) {
140
140
  return arcs.map(({ nativeElement }, index) => merge(tuiTypedFromEvent(nativeElement, 'mouseenter').pipe(map(() => index)), tuiTypedFromEvent(nativeElement, 'mouseleave').pipe(map(() => NaN))));
141
141
  }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNoYXJ0cy9jb21wb25lbnRzL2FyYy1jaGFydC9hcmMtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY2hhcnRzL2NvbXBvbmVudHMvYXJjLWNoYXJ0L2FyYy1jaGFydC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUMsS0FBSyxFQUFjLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFOUQsNEJBQTRCO0FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQztBQUVqQixNQUFNLElBQUksR0FBOEI7SUFDcEMsQ0FBQyxFQUFFLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBRTtJQUNMLEVBQUUsRUFBRSxFQUFFO0NBQ1QsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUE4QjtJQUNyQyxDQUFDLEVBQUUsSUFBSTtJQUNQLENBQUMsRUFBRSxLQUFLO0lBQ1IsRUFBRSxFQUFFLE1BQU07Q0FDYixDQUFDO0FBRUYsTUFBTSxHQUFHLEdBQThCO0lBQ25DLENBQUMsRUFBRSxLQUFLO0lBQ1IsQ0FBQyxFQUFFLE1BQU07SUFDVCxF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QWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3JFLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3RFLENBQ0osQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVZhbHVlfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7dHVpRGVmYXVsdFByb3AsIHR1aVR5cGVkRnJvbUV2ZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VHVpU2l6ZVhMfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge21lcmdlLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8vIDMvNCB3aXRoIDElIHNhZmV0eSBvZmZzZXRcbmNvbnN0IEFSQyA9IDAuNzY7XG5cbmNvbnN0IFNJWkU6IFJlY29yZDxUdWlTaXplWEwsIG51bWJlcj4gPSB7XG4gICAgbTogOSxcbiAgICBsOiAxMSxcbiAgICB4bDogMTYsXG59O1xuXG5jb25zdCBXSURUSDogUmVjb3JkPFR1aVNpemVYTCwgbnVtYmVyPiA9IHtcbiAgICBtOiAwLjI1LFxuICAgIGw6IDAuMzc1LFxuICAgIHhsOiAwLjU2MjUsXG59O1xuXG5jb25zdCBHQVA6IFJlY29yZDxUdWlTaXplWEwsIG51bWJlcj4gPSB7XG4gICAgbTogMC4xMjUsXG4gICAgbDogMC4xODc1LFxuICAgIHhsOiAwLjI1LFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktYXJjLWNoYXJ0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXJjLWNoYXJ0LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FyYy1jaGFydC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFR1aUFyY0NoYXJ0Q29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFyY3MkID0gbmV3IFJlcGxheVN1YmplY3Q8UXVlcnlMaXN0PEVsZW1lbnRSZWY8U1ZHRWxlbWVudD4+PigxKTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2FyYycpXG4gICAgc2V0IGFyY3MoYXJjczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8U1ZHRWxlbWVudD4+KSB7XG4gICAgICAgIHRoaXMuYXJjcyQubmV4dChhcmNzKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgdmFsdWU6IHJlYWRvbmx5IG51bWJlcltdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc2l6ZTogVHVpU2l6ZVhMID0gJ20nO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heCA9IDEwMDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtaW5MYWJlbCA9ICcwJSc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4TGFiZWwgPSAnMTAwJSc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgYWN0aXZlSXRlbUluZGV4ID0gTmFOO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlSXRlbUluZGV4Q2hhbmdlID0gdGhpcy5hcmNzJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoYXJjcyA9PlxuICAgICAgICAgICAgYXJjcy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi5hcmNzVG9JbmRleChhcmNzKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKGluZGV4ID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbUluZGV4ID0gaW5kZXg7XG4gICAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRG9tU2FuaXRpemVyKSBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7XG4gICAgICAgIC8vIFNvIGluaXRpYWwgYW5pbWF0aW9uIHdvcmtzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICBjaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS53aWR0aC5yZW0nKVxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0LnJlbScpXG4gICAgZ2V0IHdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBTSVpFW3RoaXMuc2l6ZV07XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5zdHJva2VXaWR0aC5yZW0nKVxuICAgIGdldCBzdHJva2VXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gV0lEVEhbdGhpcy5zaXplXTtcbiAgICB9XG5cbiAgICBpc0luYWN0aXZlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFOdW1iZXIuaXNOYU4odGhpcy5hY3RpdmVJdGVtSW5kZXgpICYmIGluZGV4ICE9PSB0aGlzLmFjdGl2ZUl0ZW1JbmRleDtcbiAgICB9XG5cbiAgICBnZXRJbnNldChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3Ryb2tlV2lkdGggLyAyICsgaW5kZXggKiAodGhpcy5zdHJva2VXaWR0aCArIEdBUFt0aGlzLnNpemVdKTtcbiAgICB9XG5cbiAgICBnZXREaWFtZXRlcihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFNJWkVbdGhpcy5zaXplXSAtIDIgKiB0aGlzLmdldEluc2V0KGluZGV4KTtcbiAgICB9XG5cbiAgICBnZXRMZW5ndGgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLlBJICogdGhpcy5nZXREaWFtZXRlcihpbmRleCkgKiBBUkM7XG4gICAgfVxuXG4gICAgZ2V0T2Zmc2V0KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRMZW5ndGgoaW5kZXgpICogKDEgLSBNYXRoLm1pbih0aGlzLnZhbHVlW2luZGV4XSAvIHRoaXMubWF4LCAxKSk7XG4gICAgfVxuXG4gICAgZ2V0Q29sb3IoaW5kZXg6IG51bWJlcik6IFNhZmVWYWx1ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoXG4gICAgICAgICAgICBgdmFyKC0tdHVpLWNoYXJ0LSR7aW5kZXh9LCB2YXIoLS10dWktc3VwcG9ydC0wJHtpbmRleCArIDF9KSlgLFxuICAgICAgICApO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYXJjc1RvSW5kZXgoYXJjczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8U1ZHRWxlbWVudD4+KTogQXJyYXk8T2JzZXJ2YWJsZTxudW1iZXI+PiB7XG4gICAgcmV0dXJuIGFyY3MubWFwKCh7bmF0aXZlRWxlbWVudH0sIGluZGV4KSA9PlxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIHR1aVR5cGVkRnJvbUV2ZW50KG5hdGl2ZUVsZW1lbnQsICdtb3VzZWVudGVyJykucGlwZShtYXAoKCkgPT4gaW5kZXgpKSxcbiAgICAgICAgICAgIHR1aVR5cGVkRnJvbUV2ZW50KG5hdGl2ZUVsZW1lbnQsICdtb3VzZWxlYXZlJykucGlwZShtYXAoKCkgPT4gTmFOKSksXG4gICAgICAgICksXG4gICAgKTtcbn1cbiIsIjxzdmdcbiAgICAqdHVpUmVwZWF0VGltZXM9XCJsZXQgaW5kZXggb2YgdmFsdWUubGVuZ3RoXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICB2aWV3Qm94PVwiLTEwMCAtMTAwIDIwMCAyMDBcIlxuICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICBjbGFzcz1cInQtc3ZnXCJcbiAgICBbc3R5bGUudG9wLmVtXT1cImdldEluc2V0KGluZGV4KVwiXG4gICAgW3N0eWxlLmxlZnQuZW1dPVwiZ2V0SW5zZXQoaW5kZXgpXCJcbiAgICBbc3R5bGUud2lkdGguZW1dPVwiZ2V0RGlhbWV0ZXIoaW5kZXgpXCJcbiAgICBbc3R5bGUuaGVpZ2h0LmVtXT1cImdldERpYW1ldGVyKGluZGV4KVwiXG4+XG4gICAgPHBhdGhcbiAgICAgICAgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiXG4gICAgICAgIGQ9XCJNIC03MCA3MCBBIDEwMCAxMDAgMCAxIDEgNzAgNzBcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICAgI2FyY1xuICAgICAgICB2ZWN0b3ItZWZmZWN0PVwibm9uLXNjYWxpbmctc3Ryb2tlXCJcbiAgICAgICAgZD1cIk0gLTcwIDcwIEEgMTAwIDEwMCAwIDEgMSA3MCA3MFwiXG4gICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgIFtjbGFzcy50LXZhbHVlX2luYWN0aXZlXT1cImlzSW5hY3RpdmUoaW5kZXgpXCJcbiAgICAgICAgW3N0eWxlLnN0cm9rZV09XCJnZXRDb2xvcihpbmRleClcIlxuICAgICAgICBbc3R5bGUuc3Ryb2tlRGFzaGFycmF5LmVtXT1cImdldExlbmd0aChpbmRleClcIlxuICAgICAgICBbc3R5bGUuc3Ryb2tlRGFzaG9mZnNldC5lbV09XCJpbml0aWFsaXplZCA/IGdldE9mZnNldChpbmRleCkgOiBnZXRMZW5ndGgoaW5kZXgpXCJcbiAgICAvPlxuPC9zdmc+XG48ZGl2IGNsYXNzPVwidC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInQtd3JhcHBlclwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ0LXBlcmNlbnRcIj5cbiAgICA8c3Bhbj57eyBtaW5MYWJlbCB9fTwvc3Bhbj5cbiAgICA8c3Bhbj57eyBtYXhMYWJlbCB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNoYXJ0cy9jb21wb25lbnRzL2FyYy1jaGFydC9hcmMtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY2hhcnRzL2NvbXBvbmVudHMvYXJjLWNoYXJ0L2FyYy1jaGFydC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUMsS0FBSyxFQUFjLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFOUQsNEJBQTRCO0FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQztBQUVqQixNQUFNLElBQUksR0FBOEI7SUFDcEMsQ0FBQyxFQUFFLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBRTtJQUNMLEVBQUUsRUFBRSxFQUFFO0NBQ1QsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUE4QjtJQUNyQyxDQUFDLEVBQUUsSUFBSTtJQUNQLENBQUMsRUFBRSxLQUFLO0lBQ1IsRUFBRSxFQUFFLE1BQU07Q0FDYixDQUFDO0FBRUYsTUFBTSxHQUFHLEdBQThCO0lBQ25DLENBQUMsRUFBRSxLQUFLO0lBQ1IsQ0FBQyxFQUFFLE1BQU07SUFDVCxF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QUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDckUsaUJBQWlCLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDdEUsQ0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlVmFsdWV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHt0dWlEZWZhdWx0UHJvcCwgdHVpVHlwZWRGcm9tRXZlbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUdWlTaXplWEx9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7bWVyZ2UsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLy8gMy80IHdpdGggMSUgc2FmZXR5IG9mZnNldFxuY29uc3QgQVJDID0gMC43NjtcblxuY29uc3QgU0laRTogUmVjb3JkPFR1aVNpemVYTCwgbnVtYmVyPiA9IHtcbiAgICBtOiA5LFxuICAgIGw6IDExLFxuICAgIHhsOiAxNixcbn07XG5cbmNvbnN0IFdJRFRIOiBSZWNvcmQ8VHVpU2l6ZVhMLCBudW1iZXI+ID0ge1xuICAgIG06IDAuMjUsXG4gICAgbDogMC4zNzUsXG4gICAgeGw6IDAuNTYyNSxcbn07XG5cbmNvbnN0IEdBUDogUmVjb3JkPFR1aVNpemVYTCwgbnVtYmVyPiA9IHtcbiAgICBtOiAwLjEyNSxcbiAgICBsOiAwLjE4NzUsXG4gICAgeGw6IDAuMjUsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1hcmMtY2hhcnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcmMtY2hhcnQudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXJjLWNoYXJ0LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQXJjQ2hhcnRDb21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXJjcyQgPSBuZXcgUmVwbGF5U3ViamVjdDxRdWVyeUxpc3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4+KDEpO1xuXG4gICAgQFZpZXdDaGlsZHJlbignYXJjJylcbiAgICBzZXQgYXJjcyhhcmNzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4pIHtcbiAgICAgICAgdGhpcy5hcmNzJC5uZXh0KGFyY3MpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB2YWx1ZTogcmVhZG9ubHkgbnVtYmVyW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzaXplOiBUdWlTaXplWEwgPSAnbSc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4ID0gMTAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1pbkxhYmVsID0gJzAlJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtYXhMYWJlbCA9ICcxMDAlJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBhY3RpdmVJdGVtSW5kZXggPSBOYU47XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBhY3RpdmVJdGVtSW5kZXhDaGFuZ2UgPSB0aGlzLmFyY3MkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChhcmNzID0+XG4gICAgICAgICAgICBhcmNzLmNoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IG1lcmdlKC4uLmFyY3NUb0luZGV4KGFyY3MpKSksXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICB0YXAoaW5kZXggPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtSW5kZXggPSBpbmRleDtcbiAgICAgICAgfSksXG4gICAgKTtcblxuICAgIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChEb21TYW5pdGl6ZXIpIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7XG4gICAgICAgIC8vIFNvIGluaXRpYWwgYW5pbWF0aW9uIHdvcmtzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICBjZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgucmVtJylcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodC5yZW0nKVxuICAgIGdldCB3aWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gU0laRVt0aGlzLnNpemVdO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuc3Ryb2tlV2lkdGgucmVtJylcbiAgICBnZXQgc3Ryb2tlV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFdJRFRIW3RoaXMuc2l6ZV07XG4gICAgfVxuXG4gICAgaXNJbmFjdGl2ZShpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhTnVtYmVyLmlzTmFOKHRoaXMuYWN0aXZlSXRlbUluZGV4KSAmJiBpbmRleCAhPT0gdGhpcy5hY3RpdmVJdGVtSW5kZXg7XG4gICAgfVxuXG4gICAgZ2V0SW5zZXQoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cm9rZVdpZHRoIC8gMiArIGluZGV4ICogKHRoaXMuc3Ryb2tlV2lkdGggKyBHQVBbdGhpcy5zaXplXSk7XG4gICAgfVxuXG4gICAgZ2V0RGlhbWV0ZXIoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBTSVpFW3RoaXMuc2l6ZV0gLSAyICogdGhpcy5nZXRJbnNldChpbmRleCk7XG4gICAgfVxuXG4gICAgZ2V0TGVuZ3RoKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5QSSAqIHRoaXMuZ2V0RGlhbWV0ZXIoaW5kZXgpICogQVJDO1xuICAgIH1cblxuICAgIGdldE9mZnNldChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGVuZ3RoKGluZGV4KSAqICgxIC0gTWF0aC5taW4odGhpcy52YWx1ZVtpbmRleF0gLyB0aGlzLm1heCwgMSkpO1xuICAgIH1cblxuICAgIGdldENvbG9yKGluZGV4OiBudW1iZXIpOiBTYWZlVmFsdWUge1xuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKFxuICAgICAgICAgICAgYHZhcigtLXR1aS1jaGFydC0ke2luZGV4fSwgdmFyKC0tdHVpLXN1cHBvcnQtMCR7aW5kZXggKyAxfSkpYCxcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFyY3NUb0luZGV4KGFyY3M6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPFNWR0VsZW1lbnQ+Pik6IEFycmF5PE9ic2VydmFibGU8bnVtYmVyPj4ge1xuICAgIHJldHVybiBhcmNzLm1hcCgoe25hdGl2ZUVsZW1lbnR9LCBpbmRleCkgPT5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICB0dWlUeXBlZEZyb21FdmVudChuYXRpdmVFbGVtZW50LCAnbW91c2VlbnRlcicpLnBpcGUobWFwKCgpID0+IGluZGV4KSksXG4gICAgICAgICAgICB0dWlUeXBlZEZyb21FdmVudChuYXRpdmVFbGVtZW50LCAnbW91c2VsZWF2ZScpLnBpcGUobWFwKCgpID0+IE5hTikpLFxuICAgICAgICApLFxuICAgICk7XG59XG4iLCI8c3ZnXG4gICAgKnR1aVJlcGVhdFRpbWVzPVwibGV0IGluZGV4IG9mIHZhbHVlLmxlbmd0aFwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgdmlld0JveD1cIi0xMDAgLTEwMCAyMDAgMjAwXCJcbiAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgY2xhc3M9XCJ0LXN2Z1wiXG4gICAgW3N0eWxlLnRvcC5lbV09XCJnZXRJbnNldChpbmRleClcIlxuICAgIFtzdHlsZS5sZWZ0LmVtXT1cImdldEluc2V0KGluZGV4KVwiXG4gICAgW3N0eWxlLndpZHRoLmVtXT1cImdldERpYW1ldGVyKGluZGV4KVwiXG4gICAgW3N0eWxlLmhlaWdodC5lbV09XCJnZXREaWFtZXRlcihpbmRleClcIlxuPlxuICAgIDxwYXRoXG4gICAgICAgIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIlxuICAgICAgICBkPVwiTSAtNzAgNzAgQSAxMDAgMTAwIDAgMSAxIDcwIDcwXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICAgICNhcmNcbiAgICAgICAgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiXG4gICAgICAgIGQ9XCJNIC03MCA3MCBBIDEwMCAxMDAgMCAxIDEgNzAgNzBcIlxuICAgICAgICBjbGFzcz1cInQtdmFsdWVcIlxuICAgICAgICBbY2xhc3MudC12YWx1ZV9pbmFjdGl2ZV09XCJpc0luYWN0aXZlKGluZGV4KVwiXG4gICAgICAgIFtzdHlsZS5zdHJva2VdPVwiZ2V0Q29sb3IoaW5kZXgpXCJcbiAgICAgICAgW3N0eWxlLnN0cm9rZURhc2hhcnJheS5lbV09XCJnZXRMZW5ndGgoaW5kZXgpXCJcbiAgICAgICAgW3N0eWxlLnN0cm9rZURhc2hvZmZzZXQuZW1dPVwiaW5pdGlhbGl6ZWQgPyBnZXRPZmZzZXQoaW5kZXgpIDogZ2V0TGVuZ3RoKGluZGV4KVwiXG4gICAgLz5cbjwvc3ZnPlxuPGRpdiBjbGFzcz1cInQtY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0LXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidC1wZXJjZW50XCI+XG4gICAgPHNwYW4+e3sgbWluTGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4+e3sgbWF4TGFiZWwgfX08L3NwYW4+XG48L2Rpdj5cbiJdfQ==
@@ -19,7 +19,7 @@ export class TuiLineChartHintDirective {
19
19
  this.chartsRef = EMPTY_QUERY;
20
20
  this.hint = '';
21
21
  }
22
- ngAfterContentInit() {
22
+ ngAfterViewInit() {
23
23
  combineLatest([tuiLineChartDrivers(this.charts), this.hovered$])
24
24
  .pipe(filter(result => !result.some(Boolean)), tuiZonefree(this.ngZone), takeUntil(this.destroy$))
25
25
  .subscribe(() => {
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
85
85
  export function tuiLineChartDrivers(charts) {
86
86
  return combineLatest(charts.map(({ drivers }) => tuiQueryListChanges(drivers).pipe(map(drivers => drivers.map(driver => driver.pipe(startWith(false))))))).pipe(map(all => all.reduce((acc, drivers) => acc.concat(drivers), [])), switchMap(drivers => combineLatest(drivers)), map(values => values.some(Boolean)), distinctUntilChanged());
87
87
  }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC1oaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNoYXJ0cy9jb21wb25lbnRzL2xpbmUtY2hhcnQvbGluZS1jaGFydC1oaW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsSUFBSSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxXQUFXLEVBRVgsY0FBYyxFQUNkLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLGFBQWEsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4Qiw0Q0FBNEM7QUFDNUMsMkNBQTJDO0FBQzNDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7O0FBTTdELE1BQU0sT0FBTyx5QkFBeUI7SUFXbEMsWUFDd0MsUUFBbUIsRUFDSCxRQUEyQixFQUM5QyxNQUFjLEVBQ0gsUUFBNkI7UUFIckMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNILGFBQVEsR0FBUixRQUFRLENBQW1CO1FBQzlDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDSCxhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQWI1RCxXQUFNLEdBQXFDLFdBQVcsQ0FBQztRQUd2RCxjQUFTLEdBQXVDLFdBQVcsQ0FBQztRQUk3RSxTQUFJLEdBQXFFLEVBQUUsQ0FBQztJQU96RSxD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ekIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUM7Z0JBSzVFLElBQUk7c0JBRkgsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBK0NqQixjQUFjO0FBVzFCLE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsTUFBNEQ7SUFFNUQsT0FBTyxhQUFhLENBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUUsQ0FDckIsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM3QixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3ZFLENBQ0osQ0FDSixDQUFDLElBQUksQ0FDRixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUNqRSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDNUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUNuQyxvQkFBb0IsRUFBRSxDQUN6QixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1R1aUxpbmVDaGFydEhpbnRDb250ZXh0fSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY2hhcnRzL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBFTVBUWV9RVUVSWSxcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgIFR1aUhvdmVyZWRTZXJ2aWNlLFxuICAgIHR1aVB1cmUsXG4gICAgdHVpUXVlcnlMaXN0Q2hhbmdlcyxcbiAgICB0dWlab25lZnJlZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1R1aVBvaW50fSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgbWFwLFxuICAgIHN0YXJ0V2l0aCxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8vIFRPRE86IGZpbmQgdGhlIGJlc3Qgd2F5IGZvciBwcmV2ZW50IGN5Y2xlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQge1R1aUxpbmVDaGFydENvbXBvbmVudH0gZnJvbSAnLi9saW5lLWNoYXJ0LmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3R1aUxpbmVDaGFydEhpbnRdJyxcbiAgICBwcm92aWRlcnM6IFtUdWlEZXN0cm95U2VydmljZSwgVHVpSG92ZXJlZFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlMaW5lQ2hhcnRIaW50RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFR1aUxpbmVDaGFydENvbXBvbmVudCkpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFydHM6IFF1ZXJ5TGlzdDxUdWlMaW5lQ2hhcnRDb21wb25lbnQ+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gVHVpTGluZUNoYXJ0Q29tcG9uZW50KSwge3JlYWQ6IEVsZW1lbnRSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhcnRzUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBASW5wdXQoJ3R1aUxpbmVDaGFydEhpbnQnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaGludDogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PHJlYWRvbmx5IFR1aVBvaW50W10+PiA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoUmVuZGVyZXIyKSBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBTZWxmKCkgQEluamVjdChUdWlEZXN0cm95U2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JDogVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTmdab25lKSBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFR1aUhvdmVyZWRTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGhvdmVyZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+LFxuICAgICkge31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29tYmluZUxhdGVzdChbdHVpTGluZUNoYXJ0RHJpdmVycyh0aGlzLmNoYXJ0cyksIHRoaXMuaG92ZXJlZCRdKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKHJlc3VsdCA9PiAhcmVzdWx0LnNvbWUoQm9vbGVhbikpLFxuICAgICAgICAgICAgICAgIHR1aVpvbmVmcmVlKHRoaXMubmdab25lKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYXJ0cy5mb3JFYWNoKGNoYXJ0ID0+IGNoYXJ0Lm9uSG92ZXJlZChOYU4pKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIF9jaGFydCBpcyByZXF1aXJlZCBieSBUdWlMaW5lRGF5c0NoYXJ0Q29tcG9uZW50IHRoYXQgaW1wZXJzb25hdGVzIHRoaXMgZGlyZWN0aXZlXG4gICAgZ2V0Q29udGV4dChcbiAgICAgICAgaW5kZXg6IG51bWJlcixcbiAgICAgICAgX2NoYXJ0OiBUdWlMaW5lQ2hhcnRDb21wb25lbnQsXG4gICAgKTogVHVpTGluZUNoYXJ0SGludENvbnRleHQ8cmVhZG9ubHkgVHVpUG9pbnRbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlQ29udGV4dChpbmRleCwgdGhpcy5jaGFydHMpO1xuICAgIH1cblxuICAgIC8vIF9jaGFydCBpcyByZXF1aXJlZCBieSBUdWlMaW5lRGF5c0NoYXJ0Q29tcG9uZW50IHRoYXQgaW1wZXJzb25hdGVzIHRoaXMgZGlyZWN0aXZlXG4gICAgcmFpc2UoaW5kZXg6IG51bWJlciwgX2NoYXJ0OiBUdWlMaW5lQ2hhcnRDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuY2hhcnRzLm1hcChjaGFydCA9PiBjaGFydC52YWx1ZVtpbmRleF0pO1xuICAgICAgICBjb25zdCBzb3J0ZWQgPSBbLi4uY3VycmVudF0uc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pO1xuXG4gICAgICAgIHRoaXMuY2hhcnRzLmZvckVhY2goY2hhcnQgPT4gY2hhcnQub25Ib3ZlcmVkKGluZGV4KSk7XG4gICAgICAgIHRoaXMuY2hhcnRzUmVmLmZvckVhY2goKHtuYXRpdmVFbGVtZW50fSwgaW5kZXgpID0+XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ3otaW5kZXgnLFxuICAgICAgICAgICAgICAgIHNvcnRlZC5pbmRleE9mKGN1cnJlbnRbaW5kZXhdKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNvbXB1dGVDb250ZXh0KFxuICAgICAgICBpbmRleDogbnVtYmVyLFxuICAgICAgICBjaGFydHM6IFF1ZXJ5TGlzdDxUdWlMaW5lQ2hhcnRDb21wb25lbnQ+LFxuICAgICk6IFR1aUxpbmVDaGFydEhpbnRDb250ZXh0PHJlYWRvbmx5IFR1aVBvaW50W10+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRpbXBsaWNpdDogY2hhcnRzLm1hcChjaGFydCA9PiBjaGFydC52YWx1ZVtpbmRleF0pLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpTGluZUNoYXJ0RHJpdmVycyhcbiAgICBjaGFydHM6IFF1ZXJ5TGlzdDx7ZHJpdmVyczogUXVlcnlMaXN0PE9ic2VydmFibGU8Ym9vbGVhbj4+fT4sXG4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChcbiAgICAgICAgY2hhcnRzLm1hcCgoe2RyaXZlcnN9KSA9PlxuICAgICAgICAgICAgdHVpUXVlcnlMaXN0Q2hhbmdlcyhkcml2ZXJzKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChkcml2ZXJzID0+IGRyaXZlcnMubWFwKGRyaXZlciA9PiBkcml2ZXIucGlwZShzdGFydFdpdGgoZmFsc2UpKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICApLnBpcGUoXG4gICAgICAgIG1hcChhbGwgPT4gYWxsLnJlZHVjZSgoYWNjLCBkcml2ZXJzKSA9PiBhY2MuY29uY2F0KGRyaXZlcnMpLCBbXSkpLFxuICAgICAgICBzd2l0Y2hNYXAoZHJpdmVycyA9PiBjb21iaW5lTGF0ZXN0KGRyaXZlcnMpKSxcbiAgICAgICAgbWFwKHZhbHVlcyA9PiB2YWx1ZXMuc29tZShCb29sZWFuKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgKTtcbn1cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC1oaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNoYXJ0cy9jb21wb25lbnRzL2xpbmUtY2hhcnQvbGluZS1jaGFydC1oaW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsSUFBSSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxXQUFXLEVBRVgsY0FBYyxFQUNkLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLGFBQWEsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEdBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4Qiw0Q0FBNEM7QUFDNUMsMkNBQTJDO0FBQzNDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7O0FBTTdELE1BQU0sT0FBTyx5QkFBeUI7SUFXbEMsWUFDd0MsUUFBbUIsRUFDSCxRQUEyQixFQUM5QyxNQUFjLEVBQ0gsUUFBNkI7UUFIckMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNILGFBQVEsR0FBUixRQUFRLENBQW1CO1FBQzlDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDSCxhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQWI1RCxXQUFNLEdBQXFDLFdBQVcsQ0FBQztRQUd2RCxjQUFTLEdBQXVDLFdBQVcsQ0FBQztRQUk3RSxTQUFJLEdBQXFFLEVBQUUsQ0FBQztJQU96RSxD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LGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDO2dCQUs1RSxJQUFJO3NCQUZILEtBQUs7dUJBQUMsa0JBQWtCO2dCQStDakIsY0FBYztBQVcxQixNQUFNLFVBQVUsbUJBQW1CLENBQy9CLE1BQTREO0lBRTVELE9BQU8sYUFBYSxDQUNoQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFFLENBQ3JCLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDN0IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN2RSxDQUNKLENBQ0osQ0FBQyxJQUFJLENBQ0YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDakUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDbkMsb0JBQW9CLEVBQUUsQ0FDekIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUdWlMaW5lQ2hhcnRIaW50Q29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNoYXJ0cy9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgRU1QVFlfUVVFUlksXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlEZXN0cm95U2VydmljZSxcbiAgICBUdWlIb3ZlcmVkU2VydmljZSxcbiAgICB0dWlQdXJlLFxuICAgIHR1aVF1ZXJ5TGlzdENoYW5nZXMsXG4gICAgdHVpWm9uZWZyZWUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUdWlQb2ludH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZmlsdGVyLFxuICAgIG1hcCxcbiAgICBzdGFydFdpdGgsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBUT0RPOiBmaW5kIHRoZSBiZXN0IHdheSBmb3IgcHJldmVudCBjeWNsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHtUdWlMaW5lQ2hhcnRDb21wb25lbnR9IGZyb20gJy4vbGluZS1jaGFydC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0dWlMaW5lQ2hhcnRIaW50XScsXG4gICAgcHJvdmlkZXJzOiBbVHVpRGVzdHJveVNlcnZpY2UsIFR1aUhvdmVyZWRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTGluZUNoYXJ0SGludERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBUdWlMaW5lQ2hhcnRDb21wb25lbnQpKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhcnRzOiBRdWVyeUxpc3Q8VHVpTGluZUNoYXJ0Q29tcG9uZW50PiA9IEVNUFRZX1FVRVJZO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFR1aUxpbmVDaGFydENvbXBvbmVudCksIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0c1JlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PiA9IEVNUFRZX1FVRVJZO1xuXG4gICAgQElucHV0KCd0dWlMaW5lQ2hhcnRIaW50JylcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGhpbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpQ29udGV4dFdpdGhJbXBsaWNpdDxyZWFkb25seSBUdWlQb2ludFtdPj4gPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFJlbmRlcmVyMikgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBAU2VsZigpIEBJbmplY3QoVHVpRGVzdHJveVNlcnZpY2UpIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQ6IFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KE5nWm9uZSkgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChUdWlIb3ZlcmVkU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBob3ZlcmVkJDogT2JzZXJ2YWJsZTxib29sZWFuPixcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3R1aUxpbmVDaGFydERyaXZlcnModGhpcy5jaGFydHMpLCB0aGlzLmhvdmVyZWQkXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihyZXN1bHQgPT4gIXJlc3VsdC5zb21lKEJvb2xlYW4pKSxcbiAgICAgICAgICAgICAgICB0dWlab25lZnJlZSh0aGlzLm5nWm9uZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFydHMuZm9yRWFjaChjaGFydCA9PiBjaGFydC5vbkhvdmVyZWQoTmFOKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBfY2hhcnQgaXMgcmVxdWlyZWQgYnkgVHVpTGluZURheXNDaGFydENvbXBvbmVudCB0aGF0IGltcGVyc29uYXRlcyB0aGlzIGRpcmVjdGl2ZVxuICAgIGdldENvbnRleHQoXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICAgIF9jaGFydDogVHVpTGluZUNoYXJ0Q29tcG9uZW50LFxuICAgICk6IFR1aUxpbmVDaGFydEhpbnRDb250ZXh0PHJlYWRvbmx5IFR1aVBvaW50W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZUNvbnRleHQoaW5kZXgsIHRoaXMuY2hhcnRzKTtcbiAgICB9XG5cbiAgICAvLyBfY2hhcnQgaXMgcmVxdWlyZWQgYnkgVHVpTGluZURheXNDaGFydENvbXBvbmVudCB0aGF0IGltcGVyc29uYXRlcyB0aGlzIGRpcmVjdGl2ZVxuICAgIHJhaXNlKGluZGV4OiBudW1iZXIsIF9jaGFydDogVHVpTGluZUNoYXJ0Q29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmNoYXJ0cy5tYXAoY2hhcnQgPT4gY2hhcnQudmFsdWVbaW5kZXhdKTtcbiAgICAgICAgY29uc3Qgc29ydGVkID0gWy4uLmN1cnJlbnRdLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcblxuICAgICAgICB0aGlzLmNoYXJ0cy5mb3JFYWNoKGNoYXJ0ID0+IGNoYXJ0Lm9uSG92ZXJlZChpbmRleCkpO1xuICAgICAgICB0aGlzLmNoYXJ0c1JlZi5mb3JFYWNoKCh7bmF0aXZlRWxlbWVudH0sIGluZGV4KSA9PlxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICd6LWluZGV4JyxcbiAgICAgICAgICAgICAgICBzb3J0ZWQuaW5kZXhPZihjdXJyZW50W2luZGV4XSksXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjb21wdXRlQ29udGV4dChcbiAgICAgICAgaW5kZXg6IG51bWJlcixcbiAgICAgICAgY2hhcnRzOiBRdWVyeUxpc3Q8VHVpTGluZUNoYXJ0Q29tcG9uZW50PixcbiAgICApOiBUdWlMaW5lQ2hhcnRIaW50Q29udGV4dDxyZWFkb25seSBUdWlQb2ludFtdPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IGNoYXJ0cy5tYXAoY2hhcnQgPT4gY2hhcnQudmFsdWVbaW5kZXhdKSxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUxpbmVDaGFydERyaXZlcnMoXG4gICAgY2hhcnRzOiBRdWVyeUxpc3Q8e2RyaXZlcnM6IFF1ZXJ5TGlzdDxPYnNlcnZhYmxlPGJvb2xlYW4+Pn0+LFxuKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoXG4gICAgICAgIGNoYXJ0cy5tYXAoKHtkcml2ZXJzfSkgPT5cbiAgICAgICAgICAgIHR1aVF1ZXJ5TGlzdENoYW5nZXMoZHJpdmVycykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoZHJpdmVycyA9PiBkcml2ZXJzLm1hcChkcml2ZXIgPT4gZHJpdmVyLnBpcGUoc3RhcnRXaXRoKGZhbHNlKSkpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgKS5waXBlKFxuICAgICAgICBtYXAoYWxsID0+IGFsbC5yZWR1Y2UoKGFjYywgZHJpdmVycykgPT4gYWNjLmNvbmNhdChkcml2ZXJzKSwgW10pKSxcbiAgICAgICAgc3dpdGNoTWFwKGRyaXZlcnMgPT4gY29tYmluZUxhdGVzdChkcml2ZXJzKSksXG4gICAgICAgIG1hcCh2YWx1ZXMgPT4gdmFsdWVzLnNvbWUoQm9vbGVhbikpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICk7XG59XG4iXX0=
@@ -4,7 +4,7 @@ import { ChangeDetectionStrategy, Component, HostListener, Inject, Input, NgZone
4
4
  import { LOCATION } from '@ng-web-apis/common';
5
5
  import { tuiDraw, tuiPrepareExternalUrl } from '@taiga-ui/addon-charts/utils';
6
6
  import { EMPTY_QUERY, tuiDefaultProp, TuiIdService, tuiInRange, tuiIsPresent, tuiPure, tuiZoneOptimized, } from '@taiga-ui/cdk';
7
- import { TuiDriver, TuiHintOptionsDirective, tuiHintOptionsProvider, } from '@taiga-ui/core';
7
+ import { TuiHintHoverDirective, TuiHintOptionsDirective, tuiHintOptionsProvider, } from '@taiga-ui/core';
8
8
  import { Subject } from 'rxjs';
9
9
  import { distinctUntilChanged } from 'rxjs/operators';
10
10
  // TODO: find the best way for prevent cycle
@@ -140,7 +140,7 @@ export class TuiLineChartComponent {
140
140
  }
141
141
  }
142
142
  TuiLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiLineChartComponent, deps: [{ token: TuiIdService }, { token: NgZone }, { token: NgLocation }, { token: LOCATION }, { token: TuiLineChartHintDirective, optional: true }, { token: TuiHintOptionsDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
143
- TuiLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiLineChartComponent, selector: "tui-line-chart", inputs: { valueSetter: ["value", "valueSetter"], x: "x", y: "y", width: "width", height: "height", smoothingFactor: "smoothingFactor", xStringify: "xStringify", yStringify: "yStringify", filled: "filled", dots: "dots" }, host: { listeners: { "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "drivers", predicate: TuiDriver, descendants: true }], ngImport: i0, template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n height=\"100%\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n stop-color=\"currentColor\"\n offset=\"0%\"\n stop-opacity=\"0.5\"\n />\n <stop\n stop-color=\"currentColor\"\n offset=\"100%\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.fill]=\"fill\"\n [attr.d]=\"fillD\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n vector-effect=\"non-scaling-stroke\"\n stroke-width=\"2\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.left.%]=\"getLeft(point[0])\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hovered]=\"hovered === index\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [tuiHintHost]=\"hintHost\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"getContentContext(point, index)\"\n [tuiHintDescribe]=\"getHintId(index)\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [style.left.%]=\"getOffset(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [tuiFocusable]=\"isFocusable\"\n [id]=\"getHintId(index)\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;width:100%;height:100%;pointer-events:none}.t-svg{transform:scaleY(-1)}.t-column{position:absolute;top:0;height:100%;pointer-events:auto}.t-dot{position:absolute;width:.375rem;height:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;width:.5rem;height:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-base-03)}.t-line_vertical{top:0;bottom:0;left:50%;width:1px}.t-line_horizontal{z-index:-1;width:100%;height:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{box-shadow:0 .25rem 1.5rem #0000001f;position:absolute;font:var(--tui-font-text-xs);height:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-base-09);background:var(--tui-base-01);transform:translate(-50%)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"], directives: [{ type: i1.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { type: i3.TuiHintDriverDirective, selector: "[tuiHint]" }, { type: i3.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { type: i3.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { type: i3.TuiHintHostDirective, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { type: i3.TuiHintDescribeDirective, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { type: i1.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }], pipes: { "async": i2.AsyncPipe }, viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
143
+ TuiLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiLineChartComponent, selector: "tui-line-chart", inputs: { valueSetter: ["value", "valueSetter"], x: "x", y: "y", width: "width", height: "height", smoothingFactor: "smoothingFactor", xStringify: "xStringify", yStringify: "yStringify", filled: "filled", dots: "dots" }, host: { listeners: { "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "drivers", predicate: TuiHintHoverDirective, descendants: true }], ngImport: i0, template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n height=\"100%\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n stop-color=\"currentColor\"\n offset=\"0%\"\n stop-opacity=\"0.5\"\n />\n <stop\n stop-color=\"currentColor\"\n offset=\"100%\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.fill]=\"fill\"\n [attr.d]=\"fillD\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n vector-effect=\"non-scaling-stroke\"\n stroke-width=\"2\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.left.%]=\"getLeft(point[0])\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hovered]=\"hovered === index\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [tuiHintHost]=\"hintHost\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"getContentContext(point, index)\"\n [tuiHintDescribe]=\"getHintId(index)\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [style.left.%]=\"getOffset(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [tuiFocusable]=\"isFocusable\"\n [id]=\"getHintId(index)\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;width:100%;height:100%;pointer-events:none}.t-svg{transform:scaleY(-1)}.t-column{position:absolute;top:0;height:100%;pointer-events:auto}.t-dot{position:absolute;width:.375rem;height:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;width:.5rem;height:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-base-03)}.t-line_vertical{top:0;bottom:0;left:50%;width:1px}.t-line_horizontal{z-index:-1;width:100%;height:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{box-shadow:0 .25rem 1.5rem #0000001f;position:absolute;font:var(--tui-font-text-xs);height:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-base-09);background:var(--tui-base-01);transform:translate(-50%)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"], directives: [{ type: i1.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { type: i3.TuiHintDriverDirective, selector: "[tuiHint]" }, { type: i3.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { type: i3.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { type: i3.TuiHintHostDirective, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { type: i3.TuiHintDescribeDirective, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { type: i1.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }], pipes: { "async": i2.AsyncPipe }, viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
144
144
  __decorate([
145
145
  tuiDefaultProp()
146
146
  ], TuiLineChartComponent.prototype, "valueSetter", null);
@@ -210,7 +210,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
210
210
  args: [TuiHintOptionsDirective]
211
211
  }] }]; }, propDecorators: { drivers: [{
212
212
  type: ViewChildren,
213
- args: [TuiDriver]
213
+ args: [TuiHintHoverDirective]
214
214
  }], valueSetter: [{
215
215
  type: Input,
216
216
  args: ['value']
@@ -236,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
236
236
  type: HostListener,
237
237
  args: ['mouseleave']
238
238
  }], getD: [] } });
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jaGFydHMvY29tcG9uZW50cy9saW5lLWNoYXJ0L2xpbmUtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY2hhcnRzL2NvbXBvbmVudHMvbGluZS1jaGFydC9saW5lLWNoYXJ0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFFUixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxPQUFPLEVBQUUscUJBQXFCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsV0FBVyxFQUNYLGNBQWMsRUFDZCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixPQUFPLEVBRVAsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLHNCQUFzQixHQUV6QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsNENBQTRDO0FBQzVDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBU3RFLE1BQU0sT0FBTyxxQkFBcUI7SUF1RDlCLFlB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QURmLFlBQVk7dUJBQUMsU0FBUztnQkFLbkIsV0FBVztzQkFGZCxLQUFLO3VCQUFDLE9BQU87Z0JBUWQsQ0FBQztzQkFGQSxLQUFLO2dCQU1OLENBQUM7c0JBRkEsS0FBSztnQkFNTixLQUFLO3NCQUZKLEtBQUs7Z0JBTU4sTUFBTTtzQkFGTCxLQUFLO2dCQVNOLGVBQWU7c0JBTGQsS0FBSztnQkFTTixVQUFVO3NCQUZULEtBQUs7Z0JBTU4sVUFBVTtzQkFGVCxLQUFLO2dCQU1OLE1BQU07c0JBRkwsS0FBSztnQkFNTixJQUFJO3NCQUZILEtBQUs7Z0JBc0JGLFFBQVEsTUE4Q1osWUFBWTtzQkFEWCxZQUFZO3VCQUFDLFlBQVk7Z0JBeUVsQixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMb2NhdGlvbiBhcyBOZ0xvY2F0aW9ufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xPQ0FUSU9OfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7VHVpTGluZUNoYXJ0SGludENvbnRleHR9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jaGFydHMvaW50ZXJmYWNlcyc7XG5pbXBvcnQge3R1aURyYXcsIHR1aVByZXBhcmVFeHRlcm5hbFVybH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNoYXJ0cy91dGlscyc7XG5pbXBvcnQge1xuICAgIEVNUFRZX1FVRVJZLFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUlkU2VydmljZSxcbiAgICB0dWlJblJhbmdlLFxuICAgIHR1aUlzUHJlc2VudCxcbiAgICB0dWlQdXJlLFxuICAgIFR1aVN0cmluZ0hhbmRsZXIsXG4gICAgdHVpWm9uZU9wdGltaXplZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFR1aURyaXZlcixcbiAgICBUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSxcbiAgICB0dWlIaW50T3B0aW9uc1Byb3ZpZGVyLFxuICAgIFR1aVBvaW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBUT0RPOiBmaW5kIHRoZSBiZXN0IHdheSBmb3IgcHJldmVudCBjeWNsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHtUdWlMaW5lQ2hhcnRIaW50RGlyZWN0aXZlfSBmcm9tICcuL2xpbmUtY2hhcnQtaGludC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1saW5lLWNoYXJ0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGluZS1jaGFydC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9saW5lLWNoYXJ0LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICB2aWV3UHJvdmlkZXJzOiBbdHVpSGludE9wdGlvbnNQcm92aWRlcih7ZGlyZWN0aW9uOiAndG9wJywgaGlkZURlbGF5OiAwfSldLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlMaW5lQ2hhcnRDb21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2hvdmVyZWQkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRvSWRTdHJpbmc6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGRyZW4oVHVpRHJpdmVyKVxuICAgIHJlYWRvbmx5IGRyaXZlcnM6IFF1ZXJ5TGlzdDxPYnNlcnZhYmxlPGJvb2xlYW4+PiA9IEVNUFRZX1FVRVJZO1xuXG4gICAgQElucHV0KCd2YWx1ZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzZXQgdmFsdWVTZXR0ZXIodmFsdWU6IHJlYWRvbmx5IFR1aVBvaW50W10pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlLmZpbHRlcihpdGVtID0+ICFpdGVtLnNvbWUoTnVtYmVyLmlzTmFOKSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHggPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHkgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHdpZHRoID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBoZWlnaHQgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoXG4gICAgICAgIChzbW9vdGhpbmdGYWN0b3I6IG51bWJlcikgPT4gdHVpSW5SYW5nZShzbW9vdGhpbmdGYWN0b3IsIDAsIDEwMCksXG4gICAgICAgICdzbW9vdGhpbmdGYWN0b3IgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCcsXG4gICAgKVxuICAgIHNtb290aGluZ0ZhY3RvciA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgeFN0cmluZ2lmeTogVHVpU3RyaW5nSGFuZGxlcjxudW1iZXI+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgeVN0cmluZ2lmeTogVHVpU3RyaW5nSGFuZGxlcjxudW1iZXI+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZmlsbGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgZG90cyA9IGZhbHNlO1xuXG4gICAgdmFsdWU6IHJlYWRvbmx5IFR1aVBvaW50W10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFR1aUlkU2VydmljZSkgaWRTZXJ2aWNlOiBUdWlJZFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoTmdab25lKSBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KE5nTG9jYXRpb24pIHByaXZhdGUgcmVhZG9ubHkgbmdMb2NhdGlvbjogTmdMb2NhdGlvbixcbiAgICAgICAgQEluamVjdChMT0NBVElPTikgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvblJlZjogTG9jYXRpb24sXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpTGluZUNoYXJ0SGludERpcmVjdGl2ZSlcbiAgICAgICAgcmVhZG9ubHkgaGludERpcmVjdGl2ZTogVHVpTGluZUNoYXJ0SGludERpcmVjdGl2ZSB8IG51bGwsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVHVpSGludE9wdGlvbnNEaXJlY3RpdmUpXG4gICAgICAgIHJlYWRvbmx5IGhpbnRPcHRpb25zOiBUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSB8IG51bGwsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuYXV0b0lkU3RyaW5nID0gaWRTZXJ2aWNlLmdlbmVyYXRlKCk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBnZXQgaG92ZXJlZCQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hvdmVyZWQkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdHVpWm9uZU9wdGltaXplZCh0aGlzLm5nWm9uZSkpO1xuICAgIH1cblxuICAgIGdldCBoaW50Q29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUxpbmVDaGFydEhpbnRDb250ZXh0PFR1aVBvaW50Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oaW50T3B0aW9ucz8uY29udGVudCB8fCAnJztcbiAgICB9XG5cbiAgICBnZXQgZmlsbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdHVpLWxpbmUtY2hhcnQtJHt0aGlzLmF1dG9JZFN0cmluZ31gO1xuICAgIH1cblxuICAgIGdldCBmaWxsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGxlZFxuICAgICAgICAgICAgPyB0dWlQcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5uZ0xvY2F0aW9uLCB0aGlzLmxvY2F0aW9uUmVmLCB0aGlzLmZpbGxJZClcbiAgICAgICAgICAgIDogJ25vbmUnO1xuICAgIH1cblxuICAgIGdldCB2aWV3Qm94KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnh9ICR7dGhpcy55fSAke3RoaXMud2lkdGh9ICR7dGhpcy5oZWlnaHR9YDtcbiAgICB9XG5cbiAgICBnZXQgZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREKHRoaXMudmFsdWUsIHRoaXMuc21vb3RoaW5nRmFjdG9yKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsbEQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoXG4gICAgICAgICAgICA/IGAke3RoaXMuZH1WICR7dGhpcy55fSBIICR7dGhpcy52YWx1ZVswXVswXX0gViAke3RoaXMudmFsdWVbMF1bMV19YFxuICAgICAgICAgICAgOiB0aGlzLmQ7XG4gICAgfVxuXG4gICAgZ2V0IGlzRm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaGludERpcmVjdGl2ZSAmJiB0aGlzLmhhc0hpbnRzO1xuICAgIH1cblxuICAgIGdldCBoYXNIaW50cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhdGhpcy54U3RyaW5naWZ5IHx8XG4gICAgICAgICAgICAhIXRoaXMueVN0cmluZ2lmeSB8fFxuICAgICAgICAgICAgISF0aGlzLmhpbnREaXJlY3RpdmU/LmhpbnQgfHxcbiAgICAgICAgICAgICEhdGhpcy5oaW50Q29udGVudFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhpbnREaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMub25Ib3ZlcmVkKE5hTik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRYKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVBvaW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZVswXVswXSAvIDI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXhcbiAgICAgICAgICAgID8gKHRoaXMudmFsdWVbaW5kZXggLSAxXVswXSArIHRoaXMudmFsdWVbaW5kZXhdWzBdKSAvIDJcbiAgICAgICAgICAgIDogMiAqIHRoaXMudmFsdWVbMF1bMF0gLSB0aGlzLmdldFgoMSk7XG4gICAgfVxuXG4gICAgZ2V0V2lkdGgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoMTAwICogdGhpcy5jb21wdXRlV2lkdGgoaW5kZXgpKSAvIHRoaXMud2lkdGg7XG4gICAgfVxuXG4gICAgZ2V0SGludElkKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5hdXRvSWRTdHJpbmd9XyR7aW5kZXh9YDtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50Q29udGV4dChcbiAgICAgICAgJGltcGxpY2l0OiBUdWlQb2ludCxcbiAgICAgICAgaW5kZXg6IG51bWJlcixcbiAgICApOiBUdWlMaW5lQ2hhcnRIaW50Q29udGV4dDxUdWlQb2ludCB8IHJlYWRvbmx5IFR1aVBvaW50W10+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaGludERpcmVjdGl2ZT8uZ2V0Q29udGV4dCh0aGlzLnZhbHVlLmluZGV4T2YoJGltcGxpY2l0KSwgdGhpcykgfHwge1xuICAgICAgICAgICAgICAgICRpbXBsaWNpdCxcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRIb3ZlcmVkKGhvdmVyZWQ6IG51bWJlciB8IG51bGwpOiBUdWlQb2ludCB8IG51bGwge1xuICAgICAgICAvLyBUaGlzIGNoZWNrcyBmb3IgTmFOIGFuZCBudWxsIHRvbyBzaW5jZSBhc3luYyBwaXBlIHJldHVybnMgbnVsbCBiZWZvcmUgZmlyc3QgaXRlbVxuICAgICAgICByZXR1cm4gdHVpSXNQcmVzZW50KGhvdmVyZWQpICYmIE51bWJlci5pc0ludGVnZXIoaG92ZXJlZClcbiAgICAgICAgICAgID8gdGhpcy52YWx1ZVtob3ZlcmVkXVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldEJvdHRvbSh5OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKDEwMCAqICh5IC0gdGhpcy55KSkgLyB0aGlzLmhlaWdodDtcbiAgICB9XG5cbiAgICBnZXRMZWZ0KHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoMTAwICogKHggLSB0aGlzLngpKSAvIHRoaXMud2lkdGg7XG4gICAgfVxuXG4gICAgZ2V0T2Zmc2V0KHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoMTAwICogKHRoaXMudmFsdWVbeF1bMF0gLSB0aGlzLmdldFgoeCkpKSAvIHRoaXMuY29tcHV0ZVdpZHRoKHgpO1xuICAgIH1cblxuICAgIG9uTW91c2VFbnRlcihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhpbnREaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuaGludERpcmVjdGl2ZS5yYWlzZShpbmRleCwgdGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uSG92ZXJlZChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkhvdmVyZWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9ob3ZlcmVkJC5uZXh0KGluZGV4KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc1NpbmdsZVBvaW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5sZW5ndGggPT09IDE7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGdldEQodmFsdWU6IHJlYWRvbmx5IFR1aVBvaW50W10sIHNtb290aGluZ0ZhY3RvcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlZHVjZShcbiAgICAgICAgICAgIChkLCBwb2ludCwgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgaW5kZXggPyBgJHtkfSAke3R1aURyYXcodmFsdWUsIGluZGV4LCBzbW9vdGhpbmdGYWN0b3IpfWAgOiBgTSAke3BvaW50fWAsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVXaWR0aChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSB0aGlzLnZhbHVlLmxlbmd0aCAtIDFcbiAgICAgICAgICAgID8gMiAqICh0aGlzLnZhbHVlW2luZGV4XVswXSAtIHRoaXMuZ2V0WChpbmRleCkpXG4gICAgICAgICAgICA6IHRoaXMuZ2V0WChpbmRleCArIDEpIC0gdGhpcy5nZXRYKGluZGV4KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0dWlMZXQ9XCJob3ZlcmVkJCB8IGFzeW5jIGFzIGhvdmVyZWRcIj5cbiAgICA8c3ZnXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCJcbiAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICAgIGNsYXNzPVwidC1zdmdcIlxuICAgICAgICBbYXR0ci52aWV3Qm94XT1cInZpZXdCb3hcIlxuICAgID5cbiAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICA8bGluZWFyR3JhZGllbnRcbiAgICAgICAgICAgICAgICB4MT1cIjBcIlxuICAgICAgICAgICAgICAgIHgyPVwiMFwiXG4gICAgICAgICAgICAgICAgeTE9XCIxXCJcbiAgICAgICAgICAgICAgICB5Mj1cIjBcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImZpbGxJZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN0b3BcbiAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldD1cIjAlXCJcbiAgICAgICAgICAgICAgICAgICAgc3RvcC1vcGFjaXR5PVwiMC41XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzdG9wXG4gICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3I9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgc3RvcC1vcGFjaXR5PVwiMFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgIDwvZGVmcz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIHN0cm9rZT1cIm5vbmVcIlxuICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJmaWxsXCJcbiAgICAgICAgICAgIFthdHRyLmRdPVwiZmlsbERcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICBbYXR0ci5kXT1cImRcIlxuICAgICAgICAvPlxuICAgIDwvc3ZnPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3RzXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwb2ludCBvZiB2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInQtZG90XCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwiZ2V0TGVmdChwb2ludFswXSlcIlxuICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS4lXT1cImdldEJvdHRvbShwb2ludFsxXSlcIlxuICAgICAgICA+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0hpbnRzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBvaW50IG9mIHZhbHVlOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgPCEtLSBUT0RPOiBGaXggaGludCB0eXBlIC0tPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidmFsdWUubGVuZ3RoID4gMSB8fCBkb3RzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtY29sdW1uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudC1jb2x1bW5faG92ZXJlZF09XCJob3ZlcmVkID09PSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtY29sdW1uX2hpbnRfaG92ZXJlZF09XCJkcml2ZXJzLmdldChpbmRleCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnRIb3N0XT1cImhpbnRIb3N0XCJcbiAgICAgICAgICAgICAgICBbdHVpSGludF09XCIkYW55KGhpbnREaXJlY3RpdmU/LmhpbnQgfHwgaGludENvbnRlbnQpXCJcbiAgICAgICAgICAgICAgICBbdHVpSGludENvbnRleHRdPVwiZ2V0Q29udGVudENvbnRleHQocG9pbnQsIGluZGV4KVwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnREZXNjcmliZV09XCJnZXRIaW50SWQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImdldExlZnQoZ2V0WChpbmRleCkpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJnZXRXaWR0aChpbmRleClcIlxuICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcihpbmRleClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWxpbmUgdC1saW5lX3ZlcnRpY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRPZmZzZXQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAjaGludEhvc3RcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWhvc3RcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImdldE9mZnNldChpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYm90dG9tLiVdPVwiZ2V0Qm90dG9tKHBvaW50WzFdKVwiXG4gICAgICAgICAgICAgICAgICAgIFt0dWlGb2N1c2FibGVdPVwiaXNGb2N1c2FibGVcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0SGludElkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc0ZvY3VzYWJsZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWxpbmUgdC1saW5lX2hvcml6b250YWxcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3R0b20uJV09XCJnZXRCb3R0b20ocG9pbnRbMV0pXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldEhvdmVyZWQoaG92ZXJlZCkgYXMgcG9pbnRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJ4U3RyaW5naWZ5XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1oaW50IHQtaGludF94XCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwiZ2V0TGVmdChwb2ludFswXSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB4U3RyaW5naWZ5KHBvaW50WzBdKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJ5U3RyaW5naWZ5XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1oaW50IHQtaGludF95XCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3R0b20uJV09XCJnZXRCb3R0b20ocG9pbnRbMV0pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgeVN0cmluZ2lmeShwb2ludFsxXSkgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jaGFydHMvY29tcG9uZW50cy9saW5lLWNoYXJ0L2xpbmUtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY2hhcnRzL2NvbXBvbmVudHMvbGluZS1jaGFydC9saW5lLWNoYXJ0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFFUixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxPQUFPLEVBQUUscUJBQXFCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsV0FBVyxFQUNYLGNBQWMsRUFDZCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixPQUFPLEVBRVAsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixHQUV6QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsNENBQTRDO0FBQzVDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBU3RFLE1BQU0sT0FBTyxxQkFBcUI7SUF1RDlC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QU87c0JBRGYsWUFBWTt1QkFBQyxxQkFBcUI7Z0JBSy9CLFdBQVc7c0JBRmQsS0FBSzt1QkFBQyxPQUFPO2dCQVFkLENBQUM7c0JBRkEsS0FBSztnQkFNTixDQUFDO3NCQUZBLEtBQUs7Z0JBTU4sS0FBSztzQkFGSixLQUFLO2dCQU1OLE1BQU07c0JBRkwsS0FBSztnQkFTTixlQUFlO3NCQUxkLEtBQUs7Z0JBU04sVUFBVTtzQkFGVCxLQUFLO2dCQU1OLFVBQVU7c0JBRlQsS0FBSztnQkFNTixNQUFNO3NCQUZMLEtBQUs7Z0JBTU4sSUFBSTtzQkFGSCxLQUFLO2dCQXNCRixRQUFRLE1BOENaLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZO2dCQXlFbEIsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYXRpb24gYXMgTmdMb2NhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtMT0NBVElPTn0gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQge1R1aUxpbmVDaGFydEhpbnRDb250ZXh0fSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY2hhcnRzL2ludGVyZmFjZXMnO1xuaW1wb3J0IHt0dWlEcmF3LCB0dWlQcmVwYXJlRXh0ZXJuYWxVcmx9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jaGFydHMvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBFTVBUWV9RVUVSWSxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlJZFNlcnZpY2UsXG4gICAgdHVpSW5SYW5nZSxcbiAgICB0dWlJc1ByZXNlbnQsXG4gICAgdHVpUHVyZSxcbiAgICBUdWlTdHJpbmdIYW5kbGVyLFxuICAgIHR1aVpvbmVPcHRpbWl6ZWQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUdWlIaW50SG92ZXJEaXJlY3RpdmUsXG4gICAgVHVpSGludE9wdGlvbnNEaXJlY3RpdmUsXG4gICAgdHVpSGludE9wdGlvbnNQcm92aWRlcixcbiAgICBUdWlQb2ludCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWR9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLy8gVE9ETzogZmluZCB0aGUgYmVzdCB3YXkgZm9yIHByZXZlbnQgY3ljbGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7VHVpTGluZUNoYXJ0SGludERpcmVjdGl2ZX0gZnJvbSAnLi9saW5lLWNoYXJ0LWhpbnQuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktbGluZS1jaGFydCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpbmUtY2hhcnQudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbGluZS1jaGFydC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgdmlld1Byb3ZpZGVyczogW3R1aUhpbnRPcHRpb25zUHJvdmlkZXIoe2RpcmVjdGlvbjogJ3RvcCcsIGhpZGVEZWxheTogMH0pXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTGluZUNoYXJ0Q29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ob3ZlcmVkJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0b0lkU3RyaW5nOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkcmVuKFR1aUhpbnRIb3ZlckRpcmVjdGl2ZSlcbiAgICByZWFkb25seSBkcml2ZXJzOiBRdWVyeUxpc3Q8T2JzZXJ2YWJsZTxib29sZWFuPj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIEBJbnB1dCgndmFsdWUnKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc2V0IHZhbHVlU2V0dGVyKHZhbHVlOiByZWFkb25seSBUdWlQb2ludFtdKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5zb21lKE51bWJlci5pc05hTikpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB4ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB5ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICB3aWR0aCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaGVpZ2h0ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKFxuICAgICAgICAoc21vb3RoaW5nRmFjdG9yOiBudW1iZXIpID0+IHR1aUluUmFuZ2Uoc21vb3RoaW5nRmFjdG9yLCAwLCAxMDApLFxuICAgICAgICAnc21vb3RoaW5nRmFjdG9yIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAnLFxuICAgIClcbiAgICBzbW9vdGhpbmdGYWN0b3IgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHhTdHJpbmdpZnk6IFR1aVN0cmluZ0hhbmRsZXI8bnVtYmVyPiB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHlTdHJpbmdpZnk6IFR1aVN0cmluZ0hhbmRsZXI8bnVtYmVyPiB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGZpbGxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGRvdHMgPSBmYWxzZTtcblxuICAgIHZhbHVlOiByZWFkb25seSBUdWlQb2ludFtdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUdWlJZFNlcnZpY2UpIGlkU2VydmljZTogVHVpSWRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KE5nWm9uZSkgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChOZ0xvY2F0aW9uKSBwcml2YXRlIHJlYWRvbmx5IG5nTG9jYXRpb246IE5nTG9jYXRpb24sXG4gICAgICAgIEBJbmplY3QoTE9DQVRJT04pIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb25SZWY6IExvY2F0aW9uLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFR1aUxpbmVDaGFydEhpbnREaXJlY3RpdmUpXG4gICAgICAgIHJlYWRvbmx5IGhpbnREaXJlY3RpdmU6IFR1aUxpbmVDaGFydEhpbnREaXJlY3RpdmUgfCBudWxsLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFR1aUhpbnRPcHRpb25zRGlyZWN0aXZlKVxuICAgICAgICByZWFkb25seSBoaW50T3B0aW9uczogVHVpSGludE9wdGlvbnNEaXJlY3RpdmUgfCBudWxsLFxuICAgICkge1xuICAgICAgICB0aGlzLmF1dG9JZFN0cmluZyA9IGlkU2VydmljZS5nZW5lcmF0ZSgpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgZ2V0IGhvdmVyZWQkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ob3ZlcmVkJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHR1aVpvbmVPcHRpbWl6ZWQodGhpcy5uZ1pvbmUpKTtcbiAgICB9XG5cbiAgICBnZXQgaGludENvbnRlbnQoKTogUG9seW1vcnBoZXVzQ29udGVudDxUdWlMaW5lQ2hhcnRIaW50Q29udGV4dDxUdWlQb2ludD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGludE9wdGlvbnM/LmNvbnRlbnQgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYHR1aS1saW5lLWNoYXJ0LSR7dGhpcy5hdXRvSWRTdHJpbmd9YDtcbiAgICB9XG5cbiAgICBnZXQgZmlsbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxsZWRcbiAgICAgICAgICAgID8gdHVpUHJlcGFyZUV4dGVybmFsVXJsKHRoaXMubmdMb2NhdGlvbiwgdGhpcy5sb2NhdGlvblJlZiwgdGhpcy5maWxsSWQpXG4gICAgICAgICAgICA6ICdub25lJztcbiAgICB9XG5cbiAgICBnZXQgdmlld0JveCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy54fSAke3RoaXMueX0gJHt0aGlzLndpZHRofSAke3RoaXMuaGVpZ2h0fWA7XG4gICAgfVxuXG4gICAgZ2V0IGQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RCh0aGlzLnZhbHVlLCB0aGlzLnNtb290aGluZ0ZhY3Rvcik7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGxEKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmxlbmd0aFxuICAgICAgICAgICAgPyBgJHt0aGlzLmR9ViAke3RoaXMueX0gSCAke3RoaXMudmFsdWVbMF1bMF19IFYgJHt0aGlzLnZhbHVlWzBdWzFdfWBcbiAgICAgICAgICAgIDogdGhpcy5kO1xuICAgIH1cblxuICAgIGdldCBpc0ZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmhpbnREaXJlY3RpdmUgJiYgdGhpcy5oYXNIaW50cztcbiAgICB9XG5cbiAgICBnZXQgaGFzSGludHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMueFN0cmluZ2lmeSB8fFxuICAgICAgICAgICAgISF0aGlzLnlTdHJpbmdpZnkgfHxcbiAgICAgICAgICAgICEhdGhpcy5oaW50RGlyZWN0aXZlPy5oaW50IHx8XG4gICAgICAgICAgICAhIXRoaXMuaGludENvbnRlbnRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5oaW50RGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLm9uSG92ZXJlZChOYU4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0WChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVQb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVbMF1bMF0gLyAyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4XG4gICAgICAgICAgICA/ICh0aGlzLnZhbHVlW2luZGV4IC0gMV1bMF0gKyB0aGlzLnZhbHVlW2luZGV4XVswXSkgLyAyXG4gICAgICAgICAgICA6IDIgKiB0aGlzLnZhbHVlWzBdWzBdIC0gdGhpcy5nZXRYKDEpO1xuICAgIH1cblxuICAgIGdldFdpZHRoKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKDEwMCAqIHRoaXMuY29tcHV0ZVdpZHRoKGluZGV4KSkgLyB0aGlzLndpZHRoO1xuICAgIH1cblxuICAgIGdldEhpbnRJZChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuYXV0b0lkU3RyaW5nfV8ke2luZGV4fWA7XG4gICAgfVxuXG4gICAgZ2V0Q29udGVudENvbnRleHQoXG4gICAgICAgICRpbXBsaWNpdDogVHVpUG9pbnQsXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgKTogVHVpTGluZUNoYXJ0SGludENvbnRleHQ8VHVpUG9pbnQgfCByZWFkb25seSBUdWlQb2ludFtdPiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmhpbnREaXJlY3RpdmU/LmdldENvbnRleHQodGhpcy52YWx1ZS5pbmRleE9mKCRpbXBsaWNpdCksIHRoaXMpIHx8IHtcbiAgICAgICAgICAgICAgICAkaW1wbGljaXQsXG4gICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0SG92ZXJlZChob3ZlcmVkOiBudW1iZXIgfCBudWxsKTogVHVpUG9pbnQgfCBudWxsIHtcbiAgICAgICAgLy8gVGhpcyBjaGVja3MgZm9yIE5hTiBhbmQgbnVsbCB0b28gc2luY2UgYXN5bmMgcGlwZSByZXR1cm5zIG51bGwgYmVmb3JlIGZpcnN0IGl0ZW1cbiAgICAgICAgcmV0dXJuIHR1aUlzUHJlc2VudChob3ZlcmVkKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKGhvdmVyZWQpXG4gICAgICAgICAgICA/IHRoaXMudmFsdWVbaG92ZXJlZF1cbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXRCb3R0b20oeTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICgxMDAgKiAoeSAtIHRoaXMueSkpIC8gdGhpcy5oZWlnaHQ7XG4gICAgfVxuXG4gICAgZ2V0TGVmdCh4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKDEwMCAqICh4IC0gdGhpcy54KSkgLyB0aGlzLndpZHRoO1xuICAgIH1cblxuICAgIGdldE9mZnNldCh4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKDEwMCAqICh0aGlzLnZhbHVlW3hdWzBdIC0gdGhpcy5nZXRYKHgpKSkgLyB0aGlzLmNvbXB1dGVXaWR0aCh4KTtcbiAgICB9XG5cbiAgICBvbk1vdXNlRW50ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oaW50RGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmhpbnREaXJlY3RpdmUucmFpc2UoaW5kZXgsIHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkhvdmVyZWQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ib3ZlcmVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faG92ZXJlZCQubmV4dChpbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNTaW5nbGVQb2ludCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoID09PSAxO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXREKHZhbHVlOiByZWFkb25seSBUdWlQb2ludFtdLCBzbW9vdGhpbmdGYWN0b3I6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZWR1Y2UoXG4gICAgICAgICAgICAoZCwgcG9pbnQsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgIGluZGV4ID8gYCR7ZH0gJHt0dWlEcmF3KHZhbHVlLCBpbmRleCwgc21vb3RoaW5nRmFjdG9yKX1gIDogYE0gJHtwb2ludH1gLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlV2lkdGgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy52YWx1ZS5sZW5ndGggLSAxXG4gICAgICAgICAgICA/IDIgKiAodGhpcy52YWx1ZVtpbmRleF1bMF0gLSB0aGlzLmdldFgoaW5kZXgpKVxuICAgICAgICAgICAgOiB0aGlzLmdldFgoaW5kZXggKyAxKSAtIHRoaXMuZ2V0WChpbmRleCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHVpTGV0PVwiaG92ZXJlZCQgfCBhc3luYyBhcyBob3ZlcmVkXCI+XG4gICAgPHN2Z1xuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICBjbGFzcz1cInQtc3ZnXCJcbiAgICAgICAgW2F0dHIudmlld0JveF09XCJ2aWV3Qm94XCJcbiAgICA+XG4gICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgICAgICAgICAgeDE9XCIwXCJcbiAgICAgICAgICAgICAgICB4Mj1cIjBcIlxuICAgICAgICAgICAgICAgIHkxPVwiMVwiXG4gICAgICAgICAgICAgICAgeTI9XCIwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJmaWxsSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdG9wXG4gICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3I9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9XCIwJVwiXG4gICAgICAgICAgICAgICAgICAgIHN0b3Atb3BhY2l0eT1cIjAuNVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3RvcFxuICAgICAgICAgICAgICAgICAgICBzdG9wLWNvbG9yPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgIHN0b3Atb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgICBzdHJva2U9XCJub25lXCJcbiAgICAgICAgICAgIFthdHRyLmZpbGxdPVwiZmlsbFwiXG4gICAgICAgICAgICBbYXR0ci5kXT1cImZpbGxEXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICB2ZWN0b3ItZWZmZWN0PVwibm9uLXNjYWxpbmctc3Ryb2tlXCJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgW2F0dHIuZF09XCJkXCJcbiAgICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG90c1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcG9pbnQgb2YgdmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWRvdFwiXG4gICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImdldExlZnQocG9pbnRbMF0pXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3R0b20uJV09XCJnZXRCb3R0b20ocG9pbnRbMV0pXCJcbiAgICAgICAgPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNIaW50c1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwb2ludCBvZiB2YWx1ZTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDwhLS0gVE9ETzogRml4IGhpbnQgdHlwZSAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cInZhbHVlLmxlbmd0aCA+IDEgfHwgZG90c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbHVtblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtY29sdW1uX2hvdmVyZWRdPVwiaG92ZXJlZCA9PT0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy50LWNvbHVtbl9oaW50X2hvdmVyZWRdPVwiZHJpdmVycy5nZXQoaW5kZXgpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIFt0dWlIaW50SG9zdF09XCJoaW50SG9zdFwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnRdPVwiJGFueShoaW50RGlyZWN0aXZlPy5oaW50IHx8IGhpbnRDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnRDb250ZXh0XT1cImdldENvbnRlbnRDb250ZXh0KHBvaW50LCBpbmRleClcIlxuICAgICAgICAgICAgICAgIFt0dWlIaW50RGVzY3JpYmVdPVwiZ2V0SGludElkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRMZWZ0KGdldFgoaW5kZXgpKVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiZ2V0V2lkdGgoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoaW5kZXgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1saW5lIHQtbGluZV92ZXJ0aWNhbFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwiZ2V0T2Zmc2V0KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgI2hpbnRIb3N0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1ob3N0XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRPZmZzZXQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS4lXT1cImdldEJvdHRvbShwb2ludFsxXSlcIlxuICAgICAgICAgICAgICAgICAgICBbdHVpRm9jdXNhYmxlXT1cImlzRm9jdXNhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImdldEhpbnRJZChpbmRleClcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGb2N1c2FibGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidC1saW5lIHQtbGluZV9ob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm90dG9tLiVdPVwiZ2V0Qm90dG9tKHBvaW50WzFdKVwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRIb3ZlcmVkKGhvdmVyZWQpIGFzIHBvaW50XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwieFN0cmluZ2lmeVwiXG4gICAgICAgICAgICBjbGFzcz1cInQtaGludCB0LWhpbnRfeFwiXG4gICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImdldExlZnQocG9pbnRbMF0pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgeFN0cmluZ2lmeShwb2ludFswXSkgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwieVN0cmluZ2lmeVwiXG4gICAgICAgICAgICBjbGFzcz1cInQtaGludCB0LWhpbnRfeVwiXG4gICAgICAgICAgICBbc3R5bGUuYm90dG9tLiVdPVwiZ2V0Qm90dG9tKHBvaW50WzFdKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHlTdHJpbmdpZnkocG9pbnRbMV0pIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -26,7 +26,7 @@ const GAP = {
26
26
  xl: 0.25,
27
27
  };
28
28
  class TuiArcChartComponent {
29
- constructor(sanitizer, changeDetectorRef) {
29
+ constructor(sanitizer, cdr) {
30
30
  this.sanitizer = sanitizer;
31
31
  this.arcs$ = new ReplaySubject(1);
32
32
  this.value = [];
@@ -42,7 +42,7 @@ class TuiArcChartComponent {
42
42
  // So initial animation works
43
43
  setTimeout(() => {
44
44
  this.initialized = true;
45
- changeDetectorRef.markForCheck();
45
+ cdr.markForCheck();
46
46
  });
47
47
  }
48
48
  set arcs(arcs) {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-arc-chart.js","sources":["../../../projects/addon-charts/components/arc-chart/arc-chart.component.ts","../../../projects/addon-charts/components/arc-chart/arc-chart.template.html","../../../projects/addon-charts/components/arc-chart/arc-chart.module.ts","../../../projects/addon-charts/components/arc-chart/taiga-ui-addon-charts-components-arc-chart.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n Output,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport {DomSanitizer, SafeValue} from '@angular/platform-browser';\nimport {tuiDefaultProp, tuiTypedFromEvent} from '@taiga-ui/cdk';\nimport {TuiSizeXL} from '@taiga-ui/core';\nimport {merge, Observable, ReplaySubject} from 'rxjs';\nimport {map, startWith, switchMap, tap} from 'rxjs/operators';\n\n// 3/4 with 1% safety offset\nconst ARC = 0.76;\n\nconst SIZE: Record<TuiSizeXL, number> = {\n m: 9,\n l: 11,\n xl: 16,\n};\n\nconst WIDTH: Record<TuiSizeXL, number> = {\n m: 0.25,\n l: 0.375,\n xl: 0.5625,\n};\n\nconst GAP: Record<TuiSizeXL, number> = {\n m: 0.125,\n l: 0.1875,\n xl: 0.25,\n};\n\n@Component({\n selector: 'tui-arc-chart',\n templateUrl: './arc-chart.template.html',\n styleUrls: ['./arc-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiArcChartComponent {\n private readonly arcs$ = new ReplaySubject<QueryList<ElementRef<SVGElement>>>(1);\n\n @ViewChildren('arc')\n set arcs(arcs: QueryList<ElementRef<SVGElement>>) {\n this.arcs$.next(arcs);\n }\n\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-size')\n @tuiDefaultProp()\n size: TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n max = 100;\n\n @Input()\n @tuiDefaultProp()\n minLabel = '0%';\n\n @Input()\n @tuiDefaultProp()\n maxLabel = '100%';\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n readonly activeItemIndexChange = this.arcs$.pipe(\n switchMap(arcs =>\n arcs.changes.pipe(\n startWith(null),\n switchMap(() => merge(...arcsToIndex(arcs))),\n ),\n ),\n tap(index => {\n this.activeItemIndex = index;\n }),\n );\n\n initialized = false;\n\n constructor(\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n ) {\n // So initial animation works\n setTimeout(() => {\n this.initialized = true;\n changeDetectorRef.markForCheck();\n });\n }\n\n @HostBinding('style.width.rem')\n @HostBinding('style.height.rem')\n get width(): number {\n return SIZE[this.size];\n }\n\n @HostBinding('style.strokeWidth.rem')\n get strokeWidth(): number {\n return WIDTH[this.size];\n }\n\n isInactive(index: number): boolean {\n return !Number.isNaN(this.activeItemIndex) && index !== this.activeItemIndex;\n }\n\n getInset(index: number): number {\n return this.strokeWidth / 2 + index * (this.strokeWidth + GAP[this.size]);\n }\n\n getDiameter(index: number): number {\n return SIZE[this.size] - 2 * this.getInset(index);\n }\n\n getLength(index: number): number {\n return Math.PI * this.getDiameter(index) * ARC;\n }\n\n getOffset(index: number): number {\n return this.getLength(index) * (1 - Math.min(this.value[index] / this.max, 1));\n }\n\n getColor(index: number): SafeValue {\n return this.sanitizer.bypassSecurityTrustStyle(\n `var(--tui-chart-${index}, var(--tui-support-0${index + 1}))`,\n );\n }\n}\n\nfunction arcsToIndex(arcs: QueryList<ElementRef<SVGElement>>): Array<Observable<number>> {\n return arcs.map(({nativeElement}, index) =>\n merge(\n tuiTypedFromEvent(nativeElement, 'mouseenter').pipe(map(() => index)),\n tuiTypedFromEvent(nativeElement, 'mouseleave').pipe(map(() => NaN)),\n ),\n );\n}\n","<svg\n *tuiRepeatTimes=\"let index of value.length\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-100 -100 200 200\"\n focusable=\"false\"\n class=\"t-svg\"\n [style.top.em]=\"getInset(index)\"\n [style.left.em]=\"getInset(index)\"\n [style.width.em]=\"getDiameter(index)\"\n [style.height.em]=\"getDiameter(index)\"\n>\n <path\n vector-effect=\"non-scaling-stroke\"\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n />\n <path\n #arc\n vector-effect=\"non-scaling-stroke\"\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive(index)\"\n [style.stroke]=\"getColor(index)\"\n [style.strokeDasharray.em]=\"getLength(index)\"\n [style.strokeDashoffset.em]=\"initialized ? getOffset(index) : getLength(index)\"\n />\n</svg>\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ minLabel }}</span>\n <span>{{ maxLabel }}</span>\n</div>\n","import {NgModule} from '@angular/core';\nimport {TuiRepeatTimesModule} from '@taiga-ui/cdk';\n\nimport {TuiArcChartComponent} from './arc-chart.component';\n\n@NgModule({\n imports: [TuiRepeatTimesModule],\n declarations: [TuiArcChartComponent],\n exports: [TuiArcChartComponent],\n})\nexport class TuiArcChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-arc-chart.js","sources":["../../../projects/addon-charts/components/arc-chart/arc-chart.component.ts","../../../projects/addon-charts/components/arc-chart/arc-chart.template.html","../../../projects/addon-charts/components/arc-chart/arc-chart.module.ts","../../../projects/addon-charts/components/arc-chart/taiga-ui-addon-charts-components-arc-chart.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n Output,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport {DomSanitizer, SafeValue} from '@angular/platform-browser';\nimport {tuiDefaultProp, tuiTypedFromEvent} from '@taiga-ui/cdk';\nimport {TuiSizeXL} from '@taiga-ui/core';\nimport {merge, Observable, ReplaySubject} from 'rxjs';\nimport {map, startWith, switchMap, tap} from 'rxjs/operators';\n\n// 3/4 with 1% safety offset\nconst ARC = 0.76;\n\nconst SIZE: Record<TuiSizeXL, number> = {\n m: 9,\n l: 11,\n xl: 16,\n};\n\nconst WIDTH: Record<TuiSizeXL, number> = {\n m: 0.25,\n l: 0.375,\n xl: 0.5625,\n};\n\nconst GAP: Record<TuiSizeXL, number> = {\n m: 0.125,\n l: 0.1875,\n xl: 0.25,\n};\n\n@Component({\n selector: 'tui-arc-chart',\n templateUrl: './arc-chart.template.html',\n styleUrls: ['./arc-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiArcChartComponent {\n private readonly arcs$ = new ReplaySubject<QueryList<ElementRef<SVGElement>>>(1);\n\n @ViewChildren('arc')\n set arcs(arcs: QueryList<ElementRef<SVGElement>>) {\n this.arcs$.next(arcs);\n }\n\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-size')\n @tuiDefaultProp()\n size: TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n max = 100;\n\n @Input()\n @tuiDefaultProp()\n minLabel = '0%';\n\n @Input()\n @tuiDefaultProp()\n maxLabel = '100%';\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n readonly activeItemIndexChange = this.arcs$.pipe(\n switchMap(arcs =>\n arcs.changes.pipe(\n startWith(null),\n switchMap(() => merge(...arcsToIndex(arcs))),\n ),\n ),\n tap(index => {\n this.activeItemIndex = index;\n }),\n );\n\n initialized = false;\n\n constructor(\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n @Inject(ChangeDetectorRef) cdr: ChangeDetectorRef,\n ) {\n // So initial animation works\n setTimeout(() => {\n this.initialized = true;\n cdr.markForCheck();\n });\n }\n\n @HostBinding('style.width.rem')\n @HostBinding('style.height.rem')\n get width(): number {\n return SIZE[this.size];\n }\n\n @HostBinding('style.strokeWidth.rem')\n get strokeWidth(): number {\n return WIDTH[this.size];\n }\n\n isInactive(index: number): boolean {\n return !Number.isNaN(this.activeItemIndex) && index !== this.activeItemIndex;\n }\n\n getInset(index: number): number {\n return this.strokeWidth / 2 + index * (this.strokeWidth + GAP[this.size]);\n }\n\n getDiameter(index: number): number {\n return SIZE[this.size] - 2 * this.getInset(index);\n }\n\n getLength(index: number): number {\n return Math.PI * this.getDiameter(index) * ARC;\n }\n\n getOffset(index: number): number {\n return this.getLength(index) * (1 - Math.min(this.value[index] / this.max, 1));\n }\n\n getColor(index: number): SafeValue {\n return this.sanitizer.bypassSecurityTrustStyle(\n `var(--tui-chart-${index}, var(--tui-support-0${index + 1}))`,\n );\n }\n}\n\nfunction arcsToIndex(arcs: QueryList<ElementRef<SVGElement>>): Array<Observable<number>> {\n return arcs.map(({nativeElement}, index) =>\n merge(\n tuiTypedFromEvent(nativeElement, 'mouseenter').pipe(map(() => index)),\n tuiTypedFromEvent(nativeElement, 'mouseleave').pipe(map(() => NaN)),\n ),\n );\n}\n","<svg\n *tuiRepeatTimes=\"let index of value.length\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-100 -100 200 200\"\n focusable=\"false\"\n class=\"t-svg\"\n [style.top.em]=\"getInset(index)\"\n [style.left.em]=\"getInset(index)\"\n [style.width.em]=\"getDiameter(index)\"\n [style.height.em]=\"getDiameter(index)\"\n>\n <path\n vector-effect=\"non-scaling-stroke\"\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n />\n <path\n #arc\n vector-effect=\"non-scaling-stroke\"\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive(index)\"\n [style.stroke]=\"getColor(index)\"\n [style.strokeDasharray.em]=\"getLength(index)\"\n [style.strokeDashoffset.em]=\"initialized ? getOffset(index) : getLength(index)\"\n />\n</svg>\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ minLabel }}</span>\n <span>{{ maxLabel }}</span>\n</div>\n","import {NgModule} from '@angular/core';\nimport {TuiRepeatTimesModule} from '@taiga-ui/cdk';\n\nimport {TuiArcChartComponent} from './arc-chart.component';\n\n@NgModule({\n imports: [TuiRepeatTimesModule],\n declarations: [TuiArcChartComponent],\n exports: [TuiArcChartComponent],\n})\nexport class TuiArcChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { tuiPrepareExternalUrl, tuiDraw } from '@taiga-ui/addon-charts/utils';
8
8
  import * as i1 from '@taiga-ui/cdk';
9
9
  import { EMPTY_QUERY, tuiZonefree, TuiDestroyService, TuiHoveredService, tuiDefaultProp, tuiPure, tuiQueryListChanges, tuiZoneOptimized, tuiIsPresent, TuiIdService, tuiInRange, TuiFocusableModule, TuiLetModule } from '@taiga-ui/cdk';
10
10
  import * as i3 from '@taiga-ui/core';
11
- import { TuiHintOptionsDirective, TuiDriver, tuiHintOptionsProvider, TuiHintModule } from '@taiga-ui/core';
11
+ import { TuiHintOptionsDirective, TuiHintHoverDirective, tuiHintOptionsProvider, TuiHintModule } from '@taiga-ui/core';
12
12
  import * as i2 from 'rxjs';
13
13
  import { combineLatest, Subject } from 'rxjs';
14
14
  import { filter, takeUntil, map, startWith, switchMap, distinctUntilChanged } from 'rxjs/operators';
@@ -24,7 +24,7 @@ class TuiLineChartHintDirective {
24
24
  this.chartsRef = EMPTY_QUERY;
25
25
  this.hint = '';
26
26
  }
27
- ngAfterContentInit() {
27
+ ngAfterViewInit() {
28
28
  combineLatest([tuiLineChartDrivers(this.charts), this.hovered$])
29
29
  .pipe(filter(result => !result.some(Boolean)), tuiZonefree(this.ngZone), takeUntil(this.destroy$))
30
30
  .subscribe(() => {
@@ -216,7 +216,7 @@ class TuiLineChartComponent {
216
216
  }
217
217
  }
218
218
  TuiLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiLineChartComponent, deps: [{ token: TuiIdService }, { token: NgZone }, { token: Location$1 }, { token: LOCATION }, { token: TuiLineChartHintDirective, optional: true }, { token: TuiHintOptionsDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
219
- TuiLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiLineChartComponent, selector: "tui-line-chart", inputs: { valueSetter: ["value", "valueSetter"], x: "x", y: "y", width: "width", height: "height", smoothingFactor: "smoothingFactor", xStringify: "xStringify", yStringify: "yStringify", filled: "filled", dots: "dots" }, host: { listeners: { "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "drivers", predicate: TuiDriver, descendants: true }], ngImport: i0, template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n height=\"100%\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n stop-color=\"currentColor\"\n offset=\"0%\"\n stop-opacity=\"0.5\"\n />\n <stop\n stop-color=\"currentColor\"\n offset=\"100%\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.fill]=\"fill\"\n [attr.d]=\"fillD\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n vector-effect=\"non-scaling-stroke\"\n stroke-width=\"2\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.left.%]=\"getLeft(point[0])\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hovered]=\"hovered === index\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [tuiHintHost]=\"hintHost\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"getContentContext(point, index)\"\n [tuiHintDescribe]=\"getHintId(index)\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [style.left.%]=\"getOffset(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [tuiFocusable]=\"isFocusable\"\n [id]=\"getHintId(index)\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;width:100%;height:100%;pointer-events:none}.t-svg{transform:scaleY(-1)}.t-column{position:absolute;top:0;height:100%;pointer-events:auto}.t-dot{position:absolute;width:.375rem;height:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;width:.5rem;height:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-base-03)}.t-line_vertical{top:0;bottom:0;left:50%;width:1px}.t-line_horizontal{z-index:-1;width:100%;height:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{box-shadow:0 .25rem 1.5rem #0000001f;position:absolute;font:var(--tui-font-text-xs);height:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-base-09);background:var(--tui-base-01);transform:translate(-50%)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"], directives: [{ type: i1.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { type: i3.TuiHintDriverDirective, selector: "[tuiHint]" }, { type: i3.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { type: i3.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { type: i3.TuiHintHostDirective, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { type: i3.TuiHintDescribeDirective, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { type: i1.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }], pipes: { "async": i2$1.AsyncPipe }, viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
219
+ TuiLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiLineChartComponent, selector: "tui-line-chart", inputs: { valueSetter: ["value", "valueSetter"], x: "x", y: "y", width: "width", height: "height", smoothingFactor: "smoothingFactor", xStringify: "xStringify", yStringify: "yStringify", filled: "filled", dots: "dots" }, host: { listeners: { "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "drivers", predicate: TuiHintHoverDirective, descendants: true }], ngImport: i0, template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n height=\"100%\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n stop-color=\"currentColor\"\n offset=\"0%\"\n stop-opacity=\"0.5\"\n />\n <stop\n stop-color=\"currentColor\"\n offset=\"100%\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.fill]=\"fill\"\n [attr.d]=\"fillD\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n vector-effect=\"non-scaling-stroke\"\n stroke-width=\"2\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.left.%]=\"getLeft(point[0])\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hovered]=\"hovered === index\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [tuiHintHost]=\"hintHost\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"getContentContext(point, index)\"\n [tuiHintDescribe]=\"getHintId(index)\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [style.left.%]=\"getOffset(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [tuiFocusable]=\"isFocusable\"\n [id]=\"getHintId(index)\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;width:100%;height:100%;pointer-events:none}.t-svg{transform:scaleY(-1)}.t-column{position:absolute;top:0;height:100%;pointer-events:auto}.t-dot{position:absolute;width:.375rem;height:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;width:.5rem;height:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-base-03)}.t-line_vertical{top:0;bottom:0;left:50%;width:1px}.t-line_horizontal{z-index:-1;width:100%;height:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{box-shadow:0 .25rem 1.5rem #0000001f;position:absolute;font:var(--tui-font-text-xs);height:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-base-09);background:var(--tui-base-01);transform:translate(-50%)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"], directives: [{ type: i1.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { type: i3.TuiHintDriverDirective, selector: "[tuiHint]" }, { type: i3.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { type: i3.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { type: i3.TuiHintHostDirective, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { type: i3.TuiHintDescribeDirective, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { type: i1.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }], pipes: { "async": i2$1.AsyncPipe }, viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
220
220
  __decorate([
221
221
  tuiDefaultProp()
222
222
  ], TuiLineChartComponent.prototype, "valueSetter", null);
@@ -286,7 +286,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
286
286
  args: [TuiHintOptionsDirective]
287
287
  }] }]; }, propDecorators: { drivers: [{
288
288
  type: ViewChildren,
289
- args: [TuiDriver]
289
+ args: [TuiHintHoverDirective]
290
290
  }], valueSetter: [{
291
291
  type: Input,
292
292
  args: ['value']