@taiga-ui/addon-charts 2.28.0 → 2.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +4 -5
  2. package/bundles/taiga-ui-addon-charts-components-legend-item.umd.js +19 -2
  3. package/bundles/taiga-ui-addon-charts-components-legend-item.umd.js.map +1 -1
  4. package/bundles/taiga-ui-addon-charts-components-legend-item.umd.min.js +1 -1
  5. package/bundles/taiga-ui-addon-charts-components-legend-item.umd.min.js.map +1 -1
  6. package/bundles/taiga-ui-addon-charts-components-pie-chart.umd.js +96 -20
  7. package/bundles/taiga-ui-addon-charts-components-pie-chart.umd.js.map +1 -1
  8. package/bundles/taiga-ui-addon-charts-components-pie-chart.umd.min.js +2 -2
  9. package/bundles/taiga-ui-addon-charts-components-pie-chart.umd.min.js.map +1 -1
  10. package/bundles/taiga-ui-addon-charts-components-ring-chart.umd.js +2 -14
  11. package/bundles/taiga-ui-addon-charts-components-ring-chart.umd.js.map +1 -1
  12. package/bundles/taiga-ui-addon-charts-components-ring-chart.umd.min.js +1 -1
  13. package/bundles/taiga-ui-addon-charts-components-ring-chart.umd.min.js.map +1 -1
  14. package/bundles/taiga-ui-addon-charts-utils.umd.js +4 -2
  15. package/bundles/taiga-ui-addon-charts-utils.umd.js.map +1 -1
  16. package/bundles/taiga-ui-addon-charts-utils.umd.min.js +1 -1
  17. package/bundles/taiga-ui-addon-charts-utils.umd.min.js.map +1 -1
  18. package/components/legend-item/legend-item.component.d.ts +4 -1
  19. package/components/legend-item/taiga-ui-addon-charts-components-legend-item.metadata.json +1 -1
  20. package/components/pie-chart/index.d.ts +1 -0
  21. package/components/pie-chart/pie-chart.component.d.ts +4 -2
  22. package/components/pie-chart/pie-chart.directive.d.ts +7 -0
  23. package/components/pie-chart/taiga-ui-addon-charts-components-pie-chart.metadata.json +1 -1
  24. package/components/ring-chart/ring-chart.component.d.ts +0 -2
  25. package/components/ring-chart/taiga-ui-addon-charts-components-ring-chart.metadata.json +1 -1
  26. package/esm2015/components/legend-item/legend-item.component.js +21 -4
  27. package/esm2015/components/pie-chart/index.js +2 -1
  28. package/esm2015/components/pie-chart/pie-chart.component.js +21 -11
  29. package/esm2015/components/pie-chart/pie-chart.directive.js +56 -0
  30. package/esm2015/components/pie-chart/pie-chart.module.js +11 -4
  31. package/esm2015/components/ring-chart/ring-chart.component.js +4 -12
  32. package/esm2015/utils/describe-sector.js +5 -3
  33. package/esm5/components/legend-item/legend-item.component.js +21 -4
  34. package/esm5/components/pie-chart/index.js +2 -1
  35. package/esm5/components/pie-chart/pie-chart.component.js +27 -16
  36. package/esm5/components/pie-chart/pie-chart.directive.js +66 -0
  37. package/esm5/components/pie-chart/pie-chart.module.js +11 -4
  38. package/esm5/components/ring-chart/ring-chart.component.js +4 -16
  39. package/esm5/utils/describe-sector.js +5 -3
  40. package/fesm2015/taiga-ui-addon-charts-components-legend-item.js +20 -3
  41. package/fesm2015/taiga-ui-addon-charts-components-legend-item.js.map +1 -1
  42. package/fesm2015/taiga-ui-addon-charts-components-pie-chart.js +82 -15
  43. package/fesm2015/taiga-ui-addon-charts-components-pie-chart.js.map +1 -1
  44. package/fesm2015/taiga-ui-addon-charts-components-ring-chart.js +3 -11
  45. package/fesm2015/taiga-ui-addon-charts-components-ring-chart.js.map +1 -1
  46. package/fesm2015/taiga-ui-addon-charts-utils.js +4 -2
  47. package/fesm2015/taiga-ui-addon-charts-utils.js.map +1 -1
  48. package/fesm5/taiga-ui-addon-charts-components-legend-item.js +20 -3
  49. package/fesm5/taiga-ui-addon-charts-components-legend-item.js.map +1 -1
  50. package/fesm5/taiga-ui-addon-charts-components-pie-chart.js +99 -21
  51. package/fesm5/taiga-ui-addon-charts-components-pie-chart.js.map +1 -1
  52. package/fesm5/taiga-ui-addon-charts-components-ring-chart.js +3 -15
  53. package/fesm5/taiga-ui-addon-charts-components-ring-chart.js.map +1 -1
  54. package/fesm5/taiga-ui-addon-charts-utils.js +4 -2
  55. package/fesm5/taiga-ui-addon-charts-utils.js.map +1 -1
  56. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-pie-chart.js","sources":["ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.component.ts","ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.module.ts","ng://@taiga-ui/addon-charts/components/pie-chart/taiga-ui-addon-charts-components-pie-chart.ts"],"sourcesContent":["import {Location} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n} from '@angular/core';\nimport {DomSanitizer, SafeValue} from '@angular/platform-browser';\nimport {TUI_DEFAULT_COLOR_HANDLER} from '@taiga-ui/addon-charts/constants';\nimport {TuiColorHandler} from '@taiga-ui/addon-charts/types';\nimport {describeSector} from '@taiga-ui/addon-charts/utils';\nimport {\n sum,\n TuiContextWithImplicit,\n tuiDefaultProp,\n TuiIdService,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {colorFallback, TuiSizeXL, TuiSizeXS} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nconst RADII = {\n xs: '50',\n s: '50',\n m: '77.8',\n l: '81.9',\n xl: '81.3',\n};\nconst TRANSFORM = {\n xs: 1.15,\n s: 1.25,\n m: 1.11,\n l: 1.09,\n xl: 1.08,\n};\n\n// TODO: Remove sanitizer when Angular version is bumped\n@Component({\n selector: 'tui-pie-chart',\n templateUrl: './pie-chart.template.html',\n styleUrls: ['./pie-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPieChartComponent {\n private readonly autoIdString: string;\n\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-tui-host-size')\n @tuiDefaultProp()\n size: TuiSizeXS | TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n colorHandler: TuiColorHandler = TUI_DEFAULT_COLOR_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n hintContent: PolymorpheusContent<TuiContextWithImplicit<number>> = '';\n\n @Input()\n @tuiDefaultProp()\n masked = false;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n activeItemIndexChange = new EventEmitter<number>();\n\n constructor(\n @Inject(TuiIdService) idService: TuiIdService,\n @Inject(Location) private readonly locationRef: Location,\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n ) {\n this.autoIdString = idService.generate();\n }\n\n get maskId(): string {\n return 'tui-ring-chart-' + this.autoIdString;\n }\n\n get mask(): string | null {\n return this.masked\n ? `url(${this.locationRef.prepareExternalUrl(this.locationRef.path())}#${\n this.maskId\n })`\n : null;\n }\n\n get radius(): string {\n return RADII[this.size];\n }\n\n get segments(): readonly string[] {\n return this.getSegments(this.value);\n }\n\n @tuiPure\n getContentContext($implicit: number): TuiContextWithImplicit<number> {\n return {$implicit};\n }\n\n getTransform(index: number): string | null {\n const transform = this.masked\n ? `scale(${TRANSFORM[this.size]})`\n : `scale(${TRANSFORM['xs']})`;\n\n return index === this.activeItemIndex ? transform : null;\n }\n\n getHint(hint: PolymorpheusContent): PolymorpheusContent {\n return this.hintContent ? hint : '';\n }\n\n onHovered(hovered: boolean, index: number) {\n this.updateActiveItemIndex(hovered ? index : NaN);\n }\n\n getColor(index: number): SafeValue {\n return this.sanitizer.bypassSecurityTrustStyle(\n `var(--tui-chart-${index}, ${colorFallback(this.colorHandler(index))})`,\n );\n }\n\n @tuiPure\n private getSegments(value: readonly number[]): readonly string[] {\n const total = sum(...value);\n\n return value\n .map((currentItem, currentIndex, array) =>\n array.reduce(\n (sum, item, index) =>\n index < currentIndex ? (item / total) * 360 + sum : sum,\n (currentItem / total) * 360,\n ),\n )\n .map((angle, index, array) =>\n describeSector(array[index - 1] || 0, Math.min(angle, 359.9999)),\n );\n }\n\n private updateActiveItemIndex(index: number) {\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = index;\n this.activeItemIndexChange.next(index);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiHoveredModule} from '@taiga-ui/cdk';\nimport {TuiPointerHintModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPieChartComponent} from './pie-chart.component';\n\n@NgModule({\n imports: [CommonModule, TuiHoveredModule, PolymorpheusModule, TuiPointerHintModule],\n declarations: [TuiPieChartComponent],\n exports: [TuiPieChartComponent],\n})\nexport class TuiPieChartModule {}\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-pie-chart.js","sources":["ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.component.ts","ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.directive.ts","ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.module.ts","ng://@taiga-ui/addon-charts/components/pie-chart/taiga-ui-addon-charts-components-pie-chart.ts"],"sourcesContent":["import {Location} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n} from '@angular/core';\nimport {DomSanitizer, SafeValue} from '@angular/platform-browser';\nimport {TUI_DEFAULT_COLOR_HANDLER} from '@taiga-ui/addon-charts/constants';\nimport {TuiColorHandler} from '@taiga-ui/addon-charts/types';\nimport {\n sum,\n TuiContextWithImplicit,\n tuiDefaultProp,\n TuiIdService,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {colorFallback, TuiSizeXL, TuiSizeXS} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nconst RADII = {\n xs: '50',\n s: '50',\n m: '77.8',\n l: '81.9',\n xl: '81.3',\n};\nconst TRANSFORM = {\n xs: 1.15,\n s: 1.25,\n m: 1.11,\n l: 1.09,\n xl: 1.08,\n};\n\n// TODO: Remove sanitizer when Angular version is bumped\n@Component({\n selector: 'tui-pie-chart',\n templateUrl: './pie-chart.template.html',\n styleUrls: ['./pie-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPieChartComponent {\n private readonly autoIdString: string;\n\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-tui-host-size')\n @tuiDefaultProp()\n size: TuiSizeXS | TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n colorHandler: TuiColorHandler = TUI_DEFAULT_COLOR_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n hintContent: PolymorpheusContent<TuiContextWithImplicit<number>> = '';\n\n @Input()\n @tuiDefaultProp()\n masked = false;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n activeItemIndexChange = new EventEmitter<number>();\n\n constructor(\n @Inject(TuiIdService) idService: TuiIdService,\n @Inject(Location) private readonly locationRef: Location,\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n ) {\n this.autoIdString = idService.generate();\n }\n\n @HostBinding('class._empty')\n get empty(): boolean {\n return !this.getSum(this.value);\n }\n\n get maskId(): string {\n return 'tui-ring-chart-' + this.autoIdString;\n }\n\n get mask(): string | null {\n return this.masked\n ? `url(${this.locationRef.prepareExternalUrl(this.locationRef.path())}#${\n this.maskId\n })`\n : null;\n }\n\n get radius(): string {\n return RADII[this.size];\n }\n\n get segments(): readonly [number, number][] {\n return this.getSegments(this.value);\n }\n\n getTransform(index: number): string | null {\n const transform = this.masked\n ? `scale(${TRANSFORM[this.size]})`\n : `scale(${TRANSFORM['xs']})`;\n\n return index === this.activeItemIndex ? transform : null;\n }\n\n getHint(hint: PolymorpheusContent): PolymorpheusContent {\n return this.hintContent ? hint : '';\n }\n\n onHovered(hovered: boolean, index: number) {\n this.updateActiveItemIndex(hovered ? index : NaN);\n }\n\n getColor(index: number): SafeValue {\n return this.sanitizer.bypassSecurityTrustStyle(\n `var(--tui-chart-${index}, ${colorFallback(this.colorHandler(index))})`,\n );\n }\n\n @tuiPure\n private getSum(value: readonly number[]): number {\n return sum(...value);\n }\n\n @tuiPure\n private getSegments(value: readonly number[]): readonly [number, number][] {\n return value\n .map((initial, i, array) =>\n array.reduce(\n (sum, current, j) => (j < i ? this.getDeg(current) + sum : sum),\n this.getDeg(initial),\n ),\n )\n .map((angle, index, array) => [\n array[index - 1] || 0,\n Math.min(angle, 359.9999),\n ]);\n }\n\n private getDeg(value: number): number {\n return 360 * (value / this.getSum(this.value));\n }\n\n private updateActiveItemIndex(index: number) {\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = index;\n this.activeItemIndexChange.next(index);\n }\n}\n","import {Directive, ElementRef, Inject, Input, NgZone} from '@angular/core';\nimport {ANIMATION_FRAME, PERFORMANCE} from '@ng-web-apis/common';\nimport {describeSector} from '@taiga-ui/addon-charts/utils';\nimport {\n clamp,\n easeInOutQuad,\n tuiDefaultProp,\n TuiDestroyService,\n tuiZonefree,\n} from '@taiga-ui/cdk';\nimport {TUI_ANIMATIONS_DURATION} from '@taiga-ui/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {map, pairwise, switchMap, takeUntil, takeWhile} from 'rxjs/operators';\n\n// @dynamic\n@Directive({\n selector: 'path[tuiPieChart]',\n providers: [TuiDestroyService],\n})\nexport class TuiPieChartDirective {\n private readonly sector$ = new BehaviorSubject<readonly [number, number]>([0, 0]);\n\n @Input()\n @tuiDefaultProp()\n set tuiPieChart(sector: readonly [number, number]) {\n this.sector$.next(sector);\n }\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<SVGPathElement>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TuiDestroyService) destroy$: Observable<unknown>,\n @Inject(PERFORMANCE) performance: Performance,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TUI_ANIMATIONS_DURATION) duration: number,\n ) {\n this.sector$\n .pipe(\n pairwise(),\n switchMap(([prev, cur]) => {\n const now = performance.now();\n const startDelta = cur[0] - prev[0];\n const endDelta = cur[1] - prev[1];\n\n return animationFrame$.pipe(\n map(timestamp =>\n easeInOutQuad(clamp((timestamp - now) / duration, 0, 1)),\n ),\n takeWhile(progress => progress < 1, true),\n map(progress => [\n prev[0] + startDelta * progress,\n cur[1] > 359 ? cur[1] : prev[1] + endDelta * progress,\n ]),\n );\n }),\n tuiZonefree(ngZone),\n takeUntil(destroy$),\n )\n .subscribe(([start, end]) => {\n nativeElement.setAttribute('d', describeSector(start, end));\n });\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiHoveredModule, TuiRepeatTimesModule} from '@taiga-ui/cdk';\nimport {TuiPointerHintModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPieChartComponent} from './pie-chart.component';\nimport {TuiPieChartDirective} from './pie-chart.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiRepeatTimesModule,\n TuiHoveredModule,\n PolymorpheusModule,\n TuiPointerHintModule,\n ],\n declarations: [TuiPieChartComponent, TuiPieChartDirective],\n exports: [TuiPieChartComponent],\n})\nexport class TuiPieChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { EventEmitter, Input, HostBinding, Output, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
