@taiga-ui/addon-charts 4.51.0 → 4.52.0-canary.05c3268

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 (71) hide show
  1. package/fesm2022/taiga-ui-addon-charts-components-arc-chart.mjs +6 -6
  2. package/fesm2022/taiga-ui-addon-charts-components-arc-chart.mjs.map +1 -1
  3. package/fesm2022/taiga-ui-addon-charts-components-axes.mjs +6 -7
  4. package/fesm2022/taiga-ui-addon-charts-components-axes.mjs.map +1 -1
  5. package/fesm2022/taiga-ui-addon-charts-components-bar-chart.mjs +7 -7
  6. package/fesm2022/taiga-ui-addon-charts-components-bar-chart.mjs.map +1 -1
  7. package/fesm2022/taiga-ui-addon-charts-components-bar-set.mjs +6 -6
  8. package/fesm2022/taiga-ui-addon-charts-components-bar-set.mjs.map +1 -1
  9. package/fesm2022/taiga-ui-addon-charts-components-bar.mjs +6 -7
  10. package/fesm2022/taiga-ui-addon-charts-components-bar.mjs.map +1 -1
  11. package/fesm2022/taiga-ui-addon-charts-components-legend-item.mjs +5 -5
  12. package/fesm2022/taiga-ui-addon-charts-components-legend-item.mjs.map +1 -1
  13. package/fesm2022/taiga-ui-addon-charts-components-line-chart.mjs +11 -11
  14. package/fesm2022/taiga-ui-addon-charts-components-line-chart.mjs.map +1 -1
  15. package/fesm2022/taiga-ui-addon-charts-components-line-days-chart.mjs +11 -12
  16. package/fesm2022/taiga-ui-addon-charts-components-line-days-chart.mjs.map +1 -1
  17. package/fesm2022/taiga-ui-addon-charts-components-pie-chart.mjs +14 -10
  18. package/fesm2022/taiga-ui-addon-charts-components-pie-chart.mjs.map +1 -1
  19. package/fesm2022/taiga-ui-addon-charts-components-ring-chart.mjs +5 -5
  20. package/fesm2022/taiga-ui-addon-charts-components-ring-chart.mjs.map +1 -1
  21. package/fesm2022/taiga-ui-addon-charts-utils.mjs.map +1 -1
  22. package/package.json +13 -41
  23. package/esm2022/components/arc-chart/arc-chart.component.mjs +0 -85
  24. package/esm2022/components/arc-chart/index.mjs +0 -2
  25. package/esm2022/components/arc-chart/taiga-ui-addon-charts-components-arc-chart.mjs +0 -5
  26. package/esm2022/components/axes/axes.component.mjs +0 -79
  27. package/esm2022/components/axes/index.mjs +0 -2
  28. package/esm2022/components/axes/taiga-ui-addon-charts-components-axes.mjs +0 -5
  29. package/esm2022/components/bar/bar.component.mjs +0 -35
  30. package/esm2022/components/bar/index.mjs +0 -2
  31. package/esm2022/components/bar/taiga-ui-addon-charts-components-bar.mjs +0 -5
  32. package/esm2022/components/bar-chart/bar-chart.component.mjs +0 -77
  33. package/esm2022/components/bar-chart/index.mjs +0 -2
  34. package/esm2022/components/bar-chart/taiga-ui-addon-charts-components-bar-chart.mjs +0 -5
  35. package/esm2022/components/bar-set/bar-set.component.mjs +0 -50
  36. package/esm2022/components/bar-set/index.mjs +0 -2
  37. package/esm2022/components/bar-set/taiga-ui-addon-charts-components-bar-set.mjs +0 -5
  38. package/esm2022/components/index.mjs +0 -11
  39. package/esm2022/components/legend-item/index.mjs +0 -2
  40. package/esm2022/components/legend-item/legend-item.component.mjs +0 -37
  41. package/esm2022/components/legend-item/taiga-ui-addon-charts-components-legend-item.mjs +0 -5
  42. package/esm2022/components/line-chart/index.mjs +0 -4
  43. package/esm2022/components/line-chart/line-chart-hint.directive.mjs +0 -68
  44. package/esm2022/components/line-chart/line-chart.component.mjs +0 -180
  45. package/esm2022/components/line-chart/line-chart.options.mjs +0 -14
  46. package/esm2022/components/line-chart/taiga-ui-addon-charts-components-line-chart.mjs +0 -5
  47. package/esm2022/components/line-days-chart/index.mjs +0 -3
  48. package/esm2022/components/line-days-chart/line-days-chart-hint.directive.mjs +0 -71
  49. package/esm2022/components/line-days-chart/line-days-chart.component.mjs +0 -194
  50. package/esm2022/components/line-days-chart/taiga-ui-addon-charts-components-line-days-chart.mjs +0 -5
  51. package/esm2022/components/pie-chart/index.mjs +0 -3
  52. package/esm2022/components/pie-chart/pie-chart.component.mjs +0 -115
  53. package/esm2022/components/pie-chart/pie-chart.directive.mjs +0 -48
  54. package/esm2022/components/pie-chart/taiga-ui-addon-charts-components-pie-chart.mjs +0 -5
  55. package/esm2022/components/ring-chart/index.mjs +0 -2
  56. package/esm2022/components/ring-chart/ring-chart.component.mjs +0 -39
  57. package/esm2022/components/ring-chart/taiga-ui-addon-charts-components-ring-chart.mjs +0 -5
  58. package/esm2022/components/taiga-ui-addon-charts-components.mjs +0 -5
  59. package/esm2022/index.mjs +0 -2
  60. package/esm2022/taiga-ui-addon-charts.mjs +0 -5
  61. package/esm2022/types/index.mjs +0 -2
  62. package/esm2022/types/taiga-ui-addon-charts-types.mjs +0 -5
  63. package/esm2022/utils/control-point.mjs +0 -13
  64. package/esm2022/utils/describe-sector.mjs +0 -33
  65. package/esm2022/utils/draw-curve.mjs +0 -8
  66. package/esm2022/utils/draw-line.mjs +0 -4
  67. package/esm2022/utils/draw.mjs +0 -10
  68. package/esm2022/utils/index.mjs +0 -8
  69. package/esm2022/utils/line-angle.mjs +0 -6
  70. package/esm2022/utils/line-length.mjs +0 -6
  71. package/esm2022/utils/taiga-ui-addon-charts-utils.mjs +0 -5
@@ -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, 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=\"outline-grayscale\"\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,wfAkBA,EAAA,MAAA,EAAA,CAAA,ifAAA,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,wfAAA,EAAA,MAAA,EAAA,CAAA,ifAAA,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
+ {"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 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=\"outline-grayscale\"\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":";;;;MAgBa,aAAa,CAAA;AAZ1B,IAAA,WAAA,GAAA;QAcW,IAAM,CAAA,MAAA,GAAG,KAAK;QAGd,IAAK,CAAA,KAAA,GAAG,EAAE;QAGV,IAAI,CAAA,IAAA,GAAG,EAAE;QAGT,IAAI,CAAA,IAAA,GAAa,GAAG;QAGpB,IAAQ,CAAA,QAAA,GAAG,KAAK;AAK1B;AAHG,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,gCAAgC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK;;+GAjBrE,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;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,EChB1B,wfAkBA,EAAA,MAAA,EAAA,CAAA,ifAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDZc,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAUV,aAAa,EAAA,UAAA,EAAA,CAAA;kBAZzB,SAAS;+BACI,iBAAiB,EAAA,OAAA,EAClB,CAAC,SAAS,CAAC,mBAGH,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,wfAAA,EAAA,MAAA,EAAA,CAAA,ifAAA,CAAA,EAAA;8BAIM,MAAM,EAAA,CAAA;sBADZ;gBAIM,KAAK,EAAA,CAAA;sBADX;gBAIM,IAAI,EAAA,CAAA;sBADV;gBAIM,IAAI,EAAA,CAAA;sBADV;gBAIM,QAAQ,EAAA,CAAA;sBADd;;;AE7BL;;AAEG;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from 'tslib';
2
- import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
2
+ import { AsyncPipe } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, inject, Renderer2, DestroyRef, NgZone, ElementRef, Directive, ContentChildren, forwardRef, Input, signal, computed, Component, ChangeDetectionStrategy, ViewChildren } from '@angular/core';
4
+ import { InjectionToken, inject, Renderer2, DestroyRef, NgZone, ElementRef, Input, forwardRef, ContentChildren, Directive, signal, computed, ViewChildren, ChangeDetectionStrategy, Component } from '@angular/core';
5
5
  import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
6
6
  import { ResizeObserverService } from '@ng-web-apis/resize-observer';
7
7
  import { tuiDraw } from '@taiga-ui/addon-charts/utils';
@@ -11,7 +11,7 @@ import { tuiZonefree, tuiQueryListChanges, tuiZoneOptimized } from '@taiga-ui/cd
11
11
  import { tuiInjectId } from '@taiga-ui/cdk/services';
