@taiga-ui/addon-charts 4.2.0 → 4.3.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 (38) hide show
  1. package/esm2022/components/arc-chart/arc-chart.component.mjs +10 -17
  2. package/esm2022/components/axes/axes.component.mjs +6 -7
  3. package/esm2022/components/bar/bar.component.mjs +6 -7
  4. package/esm2022/components/bar-chart/bar-chart.component.mjs +3 -3
  5. package/esm2022/components/legend-item/legend-item.component.mjs +8 -13
  6. package/esm2022/components/line-chart/line-chart-hint.directive.mjs +5 -5
  7. package/esm2022/components/line-chart/line-chart.component.mjs +13 -14
  8. package/esm2022/components/line-days-chart/line-days-chart-hint.directive.mjs +4 -3
  9. package/esm2022/components/line-days-chart/line-days-chart.component.mjs +42 -27
  10. package/esm2022/components/pie-chart/pie-chart.component.mjs +7 -10
  11. package/esm2022/components/ring-chart/ring-chart.component.mjs +6 -7
  12. package/esm2022/utils/control-point.mjs +6 -5
  13. package/esm2022/utils/describe-sector.mjs +2 -2
  14. package/esm2022/utils/draw-curve.mjs +3 -2
  15. package/esm2022/utils/draw.mjs +3 -2
  16. package/fesm2022/taiga-ui-addon-charts-components-arc-chart.mjs +9 -16
  17. package/fesm2022/taiga-ui-addon-charts-components-arc-chart.mjs.map +1 -1
  18. package/fesm2022/taiga-ui-addon-charts-components-axes.mjs +5 -6
  19. package/fesm2022/taiga-ui-addon-charts-components-axes.mjs.map +1 -1
  20. package/fesm2022/taiga-ui-addon-charts-components-bar-chart.mjs +2 -2
  21. package/fesm2022/taiga-ui-addon-charts-components-bar-chart.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-addon-charts-components-bar.mjs +5 -6
  23. package/fesm2022/taiga-ui-addon-charts-components-bar.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-addon-charts-components-legend-item.mjs +7 -12
  25. package/fesm2022/taiga-ui-addon-charts-components-legend-item.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-addon-charts-components-line-chart.mjs +16 -17
  27. package/fesm2022/taiga-ui-addon-charts-components-line-chart.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-addon-charts-components-line-days-chart.mjs +44 -28
  29. package/fesm2022/taiga-ui-addon-charts-components-line-days-chart.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-addon-charts-components-pie-chart.mjs +6 -9
  31. package/fesm2022/taiga-ui-addon-charts-components-pie-chart.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-addon-charts-components-ring-chart.mjs +5 -6
  33. package/fesm2022/taiga-ui-addon-charts-components-ring-chart.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-addon-charts-utils.mjs +10 -7
  35. package/fesm2022/taiga-ui-addon-charts-utils.mjs.map +1 -1
  36. package/package.json +3 -3
  37. package/utils/control-point.d.ts +1 -1
  38. package/utils/describe-sector.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-bar-chart.mjs","sources":["../../../projects/addon-charts/components/bar-chart/bar-chart.component.ts","../../../projects/addon-charts/components/bar-chart/bar-chart.template.html","../../../projects/addon-charts/components/bar-chart/taiga-ui-addon-charts-components-bar-chart.ts"],"sourcesContent":["import {AsyncPipe, NgForOf} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n ViewChildren,\n} from '@angular/core';\nimport {TuiBarSet} from '@taiga-ui/addon-charts/components/bar-set';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport type {TuiContext, TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n TuiHint,\n TuiHintHover,\n TuiHintOptionsDirective,\n tuiHintOptionsProvider,\n} from '@taiga-ui/core/directives/hint';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport type {Observable} from 'rxjs';\n\n@Component({\n standalone: true,\n selector: 'tui-bar-chart',\n imports: [NgForOf, TuiHint, TuiMapperPipe, AsyncPipe, TuiBarSet],\n templateUrl: './bar-chart.template.html',\n styleUrls: ['./bar-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [tuiHintOptionsProvider({direction: 'top'})],\n})\nexport class TuiBarChart {\n private readonly hintOptions = inject(TuiHintOptionsDirective, {optional: true});\n private readonly autoIdString = inject(TuiIdService).generate();\n\n @ViewChildren(TuiHintHover)\n protected readonly drivers: QueryList<Observable<boolean>> = EMPTY_QUERY;\n\n @Input()\n public value: ReadonlyArray<readonly number[]> = [];\n\n @Input()\n public max = NaN;\n\n @Input()\n public size: TuiSizeL | TuiSizeS | null = 'm';\n\n @Input()\n public collapsed = false;\n\n public get transposed(): ReadonlyArray<readonly number[]> {\n return this.transpose(this.value);\n }\n\n public get computedMax(): number {\n return this.max || this.getMax(this.value, this.collapsed);\n }\n\n public readonly percentMapper: TuiMapper<\n [readonly number[], boolean, number],\n number\n > = (set, collapsed, max) =>\n (100 * (collapsed ? tuiSum(...set) : Math.max(...set))) / max;\n\n protected get hintContent(): PolymorpheusContent<TuiContext<number>> {\n return this.hintOptions?.content || '';\n }\n\n protected getHintId(index: number): string {\n return `${this.autoIdString}_${index}`;\n }\n\n @tuiPure\n private transpose(\n value: ReadonlyArray<readonly number[]>,\n ): ReadonlyArray<readonly number[]> {\n return value.reduce<ReadonlyArray<readonly number[]>>(\n (result, next) =>\n next.map((_, index) => [...(result[index] || []), next[index]]),\n [],\n );\n }\n\n @tuiPure\n private getMax(values: ReadonlyArray<readonly number[]>, collapsed: boolean): number {\n return collapsed\n ? Math.max(\n // eslint-disable-next-line no-restricted-syntax\n ...values.reduce((result, next) =>\n result.map((value, index) => value + next[index]),\n ),\n )\n : values.reduce((max, value) => Math.max(...value, max), 0);\n }\n}\n","<div\n *ngFor=\"let set of transposed; let index = index\"\n class=\"t-wrapper\"\n [class.t-wrapper_hoverable]=\"!!hintContent\"\n [class.t-wrapper_hovered]=\"drivers.get(index) | async\"\n [tuiHint]=\"hintContent\"\n [tuiHintContext]=\"{$implicit: index}\"\n [tuiHintDescribe]=\"getHintId(index)\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter.once)=\"(0)\"\n>\n <div\n class=\"t-container\"\n [style.height.%]=\"set | tuiMapper: percentMapper : collapsed : computedMax\"\n >\n <div\n #hintHost\n class=\"t-host\"\n ></div>\n <tui-bar-set\n class=\"t-set\"\n [collapsed]=\"collapsed\"\n [id]=\"getHintId(index)\"\n [size]=\"size\"\n [tabIndex]=\"hintContent ? 0 : -1\"\n [value]=\"set\"\n />\n </div>\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-bar-chart.mjs","sources":["../../../projects/addon-charts/components/bar-chart/bar-chart.component.ts","../../../projects/addon-charts/components/bar-chart/bar-chart.template.html","../../../projects/addon-charts/components/bar-chart/taiga-ui-addon-charts-components-bar-chart.ts"],"sourcesContent":["import {AsyncPipe, NgForOf} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n ViewChildren,\n} from '@angular/core';\nimport {TuiBarSet} from '@taiga-ui/addon-charts/components/bar-set';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport type {TuiContext, TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n TuiHint,\n TuiHintHover,\n TuiHintOptionsDirective,\n tuiHintOptionsProvider,\n} from '@taiga-ui/core/directives/hint';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport type {Observable} from 'rxjs';\n\n@Component({\n standalone: true,\n selector: 'tui-bar-chart',\n imports: [NgForOf, TuiHint, TuiMapperPipe, AsyncPipe, TuiBarSet],\n templateUrl: './bar-chart.template.html',\n styleUrls: ['./bar-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [tuiHintOptionsProvider({direction: 'top'})],\n})\nexport class TuiBarChart {\n private readonly hintOptions = inject(TuiHintOptionsDirective, {optional: true});\n private readonly autoIdString = inject(TuiIdService).generate();\n\n @ViewChildren(TuiHintHover)\n protected readonly drivers: QueryList<Observable<boolean>> = EMPTY_QUERY;\n\n @Input()\n public value: ReadonlyArray<readonly number[]> = [];\n\n @Input()\n public max = NaN;\n\n @Input()\n public size: TuiSizeL | TuiSizeS | null = 'm';\n\n @Input()\n public collapsed = false;\n\n public get transposed(): ReadonlyArray<readonly number[]> {\n return this.transpose(this.value);\n }\n\n public get computedMax(): number {\n return this.max || this.getMax(this.value, this.collapsed);\n }\n\n public readonly percentMapper: TuiMapper<\n [readonly number[], boolean, number],\n number\n > = (set, collapsed, max) =>\n (100 * (collapsed ? tuiSum(...set) : Math.max(...set))) / max;\n\n protected get hintContent(): PolymorpheusContent<TuiContext<number>> {\n return this.hintOptions?.content || '';\n }\n\n protected getHintId(index: number): string {\n return `${this.autoIdString}_${index}`;\n }\n\n @tuiPure\n private transpose(\n value: ReadonlyArray<readonly number[]>,\n ): ReadonlyArray<readonly number[]> {\n return value.reduce<ReadonlyArray<readonly number[]>>(\n (result, next) =>\n next.map((_, index) => [...(result[index] || []), next[index] || 0]),\n [],\n );\n }\n\n @tuiPure\n private getMax(values: ReadonlyArray<readonly number[]>, collapsed: boolean): number {\n return collapsed\n ? Math.max(\n // eslint-disable-next-line no-restricted-syntax\n ...values.reduce((result, next) =>\n result.map((value, index) => value + (next[index] || 0)),\n ),\n )\n : values.reduce((max, value) => Math.max(...value, max), 0);\n }\n}\n","<div\n *ngFor=\"let set of transposed; let index = index\"\n class=\"t-wrapper\"\n [class.t-wrapper_hoverable]=\"!!hintContent\"\n [class.t-wrapper_hovered]=\"drivers.get(index) | async\"\n [tuiHint]=\"hintContent\"\n [tuiHintContext]=\"{$implicit: index}\"\n [tuiHintDescribe]=\"getHintId(index)\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter.once)=\"(0)\"\n>\n <div\n class=\"t-container\"\n [style.height.%]=\"set | tuiMapper: percentMapper : collapsed : computedMax\"\n >\n <div\n #hintHost\n class=\"t-host\"\n ></div>\n <tui-bar-set\n class=\"t-set\"\n [collapsed]=\"collapsed\"\n [id]=\"getHintId(index)\"\n [size]=\"size\"\n [tabIndex]=\"hintContent ? 0 : -1\"\n [value]=\"set\"\n />\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { NgForOf } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';
4
+ import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
5
5
  import { tuiSum } from '@taiga-ui/cdk/utils/math';
6
6
  import { tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
7
7
 
@@ -17,21 +17,20 @@ class TuiBar {
17
17
  return tuiSum(...value);
18
18
  }
19
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiBar, isStandalone: true, selector: "tui-bar", inputs: { value: "value", size: "size" }, host: { properties: { "attr.data-size": "this.size" } }, ngImport: i0, template: "<div\n *ngFor=\"let item of value; let index = index\"\n automation-id=\"tui-bar__bar\"\n [style.background]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.height.%]=\"getHeight(item)\"\n></div>\n", styles: [":host{display:flex;min-width:.125rem;flex-direction:column-reverse;border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:hidden}:host[data-size=l]{width:1rem;max-width:1rem;margin:0 .1875rem}:host[data-size=m]{width:.5rem;max-width:.5rem;margin:0 .1875rem}:host[data-size=s]{width:.25rem;max-width:.5rem;margin:0 .125rem}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiBar, isStandalone: true, selector: "tui-bar", inputs: { value: "value", size: "size" }, host: { properties: { "attr.data-size": "size" } }, ngImport: i0, template: "<div\n *ngFor=\"let item of value; let index = index\"\n automation-id=\"tui-bar__bar\"\n [style.background]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.height.%]=\"getHeight(item)\"\n></div>\n", styles: [":host{display:flex;min-width:.125rem;flex-direction:column-reverse;border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:hidden}:host[data-size=l]{width:1rem;max-width:1rem;margin:0 .1875rem}:host[data-size=m]{width:.5rem;max-width:.5rem;margin:0 .1875rem}:host[data-size=s]{width:.25rem;max-width:.5rem;margin:0 .125rem}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21
21
  }
22
22
  __decorate([
23
23
  tuiPure
24
24
  ], TuiBar.prototype, "getSum", null);
25
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiBar, decorators: [{
26
26
  type: Component,
27
- args: [{ standalone: true, selector: 'tui-bar', imports: [NgForOf], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngFor=\"let item of value; let index = index\"\n automation-id=\"tui-bar__bar\"\n [style.background]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.height.%]=\"getHeight(item)\"\n></div>\n", styles: [":host{display:flex;min-width:.125rem;flex-direction:column-reverse;border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:hidden}:host[data-size=l]{width:1rem;max-width:1rem;margin:0 .1875rem}:host[data-size=m]{width:.5rem;max-width:.5rem;margin:0 .1875rem}:host[data-size=s]{width:.25rem;max-width:.5rem;margin:0 .125rem}\n"] }]
27
+ args: [{ standalone: true, selector: 'tui-bar', imports: [NgForOf], changeDetection: ChangeDetectionStrategy.OnPush, host: {
28
+ '[attr.data-size]': 'size',
29
+ }, template: "<div\n *ngFor=\"let item of value; let index = index\"\n automation-id=\"tui-bar__bar\"\n [style.background]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.height.%]=\"getHeight(item)\"\n></div>\n", styles: [":host{display:flex;min-width:.125rem;flex-direction:column-reverse;border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:hidden}:host[data-size=l]{width:1rem;max-width:1rem;margin:0 .1875rem}:host[data-size=m]{width:.5rem;max-width:.5rem;margin:0 .1875rem}:host[data-size=s]{width:.25rem;max-width:.5rem;margin:0 .125rem}\n"] }]
28
30
  }], propDecorators: { value: [{
29
31
  type: Input
30
32
  }], size: [{
31
33
  type: Input
32
- }, {
33
- type: HostBinding,
34
- args: ['attr.data-size']
35
34
  }], getSum: [] } });
36
35
 
37
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-bar.mjs","sources":["../../../projects/addon-charts/components/bar/bar.component.ts","../../../projects/addon-charts/components/bar/bar.template.html","../../../projects/addon-charts/components/bar/taiga-ui-addon-charts-components-bar.ts"],"sourcesContent":["import {NgForOf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, HostBinding, Input} from '@angular/core';\nimport {tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\n@Component({\n standalone: true,\n selector: 'tui-bar',\n imports: [NgForOf],\n templateUrl: './bar.template.html',\n styleUrls: ['./bar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiBar {\n @Input()\n public value: readonly number[] = [];\n\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeL | TuiSizeS = 'm';\n\n protected getHeight(value: number): number {\n return (100 * value) / this.getSum(this.value);\n }\n\n @tuiPure\n private getSum(value: readonly number[]): number {\n return tuiSum(...value);\n }\n}\n","<div\n *ngFor=\"let item of value; let index = index\"\n automation-id=\"tui-bar__bar\"\n [style.background]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.height.%]=\"getHeight(item)\"\n></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAMA,MAQa,MAAM,CAAA;AARnB,IAAA,WAAA,GAAA;QAUW,IAAK,CAAA,KAAA,GAAsB,EAAE,CAAC;QAI9B,IAAI,CAAA,IAAA,GAAwB,GAAG,CAAC;AAU1C,KAAA;AARa,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClD;AAGO,IAAA,MAAM,CAAC,KAAwB,EAAA;AACnC,QAAA,OAAO,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;KAC3B;+GAfQ,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdnB,8NAMA,EAAA,MAAA,EAAA,CAAA,+WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGc,OAAO,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;AAkBT,UAAA,CAAA;IADP,OAAO;AAGP,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;4FAfQ,MAAM,EAAA,UAAA,EAAA,CAAA;kBARlB,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,SAAS,EACV,OAAA,EAAA,CAAC,OAAO,CAAC,EAAA,eAAA,EAGD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,+WAAA,CAAA,EAAA,CAAA;8BAIxC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAKC,IAAI,EAAA,CAAA;sBAFV,KAAK;;sBACL,WAAW;uBAAC,gBAAgB,CAAA;gBAQrB,MAAM,EAAA,EAAA,EAAA,EAAA,CAAA;;AE3BlB;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-bar.mjs","sources":["../../../projects/addon-charts/components/bar/bar.component.ts","../../../projects/addon-charts/components/bar/bar.template.html","../../../projects/addon-charts/components/bar/taiga-ui-addon-charts-components-bar.ts"],"sourcesContent":["import {NgForOf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\n@Component({\n standalone: true,\n selector: 'tui-bar',\n imports: [NgForOf],\n templateUrl: './bar.template.html',\n styleUrls: ['./bar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiBar {\n @Input()\n public value: readonly number[] = [];\n\n @Input()\n public size: TuiSizeL | TuiSizeS = 'm';\n\n protected getHeight(value: number): number {\n return (100 * value) / this.getSum(this.value);\n }\n\n @tuiPure\n private getSum(value: readonly number[]): number {\n return tuiSum(...value);\n }\n}\n","<div\n *ngFor=\"let item of value; let index = index\"\n automation-id=\"tui-bar__bar\"\n [style.background]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.height.%]=\"getHeight(item)\"\n></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAMA,MAWa,MAAM,CAAA;AAXnB,IAAA,WAAA,GAAA;QAaW,IAAK,CAAA,KAAA,GAAsB,EAAE,CAAC;QAG9B,IAAI,CAAA,IAAA,GAAwB,GAAG,CAAC;AAU1C,KAAA;AARa,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClD;AAGO,IAAA,MAAM,CAAC,KAAwB,EAAA;AACnC,QAAA,OAAO,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;KAC3B;+GAdQ,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBnB,8NAMA,EAAA,MAAA,EAAA,CAAA,+WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGc,OAAO,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;AAoBT,UAAA,CAAA;IADP,OAAO;AAGP,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;4FAdQ,MAAM,EAAA,UAAA,EAAA,CAAA;kBAXlB,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,SAAS,EAAA,OAAA,EACV,CAAC,OAAO,CAAC,EAGD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,kBAAkB,EAAE,MAAM;AAC7B,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,+WAAA,CAAA,EAAA,CAAA;8BAIM,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAQE,MAAM,EAAA,EAAA,EAAA,EAAA,CAAA;;AE7BlB;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
3
3
  import { TuiButton } from '@taiga-ui/core/components/button';
4
4
 
5
5
  class TuiLegendItem {
@@ -14,11 +14,15 @@ class TuiLegendItem {
14
14
  return this.color === 'var(--tui-background-accent-1)' ? null : this.color;
15
15
  }
16
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLegendItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLegendItem, isStandalone: true, selector: "tui-legend-item", inputs: { active: "active", color: "color", text: "text", size: "size", disabled: "disabled" }, host: { properties: { "attr.data-size": "this.size", "class._disabled": "this.disabled", "style.--tui-background-accent-1": "this.computedColor" } }, ngImport: i0, template: "<button\n appearance=\"whiteblock\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiAppearanceState]=\"active ? 'hover' : null\"\n>\n <div class=\"t-wrapper\">\n <ng-content select=\"[tuiCheckbox]\" />\n <span\n class=\"t-dot\"\n [style.backgroundColor]=\"color || 'var(--tui-background-accent-1)'\"\n ></span>\n <span class=\"t-text\">{{ text }}</span>\n <ng-content />\n </div>\n</button>\n", 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-tertiary)}.t-dot{width:.5rem;height:.5rem;border-radius:100%;flex-shrink:0}:host._disabled .t-dot{background:var(--tui-border-normal)}.t-dot:not(:first-child){display:none}.t-text{margin:0 .5rem;font-weight:400}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLegendItem, isStandalone: true, selector: "tui-legend-item", inputs: { active: "active", color: "color", text: "text", size: "size", disabled: "disabled" }, host: { properties: { "attr.data-size": "size", "class._disabled": "disabled", "style.--tui-background-accent-1": "computedColor" } }, ngImport: i0, template: "<button\n appearance=\"whiteblock\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiAppearanceState]=\"active ? 'hover' : null\"\n>\n <div class=\"t-wrapper\">\n <ng-content select=\"[tuiCheckbox]\" />\n <span\n class=\"t-dot\"\n [style.backgroundColor]=\"color || 'var(--tui-background-accent-1)'\"\n ></span>\n <span class=\"t-text\">{{ text }}</span>\n <ng-content />\n </div>\n</button>\n", 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-tertiary)}.t-dot{width:.5rem;height:.5rem;border-radius:100%;flex-shrink:0}:host._disabled .t-dot{background:var(--tui-border-normal)}.t-dot:not(:first-child){display:none}.t-text{margin:0 .5rem;font-weight:400}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
18
  }
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLegendItem, decorators: [{
20
20
  type: Component,
21
- args: [{ standalone: true, selector: 'tui-legend-item', imports: [TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n appearance=\"whiteblock\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiAppearanceState]=\"active ? 'hover' : null\"\n>\n <div class=\"t-wrapper\">\n <ng-content select=\"[tuiCheckbox]\" />\n <span\n class=\"t-dot\"\n [style.backgroundColor]=\"color || 'var(--tui-background-accent-1)'\"\n ></span>\n <span class=\"t-text\">{{ text }}</span>\n <ng-content />\n </div>\n</button>\n", 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-tertiary)}.t-dot{width:.5rem;height:.5rem;border-radius:100%;flex-shrink:0}:host._disabled .t-dot{background:var(--tui-border-normal)}.t-dot:not(:first-child){display:none}.t-text{margin:0 .5rem;font-weight:400}\n"] }]
21
+ args: [{ standalone: true, selector: 'tui-legend-item', imports: [TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, host: {
22
+ '[attr.data-size]': 'size',
23
+ '[class._disabled]': 'disabled',
24
+ '[style.--tui-background-accent-1]': 'computedColor',
25
+ }, template: "<button\n appearance=\"whiteblock\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiAppearanceState]=\"active ? 'hover' : null\"\n>\n <div class=\"t-wrapper\">\n <ng-content select=\"[tuiCheckbox]\" />\n <span\n class=\"t-dot\"\n [style.backgroundColor]=\"color || 'var(--tui-background-accent-1)'\"\n ></span>\n <span class=\"t-text\">{{ text }}</span>\n <ng-content />\n </div>\n</button>\n", 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-tertiary)}.t-dot{width:.5rem;height:.5rem;border-radius:100%;flex-shrink:0}:host._disabled .t-dot{background:var(--tui-border-normal)}.t-dot:not(:first-child){display:none}.t-text{margin:0 .5rem;font-weight:400}\n"] }]
22
26
  }], propDecorators: { active: [{
23
27
  type: Input
24
28
  }], color: [{
@@ -27,17 +31,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27
31
  type: Input
28
32
  }], size: [{
29
33
  type: Input
30
- }, {
31
- type: HostBinding,
32
- args: ['attr.data-size']
33
34
  }], disabled: [{
34
35
  type: Input
35
- }, {
36
- type: HostBinding,
37
- args: ['class._disabled']
38
- }], computedColor: [{
39
- type: HostBinding,
40
- args: ['style.--tui-background-accent-1']
41
36
  }] } });
42
37
 
43
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-legend-item.mjs","sources":["../../../projects/addon-charts/components/legend-item/legend-item.component.ts","../../../projects/addon-charts/components/legend-item/legend-item.template.html","../../../projects/addon-charts/components/legend-item/taiga-ui-addon-charts-components-legend-item.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, HostBinding, Input} from '@angular/core';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\n\n@Component({\n standalone: true,\n selector: 'tui-legend-item',\n imports: [TuiButton],\n templateUrl: './legend-item.template.html',\n styleUrls: ['./legend-item.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiLegendItem {\n @Input()\n public active = false;\n\n @Input()\n public color = '';\n\n @Input()\n public text = '';\n\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n @Input()\n @HostBinding('class._disabled')\n public disabled = false;\n\n @HostBinding('style.--tui-background-accent-1')\n protected get computedColor(): string | null {\n return this.color === 'var(--tui-background-accent-1)' ? null : this.color;\n }\n}\n","<button\n appearance=\"whiteblock\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiAppearanceState]=\"active ? 'hover' : null\"\n>\n <div class=\"t-wrapper\">\n <ng-content select=\"[tuiCheckbox]\" />\n <span\n class=\"t-dot\"\n [style.backgroundColor]=\"color || 'var(--tui-background-accent-1)'\"\n ></span>\n <span class=\"t-text\">{{ text }}</span>\n <ng-content />\n </div>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAIA,MAQa,aAAa,CAAA;AAR1B,IAAA,WAAA,GAAA;QAUW,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAGf,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;QAGX,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;QAIV,IAAI,CAAA,IAAA,GAAa,GAAG,CAAC;QAIrB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAM3B,KAAA;AAJG,IAAA,IACc,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,gCAAgC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;KAC9E;+GArBQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iCAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ1B,ifAkBA,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXc,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAKV,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,iBAAiB,EAClB,OAAA,EAAA,CAAC,SAAS,CAAC,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ifAAA,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA,CAAA;8BAIxC,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAKC,IAAI,EAAA,CAAA;sBAFV,KAAK;;sBACL,WAAW;uBAAC,gBAAgB,CAAA;gBAKtB,QAAQ,EAAA,CAAA;sBAFd,KAAK;;sBACL,WAAW;uBAAC,iBAAiB,CAAA;gBAIhB,aAAa,EAAA,CAAA;sBAD1B,WAAW;uBAAC,iCAAiC,CAAA;;;AE9BlD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-legend-item.mjs","sources":["../../../projects/addon-charts/components/legend-item/legend-item.component.ts","../../../projects/addon-charts/components/legend-item/legend-item.template.html","../../../projects/addon-charts/components/legend-item/taiga-ui-addon-charts-components-legend-item.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\n\n@Component({\n standalone: true,\n selector: 'tui-legend-item',\n imports: [TuiButton],\n templateUrl: './legend-item.template.html',\n styleUrls: ['./legend-item.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size',\n '[class._disabled]': 'disabled',\n '[style.--tui-background-accent-1]': 'computedColor',\n },\n})\nexport class TuiLegendItem {\n @Input()\n public active = false;\n\n @Input()\n public color = '';\n\n @Input()\n public text = '';\n\n @Input()\n public size: TuiSizeS = 'm';\n\n @Input()\n public disabled = false;\n\n protected get computedColor(): string | null {\n return this.color === 'var(--tui-background-accent-1)' ? null : this.color;\n }\n}\n","<button\n appearance=\"whiteblock\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [tuiAppearanceState]=\"active ? 'hover' : null\"\n>\n <div class=\"t-wrapper\">\n <ng-content select=\"[tuiCheckbox]\" />\n <span\n class=\"t-dot\"\n [style.backgroundColor]=\"color || 'var(--tui-background-accent-1)'\"\n ></span>\n <span class=\"t-text\">{{ text }}</span>\n <ng-content />\n </div>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAIA,MAaa,aAAa,CAAA;AAb1B,IAAA,WAAA,GAAA;QAeW,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAGf,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;QAGX,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;QAGV,IAAI,CAAA,IAAA,GAAa,GAAG,CAAC;QAGrB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAK3B,KAAA;AAHG,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,gCAAgC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;KAC9E;+GAlBQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB1B,ifAkBA,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXc,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAUV,aAAa,EAAA,UAAA,EAAA,CAAA;kBAbzB,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,iBAAiB,EAAA,OAAA,EAClB,CAAC,SAAS,CAAC,EAGH,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,mBAAmB,EAAE,UAAU;AAC/B,wBAAA,mCAAmC,EAAE,eAAe;AACvD,qBAAA,EAAA,QAAA,EAAA,ifAAA,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA,CAAA;8BAIM,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAIC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAIC,QAAQ,EAAA,CAAA;sBADd,KAAK;;;AE9BV;;AAEG;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import { AsyncPipe, NgIf, NgForOf } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { inject, Renderer2, DestroyRef, NgZone, ElementRef, Directive, ContentChildren, forwardRef, Input, Component, ChangeDetectionStrategy, ViewChildren, HostListener } from '@angular/core';
4
+ import { inject, Renderer2, DestroyRef, NgZone, ElementRef, Directive, ContentChildren, forwardRef, Input, Component, ChangeDetectionStrategy, ViewChildren } from '@angular/core';
5
5
  import { tuiDraw } from '@taiga-ui/addon-charts/utils';
6
6
  import { EMPTY_QUERY } from '@taiga-ui/cdk/constants';
7
7
  import { TuiLet } from '@taiga-ui/cdk/directives/let';
@@ -42,17 +42,17 @@ class TuiLineChartHint {
42
42
  }
43
43
  // _chart is required by TuiLineDaysChartComponent that impersonates this directive
44
44
  getContext(index, _chart) {
45
- return this.computeContext(...this.charts.map(({ value }) => value))[index];
45
+ return this.computeContext(...this.charts.map(({ value }) => value))[index] || [];
46
46
  }
47
47
  // _chart is required by TuiLineDaysChartComponent that impersonates this directive
48
48
  raise(index, _chart) {
49
- const current = this.charts.map((chart) => chart.value[index]);
49
+ const current = this.charts.map((chart) => chart.value[index] ?? [0, 0]);
50
50
  const sorted = [...current].sort((a, b) => a[1] - b[1]);
51
51
  this.charts.forEach((chart) => chart.onHovered(index));
52
- this.chartsRef.forEach(({ nativeElement }, index) => this.renderer.setStyle(nativeElement, 'z-index', sorted.indexOf(current[index])));
52
+ this.chartsRef.forEach(({ nativeElement }, index) => this.renderer.setStyle(nativeElement, 'z-index', sorted.indexOf(current[index] ?? [0, 0])));
53
53
  }
54
54
  computeContext(...values) {
55
- return (values[0] || []).map((_, index) => values.map((value) => value[index]));
55
+ return (values[0] || []).map((_, index) => values.map((value) => value[index] ?? [0, 0]));
56
56
  }
57
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
58
58
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiLineChartHint, isStandalone: true, selector: "[tuiLineChartHint]", inputs: { hint: ["tuiLineChartHint", "hint"] }, providers: [TuiHoveredService], queries: [{ propertyName: "charts", predicate: i0.forwardRef(function () { return TuiLineChart; }) }, { propertyName: "chartsRef", predicate: i0.forwardRef(function () { return TuiLineChart; }), read: ElementRef }], ngImport: i0 }); }
@@ -129,7 +129,7 @@ class TuiLineChart {
129
129
  }
130
130
  get fillD() {
131
131
  return this.value.length
132
- ? `${this.d}V ${this.y} H ${this.value[0][0]} V ${this.value[0][1]}`
132
+ ? `${this.d}V ${this.y} H ${this.value[0]?.[0]} V ${this.value[0]?.[1]}`
133
133
  : this.d;
134
134
  }
135
135
  get isFocusable() {
@@ -148,11 +148,11 @@ class TuiLineChart {
148
148
  }
149
149
  getX(index) {
150
150
  if (this.isSinglePoint) {
151
- return this.value[0][0] / 2;
151
+ return (this.value[0]?.[0] || 0) / 2;
152
152
  }
153
153
  return index
154
- ? (this.value[index - 1][0] + this.value[index][0]) / 2
155
- : 2 * this.value[0][0] - this.getX(1);
154
+ ? ((this.value[index - 1]?.[0] || 0) + (this.value[index]?.[0] || 0)) / 2
155
+ : 2 * (this.value[0]?.[0] || 0) - this.getX(1);
156
156
  }
157
157
  getWidth(index) {
158
158
  return (100 * this.computeWidth(index)) / this.width;
@@ -167,7 +167,7 @@ class TuiLineChart {
167
167
  getHovered(hovered) {
168
168
  // This checks for NaN and null too since async pipe returns null before first item
169
169
  return tuiIsPresent(hovered) && Number.isInteger(hovered)
170
- ? this.value[hovered]
170
+ ? (this.value[hovered] ?? null)
171
171
  : null;
172
172
  }
173
173
  getBottom(y) {
@@ -177,7 +177,7 @@ class TuiLineChart {
177
177
  return (100 * (x - this.x)) / this.width;
178
178
  }
179
179
  getOffset(x) {
180
- return (100 * (this.value[x][0] - this.getX(x))) / this.computeWidth(x);
180
+ return (100 * ((this.value[x]?.[0] || 0) - this.getX(x))) / this.computeWidth(x);
181
181
  }
182
182
  onMouseEnter(index) {
183
183
  if (this.hintDirective) {
@@ -195,7 +195,7 @@ class TuiLineChart {
195
195
  }
196
196
  computeWidth(index) {
197
197
  return index === this.value.length - 1
198
- ? 2 * (this.value[index][0] - this.getX(index))
198
+ ? 2 * ((this.value[index]?.[0] || 0) - this.getX(index))
199
199
  : this.getX(index + 1) - this.getX(index);
200
200
  }
201
201
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -209,7 +209,9 @@ __decorate([
209
209
  ], TuiLineChart.prototype, "getD", null);
210
210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineChart, decorators: [{
211
211
  type: Component,
212
- args: [{ standalone: true, selector: 'tui-line-chart', imports: [TuiLet, AsyncPipe, NgIf, TuiHint, NgForOf], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n focusable=\"false\"\n height=\"100%\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n offset=\"0%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0.5\"\n />\n <stop\n offset=\"100%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.d]=\"fillD\"\n [attr.fill]=\"fill\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n vector-effect=\"non-scaling-stroke\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [class.t-column_hovered]=\"hovered === index\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"{$implicit: getImplicit(point), index: index}\"\n [tuiHintDescribe]=\"isFocusable ? getHintId(index) : null\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getOffset(index)\"\n [tabIndex]=\"isFocusable ? 0 : -1\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;width:100%;height:100%;pointer-events:none}.t-svg{transform:scaleY(-1)}.t-column{position:absolute;top:0;height:100%;pointer-events:auto}.t-dot{position:absolute;width:.375rem;height:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;width:.5rem;height:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-border-normal)}.t-line_vertical{top:0;bottom:0;left:50%;width:1px}.t-line_horizontal{z-index:-1;width:100%;height:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{position:absolute;box-shadow:var(--tui-shadow-small);font:var(--tui-font-text-xs);height:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-text-primary);background:var(--tui-background-base);transform:translate3d(-50%,0,0)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"] }]
212
+ args: [{ standalone: true, selector: 'tui-line-chart', imports: [TuiLet, AsyncPipe, NgIf, TuiHint, NgForOf], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], host: {
213
+ '(mouseleave)': 'onMouseLeave()',
214
+ }, template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n focusable=\"false\"\n height=\"100%\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n offset=\"0%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0.5\"\n />\n <stop\n offset=\"100%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.d]=\"fillD\"\n [attr.fill]=\"fill\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n vector-effect=\"non-scaling-stroke\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [class.t-column_hovered]=\"hovered === index\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"{$implicit: getImplicit(point), index: index}\"\n [tuiHintDescribe]=\"isFocusable ? getHintId(index) : null\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getOffset(index)\"\n [tabIndex]=\"isFocusable ? 0 : -1\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;width:100%;height:100%;pointer-events:none}.t-svg{transform:scaleY(-1)}.t-column{position:absolute;top:0;height:100%;pointer-events:auto}.t-dot{position:absolute;width:.375rem;height:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;width:.5rem;height:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-border-normal)}.t-line_vertical{top:0;bottom:0;left:50%;width:1px}.t-line_horizontal{z-index:-1;width:100%;height:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{position:absolute;box-shadow:var(--tui-shadow-small);font:var(--tui-font-text-xs);height:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-text-primary);background:var(--tui-background-base);transform:translate3d(-50%,0,0)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"] }]
213
215
  }], propDecorators: { drivers: [{
214
216
  type: ViewChildren,
215
217
  args: [TuiHintHover]
@@ -234,10 +236,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
234
236
  }], valueSetter: [{
235
237
  type: Input,
236
238
  args: ['value']
237
- }], hovered$: [], onMouseLeave: [{
238
- type: HostListener,
239
- args: ['mouseleave']
240
- }], getD: [] } });
239
+ }], hovered$: [], getD: [] } });
241
240
 
