@taiga-ui/addon-charts 4.52.0-canary.763e67d → 4.52.0-canary.7c53ccc

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 (41) hide show
  1. package/components/arc-chart/arc-chart.component.d.ts +2 -8
  2. package/components/axes/axes.component.d.ts +0 -4
  3. package/components/bar/bar.component.d.ts +4 -5
  4. package/components/bar-chart/bar-chart.component.d.ts +11 -14
  5. package/components/bar-set/bar-set.component.d.ts +7 -9
  6. package/components/chart-hint/chart-hint.directive.d.ts +8 -0
  7. package/components/chart-hint/index.d.ts +1 -0
  8. package/components/index.d.ts +1 -0
  9. package/components/legend-item/legend-item.component.d.ts +6 -7
  10. package/components/line-chart/line-chart-hint.directive.d.ts +3 -3
  11. package/components/line-chart/line-chart.component.d.ts +19 -25
  12. package/components/line-days-chart/line-days-chart-hint.directive.d.ts +2 -3
  13. package/components/line-days-chart/line-days-chart.component.d.ts +13 -14
  14. package/components/pie-chart/pie-chart.component.d.ts +7 -14
  15. package/components/pie-chart/pie-chart.directive.d.ts +2 -3
  16. package/components/ring-chart/ring-chart.component.d.ts +4 -9
  17. package/fesm2022/taiga-ui-addon-charts-components-arc-chart.mjs +12 -21
  18. package/fesm2022/taiga-ui-addon-charts-components-arc-chart.mjs.map +1 -1
  19. package/fesm2022/taiga-ui-addon-charts-components-axes.mjs +5 -16
  20. package/fesm2022/taiga-ui-addon-charts-components-axes.mjs.map +1 -1
  21. package/fesm2022/taiga-ui-addon-charts-components-bar-chart.mjs +23 -52
  22. package/fesm2022/taiga-ui-addon-charts-components-bar-chart.mjs.map +1 -1
  23. package/fesm2022/taiga-ui-addon-charts-components-bar-set.mjs +13 -33
  24. package/fesm2022/taiga-ui-addon-charts-components-bar-set.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-addon-charts-components-bar.mjs +9 -20
  26. package/fesm2022/taiga-ui-addon-charts-components-bar.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-addon-charts-components-chart-hint.mjs +24 -0
  28. package/fesm2022/taiga-ui-addon-charts-components-chart-hint.mjs.map +1 -0
  29. package/fesm2022/taiga-ui-addon-charts-components-legend-item.mjs +12 -25
  30. package/fesm2022/taiga-ui-addon-charts-components-legend-item.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-addon-charts-components-line-chart.mjs +61 -115
  32. package/fesm2022/taiga-ui-addon-charts-components-line-chart.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-addon-charts-components-line-days-chart.mjs +82 -112
  34. package/fesm2022/taiga-ui-addon-charts-components-line-days-chart.mjs.map +1 -1
  35. package/fesm2022/taiga-ui-addon-charts-components-pie-chart.mjs +48 -81
  36. package/fesm2022/taiga-ui-addon-charts-components-pie-chart.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-addon-charts-components-ring-chart.mjs +8 -27
  38. package/fesm2022/taiga-ui-addon-charts-components-ring-chart.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-addon-charts-components.mjs +1 -0
  40. package/fesm2022/taiga-ui-addon-charts-components.mjs.map +1 -1
  41. package/package.json +9 -5
@@ -1,27 +1,21 @@
1
1
  import { type TuiSizeXL } from '@taiga-ui/core/types';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TuiArcChart {
4
- private readonly arcs;
5
- private readonly indexChange$;
6
4
  protected readonly initialized: import("@angular/core").Signal<boolean>;
7
5
  readonly value: import("@angular/core").InputSignal<readonly number[]>;
8
6
  readonly size: import("@angular/core").InputSignal<TuiSizeXL>;
9
7
  readonly max: import("@angular/core").InputSignal<number>;
10
8
  readonly minLabel: import("@angular/core").InputSignal<string>;
11
9
  readonly maxLabel: import("@angular/core").InputSignal<string>;
12
- /**
13
- * Set to change the index of the active arc.
14
- * Will be overridden by hover state.
15
- */
16
10
  readonly activeItemIndex: import("@angular/core").ModelSignal<number>;
17
- readonly activeItemIndexChange: import("@angular/core").OutputRef<number>;
18
11
  protected get width(): number;
19
12
  protected get strokeWidth(): number;
13
+ protected onHovered(hovered: boolean, index: number): void;
20
14
  protected isInactive(index: number): boolean;
21
15
  protected getInset(index: number): number;
22
16
  protected getDiameter(index: number): number;
23
17
  protected getLength(index: number): number;
24
18
  protected getOffset(index: number): number;
25
19
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiArcChart, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiArcChart, "tui-arc-chart", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "minLabel": { "alias": "minLabel"; "required": false; "isSignal": true; }; "maxLabel": { "alias": "maxLabel"; "required": false; "isSignal": true; }; "activeItemIndex": { "alias": "activeItemIndex"; "required": false; "isSignal": true; }; }, { "activeItemIndex": "activeItemIndexChange"; "activeItemIndexChange": "activeItemIndexChange"; }, never, ["*"], true, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiArcChart, "tui-arc-chart", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "minLabel": { "alias": "minLabel"; "required": false; "isSignal": true; }; "maxLabel": { "alias": "maxLabel"; "required": false; "isSignal": true; }; "activeItemIndex": { "alias": "activeItemIndex"; "required": false; "isSignal": true; }; }, { "activeItemIndex": "activeItemIndexChange"; }, never, ["*"], true, never>;
27
21
  }