3
  import { TUI_DEFAULT_COLOR_HANDLER } from '@taiga-ui/addon-charts/constants';
4
- import { tuiDefaultProp, tuiPure } from '@taiga-ui/cdk';
4
+ import { tuiDefaultProp } from '@taiga-ui/cdk';
5
5
  import { CommonModule } from '@angular/common';
6
6
  import { TuiPieChartModule } from '@taiga-ui/addon-charts/components/pie-chart';
7
7
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
8
8
 
9
+ // TODO: Refactor to use ng-content
9
10
  let TuiRingChartComponent = class TuiRingChartComponent {
10
11
  constructor() {
11
12
  this.value = [];
@@ -19,15 +20,9 @@ let TuiRingChartComponent = class TuiRingChartComponent {
19
20
  get hasContent() {
20
21
  return this.size !== 's' && !!this.content;
21
22
  }
22
- get contentContext() {
23
- return this.getContentContext(this.activeItemIndex, this.value);
24
- }
25
23
  onActiveItemIndexChange(index) {
26
24
  this.updateActiveItemIndex(index);
27
25
  }
28
- getContentContext($implicit, value) {
29
- return { $implicit, value };
30
- }
31
26
  updateActiveItemIndex(index) {
32
27
  if (index === this.activeItemIndex) {
33
28
  return;
@@ -64,13 +59,10 @@ __decorate([
64
59
  __decorate([
65
60
  Output()
66
61
  ], TuiRingChartComponent.prototype, "activeItemIndexChange", void 0);
67
- __decorate([
68
- tuiPure
69
- ], TuiRingChartComponent.prototype, "getContentContext", null);
70
62
  TuiRingChartComponent = __decorate([
71
63
  Component({
72
64
  selector: 'tui-ring-chart',
73
- template: "<div *ngIf=\"hasContent\" class=\"t-content\">\n <div\n polymorpheus-outlet\n automation-id=\"tui-ring-chart__content\"\n class=\"t-wrapper\"\n [content]=\"content\"\n [context]=\"contentContext\"\n ></div>\n</div>\n\n<tui-pie-chart\n [masked]=\"true\"\n [value]=\"value\"\n [colorHandler]=\"colorHandler\"\n [size]=\"size\"\n [activeItemIndex]=\"activeItemIndex\"\n (activeItemIndexChange)=\"onActiveItemIndexChange($event)\"\n></tui-pie-chart>\n\n<div class=\"t-shield\"></div>\n",
65
+ template: "<div *ngIf=\"hasContent\" class=\"t-content\">\n <div\n polymorpheus-outlet\n automation-id=\"tui-ring-chart__content\"\n class=\"t-wrapper\"\n [content]=\"content\"\n [context]=\"{$implicit: activeItemIndex, value: value}\"\n ></div>\n</div>\n\n<tui-pie-chart\n [masked]=\"true\"\n [value]=\"value\"\n [colorHandler]=\"colorHandler\"\n [size]=\"size\"\n [activeItemIndex]=\"activeItemIndex\"\n (activeItemIndexChange)=\"onActiveItemIndexChange($event)\"\n></tui-pie-chart>\n\n<div class=\"t-shield\"></div>\n",
74
66
  changeDetection: ChangeDetectionStrategy.OnPush,
75
67
  styles: [":host{position:relative;display:block}:host[data-tui-host-size='s']{width:4rem;height:4rem}:host[data-tui-host-size='m']{width:9rem;height:9rem}:host[data-tui-host-size='l']{width:11rem;height:11rem}:host[data-tui-host-size=xl]{width:16rem;height:16rem}.t-content{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;font:var(--tui-font-text-m);max-height:100%;flex-direction:column;justify-content:center;text-align:center;padding:1.5rem;border-radius:100%;box-sizing:border-box;overflow:hidden;word-break:break-word;white-space:pre-wrap;color:var(--tui-text-02)}:host[data-tui-host-size='m'] .t-content{font:var(--tui-font-text-xs)}.t-wrapper:first-line{color:var(--tui-text-01)}:host[data-tui-host-size='l'] .t-wrapper:first-line{font:var(--tui-font-text-l);font-weight:700}:host[data-tui-host-size='m'] .t-wrapper:first-line{font:var(--tui-font-text-m);font-weight:700}.t-shield{position:absolute;top:25%;left:25%;right:25%;bottom:25%;border-radius:100%}"]
76
68
  })
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-ring-chart.js","sources":["ng://@taiga-ui/addon-charts/components/ring-chart/ring-chart.component.ts","ng://@taiga-ui/addon-charts/components/ring-chart/ring-chart.module.ts","ng://@taiga-ui/addon-charts/components/ring-chart/taiga-ui-addon-charts-components-ring-chart.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport {TUI_DEFAULT_COLOR_HANDLER} from '@taiga-ui/addon-charts/constants';\nimport {TuiRingChartContext} from '@taiga-ui/addon-charts/interfaces';\nimport {TuiColorHandler} from '@taiga-ui/addon-charts/types';\nimport {tuiDefaultProp, tuiPure} from '@taiga-ui/cdk';\nimport {TuiSizeS, TuiSizeXL} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\n@Component({\n selector: 'tui-ring-chart',\n templateUrl: './ring-chart.template.html',\n styleUrls: ['./ring-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiRingChartComponent {\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-tui-host-size')\n @tuiDefaultProp()\n size: TuiSizeS | TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n colorHandler: TuiColorHandler = TUI_DEFAULT_COLOR_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n content: PolymorpheusContent<TuiRingChartContext> = '';\n\n @Input()\n @tuiDefaultProp()\n masked = true;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n activeItemIndexChange = new EventEmitter<number>();\n\n get hasContent(): boolean {\n return this.size !== 's' && !!this.content;\n }\n\n get contentContext(): TuiRingChartContext {\n return this.getContentContext(this.activeItemIndex, this.value);\n }\n\n onActiveItemIndexChange(index: number) {\n this.updateActiveItemIndex(index);\n }\n\n @tuiPure\n private getContentContext(\n $implicit: number,\n value: readonly number[],\n ): TuiRingChartContext {\n return {$implicit, value};\n }\n\n private updateActiveItemIndex(index: number) {\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = index;\n this.activeItemIndexChange.next(index);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiPieChartModule} from '@taiga-ui/addon-charts/components/pie-chart';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiRingChartComponent} from './ring-chart.component';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusModule, TuiPieChartModule],\n declarations: [TuiRingChartComponent],\n exports: [TuiRingChartComponent],\n})\nexport class TuiRingChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;IAqBa,qBAAqB,GAAlC,MAAa,qBAAqB;IAAlC;QAGI,UAAK,GAAsB,EAAE,CAAC;QAK9B,SAAI,GAAyB,GAAG,CAAC;QAIjC,iBAAY,GAAoB,yBAAyB,CAAC;QAI1D,YAAO,GAA6C,EAAE,CAAC;QAIvD,WAAM,GAAG,IAAI,CAAC;QAId,oBAAe,GAAG,GAAG,CAAC;QAGtB,0BAAqB,GAAG,IAAI,YAAY,EAAU,CAAC;KA8BtD;IA5BG,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;KAC9C;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACnE;IAED,uBAAuB,CAAC,KAAa;QACjC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrC;IAGO,iBAAiB,CACrB,SAAiB,EACjB,KAAwB;QAExB,OAAO,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;KAC7B;IAEO,qBAAqB,CAAC,KAAa;QACvC,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;YAChC,OAAO;SACV;QAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;EACJ;AAtDG;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;oDACa;AAK9B;IAHC,KAAK,EAAE;IACP,WAAW,CAAC,yBAAyB,CAAC;IACtC,cAAc,EAAE;mDACgB;AAIjC;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;2DACyC;AAI1D;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;sDACsC;AAIvD;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;qDACH;AAId;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;8DACK;AAGtB;IADC,MAAM,EAAE;oEAC0C;AAenD;IADC,OAAO;8DAMP;AA/CQ,qBAAqB;IANjC,SAAS,CAAC;QACP,QAAQ,EAAE,gBAAgB;QAC1B,wiBAAyC;QAEzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;GACW,qBAAqB,CAyDjC;;IClEY,kBAAkB,GAA/B,MAAa,kBAAkB;EAAG;AAArB,kBAAkB;IAL9B,QAAQ,CAAC;QACN,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;QAC9D,YAAY,EAAE,CAAC,qBAAqB,CAAC;QACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;KACnC,CAAC;GACW,kBAAkB,CAAG;;ACZlC;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-ring-chart.js","sources":["ng://@taiga-ui/addon-charts/components/ring-chart/ring-chart.component.ts","ng://@taiga-ui/addon-charts/components/ring-chart/ring-chart.module.ts","ng://@taiga-ui/addon-charts/components/ring-chart/taiga-ui-addon-charts-components-ring-chart.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport {TUI_DEFAULT_COLOR_HANDLER} from '@taiga-ui/addon-charts/constants';\nimport {TuiRingChartContext} from '@taiga-ui/addon-charts/interfaces';\nimport {TuiColorHandler} from '@taiga-ui/addon-charts/types';\nimport {tuiDefaultProp} from '@taiga-ui/cdk';\nimport {TuiSizeS, TuiSizeXL} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\n// TODO: Refactor to use ng-content\n@Component({\n selector: 'tui-ring-chart',\n templateUrl: './ring-chart.template.html',\n styleUrls: ['./ring-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiRingChartComponent {\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-tui-host-size')\n @tuiDefaultProp()\n size: TuiSizeS | TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n colorHandler: TuiColorHandler = TUI_DEFAULT_COLOR_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n content: PolymorpheusContent<TuiRingChartContext> = '';\n\n @Input()\n @tuiDefaultProp()\n masked = true;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n activeItemIndexChange = new EventEmitter<number>();\n\n get hasContent(): boolean {\n return this.size !== 's' && !!this.content;\n }\n\n onActiveItemIndexChange(index: number) {\n this.updateActiveItemIndex(index);\n }\n\n private updateActiveItemIndex(index: number) {\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = index;\n this.activeItemIndexChange.next(index);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiPieChartModule} from '@taiga-ui/addon-charts/components/pie-chart';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiRingChartComponent} from './ring-chart.component';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusModule, TuiPieChartModule],\n declarations: [TuiRingChartComponent],\n exports: [TuiRingChartComponent],\n})\nexport class TuiRingChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAeA;IAOa,qBAAqB,GAAlC,MAAa,qBAAqB;IAAlC;QAGI,UAAK,GAAsB,EAAE,CAAC;QAK9B,SAAI,GAAyB,GAAG,CAAC;QAIjC,iBAAY,GAAoB,yBAAyB,CAAC;QAI1D,YAAO,GAA6C,EAAE,CAAC;QAIvD,WAAM,GAAG,IAAI,CAAC;QAId,oBAAe,GAAG,GAAG,CAAC;QAGtB,0BAAqB,GAAG,IAAI,YAAY,EAAU,CAAC;KAkBtD;IAhBG,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;KAC9C;IAED,uBAAuB,CAAC,KAAa;QACjC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrC;IAEO,qBAAqB,CAAC,KAAa;QACvC,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;YAChC,OAAO;SACV;QAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;EACJ;AA1CG;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;oDACa;AAK9B;IAHC,KAAK,EAAE;IACP,WAAW,CAAC,yBAAyB,CAAC;IACtC,cAAc,EAAE;mDACgB;AAIjC;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;2DACyC;AAI1D;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;sDACsC;AAIvD;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;qDACH;AAId;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;8DACK;AAGtB;IADC,MAAM,EAAE;oEAC0C;AA3B1C,qBAAqB;IANjC,SAAS,CAAC;QACP,QAAQ,EAAE,gBAAgB;QAC1B,okBAAyC;QAEzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;KAClD,CAAC;GACW,qBAAqB,CA6CjC;;ICvDY,kBAAkB,GAA/B,MAAa,kBAAkB;EAAG;AAArB,kBAAkB;IAL9B,QAAQ,CAAC;QACN,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;QAC9D,YAAY,EAAE,CAAC,qBAAqB,CAAC;QACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;KACnC,CAAC;GACW,kBAAkB,CAAG;;ACZlC;;;;;;"}
@@ -22,6 +22,7 @@ function controlPoint(current, previous, next, reverse = false, smoothing = 0.2)
22
22
  return [x, y];
23
23
  }
24
24
 
25
+ const EMPTY = 'M 100 0 A 100 100 0 1 1 100 0 L 0 0';
25
26
  /**
26
27
  * Describes a normalized sector by angles. Normalized meaning it supposed to work with
27
28
  * SVG with viewBox="-1 -1 2 2" so that 0 coordinates in cartesian and polar match the same spot.
@@ -39,7 +40,7 @@ function describeSector(startAngle, endAngle) {
39
40
  const endX = Math.cos(endRad) * 100;
40
41
  const endY = Math.sin(endRad) * 100;
41
42
  const largeArcFlag = toInt(endAngle - startAngle > 180);
42
- return [
43
+ const result = [
43
44
  'M',
44
45
  startX,
45
46
  startY,
@@ -49,7 +50,8 @@ function describeSector(startAngle, endAngle) {
49
50
  endX,
50
51
  endY,
51
52
  'L 0 0',
52
- ].join(' ');
53
+ ];
54
+ return isNaN(endX) ? EMPTY : result.join(' ');
53
55
  }
54
56
 
55
57
  function drawCurve(array, index, smoothing) {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-utils.js","sources":["ng://@taiga-ui/addon-charts/utils/line-angle.ts","ng://@taiga-ui/addon-charts/utils/line-length.ts","ng://@taiga-ui/addon-charts/utils/control-point.ts","ng://@taiga-ui/addon-charts/utils/describe-sector.ts","ng://@taiga-ui/addon-charts/utils/draw-curve.ts","ng://@taiga-ui/addon-charts/utils/draw-line.ts","ng://@taiga-ui/addon-charts/utils/draw.ts","ng://@taiga-ui/addon-charts/utils/taiga-ui-addon-charts-utils.ts"],"sourcesContent":["import {TuiPoint} from '@taiga-ui/core';\n\nexport function lineAngle(a: TuiPoint, b: TuiPoint): number {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n\n return Math.atan2(y, x);\n}\n","import {TuiPoint} from '@taiga-ui/core';\n\nexport function lineLength(a: TuiPoint, b: TuiPoint): number {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n\n return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n}\n","import {TuiPoint} from '@taiga-ui/core';\n\nimport {lineAngle} from './line-angle';\nimport {lineLength} from './line-length';\n\nexport function controlPoint(\n current: TuiPoint,\n previous?: TuiPoint,\n next?: TuiPoint,\n reverse: boolean = false,\n smoothing: number = 0.2,\n): TuiPoint {\n const p = previous || current;\n const n = next || current;\n const angle = lineAngle(p, n) + (reverse ? Math.PI : 0);\n const length = lineLength(p, n) * smoothing;\n const x = current[0] + Math.cos(angle) * length;\n const y = current[1] + Math.sin(angle) * length;\n\n return [x, y];\n}\n","import {toInt, toRadians} from '@taiga-ui/cdk';\n\n/**\n * Describes a normalized sector by angles. Normalized meaning it supposed to work with\n * SVG with viewBox=\"-1 -1 2 2\" so that 0 coordinates in cartesian and polar match the same spot.\n * Everything is multiplied by 100 (including viewBox of SVG to host this) so IE properly\n * handles hover events.\n *\n * @param startAngle starting angle in degrees\n * @param endAngle ending angle in degrees\n */\nexport function describeSector(startAngle: number, endAngle: number): string {\n const startRad = toRadians(startAngle);\n const endRad = toRadians(endAngle);\n const startX = Math.cos(startRad) * 100;\n const startY = Math.sin(startRad) * 100;\n const endX = Math.cos(endRad) * 100;\n const endY = Math.sin(endRad) * 100;\n const largeArcFlag = toInt(endAngle - startAngle > 180);\n\n return [\n 'M',\n startX,\n startY,\n 'A 100 100 0',\n largeArcFlag,\n 1,\n endX,\n endY,\n 'L 0 0',\n ].join(' ');\n}\n","import {TuiPoint} from '@taiga-ui/core';\n\nimport {controlPoint} from './control-point';\n\nexport function drawCurve(\n array: ReadonlyArray<TuiPoint>,\n index: number,\n smoothing: number,\n): string {\n const [cpsX, cpsY] = controlPoint(\n array[index - 1],\n array[index - 2],\n array[index],\n false,\n smoothing,\n );\n const [cpeX, cpeY] = controlPoint(\n array[index],\n array[index - 1],\n array[index + 1],\n true,\n smoothing,\n );\n\n return `C ${cpsX},${cpsY} ${cpeX},${cpeY} ${array[index][0]},${array[index][1]}`;\n}\n","export function drawLine(point: [number, number]): string {\n return `L ${point}`;\n}\n","import {TuiPoint} from '@taiga-ui/core';\n\nimport {drawCurve} from './draw-curve';\nimport {drawLine} from './draw-line';\n\nconst COEFFICIENT = 500;\n\nexport function draw(\n array: ReadonlyArray<TuiPoint>,\n index: number,\n smoothing: number,\n): string {\n return smoothing\n ? drawCurve(array, index, smoothing / COEFFICIENT)\n : drawLine([array[index][0], array[index][1]]);\n}\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-utils.js","sources":["ng://@taiga-ui/addon-charts/utils/line-angle.ts","ng://@taiga-ui/addon-charts/utils/line-length.ts","ng://@taiga-ui/addon-charts/utils/control-point.ts","ng://@taiga-ui/addon-charts/utils/describe-sector.ts","ng://@taiga-ui/addon-charts/utils/draw-curve.ts","ng://@taiga-ui/addon-charts/utils/draw-line.ts","ng://@taiga-ui/addon-charts/utils/draw.ts","ng://@taiga-ui/addon-charts/utils/taiga-ui-addon-charts-utils.ts"],"sourcesContent":["import {TuiPoint} from '@taiga-ui/core';\n\nexport function lineAngle(a: TuiPoint, b: TuiPoint): number {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n\n return Math.atan2(y, x);\n}\n","import {TuiPoint} from '@taiga-ui/core';\n\nexport function lineLength(a: TuiPoint, b: TuiPoint): number {\n const x = b[0] - a[0];\n const y = b[1] - a[1];\n\n return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n}\n","import {TuiPoint} from '@taiga-ui/core';\n\nimport {lineAngle} from './line-angle';\nimport {lineLength} from './line-length';\n\nexport function controlPoint(\n current: TuiPoint,\n previous?: TuiPoint,\n next?: TuiPoint,\n reverse: boolean = false,\n smoothing: number = 0.2,\n): TuiPoint {\n const p = previous || current;\n const n = next || current;\n const angle = lineAngle(p, n) + (reverse ? Math.PI : 0);\n const length = lineLength(p, n) * smoothing;\n const x = current[0] + Math.cos(angle) * length;\n const y = current[1] + Math.sin(angle) * length;\n\n return [x, y];\n}\n","import {toInt, toRadians} from '@taiga-ui/cdk';\n\nconst EMPTY = 'M 100 0 A 100 100 0 1 1 100 0 L 0 0';\n\n/**\n * Describes a normalized sector by angles. Normalized meaning it supposed to work with\n * SVG with viewBox=\"-1 -1 2 2\" so that 0 coordinates in cartesian and polar match the same spot.\n * Everything is multiplied by 100 (including viewBox of SVG to host this) so IE properly\n * handles hover events.\n *\n * @param startAngle starting angle in degrees\n * @param endAngle ending angle in degrees\n */\nexport function describeSector(startAngle: number, endAngle: number): string {\n const startRad = toRadians(startAngle);\n const endRad = toRadians(endAngle);\n const startX = Math.cos(startRad) * 100;\n const startY = Math.sin(startRad) * 100;\n const endX = Math.cos(endRad) * 100;\n const endY = Math.sin(endRad) * 100;\n const largeArcFlag = toInt(endAngle - startAngle > 180);\n const result = [\n 'M',\n startX,\n startY,\n 'A 100 100 0',\n largeArcFlag,\n 1,\n endX,\n endY,\n 'L 0 0',\n ];\n\n return isNaN(endX) ? EMPTY : result.join(' ');\n}\n","import {TuiPoint} from '@taiga-ui/core';\n\nimport {controlPoint} from './control-point';\n\nexport function drawCurve(\n array: ReadonlyArray<TuiPoint>,\n index: number,\n smoothing: number,\n): string {\n const [cpsX, cpsY] = controlPoint(\n array[index - 1],\n array[index - 2],\n array[index],\n false,\n smoothing,\n );\n const [cpeX, cpeY] = controlPoint(\n array[index],\n array[index - 1],\n array[index + 1],\n true,\n smoothing,\n );\n\n return `C ${cpsX},${cpsY} ${cpeX},${cpeY} ${array[index][0]},${array[index][1]}`;\n}\n","export function drawLine(point: [number, number]): string {\n return `L ${point}`;\n}\n","import {TuiPoint} from '@taiga-ui/core';\n\nimport {drawCurve} from './draw-curve';\nimport {drawLine} from './draw-line';\n\nconst COEFFICIENT = 500;\n\nexport function draw(\n array: ReadonlyArray<TuiPoint>,\n index: number,\n smoothing: number,\n): string {\n return smoothing\n ? drawCurve(array, index, smoothing / COEFFICIENT)\n : drawLine([array[index][0], array[index][1]]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { __decorate } from 'tslib';
2
- import { Input, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
2
+ import { Input, HostBinding, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
3
  import { tuiDefaultProp } from '@taiga-ui/cdk';
4
4
  import { colorFallback, TuiButtonModule } from '@taiga-ui/core';
5
5
  import { CommonModule } from '@angular/common';
@@ -10,9 +10,14 @@ var TuiLegendItemComponent = /** @class */ (function () {
10
10
  this.active = false;
11
11
  this.color = '';
12
12
  this.text = '';
13
+ this.size = 'm';
14
+ this.disabled = false;
13
15
  }
14
16
  Object.defineProperty(TuiLegendItemComponent.prototype, "computedColor", {
15
17
  get: function () {
18
+ if (this.color === 'var(--tui-primary)') {
19
+ return null;
20
+ }
16
21
  return this.color.startsWith('var(') ? this.color : colorFallback(this.color);
17
22
  },
18
23
  enumerable: true,
@@ -30,12 +35,24 @@ var TuiLegendItemComponent = /** @class */ (function () {
30
35
  Input(),
31
36
  tuiDefaultProp()
32
37
  ], TuiLegendItemComponent.prototype, "text", void 0);
38
+ __decorate([
39
+ Input(),
40
+ HostBinding('attr.data-size'),
41
+ tuiDefaultProp()
42
+ ], TuiLegendItemComponent.prototype, "size", void 0);
43
+ __decorate([
44
+ Input(),
45
+ HostBinding('class._disabled')
46
+ ], TuiLegendItemComponent.prototype, "disabled", void 0);
47
+ __decorate([
48
+ HostBinding('style.--tui-primary')
49
+ ], TuiLegendItemComponent.prototype, "computedColor", null);
33
50
  TuiLegendItemComponent = __decorate([
34
51
  Component({
35
52
  selector: 'tui-legend-item',
36
- template: "<button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"whiteblock\"\n class=\"t-button\"\n [pseudoHovered]=\"active || null\"\n>\n <span class=\"t-dot\" [style.background]=\"computedColor\"></span>\n <span class=\"t-text\">{{ text }}</span>\n <ng-content></ng-content>\n</button>\n",
53
+ template: "<button\n tuiButton\n type=\"button\"\n size=\"s\"\n appearance=\"whiteblock\"\n class=\"t-button\"\n [pseudoHovered]=\"active || null\"\n>\n <div class=\"t-wrapper\">\n <ng-content select=\"tui-primitive-checkbox\"></ng-content>\n <span class=\"t-dot\"></span>\n <span class=\"t-text\">{{ text }}</span>\n <ng-content></ng-content>\n </div>\n</button>\n",
37
54
  changeDetection: ChangeDetectionStrategy.OnPush,
38
- styles: [":host{display:inline-block}.t-button{font-weight:700}.t-dot{width:.5rem;height:.5rem;border-radius:100%}.t-text{margin:0 .5rem;font-weight:400}"]
55
+ styles: [":host{display:inline-block}.t-button{height:2rem;font-weight:700}:host[data-size='m'] .t-button{height:2.25rem;font:var(--tui-font-text-m);font-weight:700}.t-wrapper{display:flex;align-items:center;pointer-events:none}:host._disabled .t-wrapper{color:var(--tui-text-03)}.t-dot{width:.5rem;height:.5rem;border-radius:100%;background:var(--tui-primary)}:host._disabled .t-dot{background:var(--tui-base-04)}.t-dot:not(:first-child){display:none}.t-text{margin:0 .5rem;font-weight:400}"]
39
56
  })
40
57
  ], TuiLegendItemComponent);
41
58
  return TuiLegendItemComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-legend-item.js","sources":["ng://@taiga-ui/addon-charts/components/legend-item/legend-item.component.ts","ng://@taiga-ui/addon-charts/components/legend-item/legend-item.module.ts","ng://@taiga-ui/addon-charts/components/legend-item/taiga-ui-addon-charts-components-legend-item.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {tuiDefaultProp} from '@taiga-ui/cdk';\nimport {colorFallback} from '@taiga-ui/core';\n\n// TODO: Remove fallback in 3.0\n@Component({\n selector: 'tui-legend-item',\n templateUrl: './legend-item.template.html',\n styleUrls: ['./legend-item.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiLegendItemComponent {\n @Input()\n @tuiDefaultProp()\n active = false;\n\n @Input()\n @tuiDefaultProp()\n color = '';\n\n @Input()\n @tuiDefaultProp()\n text = '';\n\n get computedColor(): string {\n return this.color.startsWith('var(') ? this.color : colorFallback(this.color);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiButtonModule} from '@taiga-ui/core';\n\nimport {TuiLegendItemComponent} from './legend-item.component';\n\n@NgModule({\n imports: [CommonModule, TuiButtonModule],\n declarations: [TuiLegendItemComponent],\n exports: [TuiLegendItemComponent],\n})\nexport class TuiLegendItemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAIA;;IAOA;QAGI,WAAM,GAAG,KAAK,CAAC;QAIf,UAAK,GAAG,EAAE,CAAC;QAIX,SAAI,GAAG,EAAE,CAAC;KAKb;IAHG,sBAAI,iDAAa;aAAjB;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjF;;;OAAA;IAZD;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;0DACF;IAIf;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;yDACN;IAIX;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;wDACP;IAXD,sBAAsB;QANlC,SAAS,CAAC;YACP,QAAQ,EAAE,iBAAiB;YAC3B,2UAA0C;YAE1C,eAAe,EAAE,uBAAuB,CAAC,MAAM;;SAClD,CAAC;OACW,sBAAsB,CAgBlC;IAAD,6BAAC;CAhBD;;;ICAA;KAAmC;IAAtB,mBAAmB;QAL/B,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;YACxC,YAAY,EAAE,CAAC,sBAAsB,CAAC;YACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;SACpC,CAAC;OACW,mBAAmB,CAAG;IAAD,0BAAC;CAAnC;;ACXA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-legend-item.js","sources":["ng://@taiga-ui/addon-charts/components/legend-item/legend-item.component.ts","ng://@taiga-ui/addon-charts/components/legend-item/legend-item.module.ts","ng://@taiga-ui/addon-charts/components/legend-item/taiga-ui-addon-charts-components-legend-item.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, HostBinding, Input} from '@angular/core';\nimport {tuiDefaultProp} from '@taiga-ui/cdk';\nimport {colorFallback, TuiSizeS} from '@taiga-ui/core';\n\n// TODO: Remove fallback in 3.0\n@Component({\n selector: 'tui-legend-item',\n templateUrl: './legend-item.template.html',\n styleUrls: ['./legend-item.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiLegendItemComponent {\n @Input()\n @tuiDefaultProp()\n active = false;\n\n @Input()\n @tuiDefaultProp()\n color = '';\n\n @Input()\n @tuiDefaultProp()\n text = '';\n\n @Input()\n @HostBinding('attr.data-size')\n @tuiDefaultProp()\n size: TuiSizeS = 'm';\n\n @Input()\n @HostBinding('class._disabled')\n disabled = false;\n\n @HostBinding('style.--tui-primary')\n get computedColor(): string | null {\n if (this.color === 'var(--tui-primary)') {\n return null;\n }\n\n return this.color.startsWith('var(') ? this.color : colorFallback(this.color);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiButtonModule} from '@taiga-ui/core';\n\nimport {TuiLegendItemComponent} from './legend-item.component';\n\n@NgModule({\n imports: [CommonModule, TuiButtonModule],\n declarations: [TuiLegendItemComponent],\n exports: [TuiLegendItemComponent],\n})\nexport class TuiLegendItemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAIA;;IAOA;QAGI,WAAM,GAAG,KAAK,CAAC;QAIf,UAAK,GAAG,EAAE,CAAC;QAIX,SAAI,GAAG,EAAE,CAAC;QAKV,SAAI,GAAa,GAAG,CAAC;QAIrB,aAAQ,GAAG,KAAK,CAAC;KAUpB;IAPG,sBAAI,iDAAa;aAAjB;YACI,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAoB,EAAE;gBACrC,OAAO,IAAI,CAAC;aACf;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjF;;;OAAA;IA1BD;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;0DACF;IAIf;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;yDACN;IAIX;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;wDACP;IAKV;QAHC,KAAK,EAAE;QACP,WAAW,CAAC,gBAAgB,CAAC;QAC7B,cAAc,EAAE;wDACI;IAIrB;QAFC,KAAK,EAAE;QACP,WAAW,CAAC,iBAAiB,CAAC;4DACd;IAGjB;QADC,WAAW,CAAC,qBAAqB,CAAC;+DAOlC;IA7BQ,sBAAsB;QANlC,SAAS,CAAC;YACP,QAAQ,EAAE,iBAAiB;YAC3B,kaAA0C;YAE1C,eAAe,EAAE,uBAAuB,CAAC,MAAM;;SAClD,CAAC;OACW,sBAAsB,CA8BlC;IAAD,6BAAC;CA9BD;;;ICAA;KAAmC;IAAtB,mBAAmB;QAL/B,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;YACxC,YAAY,EAAE,CAAC,sBAAsB,CAAC;YACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;SACpC,CAAC;OACW,mBAAmB,CAAG;IAAD,0BAAC;CAAnC;;ACXA;;;;;;"}
@@ -1,11 +1,14 @@
1
- import { __spread, __decorate, __param } from 'tslib';
1
+ import { __spread, __decorate, __param, __read } from 'tslib';
2
2
  import { Location, CommonModule } from '@angular/common';
3
- import { EventEmitter, Inject, Input, HostBinding, Output, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
+ import { EventEmitter, Inject, Input, HostBinding, Output, Component, ChangeDetectionStrategy, ElementRef, NgZone, Directive, NgModule } from '@angular/core';
4
4
  import { DomSanitizer } from '@angular/platform-browser';
5
5
  import { TUI_DEFAULT_COLOR_HANDLER } from '@taiga-ui/addon-charts/constants';
6
+ import { sum, TuiIdService, tuiDefaultProp, tuiPure, easeInOutQuad, clamp, tuiZonefree, TuiDestroyService, TuiRepeatTimesModule, TuiHoveredModule } from '@taiga-ui/cdk';
7
+ import { colorFallback, TUI_ANIMATIONS_DURATION, TuiPointerHintModule } from '@taiga-ui/core';
8
+ import { PERFORMANCE, ANIMATION_FRAME } from '@ng-web-apis/common';
6
9
  import { describeSector } from '@taiga-ui/addon-charts/utils';
7
- import { sum, TuiIdService, tuiDefaultProp, tuiPure, TuiHoveredModule } from '@taiga-ui/cdk';
8
- import { colorFallback, TuiPointerHintModule } from '@taiga-ui/core';
10
+ import { BehaviorSubject, Observable } from 'rxjs';
11
+ import { pairwise, switchMap, map, takeWhile, takeUntil } from 'rxjs/operators';
9
12
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
10
13
 
11
14
  var RADII = {
@@ -36,6 +39,13 @@ var TuiPieChartComponent = /** @class */ (function () {
36
39
  this.activeItemIndexChange = new EventEmitter();
37
40
  this.autoIdString = idService.generate();
38
41
  }
42
+ Object.defineProperty(TuiPieChartComponent.prototype, "empty", {
43
+ get: function () {
44
+ return !this.getSum(this.value);
45
+ },
46
+ enumerable: true,
47
+ configurable: true
48
+ });
39
49
  Object.defineProperty(TuiPieChartComponent.prototype, "maskId", {
40
50
  get: function () {
41
51
  return 'tui-ring-chart-' + this.autoIdString;
@@ -66,9 +76,6 @@ var TuiPieChartComponent = /** @class */ (function () {
66
76
  enumerable: true,
67
77
  configurable: true
68
78
  });
69
- TuiPieChartComponent.prototype.getContentContext = function ($implicit) {
70
- return { $implicit: $implicit };
71
- };
72
79
  TuiPieChartComponent.prototype.getTransform = function (index) {
73
80
  var transform = this.masked
74
81
  ? "scale(" + TRANSFORM[this.size] + ")"
@@ -84,17 +91,22 @@ var TuiPieChartComponent = /** @class */ (function () {
84
91
  TuiPieChartComponent.prototype.getColor = function (index) {
85
92
  return this.sanitizer.bypassSecurityTrustStyle("var(--tui-chart-" + index + ", " + colorFallback(this.colorHandler(index)) + ")");
86
93
  };
94
+ TuiPieChartComponent.prototype.getSum = function (value) {
95
+ return sum.apply(void 0, __spread(value));
96
+ };
87
97
  TuiPieChartComponent.prototype.getSegments = function (value) {
88
- var total = sum.apply(void 0, __spread(value));
98
+ var _this = this;
89
99
  return value
90
- .map(function (currentItem, currentIndex, array) {
91
- return array.reduce(function (sum, item, index) {
92
- return index < currentIndex ? (item / total) * 360 + sum : sum;
93
- }, (currentItem / total) * 360);
100
+ .map(function (initial, i, array) {
101
+ return array.reduce(function (sum, current, j) { return (j < i ? _this.getDeg(current) + sum : sum); }, _this.getDeg(initial));
94
102
  })
95
- .map(function (angle, index, array) {
96
- return describeSector(array[index - 1] || 0, Math.min(angle, 359.9999));
97
- });
103
+ .map(function (angle, index, array) { return [
104
+ array[index - 1] || 0,
105
+ Math.min(angle, 359.9999),
106
+ ]; });
107
+ };
108
+ TuiPieChartComponent.prototype.getDeg = function (value) {
109
+ return 360 * (value / this.getSum(this.value));
98
110
  };
99
111
  TuiPieChartComponent.prototype.updateActiveItemIndex = function (index) {
100
112
  if (index === this.activeItemIndex) {
@@ -136,18 +148,21 @@ var TuiPieChartComponent = /** @class */ (function () {
136
148
  __decorate([
137
149
  Output()
138
150
  ], TuiPieChartComponent.prototype, "activeItemIndexChange", void 0);
151
+ __decorate([
152
+ HostBinding('class._empty')
153
+ ], TuiPieChartComponent.prototype, "empty", null);
139
154
  __decorate([
140
155
  tuiPure
141
- ], TuiPieChartComponent.prototype, "getContentContext", null);
156
+ ], TuiPieChartComponent.prototype, "getSum", null);
142
157
  __decorate([
143
158
  tuiPure
144
159
  ], TuiPieChartComponent.prototype, "getSegments", null);
145
160
  TuiPieChartComponent = __decorate([
146
161
  Component({
147
162
  selector: 'tui-pie-chart',
148
- template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"100%\"\n width=\"100%\"\n viewBox=\"-100 -100 200 200\"\n focusable=\"false\"\n class=\"t-svg\"\n>\n <defs>\n <mask [attr.id]=\"maskId\">\n <rect\n x=\"-200\"\n y=\"-200\"\n width=\"400\"\n height=\"400\"\n fill=\"white\"\n ></rect>\n <circle cx=\"0\" cy=\"0\" [attr.r]=\"radius\"></circle>\n </mask>\n </defs>\n <g [style.mask]=\"mask\">\n <path\n *ngFor=\"let segment of segments; let index = index\"\n fill=\"currentColor\"\n automation-id=\"tui-pie-chart__segment\"\n tuiHintMode=\"onDark\"\n tuiHintDirection=\"top-right\"\n class=\"t-segment\"\n [attr.transform]=\"getTransform(index)\"\n [attr.d]=\"segment\"\n [style.color]=\"getColor(index)\"\n [tuiPointerHint]=\"getHint(hint)\"\n (tuiHoveredChange)=\"onHovered($event, index)\"\n >\n <ng-template #hint>\n <ng-container\n *ngTemplateOutlet=\"template; context: getContentContext(index)\"\n ></ng-container>\n </ng-template>\n </path>\n </g>\n</svg>\n<ng-template #template let-index>\n <div\n polymorpheus-outlet\n class=\"t-text\"\n [content]=\"hintContent\"\n [context]=\"getContentContext(index)\"\n ></div>\n</ng-template>\n",
163
+ template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"100%\"\n width=\"100%\"\n viewBox=\"-100 -100 200 200\"\n focusable=\"false\"\n class=\"t-svg\"\n>\n <defs>\n <mask [attr.id]=\"maskId\">\n <rect x=\"-200\" y=\"-200\" width=\"400\" height=\"400\" fill=\"white\" />\n <circle cx=\"0\" cy=\"0\" [attr.r]=\"radius\" />\n </mask>\n </defs>\n <g [style.mask]=\"mask\">\n <circle cx=\"0\" cy=\"0\" r=\"100\" class=\"t-placeholder\" />\n <path\n *tuiRepeatTimes=\"let index of segments.length\"\n fill=\"currentColor\"\n automation-id=\"tui-pie-chart__segment\"\n tuiHintMode=\"onDark\"\n tuiHintDirection=\"top-right\"\n d=\"\"\n class=\"t-segment\"\n [attr.transform]=\"getTransform(index)\"\n [style.color]=\"getColor(index)\"\n [tuiPieChart]=\"segments[index]\"\n [tuiPointerHint]=\"getHint(hint)\"\n (tuiHoveredChange)=\"onHovered($event, index)\"\n >\n <ng-template #hint>\n <ng-container\n *ngTemplateOutlet=\"template; context: {$implicit: index}\"\n ></ng-container>\n </ng-template>\n </path>\n </g>\n</svg>\n<ng-template #template let-index>\n <div\n polymorpheus-outlet\n class=\"t-text\"\n [content]=\"hintContent\"\n [context]=\"{$implicit: index}\"\n ></div>\n</ng-template>\n",
149
164
  changeDetection: ChangeDetectionStrategy.OnPush,
150
- styles: [":host{position:relative;display:block}:host[data-tui-host-size=xs]{width:2rem;height:2rem;pointer-events:none}:host[data-tui-host-size='s']{width:4rem;height:4rem}:host[data-tui-host-size='m']{width:9rem;height:9rem}:host[data-tui-host-size='l']{width:11rem;height:11rem}:host[data-tui-host-size=xl]{width:16rem;height:16rem}.t-svg{position:relative;overflow:visible;transform:rotate(-90deg)}.t-segment{transition-property:transform;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out}.t-text{white-space:pre-wrap}"]
165
+ styles: [":host{position:relative;display:block}:host[data-tui-host-size=xs]{width:2rem;height:2rem;pointer-events:none}:host[data-tui-host-size='s']{width:4rem;height:4rem}:host[data-tui-host-size='m']{width:9rem;height:9rem}:host[data-tui-host-size='l']{width:11rem;height:11rem}:host[data-tui-host-size=xl]{width:16rem;height:16rem}.t-svg{position:relative;overflow:visible;transform:rotate(-90deg)}.t-segment{transition-property:transform;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out}:host._empty .t-segment{display:none}.t-placeholder{fill:var(--tui-base-03)}.t-text{white-space:pre-wrap}"]
151
166
  }),
152
167
  __param(0, Inject(TuiIdService)),
153
168
  __param(1, Inject(Location)),
@@ -156,13 +171,76 @@ var TuiPieChartComponent = /** @class */ (function () {
156
171
  return TuiPieChartComponent;
157
172
  }());
158
173
 
174
+ // @dynamic
175
+ var TuiPieChartDirective = /** @class */ (function () {
176
+ function TuiPieChartDirective(_a, ngZone, destroy$, performance, animationFrame$, duration) {
177
+ var nativeElement = _a.nativeElement;
178
+ this.sector$ = new BehaviorSubject([0, 0]);
179
+ this.sector$
180
+ .pipe(pairwise(), switchMap(function (_a) {
181
+ var _b = __read(_a, 2), prev = _b[0], cur = _b[1];
182
+ var now = performance.now();
183
+ var startDelta = cur[0] - prev[0];
184
+ var endDelta = cur[1] - prev[1];
185
+ return animationFrame$.pipe(map(function (timestamp) {
186
+ return easeInOutQuad(clamp((timestamp - now) / duration, 0, 1));
187
+ }), takeWhile(function (progress) { return progress < 1; }, true), map(function (progress) { return [
188
+ prev[0] + startDelta * progress,
189
+ cur[1] > 359 ? cur[1] : prev[1] + endDelta * progress,
190
+ ]; }));
191
+ }), tuiZonefree(ngZone), takeUntil(destroy$))
192
+ .subscribe(function (_a) {
193
+ var _b = __read(_a, 2), start = _b[0], end = _b[1];
194
+ nativeElement.setAttribute('d', describeSector(start, end));
195
+ });
196
+ }
197
+ Object.defineProperty(TuiPieChartDirective.prototype, "tuiPieChart", {
198
+ set: function (sector) {
199
+ this.sector$.next(sector);
200
+ },
201
+ enumerable: true,
202
+ configurable: true
203
+ });
204
+ TuiPieChartDirective.ctorParameters = function () { return [
205
+ { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
206
+ { type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
207
+ { type: Observable, decorators: [{ type: Inject, args: [TuiDestroyService,] }] },
208
+ { type: Performance, decorators: [{ type: Inject, args: [PERFORMANCE,] }] },
209
+ { type: Observable, decorators: [{ type: Inject, args: [ANIMATION_FRAME,] }] },
210
+ { type: Number, decorators: [{ type: Inject, args: [TUI_ANIMATIONS_DURATION,] }] }
211
+ ]; };
212
+ __decorate([
213
+ Input(),
214
+ tuiDefaultProp()
215
+ ], TuiPieChartDirective.prototype, "tuiPieChart", null);
216
+ TuiPieChartDirective = __decorate([
217
+ Directive({
218
+ selector: 'path[tuiPieChart]',
219
+ providers: [TuiDestroyService],
220
+ }),
221
+ __param(0, Inject(ElementRef)),
222
+ __param(1, Inject(NgZone)),
223
+ __param(2, Inject(TuiDestroyService)),
224
+ __param(3, Inject(PERFORMANCE)),
225
+ __param(4, Inject(ANIMATION_FRAME)),
226
+ __param(5, Inject(TUI_ANIMATIONS_DURATION))
227
+ ], TuiPieChartDirective);
228
+ return TuiPieChartDirective;
229
+ }());
230
+
159
231
  var TuiPieChartModule = /** @class */ (function () {
160
232
  function TuiPieChartModule() {
161
233
  }
162
234
  TuiPieChartModule = __decorate([
163
235
  NgModule({
164
- imports: [CommonModule, TuiHoveredModule, PolymorpheusModule, TuiPointerHintModule],
165
- declarations: [TuiPieChartComponent],
236
+ imports: [
237
+ CommonModule,
238
+ TuiRepeatTimesModule,
239
+ TuiHoveredModule,
240
+ PolymorpheusModule,
241
+ TuiPointerHintModule,
242
+ ],
243
+ declarations: [TuiPieChartComponent, TuiPieChartDirective],
166
244
  exports: [TuiPieChartComponent],
167
245
  })
168
246
  ], TuiPieChartModule);
@@ -173,5 +251,5 @@ var TuiPieChartModule = /** @class */ (function () {
173
251
  * Generated bundle index. Do not edit.
174
252
  */
175
253
 
176
- export { TuiPieChartComponent, TuiPieChartModule };
254
+ export { TuiPieChartComponent, TuiPieChartDirective, TuiPieChartModule };
177
255
  //# sourceMappingURL=taiga-ui-addon-charts-components-pie-chart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-pie-chart.js","sources":["ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.component.ts","ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.module.ts","ng://@taiga-ui/addon-charts/components/pie-chart/taiga-ui-addon-charts-components-pie-chart.ts"],"sourcesContent":["import {Location} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n} from '@angular/core';\nimport {DomSanitizer, SafeValue} from '@angular/platform-browser';\nimport {TUI_DEFAULT_COLOR_HANDLER} from '@taiga-ui/addon-charts/constants';\nimport {TuiColorHandler} from '@taiga-ui/addon-charts/types';\nimport {describeSector} from '@taiga-ui/addon-charts/utils';\nimport {\n sum,\n TuiContextWithImplicit,\n tuiDefaultProp,\n TuiIdService,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {colorFallback, TuiSizeXL, TuiSizeXS} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nconst RADII = {\n xs: '50',\n s: '50',\n m: '77.8',\n l: '81.9',\n xl: '81.3',\n};\nconst TRANSFORM = {\n xs: 1.15,\n s: 1.25,\n m: 1.11,\n l: 1.09,\n xl: 1.08,\n};\n\n// TODO: Remove sanitizer when Angular version is bumped\n@Component({\n selector: 'tui-pie-chart',\n templateUrl: './pie-chart.template.html',\n styleUrls: ['./pie-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPieChartComponent {\n private readonly autoIdString: string;\n\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-tui-host-size')\n @tuiDefaultProp()\n size: TuiSizeXS | TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n colorHandler: TuiColorHandler = TUI_DEFAULT_COLOR_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n hintContent: PolymorpheusContent<TuiContextWithImplicit<number>> = '';\n\n @Input()\n @tuiDefaultProp()\n masked = false;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n activeItemIndexChange = new EventEmitter<number>();\n\n constructor(\n @Inject(TuiIdService) idService: TuiIdService,\n @Inject(Location) private readonly locationRef: Location,\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n ) {\n this.autoIdString = idService.generate();\n }\n\n get maskId(): string {\n return 'tui-ring-chart-' + this.autoIdString;\n }\n\n get mask(): string | null {\n return this.masked\n ? `url(${this.locationRef.prepareExternalUrl(this.locationRef.path())}#${\n this.maskId\n })`\n : null;\n }\n\n get radius(): string {\n return RADII[this.size];\n }\n\n get segments(): readonly string[] {\n return this.getSegments(this.value);\n }\n\n @tuiPure\n getContentContext($implicit: number): TuiContextWithImplicit<number> {\n return {$implicit};\n }\n\n getTransform(index: number): string | null {\n const transform = this.masked\n ? `scale(${TRANSFORM[this.size]})`\n : `scale(${TRANSFORM['xs']})`;\n\n return index === this.activeItemIndex ? transform : null;\n }\n\n getHint(hint: PolymorpheusContent): PolymorpheusContent {\n return this.hintContent ? hint : '';\n }\n\n onHovered(hovered: boolean, index: number) {\n this.updateActiveItemIndex(hovered ? index : NaN);\n }\n\n getColor(index: number): SafeValue {\n return this.sanitizer.bypassSecurityTrustStyle(\n `var(--tui-chart-${index}, ${colorFallback(this.colorHandler(index))})`,\n );\n }\n\n @tuiPure\n private getSegments(value: readonly number[]): readonly string[] {\n const total = sum(...value);\n\n return value\n .map((currentItem, currentIndex, array) =>\n array.reduce(\n (sum, item, index) =>\n index < currentIndex ? (item / total) * 360 + sum : sum,\n (currentItem / total) * 360,\n ),\n )\n .map((angle, index, array) =>\n describeSector(array[index - 1] || 0, Math.min(angle, 359.9999)),\n );\n }\n\n private updateActiveItemIndex(index: number) {\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = index;\n this.activeItemIndexChange.next(index);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiHoveredModule} from '@taiga-ui/cdk';\nimport {TuiPointerHintModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPieChartComponent} from './pie-chart.component';\n\n@NgModule({\n imports: [CommonModule, TuiHoveredModule, PolymorpheusModule, TuiPointerHintModule],\n declarations: [TuiPieChartComponent],\n exports: [TuiPieChartComponent],\n})\nexport class TuiPieChartModule {}\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-pie-chart.js","sources":["ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.component.ts","ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.directive.ts","ng://@taiga-ui/addon-charts/components/pie-chart/pie-chart.module.ts","ng://@taiga-ui/addon-charts/components/pie-chart/taiga-ui-addon-charts-components-pie-chart.ts"],"sourcesContent":["import {Location} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n} from '@angular/core';\nimport {DomSanitizer, SafeValue} from '@angular/platform-browser';\nimport {TUI_DEFAULT_COLOR_HANDLER} from '@taiga-ui/addon-charts/constants';\nimport {TuiColorHandler} from '@taiga-ui/addon-charts/types';\nimport {\n sum,\n TuiContextWithImplicit,\n tuiDefaultProp,\n TuiIdService,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {colorFallback, TuiSizeXL, TuiSizeXS} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nconst RADII = {\n xs: '50',\n s: '50',\n m: '77.8',\n l: '81.9',\n xl: '81.3',\n};\nconst TRANSFORM = {\n xs: 1.15,\n s: 1.25,\n m: 1.11,\n l: 1.09,\n xl: 1.08,\n};\n\n// TODO: Remove sanitizer when Angular version is bumped\n@Component({\n selector: 'tui-pie-chart',\n templateUrl: './pie-chart.template.html',\n styleUrls: ['./pie-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPieChartComponent {\n private readonly autoIdString: string;\n\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-tui-host-size')\n @tuiDefaultProp()\n size: TuiSizeXS | TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n colorHandler: TuiColorHandler = TUI_DEFAULT_COLOR_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n hintContent: PolymorpheusContent<TuiContextWithImplicit<number>> = '';\n\n @Input()\n @tuiDefaultProp()\n masked = false;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n activeItemIndexChange = new EventEmitter<number>();\n\n constructor(\n @Inject(TuiIdService) idService: TuiIdService,\n @Inject(Location) private readonly locationRef: Location,\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n ) {\n this.autoIdString = idService.generate();\n }\n\n @HostBinding('class._empty')\n get empty(): boolean {\n return !this.getSum(this.value);\n }\n\n get maskId(): string {\n return 'tui-ring-chart-' + this.autoIdString;\n }\n\n get mask(): string | null {\n return this.masked\n ? `url(${this.locationRef.prepareExternalUrl(this.locationRef.path())}#${\n this.maskId\n })`\n : null;\n }\n\n get radius(): string {\n return RADII[this.size];\n }\n\n get segments(): readonly [number, number][] {\n return this.getSegments(this.value);\n }\n\n getTransform(index: number): string | null {\n const transform = this.masked\n ? `scale(${TRANSFORM[this.size]})`\n : `scale(${TRANSFORM['xs']})`;\n\n return index === this.activeItemIndex ? transform : null;\n }\n\n getHint(hint: PolymorpheusContent): PolymorpheusContent {\n return this.hintContent ? hint : '';\n }\n\n onHovered(hovered: boolean, index: number) {\n this.updateActiveItemIndex(hovered ? index : NaN);\n }\n\n getColor(index: number): SafeValue {\n return this.sanitizer.bypassSecurityTrustStyle(\n `var(--tui-chart-${index}, ${colorFallback(this.colorHandler(index))})`,\n );\n }\n\n @tuiPure\n private getSum(value: readonly number[]): number {\n return sum(...value);\n }\n\n @tuiPure\n private getSegments(value: readonly number[]): readonly [number, number][] {\n return value\n .map((initial, i, array) =>\n array.reduce(\n (sum, current, j) => (j < i ? this.getDeg(current) + sum : sum),\n this.getDeg(initial),\n ),\n )\n .map((angle, index, array) => [\n array[index - 1] || 0,\n Math.min(angle, 359.9999),\n ]);\n }\n\n private getDeg(value: number): number {\n return 360 * (value / this.getSum(this.value));\n }\n\n private updateActiveItemIndex(index: number) {\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = index;\n this.activeItemIndexChange.next(index);\n }\n}\n","import {Directive, ElementRef, Inject, Input, NgZone} from '@angular/core';\nimport {ANIMATION_FRAME, PERFORMANCE} from '@ng-web-apis/common';\nimport {describeSector} from '@taiga-ui/addon-charts/utils';\nimport {\n clamp,\n easeInOutQuad,\n tuiDefaultProp,\n TuiDestroyService,\n tuiZonefree,\n} from '@taiga-ui/cdk';\nimport {TUI_ANIMATIONS_DURATION} from '@taiga-ui/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {map, pairwise, switchMap, takeUntil, takeWhile} from 'rxjs/operators';\n\n// @dynamic\n@Directive({\n selector: 'path[tuiPieChart]',\n providers: [TuiDestroyService],\n})\nexport class TuiPieChartDirective {\n private readonly sector$ = new BehaviorSubject<readonly [number, number]>([0, 0]);\n\n @Input()\n @tuiDefaultProp()\n set tuiPieChart(sector: readonly [number, number]) {\n this.sector$.next(sector);\n }\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef<SVGPathElement>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(TuiDestroyService) destroy$: Observable<unknown>,\n @Inject(PERFORMANCE) performance: Performance,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TUI_ANIMATIONS_DURATION) duration: number,\n ) {\n this.sector$\n .pipe(\n pairwise(),\n switchMap(([prev, cur]) => {\n const now = performance.now();\n const startDelta = cur[0] - prev[0];\n const endDelta = cur[1] - prev[1];\n\n return animationFrame$.pipe(\n map(timestamp =>\n easeInOutQuad(clamp((timestamp - now) / duration, 0, 1)),\n ),\n takeWhile(progress => progress < 1, true),\n map(progress => [\n prev[0] + startDelta * progress,\n cur[1] > 359 ? cur[1] : prev[1] + endDelta * progress,\n ]),\n );\n }),\n tuiZonefree(ngZone),\n takeUntil(destroy$),\n )\n .subscribe(([start, end]) => {\n nativeElement.setAttribute('d', describeSector(start, end));\n });\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiHoveredModule, TuiRepeatTimesModule} from '@taiga-ui/cdk';\nimport {TuiPointerHintModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPieChartComponent} from './pie-chart.component';\nimport {TuiPieChartDirective} from './pie-chart.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiRepeatTimesModule,\n TuiHoveredModule,\n PolymorpheusModule,\n TuiPointerHintModule,\n ],\n declarations: [TuiPieChartComponent, TuiPieChartDirective],\n exports: [TuiPieChartComponent],\n})\nexport class TuiPieChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { EventEmitter, Input, HostBinding, Output, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
3
  import { TUI_DEFAULT_COLOR_HANDLER } from '@taiga-ui/addon-charts/constants';
4
- import { tuiDefaultProp, tuiPure } from '@taiga-ui/cdk';
4
+ import { tuiDefaultProp } from '@taiga-ui/cdk';
5
5
  import { CommonModule } from '@angular/common';
6
6
  import { TuiPieChartModule } from '@taiga-ui/addon-charts/components/pie-chart';
7
7
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
8
8
 
9
+ // TODO: Refactor to use ng-content
9
10
  var TuiRingChartComponent = /** @class */ (function () {
10
11
  function TuiRingChartComponent() {
11
12
  this.value = [];
@@ -23,19 +24,9 @@ var TuiRingChartComponent = /** @class */ (function () {
23
24
  enumerable: true,
24
25
  configurable: true
25
26
  });
26
- Object.defineProperty(TuiRingChartComponent.prototype, "contentContext", {
27
- get: function () {
28
- return this.getContentContext(this.activeItemIndex, this.value);
29
- },
30
- enumerable: true,
31
- configurable: true
32
- });
33
27
  TuiRingChartComponent.prototype.onActiveItemIndexChange = function (index) {
34
28
  this.updateActiveItemIndex(index);
35
29
  };
36
- TuiRingChartComponent.prototype.getContentContext = function ($implicit, value) {
37
- return { $implicit: $implicit, value: value };
38
- };
39
30
  TuiRingChartComponent.prototype.updateActiveItemIndex = function (index) {
40
31
  if (index === this.activeItemIndex) {
41
32
  return;
@@ -71,13 +62,10 @@ var TuiRingChartComponent = /** @class */ (function () {
71
62
  __decorate([
72
63
  Output()
73
64
  ], TuiRingChartComponent.prototype, "activeItemIndexChange", void 0);
74
- __decorate([
75
- tuiPure
76
- ], TuiRingChartComponent.prototype, "getContentContext", null);
77
65
  TuiRingChartComponent = __decorate([
78
66
  Component({
79
67
  selector: 'tui-ring-chart',
80
- template: "<div *ngIf=\"hasContent\" class=\"t-content\">\n <div\n polymorpheus-outlet\n automation-id=\"tui-ring-chart__content\"\n class=\"t-wrapper\"\n [content]=\"content\"\n [context]=\"contentContext\"\n ></div>\n</div>\n\n<tui-pie-chart\n [masked]=\"true\"\n [value]=\"value\"\n [colorHandler]=\"colorHandler\"\n [size]=\"size\"\n [activeItemIndex]=\"activeItemIndex\"\n (activeItemIndexChange)=\"onActiveItemIndexChange($event)\"\n></tui-pie-chart>\n\n<div class=\"t-shield\"></div>\n",
68
+ template: "<div *ngIf=\"hasContent\" class=\"t-content\">\n <div\n polymorpheus-outlet\n automation-id=\"tui-ring-chart__content\"\n class=\"t-wrapper\"\n [content]=\"content\"\n [context]=\"{$implicit: activeItemIndex, value: value}\"\n ></div>\n</div>\n\n<tui-pie-chart\n [masked]=\"true\"\n [value]=\"value\"\n [colorHandler]=\"colorHandler\"\n [size]=\"size\"\n [activeItemIndex]=\"activeItemIndex\"\n (activeItemIndexChange)=\"onActiveItemIndexChange($event)\"\n></tui-pie-chart>\n\n<div class=\"t-shield\"></div>\n",
81
69
  changeDetection: ChangeDetectionStrategy.OnPush,
82
70
  styles: [":host{position:relative;display:block}:host[data-tui-host-size='s']{width:4rem;height:4rem}:host[data-tui-host-size='m']{width:9rem;height:9rem}:host[data-tui-host-size='l']{width:11rem;height:11rem}:host[data-tui-host-size=xl]{width:16rem;height:16rem}.t-content{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;font:var(--tui-font-text-m);max-height:100%;flex-direction:column;justify-content:center;text-align:center;padding:1.5rem;border-radius:100%;box-sizing:border-box;overflow:hidden;word-break:break-word;white-space:pre-wrap;color:var(--tui-text-02)}:host[data-tui-host-size='m'] .t-content{font:var(--tui-font-text-xs)}.t-wrapper:first-line{color:var(--tui-text-01)}:host[data-tui-host-size='l'] .t-wrapper:first-line{font:var(--tui-font-text-l);font-weight:700}:host[data-tui-host-size='m'] .t-wrapper:first-line{font:var(--tui-font-text-m);font-weight:700}.t-shield{position:absolute;top:25%;left:25%;right:25%;bottom:25%;border-radius:100%}"]
83
71
  })
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-ring-chart.js","sources":["ng://@taiga-ui/addon-charts/components/ring-chart/ring-chart.component.ts","ng://@taiga-ui/addon-charts/components/ring-chart/ring-chart.module.ts","ng://@taiga-ui/addon-charts/components/ring-chart/taiga-ui-addon-charts-components-ring-chart.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport {TUI_DEFAULT_COLOR_HANDLER} from '@taiga-ui/addon-charts/constants';\nimport {TuiRingChartContext} from '@taiga-ui/addon-charts/interfaces';\nimport {TuiColorHandler} from '@taiga-ui/addon-charts/types';\nimport {tuiDefaultProp, tuiPure} from '@taiga-ui/cdk';\nimport {TuiSizeS, TuiSizeXL} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\n@Component({\n selector: 'tui-ring-chart',\n templateUrl: './ring-chart.template.html',\n styleUrls: ['./ring-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiRingChartComponent {\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-tui-host-size')\n @tuiDefaultProp()\n size: TuiSizeS | TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n colorHandler: TuiColorHandler = TUI_DEFAULT_COLOR_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n content: PolymorpheusContent<TuiRingChartContext> = '';\n\n @Input()\n @tuiDefaultProp()\n masked = true;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n activeItemIndexChange = new EventEmitter<number>();\n\n get hasContent(): boolean {\n return this.size !== 's' && !!this.content;\n }\n\n get contentContext(): TuiRingChartContext {\n return this.getContentContext(this.activeItemIndex, this.value);\n }\n\n onActiveItemIndexChange(index: number) {\n this.updateActiveItemIndex(index);\n }\n\n @tuiPure\n private getContentContext(\n $implicit: number,\n value: readonly number[],\n ): TuiRingChartContext {\n return {$implicit, value};\n }\n\n private updateActiveItemIndex(index: number) {\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = index;\n this.activeItemIndexChange.next(index);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiPieChartModule} from '@taiga-ui/addon-charts/components/pie-chart';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiRingChartComponent} from './ring-chart.component';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusModule, TuiPieChartModule],\n declarations: [TuiRingChartComponent],\n exports: [TuiRingChartComponent],\n})\nexport class TuiRingChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;IAqBA;QAGI,UAAK,GAAsB,EAAE,CAAC;QAK9B,SAAI,GAAyB,GAAG,CAAC;QAIjC,iBAAY,GAAoB,yBAAyB,CAAC;QAI1D,YAAO,GAA6C,EAAE,CAAC;QAIvD,WAAM,GAAG,IAAI,CAAC;QAId,oBAAe,GAAG,GAAG,CAAC;QAGtB,0BAAqB,GAAG,IAAI,YAAY,EAAU,CAAC;KA8BtD;IA5BG,sBAAI,6CAAU;aAAd;YACI,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;SAC9C;;;OAAA;IAED,sBAAI,iDAAc;aAAlB;YACI,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACnE;;;OAAA;IAED,uDAAuB,GAAvB,UAAwB,KAAa;QACjC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrC;IAGO,iDAAiB,GAAzB,UACI,SAAiB,EACjB,KAAwB;QAExB,OAAO,EAAC,SAAS,WAAA,EAAE,KAAK,OAAA,EAAC,CAAC;KAC7B;IAEO,qDAAqB,GAA7B,UAA8B,KAAa;QACvC,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;YAChC,OAAO;SACV;QAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;IArDD;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;wDACa;IAK9B;QAHC,KAAK,EAAE;QACP,WAAW,CAAC,yBAAyB,CAAC;QACtC,cAAc,EAAE;uDACgB;IAIjC;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;+DACyC;IAI1D;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;0DACsC;IAIvD;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;yDACH;IAId;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;kEACK;IAGtB;QADC,MAAM,EAAE;wEAC0C;IAenD;QADC,OAAO;kEAMP;IA/CQ,qBAAqB;QANjC,SAAS,CAAC;YACP,QAAQ,EAAE,gBAAgB;YAC1B,wiBAAyC;YAEzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;SAClD,CAAC;OACW,qBAAqB,CAyDjC;IAAD,4BAAC;CAzDD;;;ICTA;KAAkC;IAArB,kBAAkB;QAL9B,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;YAC9D,YAAY,EAAE,CAAC,qBAAqB,CAAC;YACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;SACnC,CAAC;OACW,kBAAkB,CAAG;IAAD,yBAAC;CAAlC;;ACZA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-ring-chart.js","sources":["ng://@taiga-ui/addon-charts/components/ring-chart/ring-chart.component.ts","ng://@taiga-ui/addon-charts/components/ring-chart/ring-chart.module.ts","ng://@taiga-ui/addon-charts/components/ring-chart/taiga-ui-addon-charts-components-ring-chart.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport {TUI_DEFAULT_COLOR_HANDLER} from '@taiga-ui/addon-charts/constants';\nimport {TuiRingChartContext} from '@taiga-ui/addon-charts/interfaces';\nimport {TuiColorHandler} from '@taiga-ui/addon-charts/types';\nimport {tuiDefaultProp} from '@taiga-ui/cdk';\nimport {TuiSizeS, TuiSizeXL} from '@taiga-ui/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\n// TODO: Refactor to use ng-content\n@Component({\n selector: 'tui-ring-chart',\n templateUrl: './ring-chart.template.html',\n styleUrls: ['./ring-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiRingChartComponent {\n @Input()\n @tuiDefaultProp()\n value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-tui-host-size')\n @tuiDefaultProp()\n size: TuiSizeS | TuiSizeXL = 'm';\n\n @Input()\n @tuiDefaultProp()\n colorHandler: TuiColorHandler = TUI_DEFAULT_COLOR_HANDLER;\n\n @Input()\n @tuiDefaultProp()\n content: PolymorpheusContent<TuiRingChartContext> = '';\n\n @Input()\n @tuiDefaultProp()\n masked = true;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = NaN;\n\n @Output()\n activeItemIndexChange = new EventEmitter<number>();\n\n get hasContent(): boolean {\n return this.size !== 's' && !!this.content;\n }\n\n onActiveItemIndexChange(index: number) {\n this.updateActiveItemIndex(index);\n }\n\n private updateActiveItemIndex(index: number) {\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = index;\n this.activeItemIndexChange.next(index);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiPieChartModule} from '@taiga-ui/addon-charts/components/pie-chart';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiRingChartComponent} from './ring-chart.component';\n\n@NgModule({\n imports: [CommonModule, PolymorpheusModule, TuiPieChartModule],\n declarations: [TuiRingChartComponent],\n exports: [TuiRingChartComponent],\n})\nexport class TuiRingChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAeA;;IAOA;QAGI,UAAK,GAAsB,EAAE,CAAC;QAK9B,SAAI,GAAyB,GAAG,CAAC;QAIjC,iBAAY,GAAoB,yBAAyB,CAAC;QAI1D,YAAO,GAA6C,EAAE,CAAC;QAIvD,WAAM,GAAG,IAAI,CAAC;QAId,oBAAe,GAAG,GAAG,CAAC;QAGtB,0BAAqB,GAAG,IAAI,YAAY,EAAU,CAAC;KAkBtD;IAhBG,sBAAI,6CAAU;aAAd;YACI,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;SAC9C;;;OAAA;IAED,uDAAuB,GAAvB,UAAwB,KAAa;QACjC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrC;IAEO,qDAAqB,GAA7B,UAA8B,KAAa;QACvC,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;YAChC,OAAO;SACV;QAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;IAzCD;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;wDACa;IAK9B;QAHC,KAAK,EAAE;QACP,WAAW,CAAC,yBAAyB,CAAC;QACtC,cAAc,EAAE;uDACgB;IAIjC;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;+DACyC;IAI1D;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;0DACsC;IAIvD;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;yDACH;IAId;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;kEACK;IAGtB;QADC,MAAM,EAAE;wEAC0C;IA3B1C,qBAAqB;QANjC,SAAS,CAAC;YACP,QAAQ,EAAE,gBAAgB;YAC1B,okBAAyC;YAEzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;SAClD,CAAC;OACW,qBAAqB,CA6CjC;IAAD,4BAAC;CA7CD;;;ICVA;KAAkC;IAArB,kBAAkB;QAL9B,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;YAC9D,YAAY,EAAE,CAAC,qBAAqB,CAAC;YACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;SACnC,CAAC;OACW,kBAAkB,CAAG;IAAD,yBAAC;CAAlC;;ACZA;;;;;;"}
@@ -25,6 +25,7 @@ function controlPoint(current, previous, next, reverse, smoothing) {
25
25
  return [x, y];
26
26
  }
27
27
 
28
+ var EMPTY = 'M 100 0 A 100 100 0 1 1 100 0 L 0 0';
28
29
  /**
29
30
  * Describes a normalized sector by angles. Normalized meaning it supposed to work with
30
31
  * SVG with viewBox="-1 -1 2 2" so that 0 coordinates in cartesian and polar match the same spot.
@@ -42,7 +43,7 @@ function describeSector(startAngle, endAngle) {
42
43
  var endX = Math.cos(endRad) * 100;
43
44
  var endY = Math.sin(endRad) * 100;
44
45
  var largeArcFlag = toInt(endAngle - startAngle > 180);
45
- return [
46
+ var result = [
46
47
  'M',
47
48
  startX,
48
49
  startY,
@@ -52,7 +53,8 @@ function describeSector(startAngle, endAngle) {
52
53
  endX,
53
54
  endY,
54
55
  'L 0 0',
55
- ].join(' ');
56
+ ];
57
+ return isNaN(endX) ? EMPTY : result.join(' ');
56
58
  }
57
59
 
58
60
  function drawCurve(array, index, smoothing) {