242
241
  /**
243
242
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-line-chart.mjs","sources":["../../../projects/addon-charts/components/line-chart/line-chart.options.ts","../../../projects/addon-charts/components/line-chart/line-chart-hint.directive.ts","../../../projects/addon-charts/components/line-chart/line-chart.component.ts","../../../projects/addon-charts/components/line-chart/line-chart.template.html","../../../projects/addon-charts/components/line-chart/taiga-ui-addon-charts-components-line-chart.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiLineChartOptions {\n readonly dots: boolean;\n readonly filled: boolean;\n readonly smoothingFactor: number;\n}\n\nexport const TUI_LINE_CHART_DEFAULT_OPTIONS: TuiLineChartOptions = {\n dots: false,\n filled: false,\n smoothingFactor: 0,\n};\n\nexport const TUI_LINE_CHART_OPTIONS = tuiCreateToken(TUI_LINE_CHART_DEFAULT_OPTIONS);\n\nexport function tuiLineChartOptionsProvider(\n options: Partial<TuiLineChartOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_LINE_CHART_OPTIONS,\n options,\n TUI_LINE_CHART_DEFAULT_OPTIONS,\n );\n}\n","import type {AfterViewInit, QueryList} from '@angular/core';\nimport {\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Input,\n NgZone,\n Renderer2,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiQueryListChanges, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiPoint} from '@taiga-ui/core/types';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport type {Observable} from 'rxjs';\nimport {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n} from 'rxjs';\n\nimport {TuiLineChart} from './line-chart.component';\n\n@Directive({\n standalone: true,\n selector: '[tuiLineChartHint]',\n providers: [TuiHoveredService],\n})\nexport class TuiLineChartHint implements AfterViewInit {\n @ContentChildren(forwardRef(() => TuiLineChart))\n private readonly charts: QueryList<TuiLineChart> = EMPTY_QUERY;\n\n @ContentChildren(forwardRef(() => TuiLineChart), {read: ElementRef})\n private readonly chartsRef: QueryList<ElementRef<HTMLElement>> = EMPTY_QUERY;\n\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n private readonly hovered$ = inject(TuiHoveredService);\n\n @Input('tuiLineChartHint')\n public hint: PolymorpheusContent<TuiContext<readonly TuiPoint[]>>;\n\n public ngAfterViewInit(): void {\n combineLatest([tuiLineChartDrivers(this.charts), this.hovered$])\n .pipe(\n filter((result) => !result.some(Boolean)),\n tuiZonefree(this.zone),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.charts.forEach((chart) => chart.onHovered(NaN));\n });\n }\n\n // _chart is required by TuiLineDaysChartComponent that impersonates this directive\n public getContext(index: number, _chart: TuiLineChart): readonly TuiPoint[] {\n return this.computeContext(...this.charts.map(({value}) => value))[index];\n }\n\n // _chart is required by TuiLineDaysChartComponent that impersonates this directive\n public raise(index: number, _chart: TuiLineChart): void {\n const current = this.charts.map((chart) => chart.value[index]);\n const sorted = [...current].sort((a, b) => a[1] - b[1]);\n\n this.charts.forEach((chart) => chart.onHovered(index));\n this.chartsRef.forEach(({nativeElement}, index) =>\n this.renderer.setStyle(\n nativeElement,\n 'z-index',\n sorted.indexOf(current[index]),\n ),\n );\n }\n\n @tuiPure\n private computeContext(\n ...values: ReadonlyArray<readonly TuiPoint[]>\n ): ReadonlyArray<readonly TuiPoint[]> {\n return (values[0] || []).map((_, index) => values.map((value) => value[index]));\n }\n}\n\nexport function tuiLineChartDrivers(\n charts: QueryList<{drivers: QueryList<Observable<boolean>>}>,\n): Observable<boolean> {\n return combineLatest(\n charts.map(({drivers}) =>\n tuiQueryListChanges(drivers).pipe(\n map((drivers) => drivers.map((driver) => driver.pipe(startWith(false)))),\n ),\n ),\n ).pipe(\n map((all) => all.reduce((acc, drivers) => acc.concat(drivers), [])),\n switchMap((drivers) => combineLatest(drivers)),\n map((values) => values.some(Boolean)),\n distinctUntilChanged(),\n );\n}\n","import {AsyncPipe, NgForOf, NgIf} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n inject,\n Input,\n NgZone,\n ViewChildren,\n} from '@angular/core';\nimport type {TuiLineChartHintContext} from '@taiga-ui/addon-charts/types';\nimport {tuiDraw} from '@taiga-ui/addon-charts/utils';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiLet} from '@taiga-ui/cdk/directives/let';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsPresent, tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n TuiHint,\n TuiHintHover,\n TuiHintOptionsDirective,\n tuiHintOptionsProvider,\n} from '@taiga-ui/core/directives/hint';\nimport type {TuiPoint} from '@taiga-ui/core/types';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport type {Observable} from 'rxjs';\nimport {distinctUntilChanged, Subject} from 'rxjs';\n\nimport {TUI_LINE_CHART_OPTIONS} from './line-chart.options';\nimport {TuiLineChartHint} from './line-chart-hint.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-line-chart',\n imports: [TuiLet, AsyncPipe, NgIf, TuiHint, NgForOf],\n templateUrl: './line-chart.template.html',\n styleUrls: ['./line-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [tuiHintOptionsProvider({direction: 'top', hideDelay: 0})],\n})\nexport class TuiLineChart {\n private readonly zone = inject(NgZone);\n private readonly options = inject(TUI_LINE_CHART_OPTIONS);\n private readonly hover$ = new Subject<number>();\n private readonly autoIdString = inject(TuiIdService).generate();\n\n protected readonly hintDirective = inject(TuiLineChartHint, {\n optional: true,\n });\n\n protected readonly hintOptions = inject(TuiHintOptionsDirective, {optional: true});\n\n @ViewChildren(TuiHintHover)\n public readonly drivers: QueryList<Observable<boolean>> = EMPTY_QUERY;\n\n @Input()\n public x = 0;\n\n @Input()\n public y = 0;\n\n @Input()\n public width = 0;\n\n @Input()\n public height = 0;\n\n @Input()\n public smoothingFactor = this.options.smoothingFactor;\n\n @Input()\n public xStringify: TuiStringHandler<number> | null = null;\n\n @Input()\n public yStringify: TuiStringHandler<number> | null = null;\n\n @Input()\n public filled = this.options.filled;\n\n @Input()\n public dots = this.options.dots;\n\n public value: readonly TuiPoint[] = [];\n\n @Input('value')\n public set valueSetter(value: readonly TuiPoint[]) {\n this.value = value.filter((item) => !item.some(Number.isNaN));\n }\n\n public onHovered(index: number): void {\n this.hover$.next(index);\n }\n\n @tuiPure\n protected get hovered$(): Observable<number> {\n return this.hover$.pipe(distinctUntilChanged(), tuiZoneOptimized(this.zone));\n }\n\n protected get hintContent(): PolymorpheusContent<TuiLineChartHintContext<TuiPoint>> {\n return this.hintOptions?.content || '';\n }\n\n protected get fillId(): string {\n return `tui-line-chart-${this.autoIdString}`;\n }\n\n protected get fill(): string {\n return this.filled ? `url(#${this.fillId})` : 'none';\n }\n\n protected get viewBox(): string {\n return `${this.x} ${this.y} ${this.width} ${this.height}`;\n }\n\n protected get d(): string {\n return this.getD(this.value, this.smoothingFactor);\n }\n\n protected get fillD(): string {\n return this.value.length\n ? `${this.d}V ${this.y} H ${this.value[0][0]} V ${this.value[0][1]}`\n : this.d;\n }\n\n protected get isFocusable(): boolean {\n return !this.hintDirective && this.hasHints;\n }\n\n protected get hasHints(): boolean {\n return (\n !!this.xStringify ||\n !!this.yStringify ||\n !!this.hintDirective?.hint ||\n !!this.hintContent\n );\n }\n\n @HostListener('mouseleave')\n protected onMouseLeave(): void {\n if (!this.hintDirective) {\n this.onHovered(NaN);\n }\n }\n\n protected getX(index: number): number {\n if (this.isSinglePoint) {\n return this.value[0][0] / 2;\n }\n\n return index\n ? (this.value[index - 1][0] + this.value[index][0]) / 2\n : 2 * this.value[0][0] - this.getX(1);\n }\n\n protected getWidth(index: number): number {\n return (100 * this.computeWidth(index)) / this.width;\n }\n\n protected getHintId(index: number): string {\n return `${this.autoIdString}_${index}`;\n }\n\n protected getImplicit($implicit: TuiPoint): TuiPoint | readonly TuiPoint[] {\n return (\n this.hintDirective?.getContext(this.value.indexOf($implicit), this) ||\n $implicit\n );\n }\n\n protected getHovered(hovered: number | null): TuiPoint | null {\n // This checks for NaN and null too since async pipe returns null before first item\n return tuiIsPresent(hovered) && Number.isInteger(hovered)\n ? this.value[hovered]\n : null;\n }\n\n protected getBottom(y: number): number {\n return (100 * (y - this.y)) / this.height;\n }\n\n protected getLeft(x: number): number {\n return (100 * (x - this.x)) / this.width;\n }\n\n protected getOffset(x: number): number {\n return (100 * (this.value[x][0] - this.getX(x))) / this.computeWidth(x);\n }\n\n protected onMouseEnter(index: number): void {\n if (this.hintDirective) {\n this.hintDirective.raise(index, this);\n } else {\n this.onHovered(index);\n }\n }\n\n private get isSinglePoint(): boolean {\n return this.value.length === 1;\n }\n\n @tuiPure\n private getD(value: readonly TuiPoint[], smoothingFactor: number): string {\n return value.reduce(\n (d, point, index) =>\n index ? `${d} ${tuiDraw(value, index, smoothingFactor)}` : `M ${point}`,\n '',\n );\n }\n\n private computeWidth(index: number): number {\n return index === this.value.length - 1\n ? 2 * (this.value[index][0] - this.getX(index))\n : this.getX(index + 1) - this.getX(index);\n }\n}\n","<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n focusable=\"false\"\n height=\"100%\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n offset=\"0%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0.5\"\n />\n <stop\n offset=\"100%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.d]=\"fillD\"\n [attr.fill]=\"fill\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n vector-effect=\"non-scaling-stroke\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [class.t-column_hovered]=\"hovered === index\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"{$implicit: getImplicit(point), index: index}\"\n [tuiHintDescribe]=\"isFocusable ? getHintId(index) : null\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getOffset(index)\"\n [tabIndex]=\"isFocusable ? 0 : -1\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n","/**\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-line-chart.mjs","sources":["../../../projects/addon-charts/components/line-chart/line-chart.options.ts","../../../projects/addon-charts/components/line-chart/line-chart-hint.directive.ts","../../../projects/addon-charts/components/line-chart/line-chart.component.ts","../../../projects/addon-charts/components/line-chart/line-chart.template.html","../../../projects/addon-charts/components/line-chart/taiga-ui-addon-charts-components-line-chart.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiLineChartOptions {\n readonly dots: boolean;\n readonly filled: boolean;\n readonly smoothingFactor: number;\n}\n\nexport const TUI_LINE_CHART_DEFAULT_OPTIONS: TuiLineChartOptions = {\n dots: false,\n filled: false,\n smoothingFactor: 0,\n};\n\nexport const TUI_LINE_CHART_OPTIONS = tuiCreateToken(TUI_LINE_CHART_DEFAULT_OPTIONS);\n\nexport function tuiLineChartOptionsProvider(\n options: Partial<TuiLineChartOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_LINE_CHART_OPTIONS,\n options,\n TUI_LINE_CHART_DEFAULT_OPTIONS,\n );\n}\n","import type {AfterViewInit, QueryList} from '@angular/core';\nimport {\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Input,\n NgZone,\n Renderer2,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiQueryListChanges, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiPoint} from '@taiga-ui/core/types';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport type {Observable} from 'rxjs';\nimport {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n} from 'rxjs';\n\nimport {TuiLineChart} from './line-chart.component';\n\n@Directive({\n standalone: true,\n selector: '[tuiLineChartHint]',\n providers: [TuiHoveredService],\n})\nexport class TuiLineChartHint implements AfterViewInit {\n @ContentChildren(forwardRef(() => TuiLineChart))\n private readonly charts: QueryList<TuiLineChart> = EMPTY_QUERY;\n\n @ContentChildren(forwardRef(() => TuiLineChart), {read: ElementRef})\n private readonly chartsRef: QueryList<ElementRef<HTMLElement>> = EMPTY_QUERY;\n\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n private readonly hovered$ = inject(TuiHoveredService);\n\n @Input('tuiLineChartHint')\n public hint: PolymorpheusContent<TuiContext<readonly TuiPoint[]>>;\n\n public ngAfterViewInit(): void {\n combineLatest([tuiLineChartDrivers(this.charts), this.hovered$])\n .pipe(\n filter((result) => !result.some(Boolean)),\n tuiZonefree(this.zone),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.charts.forEach((chart) => chart.onHovered(NaN));\n });\n }\n\n // _chart is required by TuiLineDaysChartComponent that impersonates this directive\n public getContext(index: number, _chart: TuiLineChart): readonly TuiPoint[] {\n return this.computeContext(...this.charts.map(({value}) => value))[index] || [];\n }\n\n // _chart is required by TuiLineDaysChartComponent that impersonates this directive\n public raise(index: number, _chart: TuiLineChart): void {\n const current = this.charts.map(\n (chart) => chart.value[index] ?? ([0, 0] as const),\n );\n\n const sorted = [...current].sort((a, b) => a[1] - b[1]);\n\n this.charts.forEach((chart) => chart.onHovered(index));\n this.chartsRef.forEach(({nativeElement}, index) =>\n this.renderer.setStyle(\n nativeElement,\n 'z-index',\n sorted.indexOf(current[index] ?? [0, 0]),\n ),\n );\n }\n\n @tuiPure\n private computeContext(\n ...values: ReadonlyArray<readonly TuiPoint[]>\n ): ReadonlyArray<readonly TuiPoint[]> {\n return (values[0] || []).map((_, index) =>\n values.map((value) => value[index] ?? [0, 0]),\n );\n }\n}\n\nexport function tuiLineChartDrivers(\n charts: QueryList<{drivers: QueryList<Observable<boolean>>}>,\n): Observable<boolean> {\n return combineLatest(\n charts.map(({drivers}) =>\n tuiQueryListChanges(drivers).pipe(\n map((drivers) => drivers.map((driver) => driver.pipe(startWith(false)))),\n ),\n ),\n ).pipe(\n map((all) => all.reduce((acc, drivers) => acc.concat(drivers), [])),\n switchMap((drivers) => combineLatest(drivers)),\n map((values) => values.some(Boolean)),\n distinctUntilChanged(),\n );\n}\n","import {AsyncPipe, NgForOf, NgIf} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n NgZone,\n ViewChildren,\n} from '@angular/core';\nimport type {TuiLineChartHintContext} from '@taiga-ui/addon-charts/types';\nimport {tuiDraw} from '@taiga-ui/addon-charts/utils';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiLet} from '@taiga-ui/cdk/directives/let';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsPresent, tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n TuiHint,\n TuiHintHover,\n TuiHintOptionsDirective,\n tuiHintOptionsProvider,\n} from '@taiga-ui/core/directives/hint';\nimport type {TuiPoint} from '@taiga-ui/core/types';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport type {Observable} from 'rxjs';\nimport {distinctUntilChanged, Subject} from 'rxjs';\n\nimport {TUI_LINE_CHART_OPTIONS} from './line-chart.options';\nimport {TuiLineChartHint} from './line-chart-hint.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-line-chart',\n imports: [TuiLet, AsyncPipe, NgIf, TuiHint, NgForOf],\n templateUrl: './line-chart.template.html',\n styleUrls: ['./line-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [tuiHintOptionsProvider({direction: 'top', hideDelay: 0})],\n host: {\n '(mouseleave)': 'onMouseLeave()',\n },\n})\nexport class TuiLineChart {\n private readonly zone = inject(NgZone);\n private readonly options = inject(TUI_LINE_CHART_OPTIONS);\n private readonly hover$ = new Subject<number>();\n private readonly autoIdString = inject(TuiIdService).generate();\n\n protected readonly hintDirective = inject(TuiLineChartHint, {\n optional: true,\n });\n\n protected readonly hintOptions = inject(TuiHintOptionsDirective, {optional: true});\n\n @ViewChildren(TuiHintHover)\n public readonly drivers: QueryList<Observable<boolean>> = EMPTY_QUERY;\n\n @Input()\n public x = 0;\n\n @Input()\n public y = 0;\n\n @Input()\n public width = 0;\n\n @Input()\n public height = 0;\n\n @Input()\n public smoothingFactor = this.options.smoothingFactor;\n\n @Input()\n public xStringify: TuiStringHandler<number> | null = null;\n\n @Input()\n public yStringify: TuiStringHandler<number> | null = null;\n\n @Input()\n public filled = this.options.filled;\n\n @Input()\n public dots = this.options.dots;\n\n public value: readonly TuiPoint[] = [];\n\n @Input('value')\n public set valueSetter(value: readonly TuiPoint[]) {\n this.value = value.filter((item) => !item.some(Number.isNaN));\n }\n\n public onHovered(index: number): void {\n this.hover$.next(index);\n }\n\n @tuiPure\n protected get hovered$(): Observable<number> {\n return this.hover$.pipe(distinctUntilChanged(), tuiZoneOptimized(this.zone));\n }\n\n protected get hintContent(): PolymorpheusContent<TuiLineChartHintContext<TuiPoint>> {\n return this.hintOptions?.content || '';\n }\n\n protected get fillId(): string {\n return `tui-line-chart-${this.autoIdString}`;\n }\n\n protected get fill(): string {\n return this.filled ? `url(#${this.fillId})` : 'none';\n }\n\n protected get viewBox(): string {\n return `${this.x} ${this.y} ${this.width} ${this.height}`;\n }\n\n protected get d(): string {\n return this.getD(this.value, this.smoothingFactor);\n }\n\n protected get fillD(): string {\n return this.value.length\n ? `${this.d}V ${this.y} H ${this.value[0]?.[0]} V ${this.value[0]?.[1]}`\n : this.d;\n }\n\n protected get isFocusable(): boolean {\n return !this.hintDirective && this.hasHints;\n }\n\n protected get hasHints(): boolean {\n return (\n !!this.xStringify ||\n !!this.yStringify ||\n !!this.hintDirective?.hint ||\n !!this.hintContent\n );\n }\n\n protected onMouseLeave(): void {\n if (!this.hintDirective) {\n this.onHovered(NaN);\n }\n }\n\n protected getX(index: number): number {\n if (this.isSinglePoint) {\n return (this.value[0]?.[0] || 0) / 2;\n }\n\n return index\n ? ((this.value[index - 1]?.[0] || 0) + (this.value[index]?.[0] || 0)) / 2\n : 2 * (this.value[0]?.[0] || 0) - this.getX(1);\n }\n\n protected getWidth(index: number): number {\n return (100 * this.computeWidth(index)) / this.width;\n }\n\n protected getHintId(index: number): string {\n return `${this.autoIdString}_${index}`;\n }\n\n protected getImplicit($implicit: TuiPoint): TuiPoint | readonly TuiPoint[] {\n return (\n this.hintDirective?.getContext(this.value.indexOf($implicit), this) ||\n $implicit\n );\n }\n\n protected getHovered(hovered: number | null): TuiPoint | null {\n // This checks for NaN and null too since async pipe returns null before first item\n return tuiIsPresent(hovered) && Number.isInteger(hovered)\n ? (this.value[hovered] ?? null)\n : null;\n }\n\n protected getBottom(y: number): number {\n return (100 * (y - this.y)) / this.height;\n }\n\n protected getLeft(x: number): number {\n return (100 * (x - this.x)) / this.width;\n }\n\n protected getOffset(x: number): number {\n return (100 * ((this.value[x]?.[0] || 0) - this.getX(x))) / this.computeWidth(x);\n }\n\n protected onMouseEnter(index: number): void {\n if (this.hintDirective) {\n this.hintDirective.raise(index, this);\n } else {\n this.onHovered(index);\n }\n }\n\n private get isSinglePoint(): boolean {\n return this.value.length === 1;\n }\n\n @tuiPure\n private getD(value: readonly TuiPoint[], smoothingFactor: number): string {\n return value.reduce(\n (d, point, index) =>\n index ? `${d} ${tuiDraw(value, index, smoothingFactor)}` : `M ${point}`,\n '',\n );\n }\n\n private computeWidth(index: number): number {\n return index === this.value.length - 1\n ? 2 * ((this.value[index]?.[0] || 0) - this.getX(index))\n : this.getX(index + 1) - this.getX(index);\n }\n}\n","<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n focusable=\"false\"\n height=\"100%\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n offset=\"0%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0.5\"\n />\n <stop\n offset=\"100%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.d]=\"fillD\"\n [attr.fill]=\"fill\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n vector-effect=\"non-scaling-stroke\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [class.t-column_hovered]=\"hovered === index\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"{$implicit: getImplicit(point), index: index}\"\n [tuiHintDescribe]=\"isFocusable ? getHintId(index) : null\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getOffset(index)\"\n [tabIndex]=\"isFocusable ? 0 : -1\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}