@@ -18,10 +18,6 @@ export declare class TuiAxes {
18
18
  readonly horizontalLines: import("@angular/core").InputSignal<number>;
19
19
  readonly horizontalLinesHandler: import("@angular/core").InputSignal<TuiLineHandler>;
20
20
  readonly verticalLines: import("@angular/core").InputSignal<number>;
21
- /**
22
- * A function to handle vertical lines style.
23
- * Initially set to always dashed.
24
- */
25
21
  readonly verticalLinesHandler: import("@angular/core").InputSignal<TuiLineHandler>;
26
22
  readonly fallbackLabel = "\u00A0";
27
23
  readonly hasXLabels: import("@angular/core").Signal<boolean>;
@@ -1,10 +1,9 @@
1
- import { type TuiSizeL, type TuiSizeS } from '@taiga-ui/core/types';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class TuiBar {
4
- value: readonly number[];
5
- size: TuiSizeL | TuiSizeS;
3
+ private readonly sum;
4
+ readonly value: import("@angular/core").InputSignal<readonly number[]>;
5
+ readonly size: import("@angular/core").InputSignal<"m" | "l" | "s">;
6
6
  protected getHeight(value: number): number;
7
- private getSum;
8
7
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiBar, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiBar, "tui-bar", never, { "value": { "alias": "value"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiBar, "tui-bar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10
9
  }
@@ -1,20 +1,19 @@
1
- import { EventEmitter, type QueryList } from '@angular/core';
2
1
  import { type TuiContext, type TuiMapper } from '@taiga-ui/cdk/types';
3
- import { type TuiSizeL, type TuiSizeS } from '@taiga-ui/core/types';
2
+ import { TuiHintHover } from '@taiga-ui/core/portals/hint';
4
3
  import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
5
- import { type Observable } from 'rxjs';
6
4
  import * as i0 from "@angular/core";
7
5
  export declare class TuiBarChart {
8
6
  private readonly hintOptions;
9
7
  private readonly autoId;
10
- protected readonly drivers: QueryList<Observable<boolean>>;
11
- value: ReadonlyArray<readonly number[]>;
12
- max: number;
13
- size: TuiSizeL | TuiSizeS | null;
14
- collapsed: boolean;
15
- readonly tapColumn: EventEmitter<number>;
16
- get transposed(): ReadonlyArray<readonly number[]>;
17
- get computedMax(): number;
8
+ private readonly getMax;
9
+ protected readonly transposed: import("@angular/core").Signal<readonly (readonly number[])[]>;
10
+ protected readonly drivers: import("@angular/core").Signal<readonly TuiHintHover[]>;
11
+ readonly value: import("@angular/core").InputSignal<readonly (readonly number[])[]>;
12
+ readonly max: import("@angular/core").InputSignal<number>;
13
+ readonly size: import("@angular/core").InputSignal<"m" | "l" | "s" | null>;
14
+ readonly collapsed: import("@angular/core").InputSignal<boolean>;
15
+ readonly tapColumn: import("@angular/core").OutputEmitterRef<number>;
16
+ readonly computedMax: import("@angular/core").Signal<number>;
18
17
  readonly percentMapper: TuiMapper<[
19
18
  readonly number[],
20
19
  boolean,
@@ -23,8 +22,6 @@ export declare class TuiBarChart {
23
22
  protected get hintContent(): PolymorpheusContent<TuiContext<number>>;
24
23
  protected get hintAppearance(): string;
25
24
  protected getHintId(index: number): string;
26
- private transpose;
27
- private getMax;
28
25
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiBarChart, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiBarChart, "tui-bar-chart", never, { "value": { "alias": "value"; "required": false; }; "max": { "alias": "max"; "required": false; }; "size": { "alias": "size"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; }, { "tapColumn": "tapColumn"; }, never, never, true, never>;
26
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiBarChart, "tui-bar-chart", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "tapColumn": "tapColumn"; }, never, never, true, never>;
30
27
  }
@@ -1,14 +1,12 @@
1
- import { type TuiSizeL, type TuiSizeS } from '@taiga-ui/core/types';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class TuiBarSet {
4
- value: readonly number[];
5
- size: TuiSizeL | TuiSizeS | null;
6
- collapsed: boolean;
7
- protected get computedValue(): readonly number[];
8
- protected get computedSegments(): readonly number[];
9
- protected get computedSize(): TuiSizeL | TuiSizeS;
3
+ private readonly largest;
4
+ readonly value: import("@angular/core").InputSignal<readonly number[]>;
5
+ readonly size: import("@angular/core").InputSignal<"m" | "l" | "s" | null>;
6
+ readonly collapsed: import("@angular/core").InputSignal<boolean>;
7
+ protected readonly computedValue: import("@angular/core").Signal<readonly number[]>;
8
+ protected readonly computedSegments: import("@angular/core").Signal<readonly number[]>;
10
9
  protected getHeight(value: number): number;
11
- private getLargest;
12
10
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiBarSet, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiBarSet, "tui-bar-set", never, { "value": { "alias": "value"; "required": false; }; "size": { "alias": "size"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; }, {}, never, ["*"], true, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiBarSet, "tui-bar-set", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
14
12
  }
@@ -0,0 +1,8 @@
1
+ import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
2
+ import * as i0 from "@angular/core";
3
+ export declare class TuiChartHint {
4
+ readonly content: import("@angular/core").InputSignal<PolymorpheusContent>;
5
+ readonly appearance: import("@angular/core").InputSignal<string>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiChartHint, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiChartHint, "[tuiHintContent]", never, { "content": { "alias": "tuiHintContent"; "required": false; "isSignal": true; }; "appearance": { "alias": "tuiHintAppearance"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1 @@
1
+ export * from './chart-hint.directive';
@@ -3,6 +3,7 @@ export * from '@taiga-ui/addon-charts/components/axes';
3
3
  export * from '@taiga-ui/addon-charts/components/bar';
4
4
  export * from '@taiga-ui/addon-charts/components/bar-chart';
5
5
  export * from '@taiga-ui/addon-charts/components/bar-set';
6
+ export * from '@taiga-ui/addon-charts/components/chart-hint';
6
7
  export * from '@taiga-ui/addon-charts/components/legend-item';
7
8
  export * from '@taiga-ui/addon-charts/components/line-chart';
8
9
  export * from '@taiga-ui/addon-charts/components/line-days-chart';
@@ -1,12 +1,11 @@
1
1
  import { type TuiSizeS } from '@taiga-ui/core/types';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TuiLegendItem {
4
- active: boolean;
5
- color: string;
6
- text: string;
7
- size: TuiSizeS;
8
- disabled: boolean;
9
- protected get computedColor(): string | null;
4
+ readonly active: import("@angular/core").InputSignal<boolean>;
5
+ readonly color: import("@angular/core").InputSignal<string>;
6
+ readonly text: import("@angular/core").InputSignal<string>;
7
+ readonly size: import("@angular/core").InputSignal<TuiSizeS>;
8
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
10
9
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiLegendItem, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiLegendItem, "tui-legend-item", never, { "active": { "alias": "active"; "required": false; }; "color": { "alias": "color"; "required": false; }; "text": { "alias": "text"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, ["[tuiCheckbox]", "*"], true, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiLegendItem, "tui-legend-item", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["[tuiCheckbox]", "*"], true, never>;
12
11
  }
@@ -12,13 +12,13 @@ export declare class TuiLineChartHint implements AfterViewInit {
12
12
  private readonly destroyRef;
13
13
  private readonly zone;
14
14
  private readonly hovered$;
15
- hint: PolymorpheusContent<TuiContext<readonly TuiPoint[]>>;
15
+ private readonly computedContext;
16
+ readonly hint: import("@angular/core").InputSignal<PolymorpheusContent<TuiContext<readonly (readonly [x: number, y: number])[]>>>;
16
17
  ngAfterViewInit(): void;
17
18
  getContext(index: number, _chart: TuiLineChart): readonly TuiPoint[];
18
19
  raise(index: number, _chart: TuiLineChart): void;
19
- private computeContext;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiLineChartHint, never>;
21
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiLineChartHint, "[tuiLineChartHint]", never, { "hint": { "alias": "tuiLineChartHint"; "required": false; }; }, {}, ["charts", "chartsRef"], never, true, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiLineChartHint, "[tuiLineChartHint]", never, { "hint": { "alias": "tuiLineChartHint"; "required": false; "isSignal": true; }; }, {}, ["charts", "chartsRef"], never, true, never>;
22
22
  }
23
23
  export declare function tuiLineChartDrivers(charts: ReadonlyArray<{
24
24
  drivers$: Observable<ReadonlyArray<Observable<boolean>>>;
@@ -1,43 +1,38 @@
1
- import { type OnChanges } from '@angular/core';
1
+ import { TuiChartHint } from '@taiga-ui/addon-charts/components/chart-hint';
2
2
  import { type TuiLineChartHintContext } from '@taiga-ui/addon-charts/types';
3
3
  import { type TuiStringHandler } from '@taiga-ui/cdk/types';
4
- import { TuiHintHover, TuiHintOptionsDirective } from '@taiga-ui/core/portals/hint';
4
+ import { TuiHintHover } from '@taiga-ui/core/portals/hint';
5
5
  import { type TuiPoint } from '@taiga-ui/core/types';
6
6
  import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
7
- import { type Observable } from 'rxjs';
8
7
  import { TuiLineChartHint } from './line-chart-hint.directive';
9
8
  import * as i0 from "@angular/core";
10
- export declare class TuiLineChart implements OnChanges {
11
- private readonly zone;
9
+ export declare class TuiLineChart {
12
10
  private readonly options;
13
- private readonly hover$;
14
11
  private readonly autoId;
15
12
  private readonly resize;
16
13
  private readonly box;
17
14
  protected readonly hintDirective: TuiLineChartHint | null;
18
- protected readonly hintOptions: TuiHintOptionsDirective | null;
15
+ protected readonly hintOptions: TuiChartHint | null;
19
16
  protected readonly viewBox: import("@angular/core").Signal<string>;
17
+ protected readonly d: import("@angular/core").Signal<string>;
18
+ protected readonly fillD: import("@angular/core").Signal<string>;
20
19
  readonly drivers: import("@angular/core").Signal<readonly TuiHintHover[]>;
21
- readonly drivers$: Observable<readonly TuiHintHover[]>;
22
- x: number;
23
- y: number;
24
- width: number;
25
- height: number;
26
- smoothingFactor: number;
27
- xStringify: TuiStringHandler<number> | null;
28
- yStringify: TuiStringHandler<number> | null;
29
- filled: boolean;
30
- dots: boolean;
31
- value: readonly TuiPoint[];
32
- set valueSetter(value: readonly TuiPoint[]);
33
- ngOnChanges(): void;
20
+ readonly drivers$: import("rxjs").Observable<readonly TuiHintHover[]>;
21
+ readonly x: import("@angular/core").InputSignal<number>;
22
+ readonly y: import("@angular/core").InputSignal<number>;
23
+ readonly width: import("@angular/core").InputSignal<number>;
24
+ readonly height: import("@angular/core").InputSignal<number>;
25
+ readonly smoothingFactor: import("@angular/core").InputSignal<number>;
26
+ xStringify: import("@angular/core").InputSignal<TuiStringHandler<number> | null>;
27
+ yStringify: import("@angular/core").InputSignal<TuiStringHandler<number> | null>;
28
+ readonly filled: import("@angular/core").InputSignal<boolean>;
29
+ readonly dots: import("@angular/core").InputSignal<boolean>;
30
+ value: import("@angular/core").InputSignalWithTransform<readonly (readonly [x: number, y: number])[], readonly (readonly [x: number, y: number])[]>;
31
+ readonly hovered: import("@angular/core").WritableSignal<number>;
34
32
  onHovered(index: number): void;
35
- protected get hovered$(): Observable<number>;
36
33
  protected get hintContent(): PolymorpheusContent<TuiLineChartHintContext<TuiPoint>>;
37
34
  protected get fillId(): string;
38
35
  protected get fill(): string;
39
- protected get d(): string;
40
- protected get fillD(): string;
41
36
  protected get isFocusable(): boolean;
42
37
  protected get hasHints(): boolean;
43
38
  protected onMouseLeave(): void;
@@ -51,8 +46,7 @@ export declare class TuiLineChart implements OnChanges {
51
46
  protected getOffset(x: number): number;
52
47
  protected onMouseEnter(index: number): void;
53
48
  private get isSinglePoint();
54
- private getD;
55
49
  private computeWidth;
56
50
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiLineChart, never>;
57
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiLineChart, "tui-line-chart", never, { "x": { "alias": "x"; "required": false; }; "y": { "alias": "y"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "smoothingFactor": { "alias": "smoothingFactor"; "required": false; }; "xStringify": { "alias": "xStringify"; "required": false; }; "yStringify": { "alias": "yStringify"; "required": false; }; "filled": { "alias": "filled"; "required": false; }; "dots": { "alias": "dots"; "required": false; }; "valueSetter": { "alias": "value"; "required": false; }; }, {}, never, never, true, never>;
51
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiLineChart, "tui-line-chart", never, { "x": { "alias": "x"; "required": false; "isSignal": true; }; "y": { "alias": "y"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "smoothingFactor": { "alias": "smoothingFactor"; "required": false; "isSignal": true; }; "xStringify": { "alias": "xStringify"; "required": false; "isSignal": true; }; "yStringify": { "alias": "yStringify"; "required": false; "isSignal": true; }; "filled": { "alias": "filled"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
58
52
  }
@@ -1,7 +1,6 @@
1
1
  import { type AfterContentInit } from '@angular/core';
2
2
  import { type TuiDay } from '@taiga-ui/cdk/date-time';
3
3
  import { type TuiContext } from '@taiga-ui/cdk/types';
4
- import { type TuiPoint } from '@taiga-ui/core/types';
5
4
  import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class TuiLineDaysChartHint implements AfterContentInit {
@@ -9,11 +8,11 @@ export declare class TuiLineDaysChartHint implements AfterContentInit {
9
8
  private readonly destroyRef;
10
9
  private readonly zone;
11
10
  private readonly hovered$;
12
- hint: PolymorpheusContent<TuiContext<readonly TuiPoint[]>>;
11
+ readonly hint: import("@angular/core").InputSignal<PolymorpheusContent<TuiContext<readonly (readonly [x: number, y: number])[]>>>;
13
12
  ngAfterContentInit(): void;
14
13
  getContext(day: TuiDay): ReadonlyArray<[TuiDay, number]>;
15
14
  raise(day: TuiDay): void;
16
15
  private getMap;
17
16
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiLineDaysChartHint, never>;
18
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiLineDaysChartHint, "[tuiLineChartHint]", never, { "hint": { "alias": "tuiLineChartHint"; "required": false; }; }, {}, ["charts"], never, true, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiLineDaysChartHint, "[tuiLineChartHint]", never, { "hint": { "alias": "tuiLineChartHint"; "required": false; "isSignal": true; }; }, {}, ["charts"], never, true, never>;
19
18
  }
@@ -1,4 +1,4 @@
1
- import { type AfterViewInit, type QueryList } from '@angular/core';
1
+ import { type AfterViewInit } from '@angular/core';
2
2
  import { TuiLineChart } from '@taiga-ui/addon-charts/components/line-chart';
3
3
  import { TuiDay } from '@taiga-ui/cdk/date-time';
4
4
  import { type TuiContext, type TuiStringHandler } from '@taiga-ui/cdk/types';
@@ -11,18 +11,18 @@ export declare class TuiLineDaysChart implements AfterViewInit {
11
11
  private readonly hovered$;
12
12
  private readonly options;
13
13
  private readonly hintDirective;
14
- readonly charts: QueryList<TuiLineChart>;
15
- y: number;
16
- height: number;
17
- smoothingFactor: number;
18
- hintContent: PolymorpheusContent<TuiContext<[TuiDay, number]>>;
19
- xStringify: TuiStringHandler<TuiDay> | null;
20
- yStringify: TuiStringHandler<number> | null;
21
- dots: boolean;
14
+ private readonly brokenMonths;
15
+ readonly charts: import("@angular/core").Signal<readonly TuiLineChart[]>;
16
+ readonly y: import("@angular/core").InputSignal<number>;
17
+ readonly height: import("@angular/core").InputSignal<number>;
18
+ readonly smoothingFactor: import("@angular/core").InputSignal<number>;
19
+ readonly hintContent: import("@angular/core").InputSignal<PolymorpheusContent<TuiContext<[TuiDay, number]>>>;
20
+ readonly xStringify: import("@angular/core").InputSignal<TuiStringHandler<TuiDay> | null>;
21
+ readonly yStringify: import("@angular/core").InputSignal<TuiStringHandler<number> | null>;
22
+ readonly dots: import("@angular/core").InputSignal<boolean>;
22
23
  zIndex: number;
23
- value: ReadonlyArray<[TuiDay, number]>;
24
- set valueSetter(value: ReadonlyArray<[TuiDay, number]>);
25
- get hint(): PolymorpheusContent<TuiContext<[TuiDay, number]>> | PolymorpheusContent<TuiContext<readonly TuiPoint[]>>;
24
+ value: import("@angular/core").InputSignalWithTransform<readonly [TuiDay, number][], readonly [TuiDay, number][]>;
25
+ hint: import("@angular/core").Signal<string | number | import("@taiga-ui/polymorpheus").PolymorpheusComponent<unknown> | import("@angular/platform-browser").SafeValue | import("@taiga-ui/polymorpheus").PolymorpheusHandler<TuiContext<readonly (readonly [x: number, y: number])[]>> | import("@taiga-ui/polymorpheus").PolymorpheusTemplate<"" | Partial<TuiContext<readonly (readonly [x: number, y: number])[]>>> | import("@angular/core").TemplateRef<Partial<TuiContext<readonly (readonly [x: number, y: number])[]>>> | import("@taiga-ui/polymorpheus").PolymorpheusHandler<TuiContext<[TuiDay, number]>> | import("@taiga-ui/polymorpheus").PolymorpheusTemplate<"" | Partial<TuiContext<[TuiDay, number]>>> | import("@angular/core").TemplateRef<Partial<TuiContext<[TuiDay, number]>>> | null | undefined>;
26
26
  ngAfterViewInit(): void;
27
27
  onHovered(day: TuiDay | number): void;
28
28
  raise(index: number, { value }: TuiLineChart): void;
@@ -33,8 +33,7 @@ export declare class TuiLineDaysChart implements AfterViewInit {
33
33
  protected readonly daysStringify: TuiStringHandler<number>;
34
34
  protected getX(index: number): number;
35
35
  protected getWidth(index: number): number;
36
- private breakMonths;
37
36
  private getDay;
38
37
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiLineDaysChart, never>;
39
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiLineDaysChart, "tui-line-days-chart", never, { "y": { "alias": "y"; "required": false; }; "height": { "alias": "height"; "required": false; }; "smoothingFactor": { "alias": "smoothingFactor"; "required": false; }; "hintContent": { "alias": "hintContent"; "required": false; }; "xStringify": { "alias": "xStringify"; "required": false; }; "yStringify": { "alias": "yStringify"; "required": false; }; "dots": { "alias": "dots"; "required": false; }; "valueSetter": { "alias": "value"; "required": false; }; }, {}, never, never, true, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiLineDaysChart, "tui-line-days-chart", never, { "y": { "alias": "y"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "smoothingFactor": { "alias": "smoothingFactor"; "required": false; "isSignal": true; }; "hintContent": { "alias": "hintContent"; "required": false; "isSignal": true; }; "xStringify": { "alias": "xStringify"; "required": false; "isSignal": true; }; "yStringify": { "alias": "yStringify"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
40
39
  }
@@ -1,29 +1,22 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { type TuiContext } from '@taiga-ui/cdk/types';
3
- import { type TuiSizeXL, type TuiSizeXS } from '@taiga-ui/core/types';
4
2
  import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
5
3
  import * as i0 from "@angular/core";
6
4
  export declare class TuiPieChart {
7
5
  private readonly hintOptions;
8
6
  private readonly autoId;
9
- value: readonly number[];
10
- size: TuiSizeXL | TuiSizeXS;
11
- masked: boolean;
12
- activeItemIndex: number;
13
- readonly activeItemIndexChange: EventEmitter<number>;
14
- constructor();
15
- protected get empty(): boolean;
7
+ protected readonly getSum: import("@angular/core").Signal<number>;
8
+ protected readonly segments: import("@angular/core").Signal<readonly [number, number][]>;
9
+ readonly value: import("@angular/core").InputSignal<readonly number[]>;
10
+ readonly size: import("@angular/core").InputSignal<"m" | "l" | "xl" | "s" | "xs">;
11
+ readonly masked: import("@angular/core").InputSignal<boolean>;
12
+ readonly activeItemIndex: import("@angular/core").ModelSignal<number>;
16
13
  protected get hintContent(): PolymorpheusContent<TuiContext<number>>;
17
14
  protected get maskId(): string;
18
15
  protected get mask(): string | null;
19
16
  protected get radius(): string;
20
- protected get segments(): ReadonlyArray<[number, number]>;
21
17
  protected getTransform(index: number): string | null;
22
18
  protected onHovered(hovered: boolean, index: number): void;
23
- private getSum;
24
- private getSegments;
25
19
  private getDeg;
26
- private updateActiveItemIndex;
27
20
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiPieChart, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiPieChart, "tui-pie-chart", never, { "value": { "alias": "value"; "required": false; }; "size": { "alias": "size"; "required": false; }; "masked": { "alias": "masked"; "required": false; }; "activeItemIndex": { "alias": "activeItemIndex"; "required": false; }; }, { "activeItemIndexChange": "activeItemIndexChange"; }, never, never, true, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiPieChart, "tui-pie-chart", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "masked": { "alias": "masked"; "required": false; "isSignal": true; }; "activeItemIndex": { "alias": "activeItemIndex"; "required": false; "isSignal": true; }; }, { "activeItemIndex": "activeItemIndexChange"; }, never, never, true, never>;
29
22
  }
@@ -1,12 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class TuiPieChartDirective {
3
- private readonly sector$;
4
3
  private readonly el;
5
4
  private readonly performance;
6
5
  private readonly animationFrame$;
7
6
  private readonly speed;
7
+ tuiPieChart: import("@angular/core").InputSignal<readonly [number, number]>;
8
8
  protected readonly $: import("rxjs").Subscription;
9
- set tuiPieChart(sector: readonly [number, number]);
10
9
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiPieChartDirective, never>;
11
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiPieChartDirective, "path[tuiPieChart]", never, { "tuiPieChart": { "alias": "tuiPieChart"; "required": false; }; }, {}, never, never, true, never>;
10
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiPieChartDirective, "path[tuiPieChart]", never, { "tuiPieChart": { "alias": "tuiPieChart"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
11
  }
@@ -1,13 +1,8 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { type TuiSizeXL, type TuiSizeXS } from '@taiga-ui/core/types';
3
1
  import * as i0 from "@angular/core";
4
2
  export declare class TuiRingChart {
5
- value: readonly number[];
6
- size: TuiSizeXL | TuiSizeXS;
7
- activeItemIndex: number;
8
- readonly activeItemIndexChange: EventEmitter<number>;
9
- protected onActiveItemIndexChange(index: number): void;
10
- private updateActiveItemIndex;
3
+ readonly value: import("@angular/core").InputSignal<readonly number[]>;
4
+ readonly size: import("@angular/core").InputSignal<"m" | "l" | "xl" | "s" | "xs">;
5
+ readonly activeItemIndex: import("@angular/core").ModelSignal<number>;
11
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiRingChart, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiRingChart, "tui-ring-chart", never, { "value": { "alias": "value"; "required": false; }; "size": { "alias": "size"; "required": false; }; "activeItemIndex": { "alias": "activeItemIndex"; "required": false; }; }, { "activeItemIndexChange": "activeItemIndexChange"; }, never, ["*"], true, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiRingChart, "tui-ring-chart", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "activeItemIndex": { "alias": "activeItemIndex"; "required": false; "isSignal": true; }; }, { "activeItemIndex": "activeItemIndexChange"; }, never, ["*"], true, never>;
13
8
  }
@@ -1,35 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
- import { viewChildren, input, model, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { toObservable, takeUntilDestroyed, toSignal, outputFromObservable } from '@angular/core/rxjs-interop';
4
- import { tuiTypedFromEvent, tuiZonefree } from '@taiga-ui/cdk/observables';
5
- import { merge, map, switchMap, tap, timer, take } from 'rxjs';
2
+ import { input, model, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { toSignal } from '@angular/core/rxjs-interop';
4
+ import { TuiHovered } from '@taiga-ui/cdk/directives/hovered';
5
+ import { tuiZonefree } from '@taiga-ui/cdk/observables';
6
+ import { timer, take, map } from 'rxjs';
6
7
 
7
8
  const ARC = 0.76; // 3/4 with 1% safety offset
8
9
  const SIZE = { m: 9, l: 11, xl: 16 };
9
10
  const WIDTH = { m: 0.25, l: 0.375, xl: 0.5625 };
10
11
  const GAP = { m: 0.125, l: 0.1875, xl: 0.25 };
11
- function arcsToIndex(arcs) {
12
- return arcs.map(({ nativeElement }, index) => merge(tuiTypedFromEvent(nativeElement, 'mouseenter').pipe(map(() => index)), tuiTypedFromEvent(nativeElement, 'mouseleave').pipe(map(() => NaN))));
13
- }
14
12
  class TuiArcChart {
15
13
  constructor() {
16
- this.arcs = viewChildren('arc');
17
- this.indexChange$ = toObservable(this.arcs).pipe(takeUntilDestroyed(), switchMap((arcs) => merge(...arcsToIndex(arcs)).pipe(tap((i) => this.activeItemIndex.set(i)))));
18
- this.initialized = toSignal(timer(0).pipe(tuiZonefree(), take(1),
19
- // The linter rule 'no-restricted-syntax' incorrectly flags 'map(() => true)' here,
20
- // because the literal 'true' has type 'true' (not 'boolean'), which is intentional for this signal initialization.
21
- map(() => true)), { initialValue: false });
14
+ this.initialized = toSignal(timer(0).pipe(tuiZonefree(), take(1), map(() => true)), { initialValue: false });
22
15
  this.value = input([]);
23
16
  this.size = input('m');
24
17
  this.max = input(100);
25
18
  this.minLabel = input('0%');
26
19
  this.maxLabel = input('100%');
27
- /**
28
- * Set to change the index of the active arc.
29
- * Will be overridden by hover state.
30
- */
31
20
  this.activeItemIndex = model(NaN);
32
- this.activeItemIndexChange = outputFromObservable(this.indexChange$);
33
21
  }
34
22
  get width() {
35
23
  return SIZE[this.size()];
@@ -37,6 +25,9 @@ class TuiArcChart {
37
25
  get strokeWidth() {
38
26
  return WIDTH[this.size()];
39
27
  }
28
+ onHovered(hovered, index) {
29
+ this.activeItemIndex.set(hovered ? index : NaN);
30
+ }
40
31
  isInactive(index) {
41
32
  return !Number.isNaN(this.activeItemIndex()) && index !== this.activeItemIndex();
42
33
  }
@@ -54,16 +45,16 @@ class TuiArcChart {
54
45
  (1 - Math.min((this.value()[index] || 0) / this.max(), 1)));
55
46
  }
56
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiArcChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiArcChart, isStandalone: true, selector: "tui-arc-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, minLabel: { classPropertyName: "minLabel", publicName: "minLabel", isSignal: true, isRequired: false, transformFunction: null }, maxLabel: { classPropertyName: "maxLabel", publicName: "maxLabel", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange", activeItemIndexChange: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size()", "style.width.rem": "width", "style.height.rem": "width", "style.strokeWidth.rem": "strokeWidth" } }, viewQueries: [{ propertyName: "arcs", predicate: ["arc"], descendants: true, isSignal: true }], ngImport: i0, template: "@let data = value();\n@let min = minLabel();\n@let max = maxLabel();\n@for (_ of '-'.repeat(data.length); track $index) {\n <svg\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.rem]=\"getDiameter($index)\"\n [style.inset-block-start.rem]=\"getInset($index)\"\n [style.inset-inline-end.rem]=\"getInset($index)\"\n [style.inset-inline-start.rem]=\"getInset($index)\"\n >\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive($index)\"\n [style.stroke]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.strokeDasharray.em]=\"getLength($index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset($index) : getLength($index)\"\n />\n </svg>\n}\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ min }}</span>\n <span>{{ max }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;inset:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-text-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-text-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-text-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-text-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-5)}.t-percent{position:absolute;left:25%;bottom:11%;display:flex;inline-size:50%;justify-content:space-between;font:var(--tui-font-text-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-text-m)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiArcChart, isStandalone: true, selector: "tui-arc-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, minLabel: { classPropertyName: "minLabel", publicName: "minLabel", isSignal: true, isRequired: false, transformFunction: null }, maxLabel: { classPropertyName: "maxLabel", publicName: "maxLabel", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size()", "style.width.rem": "width", "style.height.rem": "width", "style.strokeWidth.rem": "strokeWidth" } }, ngImport: i0, template: "@let data = value();\n@let min = minLabel();\n@let max = maxLabel();\n@for (_ of '-'.repeat(data.length); track $index) {\n <svg\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.rem]=\"getDiameter($index)\"\n [style.inset-block-start.rem]=\"getInset($index)\"\n [style.inset-inline.rem]=\"getInset($index)\"\n >\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive($index)\"\n [style.stroke]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.strokeDasharray.em]=\"getLength($index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset($index) : getLength($index)\"\n (tuiHoveredChange)=\"onHovered($event, $index)\"\n />\n </svg>\n}\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ min }}</span>\n <span>{{ max }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;inset:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-body-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-body-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-body-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-body-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-h5)}.t-percent{position:absolute;display:flex;inset:auto auto 11% 25%;inline-size:50%;justify-content:space-between;font:var(--tui-font-body-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-body-m)}\n"], dependencies: [{ kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58
49
  }
59
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiArcChart, decorators: [{
60
51
  type: Component,
61
- args: [{ selector: 'tui-arc-chart', changeDetection: ChangeDetectionStrategy.OnPush, host: {
52
+ args: [{ selector: 'tui-arc-chart', imports: [TuiHovered], changeDetection: ChangeDetectionStrategy.OnPush, host: {
62
53
  '[attr.data-size]': 'size()',
63
54
  '[style.width.rem]': 'width',
64
55
  '[style.height.rem]': 'width',
65
56
  '[style.strokeWidth.rem]': 'strokeWidth',
66
- }, template: "@let data = value();\n@let min = minLabel();\n@let max = maxLabel();\n@for (_ of '-'.repeat(data.length); track $index) {\n <svg\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.rem]=\"getDiameter($index)\"\n [style.inset-block-start.rem]=\"getInset($index)\"\n [style.inset-inline-end.rem]=\"getInset($index)\"\n [style.inset-inline-start.rem]=\"getInset($index)\"\n >\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive($index)\"\n [style.stroke]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.strokeDasharray.em]=\"getLength($index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset($index) : getLength($index)\"\n />\n </svg>\n}\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ min }}</span>\n <span>{{ max }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;inset:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-text-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-text-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-text-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-text-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-5)}.t-percent{position:absolute;left:25%;bottom:11%;display:flex;inline-size:50%;justify-content:space-between;font:var(--tui-font-text-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-text-m)}\n"] }]
57
+ }, template: "@let data = value();\n@let min = minLabel();\n@let max = maxLabel();\n@for (_ of '-'.repeat(data.length); track $index) {\n <svg\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.rem]=\"getDiameter($index)\"\n [style.inset-block-start.rem]=\"getInset($index)\"\n [style.inset-inline.rem]=\"getInset($index)\"\n >\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive($index)\"\n [style.stroke]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.strokeDasharray.em]=\"getLength($index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset($index) : getLength($index)\"\n (tuiHoveredChange)=\"onHovered($event, $index)\"\n />\n </svg>\n}\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ min }}</span>\n <span>{{ max }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;inset:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-body-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-body-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-body-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-body-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-h5)}.t-percent{position:absolute;display:flex;inset:auto auto 11% 25%;inline-size:50%;justify-content:space-between;font:var(--tui-font-body-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-body-m)}\n"] }]
67
58
  }] });
68
59
 
69
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-arc-chart.mjs","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/taiga-ui-addon-charts-components-arc-chart.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n type ElementRef,\n input,\n model,\n viewChildren,\n} from '@angular/core';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {tuiTypedFromEvent, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiSizeXL} from '@taiga-ui/core/types';\nimport {map, merge, type Observable, switchMap, take, tap, timer} from 'rxjs';\n\nconst ARC = 0.76; // 3/4 with 1% safety offset\nconst SIZE = {m: 9, l: 11, xl: 16} as const;\nconst WIDTH = {m: 0.25, l: 0.375, xl: 0.5625} as const;\nconst GAP = {m: 0.125, l: 0.1875, xl: 0.25} as const;\n\nfunction arcsToIndex(arcs: Array<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\n@Component({\n selector: 'tui-arc-chart',\n templateUrl: './arc-chart.template.html',\n styleUrl: './arc-chart.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n '[style.width.rem]': 'width',\n '[style.height.rem]': 'width',\n '[style.strokeWidth.rem]': 'strokeWidth',\n },\n})\nexport class TuiArcChart {\n private readonly arcs = viewChildren<ElementRef<SVGElement>>('arc');\n\n private readonly indexChange$ = toObservable(this.arcs).pipe(\n takeUntilDestroyed(),\n switchMap((arcs) =>\n merge(...arcsToIndex(arcs as Array<ElementRef<SVGElement>>)).pipe(\n tap((i) => this.activeItemIndex.set(i)),\n ),\n ),\n );\n\n protected readonly initialized = toSignal(\n timer(0).pipe(\n tuiZonefree(),\n take(1),\n // The linter rule 'no-restricted-syntax' incorrectly flags 'map(() => true)' here,\n // because the literal 'true' has type 'true' (not 'boolean'), which is intentional for this signal initialization.\n map(() => true),\n ),\n {initialValue: false},\n );\n\n public readonly value = input<readonly number[]>([]);\n\n public readonly size = input<TuiSizeXL>('m');\n\n public readonly max = input(100);\n\n public readonly minLabel = input('0%');\n\n public readonly maxLabel = input('100%');\n\n /**\n * Set to change the index of the active arc.\n * Will be overridden by hover state.\n */\n public readonly activeItemIndex = model<number>(NaN);\n\n public readonly activeItemIndexChange = outputFromObservable(this.indexChange$);\n\n protected get width(): number {\n return SIZE[this.size()];\n }\n\n protected get strokeWidth(): number {\n return WIDTH[this.size()];\n }\n\n protected isInactive(index: number): boolean {\n return !Number.isNaN(this.activeItemIndex()) && index !== this.activeItemIndex();\n }\n\n protected getInset(index: number): number {\n return this.strokeWidth / 2 + index * (this.strokeWidth + GAP[this.size()]);\n }\n\n protected getDiameter(index: number): number {\n return SIZE[this.size()] - 2 * this.getInset(index);\n }\n\n protected getLength(index: number): number {\n return Math.PI * this.getDiameter(index) * ARC;\n }\n\n protected getOffset(index: number): number {\n return (\n this.getLength(index) *\n (1 - Math.min((this.value()[index] || 0) / this.max(), 1))\n );\n }\n}\n","@let data = value();\n@let min = minLabel();\n@let max = maxLabel();\n@for (_ of '-'.repeat(data.length); track $index) {\n <svg\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.rem]=\"getDiameter($index)\"\n [style.inset-block-start.rem]=\"getInset($index)\"\n [style.inset-inline-end.rem]=\"getInset($index)\"\n [style.inset-inline-start.rem]=\"getInset($index)\"\n >\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive($index)\"\n [style.stroke]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.strokeDasharray.em]=\"getLength($index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset($index) : getLength($index)\"\n />\n </svg>\n}\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ min }}</span>\n <span>{{ max }}</span>\n</div>\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.mjs","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/taiga-ui-addon-charts-components-arc-chart.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, input, model} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiSizeXL} from '@taiga-ui/core/types';\nimport {map, take, timer} from 'rxjs';\n\nconst ARC = 0.76; // 3/4 with 1% safety offset\nconst SIZE = {m: 9, l: 11, xl: 16} as const;\nconst WIDTH = {m: 0.25, l: 0.375, xl: 0.5625} as const;\nconst GAP = {m: 0.125, l: 0.1875, xl: 0.25} as const;\n\n@Component({\n selector: 'tui-arc-chart',\n imports: [TuiHovered],\n templateUrl: './arc-chart.template.html',\n styleUrl: './arc-chart.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n '[style.width.rem]': 'width',\n '[style.height.rem]': 'width',\n '[style.strokeWidth.rem]': 'strokeWidth',\n },\n})\nexport class TuiArcChart {\n protected readonly initialized = toSignal(\n timer(0).pipe(\n tuiZonefree(),\n take(1),\n map(() => true),\n ),\n {initialValue: false},\n );\n\n public readonly value = input<readonly number[]>([]);\n public readonly size = input<TuiSizeXL>('m');\n public readonly max = input(100);\n public readonly minLabel = input('0%');\n public readonly maxLabel = input('100%');\n\n public readonly activeItemIndex = model<number>(NaN);\n\n protected get width(): number {\n return SIZE[this.size()];\n }\n\n protected get strokeWidth(): number {\n return WIDTH[this.size()];\n }\n\n protected onHovered(hovered: boolean, index: number): void {\n this.activeItemIndex.set(hovered ? index : NaN);\n }\n\n protected isInactive(index: number): boolean {\n return !Number.isNaN(this.activeItemIndex()) && index !== this.activeItemIndex();\n }\n\n protected getInset(index: number): number {\n return this.strokeWidth / 2 + index * (this.strokeWidth + GAP[this.size()]);\n }\n\n protected getDiameter(index: number): number {\n return SIZE[this.size()] - 2 * this.getInset(index);\n }\n\n protected getLength(index: number): number {\n return Math.PI * this.getDiameter(index) * ARC;\n }\n\n protected getOffset(index: number): number {\n return (\n this.getLength(index) *\n (1 - Math.min((this.value()[index] || 0) / this.max(), 1))\n );\n }\n}\n","@let data = value();\n@let min = minLabel();\n@let max = maxLabel();\n@for (_ of '-'.repeat(data.length); track $index) {\n <svg\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.rem]=\"getDiameter($index)\"\n [style.inset-block-start.rem]=\"getInset($index)\"\n [style.inset-inline.rem]=\"getInset($index)\"\n >\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive($index)\"\n [style.stroke]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.strokeDasharray.em]=\"getLength($index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset($index) : getLength($index)\"\n (tuiHoveredChange)=\"onHovered($event, $index)\"\n />\n </svg>\n}\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ min }}</span>\n <span>{{ max }}</span>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}