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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/components/arc-chart/arc-chart.component.d.ts +2 -8
  2. package/components/axes/axes.component.d.ts +0 -4
  3. package/components/bar/bar.component.d.ts +4 -5
  4. package/components/bar-chart/bar-chart.component.d.ts +11 -14
  5. package/components/bar-set/bar-set.component.d.ts +7 -9
  6. package/components/chart-hint/chart-hint.directive.d.ts +8 -0
  7. package/components/chart-hint/index.d.ts +1 -0
  8. package/components/index.d.ts +1 -0
  9. package/components/legend-item/legend-item.component.d.ts +6 -7
  10. package/components/line-chart/line-chart-hint.directive.d.ts +3 -3
  11. package/components/line-chart/line-chart.component.d.ts +19 -25
  12. package/components/line-days-chart/line-days-chart-hint.directive.d.ts +2 -3
  13. package/components/line-days-chart/line-days-chart.component.d.ts +13 -14
  14. package/components/pie-chart/pie-chart.component.d.ts +7 -14
  15. package/components/pie-chart/pie-chart.directive.d.ts +2 -3
  16. package/components/ring-chart/ring-chart.component.d.ts +4 -9
  17. package/fesm2022/taiga-ui-addon-charts-components-arc-chart.mjs +12 -21
  18. package/fesm2022/taiga-ui-addon-charts-components-arc-chart.mjs.map +1 -1
  19. package/fesm2022/taiga-ui-addon-charts-components-axes.mjs +5 -16
  20. package/fesm2022/taiga-ui-addon-charts-components-axes.mjs.map +1 -1
  21. package/fesm2022/taiga-ui-addon-charts-components-bar-chart.mjs +23 -52
  22. package/fesm2022/taiga-ui-addon-charts-components-bar-chart.mjs.map +1 -1
  23. package/fesm2022/taiga-ui-addon-charts-components-bar-set.mjs +13 -33
  24. package/fesm2022/taiga-ui-addon-charts-components-bar-set.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-addon-charts-components-bar.mjs +9 -20
  26. package/fesm2022/taiga-ui-addon-charts-components-bar.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-addon-charts-components-chart-hint.mjs +24 -0
  28. package/fesm2022/taiga-ui-addon-charts-components-chart-hint.mjs.map +1 -0
  29. package/fesm2022/taiga-ui-addon-charts-components-legend-item.mjs +12 -25
  30. package/fesm2022/taiga-ui-addon-charts-components-legend-item.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-addon-charts-components-line-chart.mjs +61 -115
  32. package/fesm2022/taiga-ui-addon-charts-components-line-chart.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-addon-charts-components-line-days-chart.mjs +82 -112
  34. package/fesm2022/taiga-ui-addon-charts-components-line-days-chart.mjs.map +1 -1
  35. package/fesm2022/taiga-ui-addon-charts-components-pie-chart.mjs +48 -81
  36. package/fesm2022/taiga-ui-addon-charts-components-pie-chart.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-addon-charts-components-ring-chart.mjs +8 -27
  38. package/fesm2022/taiga-ui-addon-charts-components-ring-chart.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-addon-charts-components.mjs +1 -0
  40. package/fesm2022/taiga-ui-addon-charts-components.mjs.map +1 -1
  41. package/package.json +9 -5
@@ -1,17 +1,17 @@
1
- import { __decorate } from 'tslib';
2
1
  import * as i0 from '@angular/core';