12
12
  import { tuiProvideOptions, tuiPure, tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
13
13
  import * as i1 from '@taiga-ui/core/directives/hint';
14
- import { TuiHintOptionsDirective, TuiHintHover, tuiHintOptionsProvider, TuiHint } from '@taiga-ui/core/directives/hint';
14
+ import { TuiHintOptionsDirective, tuiHintOptionsProvider, TuiHintHover, TuiHint } from '@taiga-ui/core/directives/hint';
15
15
  import { combineLatest, filter, map, startWith, switchMap, distinctUntilChanged, Subject } from 'rxjs';
16
16
  import { TuiHoveredService } from '@taiga-ui/cdk/directives/hovered';
17
17
 
@@ -57,13 +57,13 @@ class TuiLineChartHint {
57
57
  computeContext(...values) {
58
58
  return (values[0] || []).map((_, index) => values.map((value) => value[index] ?? [0, 0]));
59
59
  }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
- 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 }); }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiLineChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiLineChartHint, isStandalone: true, selector: "[tuiLineChartHint]", inputs: { hint: ["tuiLineChartHint", "hint"] }, providers: [TuiHoveredService], queries: [{ propertyName: "charts", predicate: i0.forwardRef(() => TuiLineChart) }, { propertyName: "chartsRef", predicate: i0.forwardRef(() => TuiLineChart), read: ElementRef }], ngImport: i0 }); }
62
62
  }