3
- import { inject, DestroyRef, NgZone, Input, forwardRef, ContentChildren, Directive, ViewChildren, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { contentChildren, forwardRef, inject, DestroyRef, NgZone, input, Directive, computed, viewChildren, ChangeDetectionStrategy, Component } from '@angular/core';
4
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { TuiChartHint } from '@taiga-ui/addon-charts/components/chart-hint';
5
5
  import { tuiLineChartDrivers, TUI_LINE_CHART_OPTIONS, TuiLineChart, TuiLineChartHint } from '@taiga-ui/addon-charts/components/line-chart';
6
- import { EMPTY_QUERY, EMPTY_ARRAY } from '@taiga-ui/cdk/constants';
7
- import { TuiDay, TuiMonth } from '@taiga-ui/cdk/date-time';
6
+ import { EMPTY_ARRAY } from '@taiga-ui/cdk/constants';
7
+ import { TuiMonth, TuiDay } from '@taiga-ui/cdk/date-time';
8
8
  import { TuiHoveredService } from '@taiga-ui/cdk/directives/hovered';
9
9
  import { tuiZonefree } from '@taiga-ui/cdk/observables';
10
- import { tuiPure, tuiIsNumber, tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
11
- import * as i1 from '@taiga-ui/core/portals/hint';
10
+ import { tuiPure, tuiIsPresent, tuiIsNumber } from '@taiga-ui/cdk/utils/miscellaneous';
12
11
  import { TuiHint } from '@taiga-ui/core/portals/hint';
13
12
  import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
14
13
  import { combineLatest, filter } from 'rxjs';
14
+ import { __decorate } from 'tslib';
15
15
 
16
16
  function find(value, current) {
17
17
  return value.find(([day]) => day.daySame(current)) || [current, NaN];
@@ -19,30 +19,31 @@ function find(value, current) {
19
19
  // TODO: Consider extending TuiLineChartHintDirective
20
20
  class TuiLineDaysChartHint {
21
21
  constructor() {
22
- this.charts = EMPTY_QUERY;
22
+ this.charts = contentChildren(forwardRef(() => TuiLineDaysChart));
23
23
  this.destroyRef = inject(DestroyRef);
24
24
  this.zone = inject(NgZone);
25
25
  this.hovered$ = inject(TuiHoveredService);
26
+ this.hint = input('', { alias: 'tuiLineChartHint' });
26
27
  }
27
28
  ngAfterContentInit() {
28
29
  combineLatest([
29
- ...this.charts.map(({ charts }) => tuiLineChartDrivers(charts.toArray())),
30
+ ...this.charts().map(({ charts }) => tuiLineChartDrivers(charts())),
30
31
  this.hovered$,
31
32
  ])
32
33
  .pipe(filter((result) => !result.some(Boolean)), tuiZonefree(this.zone), takeUntilDestroyed(this.destroyRef))
33
34
  .subscribe(() => {
34
- this.charts.forEach((chart) => chart.onHovered(NaN));
35
+ this.charts().forEach((chart) => chart.onHovered(NaN));
35
36
  });
36
37
  }
37
38
  getContext(day) {
38
- return this.getMap(...this.charts.map(({ value }) => value)).get(String(day)) || [];
39
+ return (this.getMap(...this.charts().map(({ value }) => value())).get(String(day)) || []);
39
40
  }
40
41
  raise(day) {
41
- const current = this.charts
42
- .map(({ value }) => (day ? find(value, day) : []))
42
+ const current = this.charts()
43
+ .map(({ value }) => (day ? find(value(), day) : []))
43
44
  .filter(([_, value]) => !Number.isNaN(value));
44
45
  const sorted = [...current].sort((a, b) => a[1] - b[1]);
45
- this.charts.forEach((chart, index) => {
46
+ this.charts().forEach((chart, index) => {
46
47
  const item = current[index];
47
48
  chart.onHovered(day);
48
49
  chart.zIndex = Math.max(item ? sorted.indexOf(item) : 0, 0);
@@ -52,7 +53,7 @@ class TuiLineDaysChartHint {
52
53
  return (values[0] || []).reduce((map, [day]) => map.set(String(day), values.map((value) => find(value, day))), new Map());
53
54
  }
54
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineDaysChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiLineDaysChartHint, isStandalone: true, selector: "[tuiLineChartHint]", inputs: { hint: ["tuiLineChartHint", "hint"] }, providers: [TuiHoveredService], queries: [{ propertyName: "charts", predicate: i0.forwardRef(() => TuiLineDaysChart) }], ngImport: i0 }); }
56
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.17", type: TuiLineDaysChartHint, isStandalone: true, selector: "[tuiLineChartHint]", inputs: { hint: { classPropertyName: "hint", publicName: "tuiLineChartHint", isSignal: true, isRequired: false, transformFunction: null } }, providers: [TuiHoveredService], queries: [{ propertyName: "charts", predicate: i0.forwardRef(() => TuiLineDaysChart), isSignal: true }], ngImport: i0 }); }
56
57
  }
57
58
  __decorate([
58
59
  tuiPure
@@ -63,13 +64,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
63
64
  selector: '[tuiLineChartHint]',
64
65
  providers: [TuiHoveredService],
65
66
  }]
66
- }], propDecorators: { charts: [{
67
- type: ContentChildren,
68
- args: [forwardRef(() => TuiLineDaysChart)]
69
- }], hint: [{
70
- type: Input,
71
- args: ['tuiLineChartHint']
72
- }], getMap: [] } });
67
+ }], propDecorators: { getMap: [] } });
73
68
 
74
69
  const DUMMY = [NaN, NaN];
75
70
  class TuiLineDaysChart {
@@ -81,44 +76,60 @@ class TuiLineDaysChart {
81
76
  this.hintDirective = inject(TuiLineDaysChartHint, {
82
77
  optional: true,
83
78
  });
84
- this.charts = EMPTY_QUERY;
85
- this.y = 0;
86
- this.height = 0;
87
- this.smoothingFactor = this.options.smoothingFactor;
88
- this.xStringify = null;
89
- this.yStringify = null;
90
- this.dots = this.options.dots;
79
+ this.brokenMonths = computed(() => {
80
+ const value = this.value();
81
+ const offset = (value[0]?.[0].day || 1) - 1;
82
+ const start = value[0]?.[0];
83
+ const end = value[value.length - 1]?.[0];
84
+ return Array.from({ length: start && end ? TuiMonth.lengthBetween(start, end) + 1 : 0 }, (_, i) => i + (start?.month || 0) + (start?.year || 0) * 12)
85
+ .map((absoluteMonth) => value
86
+ .map(([{ month, year }, y], index) => month + year * 12 === absoluteMonth ? [index + offset, y] : null)
87
+ .filter(tuiIsPresent))
88
+ .map((month, index, array) => index === array.length - 1
89
+ ? month
90
+ : [
91
+ ...month,
92
+ array[index + 1]?.find((day) => !Number.isNaN(day[1])) || DUMMY,
93
+ ]);
94
+ });
95
+ this.charts = viewChildren(TuiLineChart);
96
+ this.y = input(0);
97
+ this.height = input(0);
98
+ this.smoothingFactor = input(this.options.smoothingFactor);
99
+ this.hintContent = input();
100
+ this.xStringify = input(null);
101
+ this.yStringify = input(null);
102
+ this.dots = input(this.options.dots);
91
103
  this.zIndex = 0;
92
- this.value = [];
104
+ this.value = input([], {
105
+ transform: (value) => {
106
+ if (!value.length) {
107
+ return [];
108
+ }
109
+ const start = value[0]?.[0];
110
+ const end = value[value.length - 1];
111
+ const mutable = [...value];
112
+ const length = start && end ? TuiDay.lengthBetween(start, end[0]) + 1 : 0;
113
+ return Array.from({ length }, (_, day) => {
114
+ const startMutable = mutable[0]?.[0];
115
+ const currentDay = start?.append({ day });
116
+ const shifted = startMutable && currentDay?.daySame(startMutable)
117
+ ? mutable.shift()
118
+ : null;
119
+ const currentValue = shifted ? shifted[1] : NaN;
120
+ return [currentDay, currentValue];
121
+ });
122
+ },
123
+ });
124
+ this.hint = computed(() => this.hintDirective?.hint() ?? this.hintContent());
93
125
  this.daysStringify = (index) => {
94
126
  const day = this.getDay(index);
95
- return this.xStringify && day ? this.xStringify(day) : '';
127
+ const xStringify = this.xStringify();
128
+ return xStringify && day ? xStringify(day) : '';
96
129
  };
97
130
  }
98
- set valueSetter(value) {
99
- if (!value.length) {
100
- this.value = [];
101
- return;
102
- }
103
- const start = value[0]?.[0];
104
- const end = value[value.length - 1];
105
- const mutable = [...value];
106
- const length = start && end ? TuiDay.lengthBetween(start, end[0]) + 1 : 0;
107
- this.value = Array.from({ length }, (_, day) => {
108
- const startMutable = mutable[0]?.[0];
109
- const currentDay = start?.append({ day });
110
- const shifted = startMutable && currentDay?.daySame(startMutable)
111
- ? mutable.shift()
112
- : null;
113
- const currentValue = shifted ? shifted[1] : NaN;
114
- return [currentDay, currentValue];
115
- });
116
- }
117
- get hint() {
118
- return this.hintDirective?.hint ?? this.hintContent;
119
- }
120
131
  ngAfterViewInit() {
121
- combineLatest([tuiLineChartDrivers(this.charts.toArray()), this.hovered$])
132
+ combineLatest([tuiLineChartDrivers(this.charts()), this.hovered$])
122
133
  .pipe(filter((result) => !result.some(Boolean)), tuiZonefree(this.zone), takeUntilDestroyed(this.destroyRef))
123
134
  .subscribe(() => {
124
135
  this.onHovered(NaN);
@@ -126,16 +137,16 @@ class TuiLineDaysChart {
126
137
  }
127
138
  onHovered(day) {
128
139
  if (tuiIsNumber(day)) {
129
- this.charts.forEach((chart) => chart.onHovered(NaN));
140
+ this.charts().forEach((chart) => chart.onHovered(NaN));
130
141
  return;
131
142
  }
132
- const start = this.value[0]?.[0];
143
+ const start = this.value()[0]?.[0];
133
144
  const index = start && day ? TuiMonth.lengthBetween(start, day) : 0;
134
145
  const x = start && day ? TuiDay.lengthBetween(start, day) + start.day - 1 : 0;
135
- const current = this.charts.get(index);
136
- this.charts.forEach((chart) => {
146
+ const current = this.charts()[index];
147
+ this.charts().forEach((chart) => {
137
148
  if (chart === current) {
138
- current.onHovered(current.value.findIndex((point) => point[0] === x));
149
+ current.onHovered(current.value().findIndex((point) => point[0] === x));
139
150
  }
140
151
  else {
141
152
  chart.onHovered(NaN);
@@ -143,7 +154,7 @@ class TuiLineDaysChart {
143
154
  });
144
155
  }
145
156
  raise(index, { value }) {
146
- const x = value[index]?.[0] || 0;
157
+ const x = value()[index]?.[0] || 0;
147
158
  const month = this.getDay(x);
148
159
  if (!month) {
149
160
  return;
@@ -156,23 +167,23 @@ class TuiLineDaysChart {
156
167
  }
157
168
  }
158
169
  getContext(index, { value }) {
159
- const x = value[index]?.[0] || 0;
170
+ const x = value()[index]?.[0] || 0;
160
171
  const day = this.getDay(x);
161
172
  return this.hintDirective && day
162
173
  ? this.hintDirective.getContext(day)
163
- : this.getHintContext(x, this.value);
174
+ : this.getHintContext(x, this.value());
164
175
  }
165
176
  get months() {
166
- return this.value.length ? this.breakMonths(this.value) : EMPTY_ARRAY;
177
+ return this.value().length ? this.brokenMonths() : EMPTY_ARRAY;
167
178
  }
168
179
  get firstWidth() {
169
- return this.months.length * (this.value[0]?.[0].daysCount || 0);
180
+ return this.months.length * (this.value()[0]?.[0].daysCount || 0);
170
181
  }
171
182
  getHintContext(x, value) {
172
183
  return value[x - (value[0]?.[0]?.day || 0) + 1] ?? null;
173
184
  }
174
185
  getX(index) {
175
- const start = this.value[0]?.[0];
186
+ const start = this.value()[0]?.[0];
176
187
  const current = this.getDay(index);
177
188
  const months = start && current ? TuiMonth.lengthBetween(start, current) : 0;
178
189
  const offset = months * (current?.daysCount || 0);
@@ -181,43 +192,22 @@ class TuiLineDaysChart {
181
192
  getWidth(index) {
182
193
  return (this.getDay(index)?.daysCount || 0) * this.months.length;
183
194
  }
184
- breakMonths(value) {
185
- const offset = (value[0]?.[0].day || 1) - 1;
186
- const start = value[0]?.[0];
187
- const end = value[value.length - 1]?.[0];
188
- return Array.from({ length: start && end ? TuiMonth.lengthBetween(start, end) + 1 : 0 }, (_, i) => i + (start?.month || 0) + (start?.year || 0) * 12)
189
- .map((absoluteMonth) => value
190
- .map(([{ month, year }, y], index) => month + year * 12 === absoluteMonth ? [index + offset, y] : null)
191
- .filter(tuiIsPresent))
192
- .map((month, index, array) => index === array.length - 1
193
- ? month
194
- : [
195
- ...month,
196
- array[index + 1]?.find((day) => !Number.isNaN(day[1])) || DUMMY,
197
- ]);
198
- }
199
195
  getDay(index) {
200
- const start = this.value[0]?.[0];
201
- return this.value[index - (start?.day || 0) + 1]?.[0];
196
+ const start = this.value()[0]?.[0];
197
+ return this.value()[index - (start?.day || 0) + 1]?.[0];
202
198
  }
203
199
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineDaysChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
204
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", 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.z-index": "zIndex" } }, providers: [
200
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiLineDaysChart, isStandalone: true, selector: "tui-line-days-chart", inputs: { y: { classPropertyName: "y", publicName: "y", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, smoothingFactor: { classPropertyName: "smoothingFactor", publicName: "smoothingFactor", isSignal: true, isRequired: false, transformFunction: null }, hintContent: { classPropertyName: "hintContent", publicName: "hintContent", isSignal: true, isRequired: false, transformFunction: null }, xStringify: { classPropertyName: "xStringify", publicName: "xStringify", isSignal: true, isRequired: false, transformFunction: null }, yStringify: { classPropertyName: "yStringify", publicName: "yStringify", isSignal: true, isRequired: false, transformFunction: null }, dots: { classPropertyName: "dots", publicName: "dots", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.z-index": "zIndex" } }, providers: [
205
201
  TuiHoveredService,
206
202
  {
207
203
  provide: TuiLineChartHint,
208
204
  useExisting: TuiLineDaysChart,
209
205
  },
210
- ], viewQueries: [{ propertyName: "charts", predicate: TuiLineChart, descendants: true }], ngImport: i0, template: "@for (month of months; track month) {\n <tui-line-chart\n class=\"t-chart\"\n [dots]=\"dots\"\n [height]=\"height\"\n [smoothingFactor]=\"smoothingFactor\"\n [style.z-index]=\"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 }); }
206
+ ], viewQueries: [{ propertyName: "charts", predicate: TuiLineChart, descendants: true, isSignal: true }], ngImport: i0, template: "@for (month of months; track month) {\n <tui-line-chart\n class=\"t-chart\"\n [dots]=\"dots()\"\n [height]=\"height()\"\n [smoothingFactor]=\"smoothingFactor()\"\n [style.z-index]=\"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: TuiChartHint, selector: "[tuiHintContent]", inputs: ["tuiHintContent", "tuiHintAppearance"] }, { kind: "component", type: TuiLineChart, selector: "tui-line-chart", inputs: ["x", "y", "width", "height", "smoothingFactor", "xStringify", "yStringify", "filled", "dots", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
211
207
  }
212
- __decorate([
213
- tuiPure
214
- ], TuiLineDaysChart.prototype, "getHintContext", null);
215
- __decorate([
216
- tuiPure
217
- ], TuiLineDaysChart.prototype, "breakMonths", null);
218
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineDaysChart, decorators: [{
219
209
  type: Component,
220
- args: [{ selector: 'tui-line-days-chart', imports: [PolymorpheusOutlet, TuiHint, TuiLineChart], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
210
+ args: [{ selector: 'tui-line-days-chart', imports: [PolymorpheusOutlet, TuiChartHint, TuiHint, TuiLineChart], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
221
211
  TuiHoveredService,
222
212
  {
223
213
  provide: TuiLineChartHint,
@@ -225,28 +215,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
225
215
  },
226
216
  ], host: {
227
217
  '[style.z-index]': 'zIndex',
228
- }, template: "@for (month of months; track month) {\n <tui-line-chart\n class=\"t-chart\"\n [dots]=\"dots\"\n [height]=\"height\"\n [smoothingFactor]=\"smoothingFactor\"\n [style.z-index]=\"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"] }]
229
- }], propDecorators: { charts: [{
230
- type: ViewChildren,
231
- args: [TuiLineChart]
232
- }], y: [{
233
- type: Input
234
- }], height: [{
235
- type: Input
236
- }], smoothingFactor: [{
237
- type: Input
238
- }], hintContent: [{
239
- type: Input
240
- }], xStringify: [{
241
- type: Input
242
- }], yStringify: [{
243
- type: Input
244
- }], dots: [{
245
- type: Input
246
- }], valueSetter: [{
247
- type: Input,
248
- args: ['value']
249
- }], getHintContext: [], breakMonths: [] } });
218
+ }, template: "@for (month of months; track month) {\n <tui-line-chart\n class=\"t-chart\"\n [dots]=\"dots()\"\n [height]=\"height()\"\n [smoothingFactor]=\"smoothingFactor()\"\n [style.z-index]=\"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"] }]
219
+ }] });
250
220
 