63
63
  __decorate([
64
64
  tuiPure
65
65
  ], TuiLineChartHint.prototype, "computeContext", null);
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineChartHint, decorators: [{
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiLineChartHint, decorators: [{
67
67
  type: Directive,
68
68
  args: [{
69
69
  standalone: true,
@@ -206,8 +206,8 @@ class TuiLineChart {
206
206
  ? 2 * ((this.value[index]?.[0] || 0) - this.getX(index))
207
207
  : this.getX(index + 1) - this.getX(index);
208
208
  }
209
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
210
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLineChart, isStandalone: true, selector: "tui-line-chart", inputs: { x: "x", y: "y", width: "width", height: "height", smoothingFactor: "smoothingFactor", xStringify: "xStringify", yStringify: "yStringify", filled: "filled", dots: "dots", valueSetter: ["value", "valueSetter"] }, host: { listeners: { "mouseleave": "onMouseLeave()" } }, providers: [ResizeObserverService], viewQueries: [{ propertyName: "drivers", predicate: TuiHintHover, descendants: true }], usesOnChanges: true, ngImport: i0, 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;inline-size:100%;block-size:100%;pointer-events:none}.t-svg{block-size:calc(100% + 1px);transform:scaleY(-1);margin:-.03125rem 0}.t-column{position:absolute;top:0;block-size:100%;pointer-events:auto}.t-dot{position:absolute;inline-size:.375rem;block-size:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;inline-size:.5rem;block-size:.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%;inline-size:1px}.t-line_horizontal{z-index:-1;inline-size:100%;block-size: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);block-size:1.25rem;line-height:1.25rem;margin-block-end:-.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"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i1.TuiHintHost, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
209
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiLineChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
210
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiLineChart, isStandalone: true, selector: "tui-line-chart", inputs: { x: "x", y: "y", width: "width", height: "height", smoothingFactor: "smoothingFactor", xStringify: "xStringify", yStringify: "yStringify", filled: "filled", dots: "dots", valueSetter: ["value", "valueSetter"] }, host: { listeners: { "mouseleave": "onMouseLeave()" } }, providers: [ResizeObserverService], viewQueries: [{ propertyName: "drivers", predicate: TuiHintHover, descendants: true }], usesOnChanges: true, ngImport: i0, 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 @if (dots) {\n @for (point of value; track point) {\n <div\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n }\n }\n @if (hasHints) {\n @for (point of value; track point; let index = $index) {\n <!-- TODO: Fix hint type -->\n @if (value.length > 1 || dots) {\n <div\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 }\n @if (isFocusable) {\n <div\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n }\n }\n }\n @if (getHovered(hovered); as point) {\n @if (xStringify) {\n <div\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n }\n @if (yStringify) {\n <div\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n }\n }\n</ng-container>\n", styles: [":host{display:flex;inline-size:100%;block-size:100%;pointer-events:none}.t-svg{block-size:calc(100% + 1px);transform:scaleY(-1);margin:-.03125rem 0}.t-column{position:absolute;top:0;block-size:100%;pointer-events:auto}.t-dot{position:absolute;inline-size:.375rem;block-size:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;inline-size:.5rem;block-size:.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%;inline-size:1px}.t-line_horizontal{z-index:-1;inline-size:100%;block-size: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);block-size:1.25rem;line-height:1.25rem;margin-block-end:-.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"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i1.TuiHintHost, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
211
211
  }
212
212
  __decorate([
213
213
  tuiPure
@@ -215,11 +215,11 @@ __decorate([
215
215
  __decorate([
216
216
  tuiPure
217
217
  ], TuiLineChart.prototype, "getD", null);
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineChart, decorators: [{
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiLineChart, decorators: [{
219
219
  type: Component,
220
- args: [{ standalone: true, selector: 'tui-line-chart', imports: [AsyncPipe, NgForOf, NgIf, TuiHint, TuiLet], changeDetection: ChangeDetectionStrategy.OnPush, providers: [ResizeObserverService], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], host: {
220
+ args: [{ selector: 'tui-line-chart', imports: [AsyncPipe, TuiHint, TuiLet], changeDetection: ChangeDetectionStrategy.OnPush, providers: [ResizeObserverService], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], host: {
221
221
  '(mouseleave)': 'onMouseLeave()',
222
- }, 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;inline-size:100%;block-size:100%;pointer-events:none}.t-svg{block-size:calc(100% + 1px);transform:scaleY(-1);margin:-.03125rem 0}.t-column{position:absolute;top:0;block-size:100%;pointer-events:auto}.t-dot{position:absolute;inline-size:.375rem;block-size:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;inline-size:.5rem;block-size:.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%;inline-size:1px}.t-line_horizontal{z-index:-1;inline-size:100%;block-size: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);block-size:1.25rem;line-height:1.25rem;margin-block-end:-.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"] }]
222
+ }, 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 @if (dots) {\n @for (point of value; track point) {\n <div\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n }\n }\n @if (hasHints) {\n @for (point of value; track point; let index = $index) {\n <!-- TODO: Fix hint type -->\n @if (value.length > 1 || dots) {\n <div\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 }\n @if (isFocusable) {\n <div\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n }\n }\n }\n @if (getHovered(hovered); as point) {\n @if (xStringify) {\n <div\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n }\n @if (yStringify) {\n <div\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n }\n }\n</ng-container>\n", styles: [":host{display:flex;inline-size:100%;block-size:100%;pointer-events:none}.t-svg{block-size:calc(100% + 1px);transform:scaleY(-1);margin:-.03125rem 0}.t-column{position:absolute;top:0;block-size:100%;pointer-events:auto}.t-dot{position:absolute;inline-size:.375rem;block-size:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;inline-size:.5rem;block-size:.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%;inline-size:1px}.t-line_horizontal{z-index:-1;inline-size:100%;block-size: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);block-size:1.25rem;line-height:1.25rem;margin-block-end:-.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"] }]
223
223
  }], propDecorators: { drivers: [{
224
224
  type: ViewChildren,
225
225
  args: [TuiHintHover]
@@ -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 {InjectionToken, type Provider} from '@angular/core';\nimport {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 = new InjectionToken(\n ngDevMode ? 'TUI_LINE_CHART_OPTIONS' : '',\n {\n factory: () => TUI_LINE_CHART_DEFAULT_OPTIONS,\n },\n);\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 {\n type AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Input,\n NgZone,\n type QueryList,\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 {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n type Observable,\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 {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Input,\n NgZone,\n type OnChanges,\n type QueryList,\n signal,\n ViewChildren,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ResizeObserverService} from '@ng-web-apis/resize-observer';\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 {tuiInjectId} 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 {distinctUntilChanged, map, type Observable, 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: [AsyncPipe, NgForOf, NgIf, TuiHint, TuiLet],\n templateUrl: './line-chart.template.html',\n styleUrls: ['./line-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ResizeObserverService],\n viewProviders: [tuiHintOptionsProvider({direction: 'top', hideDelay: 0})],\n host: {\n '(mouseleave)': 'onMouseLeave()',\n },\n})\nexport class TuiLineChart implements OnChanges {\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 autoId = tuiInjectId();\n private readonly resize = toSignal(\n inject(ResizeObserverService, {self: true}).pipe(\n map(([e]) => e?.contentRect.height || 0),\n ),\n {initialValue: 0},\n );\n\n private readonly box = signal('');\n\n protected readonly hintDirective = inject(TuiLineChartHint, {optional: true});\n protected readonly hintOptions = inject(TuiHintOptionsDirective, {optional: true});\n protected readonly viewBox = computed(() => {\n const offset = this.height / Math.max(this.resize(), 1);\n const [x = 0, y = 0, width = 0, height = 0] = this.box().split(' ').map(Number);\n\n return `${x} ${y - offset} ${width} ${height + 2 * offset}`;\n });\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 ngOnChanges(): void {\n this.box.set(`${this.x} ${this.y} ${this.width} ${this.height}`);\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.autoId}`;\n }\n\n protected get fill(): string {\n return this.filled ? `url(#${this.fillId})` : 'none';\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.autoId}_${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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"}
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 {InjectionToken, type Provider} from '@angular/core';\nimport {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 = new InjectionToken(\n ngDevMode ? 'TUI_LINE_CHART_OPTIONS' : '',\n {\n factory: () => TUI_LINE_CHART_DEFAULT_OPTIONS,\n },\n);\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 {\n type AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n Input,\n NgZone,\n type QueryList,\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 {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n type Observable,\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} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Input,\n NgZone,\n type OnChanges,\n type QueryList,\n signal,\n ViewChildren,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ResizeObserverService} from '@ng-web-apis/resize-observer';\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 {tuiInjectId} 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 {distinctUntilChanged, map, type Observable, Subject} from 'rxjs';\n\nimport {TUI_LINE_CHART_OPTIONS} from './line-chart.options';\nimport {TuiLineChartHint} from './line-chart-hint.directive';\n\n@Component({\n selector: 'tui-line-chart',\n imports: [AsyncPipe, TuiHint, TuiLet],\n templateUrl: './line-chart.template.html',\n styleUrls: ['./line-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ResizeObserverService],\n viewProviders: [tuiHintOptionsProvider({direction: 'top', hideDelay: 0})],\n host: {\n '(mouseleave)': 'onMouseLeave()',\n },\n})\nexport class TuiLineChart implements OnChanges {\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 autoId = tuiInjectId();\n private readonly resize = toSignal(\n inject(ResizeObserverService, {self: true}).pipe(\n map(([e]) => e?.contentRect.height || 0),\n ),\n {initialValue: 0},\n );\n\n private readonly box = signal('');\n\n protected readonly hintDirective = inject(TuiLineChartHint, {optional: true});\n protected readonly hintOptions = inject(TuiHintOptionsDirective, {optional: true});\n protected readonly viewBox = computed(() => {\n const offset = this.height / Math.max(this.resize(), 1);\n const [x = 0, y = 0, width = 0, height = 0] = this.box().split(' ').map(Number);\n\n return `${x} ${y - offset} ${width} ${height + 2 * offset}`;\n });\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 ngOnChanges(): void {\n this.box.set(`${this.x} ${this.y} ${this.width} ${this.height}`);\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.autoId}`;\n }\n\n protected get fill(): string {\n return this.filled ? `url(#${this.fillId})` : 'none';\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.autoId}_${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 @if (dots) {\n @for (point of value; track point) {\n <div\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n }\n }\n @if (hasHints) {\n @for (point of value; track point; let index = $index) {\n <!-- TODO: Fix hint type -->\n @if (value.length > 1 || dots) {\n <div\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 }\n @if (isFocusable) {\n <div\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n }\n }\n }\n @if (getHovered(hovered); as point) {\n @if (xStringify) {\n <div\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n }\n @if (yStringify) {\n <div\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n }\n }\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AASa,MAAA,8BAA8B,GAAwB;AAC/D,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,eAAe,EAAE,CAAC;;AAGT,MAAA,sBAAsB,GAAG,IAAI,cAAc,CACpD,SAAS,GAAG,wBAAwB,GAAG,EAAE,EACzC;AACI,IAAA,OAAO,EAAE,MAAM,8BAA8B;AAChD,CAAA;AAGC,SAAU,2BAA2B,CACvC,OAAqC,EAAA;IAErC,OAAO,iBAAiB,CACpB,sBAAsB,EACtB,OAAO,EACP,8BAA8B,CACjC;AACL;;MCQa,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;QAOqB,IAAM,CAAA,MAAA,GAA4B,WAAW;QAG7C,IAAS,CAAA,SAAA,GAAuC,WAAW;AAE3D,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAgDxD;IA3CU,eAAe,GAAA;AAClB,QAAA,aAAa,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC1D,aAAA,IAAI,CACD,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACzC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EACtB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEtC,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACxD,SAAC,CAAC;;;IAIH,UAAU,CAAC,KAAa,EAAE,MAAoB,EAAA;QACjD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;;;IAI5E,KAAK,CAAC,KAAa,EAAE,MAAoB,EAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAC3B,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAK,CAAC,CAAC,EAAE,CAAC,CAAW,CACrD;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAC,aAAa,EAAC,EAAE,KAAK,KAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,aAAa,EACb,SAAS,EACT,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC3C,CACJ;;IAIG,cAAc,CAClB,GAAG,MAA0C,EAAA;AAE7C,QAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAClC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAChD;;+GAxDI,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,SAAA,EAFd,CAAC,iBAAiB,CAAC,qEAGI,YAAY,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAGZ,YAAY,CAAA,EAAA,IAAA,EAAU,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;AA+C1D,UAAA,CAAA;IADP;AAOA,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA;4FAzDQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,SAAS,EAAE,CAAC,iBAAiB,CAAC;AACjC,iBAAA;8BAGoB,MAAM,EAAA,CAAA;sBADtB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,YAAY,CAAC;gBAI9B,SAAS,EAAA,CAAA;sBADzB,eAAe;uBAAC,UAAU,CAAC,MAAM,YAAY,CAAC,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;gBAS5D,IAAI,EAAA,CAAA;sBADV,KAAK;uBAAC,kBAAkB;gBAuCjB,cAAc,EAAA,EAAA,EAAA,EAAA,CAAA;AASpB,SAAU,mBAAmB,CAC/B,MAA4D,EAAA;IAE5D,OAAO,aAAa,CAChB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAC,OAAO,EAAC,KACjB,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC3E,CACJ,CACJ,CAAC,IAAI,CACF,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EACnE,SAAS,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,EAC9C,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACrC,oBAAoB,EAAE,CACzB;AACL;;MCjEa,YAAY,CAAA;AAZzB,IAAA,WAAA,GAAA;AAaqB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAU;QAC9B,IAAM,CAAA,MAAA,GAAG,WAAW,EAAE;AACtB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAC9B,MAAM,CAAC,qBAAqB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAC5C,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAC3C,EACD,EAAC,YAAY,EAAE,CAAC,EAAC,CACpB;AAEgB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;QAEd,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;QAC1D,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,uBAAuB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC/D,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvD,YAAA,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAE/E,YAAA,OAAO,CAAG,EAAA,CAAC,CAAI,CAAA,EAAA,CAAC,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE;AAC/D,SAAC,CAAC;QAGc,IAAO,CAAA,OAAA,GAAmC,WAAW;QAG9D,IAAC,CAAA,CAAA,GAAG,CAAC;QAGL,IAAC,CAAA,CAAA,GAAG,CAAC;QAGL,IAAK,CAAA,KAAA,GAAG,CAAC;QAGT,IAAM,CAAA,MAAA,GAAG,CAAC;AAGV,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe;QAG9C,IAAU,CAAA,UAAA,GAAoC,IAAI;QAGlD,IAAU,CAAA,UAAA,GAAoC,IAAI;AAGlD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;AAG5B,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;QAExB,IAAK,CAAA,KAAA,GAAwB,EAAE;AAmIzC;IAjIG,IACW,WAAW,CAAC,KAA0B,EAAA;QAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;;IAG1D,WAAW,GAAA;QACd,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAG,EAAA,IAAI,CAAC,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAE,CAAA,CAAC;;AAG7D,IAAA,SAAS,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;AAI3B,IAAA,IAAc,QAAQ,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAGhF,IAAA,IAAc,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,EAAE;;AAG1C,IAAA,IAAc,MAAM,GAAA;AAChB,QAAA,OAAO,CAAkB,eAAA,EAAA,IAAI,CAAC,MAAM,EAAE;;AAG1C,IAAA,IAAc,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,MAAM,CAAG,CAAA,CAAA,GAAG,MAAM;;AAGxD,IAAA,IAAc,CAAC,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;;AAGtD,IAAA,IAAc,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC;AACd,cAAE,CAAA,EAAG,IAAI,CAAC,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE;AACxE,cAAE,IAAI,CAAC,CAAC;;AAGhB,IAAA,IAAc,WAAW,GAAA;QACrB,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ;;AAG/C,IAAA,IAAc,QAAQ,GAAA;AAClB,QAAA,QACI,CAAC,CAAC,IAAI,CAAC,UAAU;YACjB,CAAC,CAAC,IAAI,CAAC,UAAU;AACjB,YAAA,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI;AAC1B,YAAA,CAAC,CAAC,IAAI,CAAC,WAAW;;IAIhB,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;;;AAIjB,IAAA,IAAI,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGxC,QAAA,OAAO;AACH,cAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI;cACtE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;AAG5C,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC5B,QAAA,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK;;AAG9C,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,KAAK,EAAE;;AAG1B,IAAA,WAAW,CAAC,SAAmB,EAAA;AACrC,QAAA,QACI,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;AACnE,YAAA,SAAS;;AAIP,IAAA,UAAU,CAAC,OAAsB,EAAA;;QAEvC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO;eACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI;cAC5B,IAAI;;AAGJ,IAAA,SAAS,CAAC,CAAS,EAAA;AACzB,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM;;AAGnC,IAAA,OAAO,CAAC,CAAS,EAAA;AACvB,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK;;AAGlC,IAAA,SAAS,CAAC,CAAS,EAAA;AACzB,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;;AAG1E,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;;aAClC;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;;AAI7B,IAAA,IAAY,aAAa,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;;IAI1B,IAAI,CAAC,KAA0B,EAAE,eAAuB,EAAA;AAC5D,QAAA,OAAO,KAAK,CAAC,MAAM,CACf,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KACZ,KAAK,GAAG,CAAG,EAAA,CAAC,CAAI,CAAA,EAAA,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAA,CAAE,GAAG,CAAK,EAAA,EAAA,KAAK,EAAE,EAC3E,EAAE,CACL;;AAGG,IAAA,YAAY,CAAC,KAAa,EAAA;QAC9B,OAAO,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG;cAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACvD,cAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;+GAtLxC,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,GAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,CAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EANV,CAAC,qBAAqB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EA6BpB,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvE9B,qoHA6GA,EAAA,MAAA,EAAA,CAAA,igDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDvEc,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAW,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAKrB,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAC,CAAC,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AA0EzE,UAAA,CAAA;IADC;AAGA,CAAA,EAAA,YAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA;AAoGO,UAAA,CAAA;IADP;AAOA,CAAA,EAAA,YAAA,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,CAAA;4FAjLQ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAZxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EACjB,OAAA,EAAA,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,EAGpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,aACpC,CAAC,qBAAqB,CAAC,EAAA,aAAA,EACnB,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAC,CAAC,CAAC,EACnE,IAAA,EAAA;AACF,wBAAA,cAAc,EAAE,gBAAgB;AACnC,qBAAA,EAAA,QAAA,EAAA,qoHAAA,EAAA,MAAA,EAAA,CAAA,igDAAA,CAAA,EAAA;8BA0Be,OAAO,EAAA,CAAA;sBADtB,YAAY;uBAAC,YAAY;gBAInB,CAAC,EAAA,CAAA;sBADP;gBAIM,CAAC,EAAA,CAAA;sBADP;gBAIM,KAAK,EAAA,CAAA;sBADX;gBAIM,MAAM,EAAA,CAAA;sBADZ;gBAIM,eAAe,EAAA,CAAA;sBADrB;gBAIM,UAAU,EAAA,CAAA;sBADhB;gBAIM,UAAU,EAAA,CAAA;sBADhB;gBAIM,MAAM,EAAA,CAAA;sBADZ;gBAIM,IAAI,EAAA,CAAA;sBADV;gBAMU,WAAW,EAAA,CAAA;sBADrB,KAAK;uBAAC,OAAO;AAcA,aAAA,CAAA,EAAA,QAAQ,MAsGd,IAAI,EAAA,EAAA,EAAA,EAAA,CAAA;;AE3NhB;;AAEG;;;;"}
@@ -1,9 +1,8 @@
1
1
  import { __decorate } from 'tslib';
2
- import { NgForOf } from '@angular/common';
3
2
  import * as i0 from '@angular/core';
4
- import { inject, DestroyRef, NgZone, Directive, ContentChildren, forwardRef, Input, Component, ChangeDetectionStrategy, ViewChildren } from '@angular/core';
3
+ import { inject, DestroyRef, NgZone, Input, forwardRef, ContentChildren, Directive, ViewChildren, ChangeDetectionStrategy, Component } from '@angular/core';
5
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import { tuiLineChartDrivers, TUI_LINE_CHART_OPTIONS, TuiLineChartHint, TuiLineChart } from '@taiga-ui/addon-charts/components/line-chart';
5
+ import { tuiLineChartDrivers, TUI_LINE_CHART_OPTIONS, TuiLineChart, TuiLineChartHint } from '@taiga-ui/addon-charts/components/line-chart';
7
6
  import { EMPTY_QUERY, EMPTY_ARRAY } from '@taiga-ui/cdk/constants';
8
7
  import { TuiDay, TuiMonth } from '@taiga-ui/cdk/date-time';
9
8
  import { TuiHoveredService } from '@taiga-ui/cdk/directives/hovered';
@@ -52,13 +51,13 @@ class TuiLineDaysChartHint {
52
51
  getMap(...values) {
53
52
  return (values[0] || []).reduce((map, [day]) => map.set(String(day), values.map((value) => find(value, day))), new Map());
54
53
  }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineDaysChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
56
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiLineDaysChartHint, isStandalone: true, selector: "[tuiLineChartHint]", inputs: { hint: ["tuiLineChartHint", "hint"] }, providers: [TuiHoveredService], queries: [{ propertyName: "charts", predicate: i0.forwardRef(function () { return TuiLineDaysChart; }) }], ngImport: i0 }); }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiLineDaysChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiLineDaysChartHint, isStandalone: true, selector: "[tuiLineChartHint]", inputs: { hint: ["tuiLineChartHint", "hint"] }, providers: [TuiHoveredService], queries: [{ propertyName: "charts", predicate: i0.forwardRef(() => TuiLineDaysChart) }], ngImport: i0 }); }
57
56
  }
58
57
  __decorate([
59
58
  tuiPure
60
59
  ], TuiLineDaysChartHint.prototype, "getMap", null);
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineDaysChartHint, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiLineDaysChartHint, decorators: [{
62
61
  type: Directive,
63
62
  args: [{
64
63
  standalone: true,
@@ -202,14 +201,14 @@ class TuiLineDaysChart {
202
201
  const start = this.value[0]?.[0];
203
202
  return this.value[index - (start?.day || 0) + 1]?.[0];
204
203
  }
205
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineDaysChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
206
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLineDaysChart, isStandalone: true, selector: "tui-line-days-chart", inputs: { y: "y", height: "height", smoothingFactor: "smoothingFactor", hintContent: "hintContent", xStringify: "xStringify", yStringify: "yStringify", dots: "dots", valueSetter: ["value", "valueSetter"] }, host: { properties: { "style.zIndex": "zIndex" } }, providers: [
204
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiLineDaysChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
205
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiLineDaysChart, isStandalone: true, selector: "tui-line-days-chart", inputs: { y: "y", height: "height", smoothingFactor: "smoothingFactor", hintContent: "hintContent", xStringify: "xStringify", yStringify: "yStringify", dots: "dots", valueSetter: ["value", "valueSetter"] }, host: { properties: { "style.zIndex": "zIndex" } }, providers: [
207
206
  TuiHoveredService,
208
207
  {
209
208
  provide: TuiLineChartHint,
210
209
  useExisting: TuiLineDaysChart,
211
210
  },
212
- ], viewQueries: [{ propertyName: "charts", predicate: TuiLineChart, descendants: true }], ngImport: i0, template: "<tui-line-chart\n *ngFor=\"let month of months; let first = first\"\n class=\"t-chart\"\n [dots]=\"dots\"\n [height]=\"height\"\n [smoothingFactor]=\"smoothingFactor\"\n [style.zIndex]=\"zIndex\"\n [tuiHintContent]=\"hintContent ? hint : ''\"\n [value]=\"month\"\n [width]=\"first ? firstWidth : getWidth(month[0]?.[0] ?? 0)\"\n [x]=\"first ? 0 : getX(month[0]?.[0] ?? 0)\"\n [xStringify]=\"xStringify ? daysStringify : null\"\n [y]=\"y\"\n [yStringify]=\"yStringify\"\n/>\n<ng-template\n #hint\n let-point\n>\n <ng-container *polymorpheusOutlet=\"hintContent as text; context: {$implicit: getHintContext(point[0], value)}\">\n {{ text }}\n </ng-container>\n</ng-template>\n", styles: [":host{display:block}.t-chart{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i1.TuiHintOptionsDirective, selector: "[tuiHintContent]", inputs: ["tuiHintContent", "tuiHintDirection", "tuiHintAppearance", "tuiHintShowDelay", "tuiHintHideDelay"] }, { kind: "component", type: TuiLineChart, selector: "tui-line-chart", inputs: ["x", "y", "width", "height", "smoothingFactor", "xStringify", "yStringify", "filled", "dots", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
211
+ ], viewQueries: [{ propertyName: "charts", predicate: TuiLineChart, descendants: true }], ngImport: i0, template: "@for (month of months; track month; let first = $first) {\n <tui-line-chart\n class=\"t-chart\"\n [dots]=\"dots\"\n [height]=\"height\"\n [smoothingFactor]=\"smoothingFactor\"\n [style.zIndex]=\"zIndex\"\n [tuiHintContent]=\"hintContent ? hint : ''\"\n [value]=\"month\"\n [width]=\"first ? firstWidth : getWidth(month[0]?.[0] ?? 0)\"\n [x]=\"first ? 0 : getX(month[0]?.[0] ?? 0)\"\n [xStringify]=\"xStringify ? daysStringify : null\"\n [y]=\"y\"\n [yStringify]=\"yStringify\"\n />\n}\n<ng-template\n #hint\n let-point\n>\n <ng-container *polymorpheusOutlet=\"hintContent as text; context: {$implicit: getHintContext(point[0], value)}\">\n {{ text }}\n </ng-container>\n</ng-template>\n", styles: [":host{display:block}.t-chart{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i1.TuiHintOptionsDirective, selector: "[tuiHintContent]", inputs: ["tuiHintContent", "tuiHintDirection", "tuiHintAppearance", "tuiHintShowDelay", "tuiHintHideDelay"] }, { kind: "component", type: TuiLineChart, selector: "tui-line-chart", inputs: ["x", "y", "width", "height", "smoothingFactor", "xStringify", "yStringify", "filled", "dots", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
213
212
  }
214
213
  __decorate([
215
214
  tuiPure
@@ -217,9 +216,9 @@ __decorate([
217
216
  __decorate([
218
217
  tuiPure
219
218
  ], TuiLineDaysChart.prototype, "breakMonths", null);
220
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineDaysChart, decorators: [{
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiLineDaysChart, decorators: [{
221
220
  type: Component,
222
- args: [{ standalone: true, selector: 'tui-line-days-chart', imports: [NgForOf, PolymorpheusOutlet, TuiHint, TuiLineChart], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
221
+ args: [{ selector: 'tui-line-days-chart', imports: [PolymorpheusOutlet, TuiHint, TuiLineChart], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
223
222
  TuiHoveredService,
224
223
  {
225
224
  provide: TuiLineChartHint,
@@ -227,7 +226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
227
226
  },
228
227
  ], host: {
229
228
  '[style.zIndex]': 'zIndex',
230
- }, template: "<tui-line-chart\n *ngFor=\"let month of months; let first = first\"\n class=\"t-chart\"\n [dots]=\"dots\"\n [height]=\"height\"\n [smoothingFactor]=\"smoothingFactor\"\n [style.zIndex]=\"zIndex\"\n [tuiHintContent]=\"hintContent ? hint : ''\"\n [value]=\"month\"\n [width]=\"first ? firstWidth : getWidth(month[0]?.[0] ?? 0)\"\n [x]=\"first ? 0 : getX(month[0]?.[0] ?? 0)\"\n [xStringify]=\"xStringify ? daysStringify : null\"\n [y]=\"y\"\n [yStringify]=\"yStringify\"\n/>\n<ng-template\n #hint\n let-point\n>\n <ng-container *polymorpheusOutlet=\"hintContent as text; context: {$implicit: getHintContext(point[0], value)}\">\n {{ text }}\n </ng-container>\n</ng-template>\n", styles: [":host{display:block}.t-chart{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}\n"] }]
229
+ }, template: "@for (month of months; track month; let first = $first) {\n <tui-line-chart\n class=\"t-chart\"\n [dots]=\"dots\"\n [height]=\"height\"\n [smoothingFactor]=\"smoothingFactor\"\n [style.zIndex]=\"zIndex\"\n [tuiHintContent]=\"hintContent ? hint : ''\"\n [value]=\"month\"\n [width]=\"first ? firstWidth : getWidth(month[0]?.[0] ?? 0)\"\n [x]=\"first ? 0 : getX(month[0]?.[0] ?? 0)\"\n [xStringify]=\"xStringify ? daysStringify : null\"\n [y]=\"y\"\n [yStringify]=\"yStringify\"\n />\n}\n<ng-template\n #hint\n let-point\n>\n <ng-container *polymorpheusOutlet=\"hintContent as text; context: {$implicit: getHintContext(point[0], value)}\">\n {{ text }}\n </ng-container>\n</ng-template>\n", styles: [":host{display:block}.t-chart{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}\n"] }]
231
230
  }], propDecorators: { charts: [{
232
231
  type: ViewChildren,
233
232
  args: [TuiLineChart]
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-line-days-chart.mjs","sources":["../../../projects/addon-charts/components/line-days-chart/line-days-chart-hint.directive.ts","../../../projects/addon-charts/components/line-days-chart/line-days-chart.component.ts","../../../projects/addon-charts/components/line-days-chart/line-days-chart.template.html","../../../projects/addon-charts/components/line-days-chart/taiga-ui-addon-charts-components-line-days-chart.ts"],"sourcesContent":["import {\n type AfterContentInit,\n ContentChildren,\n DestroyRef,\n Directive,\n forwardRef,\n inject,\n Input,\n NgZone,\n type QueryList,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiLineChartDrivers} from '@taiga-ui/addon-charts/components/line-chart';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {type TuiDay} from '@taiga-ui/cdk/date-time';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {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 {combineLatest, filter} from 'rxjs';\n\nimport {TuiLineDaysChart} from './line-days-chart.component';\n\nfunction find(value: ReadonlyArray<[TuiDay, number]>, current: TuiDay): [TuiDay, number] {\n return value.find(([day]) => day.daySame(current)) || [current, NaN];\n}\n\n// TODO: Consider extending TuiLineChartHintDirective\n@Directive({\n standalone: true,\n selector: '[tuiLineChartHint]',\n providers: [TuiHoveredService],\n})\nexport class TuiLineDaysChartHint implements AfterContentInit {\n @ContentChildren(forwardRef(() => TuiLineDaysChart))\n private readonly charts: QueryList<TuiLineDaysChart> = EMPTY_QUERY;\n\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 ngAfterContentInit(): void {\n combineLatest([\n ...this.charts.map(({charts}) => tuiLineChartDrivers(charts)),\n this.hovered$,\n ])\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 public getContext(day: TuiDay): ReadonlyArray<[TuiDay, number]> {\n return this.getMap(...this.charts.map(({value}) => value)).get(String(day)) || [];\n }\n\n public raise(day: TuiDay): void {\n const current = this.charts\n .map(({value}) => (day ? find(value, day) : []))\n .filter(([_, value]) => !Number.isNaN(value));\n const sorted = [...current].sort((a, b) => a[1] - b[1]);\n\n this.charts.forEach((chart, index) => {\n const item = current[index];\n\n chart.onHovered(day);\n chart.zIndex = Math.max(item ? sorted.indexOf(item) : 0, 0);\n });\n }\n\n @tuiPure\n private getMap(\n ...values: Array<ReadonlyArray<[TuiDay, number]>>\n ): Map<string, ReadonlyArray<[TuiDay, number]>> {\n return (values[0] || []).reduce(\n (map, [day]) =>\n map.set(\n String(day),\n values.map((value) => find(value, day)),\n ),\n new Map<string, ReadonlyArray<[TuiDay, number]>>(),\n );\n }\n}\n","import {NgForOf} from '@angular/common';\nimport {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n Input,\n NgZone,\n type QueryList,\n ViewChildren,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n TUI_LINE_CHART_OPTIONS,\n TuiLineChart,\n tuiLineChartDrivers,\n TuiLineChartHint,\n} from '@taiga-ui/addon-charts/components/line-chart';\nimport {EMPTY_ARRAY, EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiDay, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiContext, type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber, tuiIsPresent, tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {type TuiPoint} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {combineLatest, filter} from 'rxjs';\n\nimport {TuiLineDaysChartHint} from './line-days-chart-hint.directive';\n\nconst DUMMY: TuiPoint = [NaN, NaN];\n\n@Component({\n standalone: true,\n selector: 'tui-line-days-chart',\n imports: [NgForOf, PolymorpheusOutlet, TuiHint, TuiLineChart],\n templateUrl: './line-days-chart.template.html',\n styleUrls: ['./line-days-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TuiHoveredService,\n {\n provide: TuiLineChartHint,\n useExisting: TuiLineDaysChart,\n },\n ],\n host: {\n '[style.zIndex]': 'zIndex',\n },\n})\nexport class TuiLineDaysChart implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n private readonly hovered$ = inject(TuiHoveredService);\n private readonly options = inject(TUI_LINE_CHART_OPTIONS);\n private readonly hintDirective = inject(TuiLineDaysChartHint, {\n optional: true,\n });\n\n @ViewChildren(TuiLineChart)\n public readonly charts: QueryList<TuiLineChart> = EMPTY_QUERY;\n\n @Input()\n public y = 0;\n\n @Input()\n public height = 0;\n\n @Input()\n public smoothingFactor = this.options.smoothingFactor;\n\n @Input()\n public hintContent: PolymorpheusContent<TuiContext<[TuiDay, number]>>;\n\n @Input()\n public xStringify: TuiStringHandler<TuiDay> | null = null;\n\n @Input()\n public yStringify: TuiStringHandler<number> | null = null;\n\n @Input()\n public dots = this.options.dots;\n\n public zIndex = 0;\n\n public value: ReadonlyArray<[TuiDay, number]> = [];\n\n @Input('value')\n public set valueSetter(value: ReadonlyArray<[TuiDay, number]>) {\n if (!value.length) {\n this.value = [];\n\n return;\n }\n\n const start = value[0]?.[0];\n const end = value[value.length - 1];\n const mutable = [...value];\n const length = start && end ? TuiDay.lengthBetween(start, end[0]) + 1 : 0;\n\n this.value = Array.from({length}, (_, day) => {\n const startMutable = mutable[0]?.[0];\n const currentDay = start?.append({day});\n const shifted =\n startMutable && currentDay?.daySame(startMutable)\n ? mutable.shift()\n : null;\n const currentValue = shifted ? shifted[1] : NaN;\n\n return [currentDay, currentValue] as [TuiDay, number];\n });\n }\n\n public get hint():\n | PolymorpheusContent<TuiContext<[TuiDay, number]>>\n | PolymorpheusContent<TuiContext<readonly TuiPoint[]>> {\n return this.hintDirective?.hint ?? this.hintContent;\n }\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.onHovered(NaN);\n });\n }\n\n public onHovered(day: TuiDay | number): void {\n if (tuiIsNumber(day)) {\n this.charts.forEach((chart) => chart.onHovered(NaN));\n\n return;\n }\n\n const start = this.value[0]?.[0];\n const index = start && day ? TuiMonth.lengthBetween(start, day) : 0;\n const x = start && day ? TuiDay.lengthBetween(start, day) + start.day - 1 : 0;\n const current = this.charts.get(index);\n\n this.charts.forEach((chart) => {\n if (chart === current) {\n current.onHovered(current.value.findIndex((point) => point[0] === x));\n } else {\n chart.onHovered(NaN);\n }\n });\n }\n\n public raise(index: number, {value}: TuiLineChart): void {\n const x = value[index]?.[0] || 0;\n const month = this.getDay(x);\n\n if (!month) {\n return;\n }\n\n if (this.hintDirective) {\n this.hintDirective.raise(month);\n } else {\n this.onHovered(month);\n }\n }\n\n public getContext(index: number, {value}: TuiLineChart): unknown {\n const x = value[index]?.[0] || 0;\n const day = this.getDay(x);\n\n return this.hintDirective && day\n ? this.hintDirective.getContext(day)\n : this.getHintContext(x, this.value);\n }\n\n protected get months(): ReadonlyArray<readonly TuiPoint[]> {\n return this.value.length ? this.breakMonths(this.value) : EMPTY_ARRAY;\n }\n\n protected get firstWidth(): number {\n return this.months.length * (this.value[0]?.[0].daysCount || 0);\n }\n\n @tuiPure\n protected getHintContext(\n x: number,\n value: ReadonlyArray<[TuiDay, number]>,\n ): [TuiDay, number] | null {\n return value[x - (value[0]?.[0]?.day || 0) + 1] ?? null;\n }\n\n protected readonly daysStringify: TuiStringHandler<number> = (index) => {\n const day = this.getDay(index);\n\n return this.xStringify && day ? this.xStringify(day) : '';\n };\n\n protected getX(index: number): number {\n const start = this.value[0]?.[0];\n const current = this.getDay(index);\n const months = start && current ? TuiMonth.lengthBetween(start, current) : 0;\n const offset = months * (current?.daysCount || 0);\n\n return index - offset;\n }\n\n protected getWidth(index: number): number {\n return (this.getDay(index)?.daysCount || 0) * this.months.length;\n }\n\n @tuiPure\n private breakMonths(\n value: ReadonlyArray<[TuiDay, number]>,\n ): ReadonlyArray<readonly TuiPoint[]> {\n const offset = (value[0]?.[0].day || 1) - 1;\n const start = value[0]?.[0];\n const end = value[value.length - 1]?.[0];\n\n return Array.from(\n {length: start && end ? TuiMonth.lengthBetween(start, end) + 1 : 0},\n (_, i) => i + (start?.month || 0) + (start?.year || 0) * 12,\n )\n .map((absoluteMonth) =>\n value\n .map<TuiPoint | null>(([{month, year}, y], index) =>\n month + year * 12 === absoluteMonth ? [index + offset, y] : null,\n )\n .filter(tuiIsPresent),\n )\n .map((month, index, array) =>\n index === array.length - 1\n ? month\n : [\n ...month,\n array[index + 1]?.find((day) => !Number.isNaN(day[1])) || DUMMY,\n ],\n );\n }\n\n private getDay(index: number): TuiDay | undefined {\n const start = this.value[0]?.[0];\n\n return this.value[index - (start?.day || 0) + 1]?.[0];\n }\n}\n","<tui-line-chart\n *ngFor=\"let month of months; let first = first\"\n class=\"t-chart\"\n [dots]=\"dots\"\n [height]=\"height\"\n [smoothingFactor]=\"smoothingFactor\"\n [style.zIndex]=\"zIndex\"\n [tuiHintContent]=\"hintContent ? hint : ''\"\n [value]=\"month\"\n [width]=\"first ? firstWidth : getWidth(month[0]?.[0] ?? 0)\"\n [x]=\"first ? 0 : getX(month[0]?.[0] ?? 0)\"\n [xStringify]=\"xStringify ? daysStringify : null\"\n [y]=\"y\"\n [yStringify]=\"yStringify\"\n/>\n<ng-template\n #hint\n let-point\n>\n <ng-container *polymorpheusOutlet=\"hintContent as text; context: {$implicit: getHintContext(point[0], value)}\">\n {{ text }}\n </ng-container>\n</ng-template>\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-days-chart.mjs","sources":["../../../projects/addon-charts/components/line-days-chart/line-days-chart-hint.directive.ts","../../../projects/addon-charts/components/line-days-chart/line-days-chart.component.ts","../../../projects/addon-charts/components/line-days-chart/line-days-chart.template.html","../../../projects/addon-charts/components/line-days-chart/taiga-ui-addon-charts-components-line-days-chart.ts"],"sourcesContent":["import {\n type AfterContentInit,\n ContentChildren,\n DestroyRef,\n Directive,\n forwardRef,\n inject,\n Input,\n NgZone,\n type QueryList,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiLineChartDrivers} from '@taiga-ui/addon-charts/components/line-chart';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {type TuiDay} from '@taiga-ui/cdk/date-time';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {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 {combineLatest, filter} from 'rxjs';\n\nimport {TuiLineDaysChart} from './line-days-chart.component';\n\nfunction find(value: ReadonlyArray<[TuiDay, number]>, current: TuiDay): [TuiDay, number] {\n return value.find(([day]) => day.daySame(current)) || [current, NaN];\n}\n\n// TODO: Consider extending TuiLineChartHintDirective\n@Directive({\n standalone: true,\n selector: '[tuiLineChartHint]',\n providers: [TuiHoveredService],\n})\nexport class TuiLineDaysChartHint implements AfterContentInit {\n @ContentChildren(forwardRef(() => TuiLineDaysChart))\n private readonly charts: QueryList<TuiLineDaysChart> = EMPTY_QUERY;\n\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 ngAfterContentInit(): void {\n combineLatest([\n ...this.charts.map(({charts}) => tuiLineChartDrivers(charts)),\n this.hovered$,\n ])\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 public getContext(day: TuiDay): ReadonlyArray<[TuiDay, number]> {\n return this.getMap(...this.charts.map(({value}) => value)).get(String(day)) || [];\n }\n\n public raise(day: TuiDay): void {\n const current = this.charts\n .map(({value}) => (day ? find(value, day) : []))\n .filter(([_, value]) => !Number.isNaN(value));\n const sorted = [...current].sort((a, b) => a[1] - b[1]);\n\n this.charts.forEach((chart, index) => {\n const item = current[index];\n\n chart.onHovered(day);\n chart.zIndex = Math.max(item ? sorted.indexOf(item) : 0, 0);\n });\n }\n\n @tuiPure\n private getMap(\n ...values: Array<ReadonlyArray<[TuiDay, number]>>\n ): Map<string, ReadonlyArray<[TuiDay, number]>> {\n return (values[0] || []).reduce(\n (map, [day]) =>\n map.set(\n String(day),\n values.map((value) => find(value, day)),\n ),\n new Map<string, ReadonlyArray<[TuiDay, number]>>(),\n );\n }\n}\n","import {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n Input,\n NgZone,\n type QueryList,\n ViewChildren,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n TUI_LINE_CHART_OPTIONS,\n TuiLineChart,\n tuiLineChartDrivers,\n TuiLineChartHint,\n} from '@taiga-ui/addon-charts/components/line-chart';\nimport {EMPTY_ARRAY, EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiDay, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiContext, type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber, tuiIsPresent, tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {type TuiPoint} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {combineLatest, filter} from 'rxjs';\n\nimport {TuiLineDaysChartHint} from './line-days-chart-hint.directive';\n\nconst DUMMY: TuiPoint = [NaN, NaN];\n\n@Component({\n selector: 'tui-line-days-chart',\n imports: [PolymorpheusOutlet, TuiHint, TuiLineChart],\n templateUrl: './line-days-chart.template.html',\n styleUrls: ['./line-days-chart.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TuiHoveredService,\n {\n provide: TuiLineChartHint,\n useExisting: TuiLineDaysChart,\n },\n ],\n host: {\n '[style.zIndex]': 'zIndex',\n },\n})\nexport class TuiLineDaysChart implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n private readonly hovered$ = inject(TuiHoveredService);\n private readonly options = inject(TUI_LINE_CHART_OPTIONS);\n private readonly hintDirective = inject(TuiLineDaysChartHint, {\n optional: true,\n });\n\n @ViewChildren(TuiLineChart)\n public readonly charts: QueryList<TuiLineChart> = EMPTY_QUERY;\n\n @Input()\n public y = 0;\n\n @Input()\n public height = 0;\n\n @Input()\n public smoothingFactor = this.options.smoothingFactor;\n\n @Input()\n public hintContent: PolymorpheusContent<TuiContext<[TuiDay, number]>>;\n\n @Input()\n public xStringify: TuiStringHandler<TuiDay> | null = null;\n\n @Input()\n public yStringify: TuiStringHandler<number> | null = null;\n\n @Input()\n public dots = this.options.dots;\n\n public zIndex = 0;\n\n public value: ReadonlyArray<[TuiDay, number]> = [];\n\n @Input('value')\n public set valueSetter(value: ReadonlyArray<[TuiDay, number]>) {\n if (!value.length) {\n this.value = [];\n\n return;\n }\n\n const start = value[0]?.[0];\n const end = value[value.length - 1];\n const mutable = [...value];\n const length = start && end ? TuiDay.lengthBetween(start, end[0]) + 1 : 0;\n\n this.value = Array.from({length}, (_, day) => {\n const startMutable = mutable[0]?.[0];\n const currentDay = start?.append({day});\n const shifted =\n startMutable && currentDay?.daySame(startMutable)\n ? mutable.shift()\n : null;\n const currentValue = shifted ? shifted[1] : NaN;\n\n return [currentDay, currentValue] as [TuiDay, number];\n });\n }\n\n public get hint():\n | PolymorpheusContent<TuiContext<[TuiDay, number]>>\n | PolymorpheusContent<TuiContext<readonly TuiPoint[]>> {\n return this.hintDirective?.hint ?? this.hintContent;\n }\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.onHovered(NaN);\n });\n }\n\n public onHovered(day: TuiDay | number): void {\n if (tuiIsNumber(day)) {\n this.charts.forEach((chart) => chart.onHovered(NaN));\n\n return;\n }\n\n const start = this.value[0]?.[0];\n const index = start && day ? TuiMonth.lengthBetween(start, day) : 0;\n const x = start && day ? TuiDay.lengthBetween(start, day) + start.day - 1 : 0;\n const current = this.charts.get(index);\n\n this.charts.forEach((chart) => {\n if (chart === current) {\n current.onHovered(current.value.findIndex((point) => point[0] === x));\n } else {\n chart.onHovered(NaN);\n }\n });\n }\n\n public raise(index: number, {value}: TuiLineChart): void {\n const x = value[index]?.[0] || 0;\n const month = this.getDay(x);\n\n if (!month) {\n return;\n }\n\n if (this.hintDirective) {\n this.hintDirective.raise(month);\n } else {\n this.onHovered(month);\n }\n }\n\n public getContext(index: number, {value}: TuiLineChart): unknown {\n const x = value[index]?.[0] || 0;\n const day = this.getDay(x);\n\n return this.hintDirective && day\n ? this.hintDirective.getContext(day)\n : this.getHintContext(x, this.value);\n }\n\n protected get months(): ReadonlyArray<readonly TuiPoint[]> {\n return this.value.length ? this.breakMonths(this.value) : EMPTY_ARRAY;\n }\n\n protected get firstWidth(): number {\n return this.months.length * (this.value[0]?.[0].daysCount || 0);\n }\n\n @tuiPure\n protected getHintContext(\n x: number,\n value: ReadonlyArray<[TuiDay, number]>,\n ): [TuiDay, number] | null {\n return value[x - (value[0]?.[0]?.day || 0) + 1] ?? null;\n }\n\n protected readonly daysStringify: TuiStringHandler<number> = (index) => {\n const day = this.getDay(index);\n\n return this.xStringify && day ? this.xStringify(day) : '';\n };\n\n protected getX(index: number): number {\n const start = this.value[0]?.[0];\n const current = this.getDay(index);\n const months = start && current ? TuiMonth.lengthBetween(start, current) : 0;\n const offset = months * (current?.daysCount || 0);\n\n return index - offset;\n }\n\n protected getWidth(index: number): number {\n return (this.getDay(index)?.daysCount || 0) * this.months.length;\n }\n\n @tuiPure\n private breakMonths(\n value: ReadonlyArray<[TuiDay, number]>,\n ): ReadonlyArray<readonly TuiPoint[]> {\n const offset = (value[0]?.[0].day || 1) - 1;\n const start = value[0]?.[0];\n const end = value[value.length - 1]?.[0];\n\n return Array.from(\n {length: start && end ? TuiMonth.lengthBetween(start, end) + 1 : 0},\n (_, i) => i + (start?.month || 0) + (start?.year || 0) * 12,\n )\n .map((absoluteMonth) =>\n value\n .map<TuiPoint | null>(([{month, year}, y], index) =>\n month + year * 12 === absoluteMonth ? [index + offset, y] : null,\n )\n .filter(tuiIsPresent),\n )\n .map((month, index, array) =>\n index === array.length - 1\n ? month\n : [\n ...month,\n array[index + 1]?.find((day) => !Number.isNaN(day[1])) || DUMMY,\n ],\n );\n }\n\n private getDay(index: number): TuiDay | undefined {\n const start = this.value[0]?.[0];\n\n return this.value[index - (start?.day || 0) + 1]?.[0];\n }\n}\n","@for (month of months; track month; let first = $first) {\n <tui-line-chart\n class=\"t-chart\"\n [dots]=\"dots\"\n [height]=\"height\"\n [smoothingFactor]=\"smoothingFactor\"\n [style.zIndex]=\"zIndex\"\n [tuiHintContent]=\"hintContent ? hint : ''\"\n [value]=\"month\"\n [width]=\"first ? firstWidth : getWidth(month[0]?.[0] ?? 0)\"\n [x]=\"first ? 0 : getX(month[0]?.[0] ?? 0)\"\n [xStringify]=\"xStringify ? daysStringify : null\"\n [y]=\"y\"\n [yStringify]=\"yStringify\"\n />\n}\n<ng-template\n #hint\n let-point\n>\n <ng-container *polymorpheusOutlet=\"hintContent as text; context: {$implicit: getHintContext(point[0], value)}\">\n {{ text }}\n </ng-container>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, Directive, Input, EventEmitter, Component, ChangeDetectionStrategy, Output } from '@angular/core';
3
+ import { inject, Input, Directive, EventEmitter, Output, ChangeDetectionStrategy, Component } from '@angular/core';
4
4
  import { TuiHovered } from '@taiga-ui/cdk/directives/hovered';
5
5
  import { TuiRepeatTimes } from '@taiga-ui/cdk/directives/repeat-times';
6
6
  import { tuiInjectId } from '@taiga-ui/cdk/services';
@@ -39,10 +39,10 @@ class TuiPieChartDirective {
39
39
  set tuiPieChart(sector) {
40
40
  this.sector$.next(sector);
41
41
  }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPieChartDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiPieChartDirective, isStandalone: true, selector: "path[tuiPieChart]", inputs: { tuiPieChart: "tuiPieChart" }, ngImport: i0 }); }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPieChartDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiPieChartDirective, isStandalone: true, selector: "path[tuiPieChart]", inputs: { tuiPieChart: "tuiPieChart" }, ngImport: i0 }); }
44
44
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPieChartDirective, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPieChartDirective, decorators: [{
46
46
  type: Directive,
47
47
  args: [{
48
48
  standalone: true,
@@ -128,8 +128,10 @@ class TuiPieChart {
128
128
  this.activeItemIndex = index;
129
129
  this.activeItemIndexChange.next(index);
130
130
  }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPieChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPieChart, isStandalone: true, selector: "tui-pie-chart", inputs: { value: "value", size: "size", masked: "masked", activeItemIndex: "activeItemIndex" }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size", "class._empty": "empty" } }, ngImport: i0, template: "<svg\n focusable=\"false\"\n height=\"100%\"\n viewBox=\"-100 -100 200 200\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n>\n <defs>\n <mask [attr.id]=\"maskId\">\n <rect\n fill=\"white\"\n height=\"400\"\n width=\"400\"\n x=\"-200\"\n y=\"-200\"\n />\n <circle\n cx=\"0\"\n cy=\"0\"\n [attr.r]=\"radius\"\n />\n </mask>\n </defs>\n <g [style.mask]=\"mask\">\n <circle\n cx=\"0\"\n cy=\"0\"\n r=\"100\"\n class=\"t-placeholder\"\n />\n <path\n *tuiRepeatTimes=\"let index of segments.length\"\n automation-id=\"tui-pie-chart__segment\"\n d=\"\"\n fill=\"currentColor\"\n tuiHintPointer\n class=\"t-segment\"\n [attr.transform]=\"getTransform(index)\"\n [style.color]=\"'var(--tui-chart-categorical-' + index.toString().padStart(2, '0') + ')'\"\n [tuiHint]=\"hintContent\"\n [tuiHintContext]=\"{$implicit: index}\"\n [tuiPieChart]=\"segments[index] || [0, 0]\"\n (tuiHoveredChange)=\"onHovered($event, index)\"\n />\n </g>\n</svg>\n", styles: [":host{position:relative;display:block;inline-size:var(--t-size);block-size:var(--t-size);border-radius:100%}:host[data-size=xs]{--t-size: 2rem;pointer-events:none}:host[data-size=s]{--t-size: 4rem}:host[data-size=m]{--t-size: 9rem}:host[data-size=l]{--t-size: 11rem}:host[data-size=xl]{--t-size: 16rem}.t-svg{position:relative;overflow:visible;transform:rotate(-90deg)}.t-segment{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}:host._empty .t-segment{display:none}.t-placeholder{fill:var(--tui-background-neutral-1)}\n"], dependencies: [{ kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i1.TuiHintPointer, selector: "[tuiHint][tuiHintPointer]" }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiPieChartDirective, selector: "path[tuiPieChart]", inputs: ["tuiPieChart"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], viewProviders: [tuiHintOptionsProvider({ direction: 'top-right', appearance: 'dark' })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
131
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPieChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
132
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TuiPieChart, isStandalone: true, selector: "tui-pie-chart", inputs: { value: "value", size: "size", masked: "masked", activeItemIndex: "activeItemIndex" }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size", "class._empty": "empty" } }, ngImport: i0, template: "<svg\n focusable=\"false\"\n height=\"100%\"\n viewBox=\"-100 -100 200 200\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n>\n <defs>\n <mask [attr.id]=\"maskId\">\n <rect\n fill=\"white\"\n height=\"400\"\n width=\"400\"\n x=\"-200\"\n y=\"-200\"\n />\n <circle\n cx=\"0\"\n cy=\"0\"\n [attr.r]=\"radius\"\n />\n </mask>\n </defs>\n <g [style.mask]=\"mask\">\n <circle\n cx=\"0\"\n cy=\"0\"\n r=\"100\"\n class=\"t-placeholder\"\n />\n <path\n *tuiRepeatTimes=\"let index of segments.length\"\n automation-id=\"tui-pie-chart__segment\"\n d=\"\"\n fill=\"currentColor\"\n tuiHintPointer\n class=\"t-segment\"\n [attr.transform]=\"getTransform(index)\"\n [style.color]=\"`var(--tui-chart-categorical-${index.toString().padStart(2, '0')})`\"\n [tuiHint]=\"hintContent\"\n [tuiHintContext]=\"{$implicit: index}\"\n [tuiPieChart]=\"segments[index] || [0, 0]\"\n (tuiHoveredChange)=\"onHovered($event, index)\"\n />\n </g>\n</svg>\n", styles: [":host{position:relative;display:block;inline-size:var(--t-size);block-size:var(--t-size);border-radius:100%}:host[data-size=xs]{--t-size: 2rem;pointer-events:none}:host[data-size=s]{--t-size: 4rem}:host[data-size=m]{--t-size: 9rem}:host[data-size=l]{--t-size: 11rem}:host[data-size=xl]{--t-size: 16rem}.t-svg{position:relative;overflow:visible;transform:rotate(-90deg)}.t-segment{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}:host._empty .t-segment{display:none}.t-placeholder{fill:var(--tui-background-neutral-1)}\n"], dependencies: [{ kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i1.TuiHintPointer, selector: "[tuiHint][tuiHintPointer]" }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiPieChartDirective, selector: "path[tuiPieChart]", inputs: ["tuiPieChart"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], viewProviders: [
133
+ tuiHintOptionsProvider({ direction: 'top-right', appearance: 'floating' }),
134
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
133
135
  }
134
136
  __decorate([
135
137
  tuiPure
@@ -137,13 +139,15 @@ __decorate([
137
139
  __decorate([
138
140
  tuiPure
139
141
  ], TuiPieChart.prototype, "getSegments", null);
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPieChart, decorators: [{
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiPieChart, decorators: [{
141
143
  type: Component,
142
- args: [{ standalone: true, selector: 'tui-pie-chart', imports: [TuiHint, TuiHovered, TuiPieChartDirective, TuiRepeatTimes], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [tuiHintOptionsProvider({ direction: 'top-right', appearance: 'dark' })], host: {
144
+ args: [{ selector: 'tui-pie-chart', imports: [TuiHint, TuiHovered, TuiPieChartDirective, TuiRepeatTimes], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
145
+ tuiHintOptionsProvider({ direction: 'top-right', appearance: 'floating' }),
146
+ ], host: {
143
147
  '[attr.data-size]': 'size',
144
148
  '[class._empty]': 'empty',
145
- }, template: "<svg\n focusable=\"false\"\n height=\"100%\"\n viewBox=\"-100 -100 200 200\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n>\n <defs>\n <mask [attr.id]=\"maskId\">\n <rect\n fill=\"white\"\n height=\"400\"\n width=\"400\"\n x=\"-200\"\n y=\"-200\"\n />\n <circle\n cx=\"0\"\n cy=\"0\"\n [attr.r]=\"radius\"\n />\n </mask>\n </defs>\n <g [style.mask]=\"mask\">\n <circle\n cx=\"0\"\n cy=\"0\"\n r=\"100\"\n class=\"t-placeholder\"\n />\n <path\n *tuiRepeatTimes=\"let index of segments.length\"\n automation-id=\"tui-pie-chart__segment\"\n d=\"\"\n fill=\"currentColor\"\n tuiHintPointer\n class=\"t-segment\"\n [attr.transform]=\"getTransform(index)\"\n [style.color]=\"'var(--tui-chart-categorical-' + index.toString().padStart(2, '0') + ')'\"\n [tuiHint]=\"hintContent\"\n [tuiHintContext]=\"{$implicit: index}\"\n [tuiPieChart]=\"segments[index] || [0, 0]\"\n (tuiHoveredChange)=\"onHovered($event, index)\"\n />\n </g>\n</svg>\n", styles: [":host{position:relative;display:block;inline-size:var(--t-size);block-size:var(--t-size);border-radius:100%}:host[data-size=xs]{--t-size: 2rem;pointer-events:none}:host[data-size=s]{--t-size: 4rem}:host[data-size=m]{--t-size: 9rem}:host[data-size=l]{--t-size: 11rem}:host[data-size=xl]{--t-size: 16rem}.t-svg{position:relative;overflow:visible;transform:rotate(-90deg)}.t-segment{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}:host._empty .t-segment{display:none}.t-placeholder{fill:var(--tui-background-neutral-1)}\n"] }]
146
- }], ctorParameters: function () { return []; }, propDecorators: { value: [{
149
+ }, template: "<svg\n focusable=\"false\"\n height=\"100%\"\n viewBox=\"-100 -100 200 200\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n>\n <defs>\n <mask [attr.id]=\"maskId\">\n <rect\n fill=\"white\"\n height=\"400\"\n width=\"400\"\n x=\"-200\"\n y=\"-200\"\n />\n <circle\n cx=\"0\"\n cy=\"0\"\n [attr.r]=\"radius\"\n />\n </mask>\n </defs>\n <g [style.mask]=\"mask\">\n <circle\n cx=\"0\"\n cy=\"0\"\n r=\"100\"\n class=\"t-placeholder\"\n />\n <path\n *tuiRepeatTimes=\"let index of segments.length\"\n automation-id=\"tui-pie-chart__segment\"\n d=\"\"\n fill=\"currentColor\"\n tuiHintPointer\n class=\"t-segment\"\n [attr.transform]=\"getTransform(index)\"\n [style.color]=\"`var(--tui-chart-categorical-${index.toString().padStart(2, '0')})`\"\n [tuiHint]=\"hintContent\"\n [tuiHintContext]=\"{$implicit: index}\"\n [tuiPieChart]=\"segments[index] || [0, 0]\"\n (tuiHoveredChange)=\"onHovered($event, index)\"\n />\n </g>\n</svg>\n", styles: [":host{position:relative;display:block;inline-size:var(--t-size);block-size:var(--t-size);border-radius:100%}:host[data-size=xs]{--t-size: 2rem;pointer-events:none}:host[data-size=s]{--t-size: 4rem}:host[data-size=m]{--t-size: 9rem}:host[data-size=l]{--t-size: 11rem}:host[data-size=xl]{--t-size: 16rem}.t-svg{position:relative;overflow:visible;transform:rotate(-90deg)}.t-segment{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}:host._empty .t-segment{display:none}.t-placeholder{fill:var(--tui-background-neutral-1)}\n"] }]
150
+ }], ctorParameters: () => [], propDecorators: { value: [{
147
151
  type: Input
148
152
  }], size: [{
149
153
  type: Input