251
221
  /**
252
222
  * Generated bundle index. Do not edit.
@@ -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 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.toArray())),\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/portals/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 styleUrl: './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.z-index]': '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.toArray()), 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) {\n <tui-line-chart\n class=\"t-chart\"\n [dots]=\"dots\"\n [height]=\"height\"\n [smoothingFactor]=\"smoothingFactor\"\n [style.z-index]=\"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
+ {"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} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiLineChartDrivers} from '@taiga-ui/addon-charts/components/line-chart';\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 selector: '[tuiLineChartHint]',\n providers: [TuiHoveredService],\n})\nexport class TuiLineDaysChartHint implements AfterContentInit {\n private readonly charts = contentChildren(forwardRef(() => TuiLineDaysChart));\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n private readonly hovered$ = inject(TuiHoveredService);\n\n public readonly hint = input<PolymorpheusContent<TuiContext<readonly TuiPoint[]>>>(\n '',\n {alias: 'tuiLineChartHint'},\n );\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 (\n this.getMap(...this.charts().map(({value}) => value())).get(String(day)) || []\n );\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 computed,\n DestroyRef,\n inject,\n input,\n NgZone,\n viewChildren,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiChartHint} from '@taiga-ui/addon-charts/components/chart-hint';\nimport {\n TUI_LINE_CHART_OPTIONS,\n TuiLineChart,\n tuiLineChartDrivers,\n TuiLineChartHint,\n} from '@taiga-ui/addon-charts/components/line-chart';\nimport {EMPTY_ARRAY} 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} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiHint} from '@taiga-ui/core/portals/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, TuiChartHint, TuiHint, TuiLineChart],\n templateUrl: './line-days-chart.template.html',\n styleUrl: './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.z-index]': '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 private readonly brokenMonths = computed(() => {\n const value = this.value();\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 public readonly charts = viewChildren(TuiLineChart);\n public readonly y = input(0);\n public readonly height = input(0);\n public readonly smoothingFactor = input(this.options.smoothingFactor);\n public readonly hintContent =\n input<PolymorpheusContent<TuiContext<[TuiDay, number]>>>();\n\n public readonly xStringify = input<TuiStringHandler<TuiDay> | null>(null);\n public readonly yStringify = input<TuiStringHandler<number> | null>(null);\n public readonly dots = input(this.options.dots);\n\n public zIndex = 0;\n\n public value = input<\n ReadonlyArray<[TuiDay, number]>,\n ReadonlyArray<[TuiDay, number]>\n >([], {\n transform: (value) => {\n if (!value.length) {\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 return 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\n public hint = computed<\n | PolymorpheusContent<TuiContext<[TuiDay, number]>>\n | PolymorpheusContent<TuiContext<readonly TuiPoint[]>>\n >(() => this.hintDirective?.hint() ?? this.hintContent());\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()[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.brokenMonths() : EMPTY_ARRAY;\n }\n\n protected get firstWidth(): number {\n return this.months.length * (this.value()[0]?.[0].daysCount || 0);\n }\n\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 const xStringify = this.xStringify();\n\n return xStringify && day ? 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 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) {\n <tui-line-chart\n class=\"t-chart\"\n [dots]=\"dots()\"\n [height]=\"height()\"\n [smoothingFactor]=\"smoothingFactor()\"\n [style.z-index]=\"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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"}