@taiga-ui/addon-charts 5.0.0-canary.0a459f7 → 5.0.0-canary.0dce162

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.
@@ -44,10 +44,10 @@ class TuiArcChart {
44
44
  return (this.getLength(index) *
45
45
  (1 - Math.min((this.value()[index] || 0) / this.max(), 1)));
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiArcChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiArcChart, isStandalone: true, selector: "tui-arc-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, minLabel: { classPropertyName: "minLabel", publicName: "minLabel", isSignal: true, isRequired: false, transformFunction: null }, maxLabel: { classPropertyName: "maxLabel", publicName: "maxLabel", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size()", "style.width.rem": "width", "style.height.rem": "width", "style.strokeWidth.rem": "strokeWidth" } }, ngImport: i0, template: "@let data = value();\n@let min = minLabel();\n@let max = maxLabel();\n@for (_ of '-'.repeat(data.length); track $index) {\n <svg\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.rem]=\"getDiameter($index)\"\n [style.inset-block-start.rem]=\"getInset($index)\"\n [style.inset-inline.rem]=\"getInset($index)\"\n >\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive($index)\"\n [style.stroke]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.strokeDasharray.em]=\"getLength($index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset($index) : getLength($index)\"\n (tuiHoveredChange)=\"onHovered($event, $index)\"\n />\n </svg>\n}\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ min }}</span>\n <span>{{ max }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;inset:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-body-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-body-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-body-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-body-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-h5)}.t-percent{position:absolute;display:flex;inset-block:auto 11%;inset-inline:25% auto;inline-size:50%;justify-content:space-between;font:var(--tui-font-body-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-body-m)}\n"], dependencies: [{ kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiArcChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiArcChart, isStandalone: true, selector: "tui-arc-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, minLabel: { classPropertyName: "minLabel", publicName: "minLabel", isSignal: true, isRequired: false, transformFunction: null }, maxLabel: { classPropertyName: "maxLabel", publicName: "maxLabel", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size()", "style.width.rem": "width", "style.height.rem": "width", "style.strokeWidth.rem": "strokeWidth" } }, ngImport: i0, template: "@let data = value();\n@let min = minLabel();\n@let max = maxLabel();\n@for (_ of '-'.repeat(data.length); track $index) {\n <svg\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.rem]=\"getDiameter($index)\"\n [style.inset-block-start.rem]=\"getInset($index)\"\n [style.inset-inline.rem]=\"getInset($index)\"\n >\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive($index)\"\n [style.stroke]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.strokeDasharray.em]=\"getLength($index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset($index) : getLength($index)\"\n (tuiHoveredChange)=\"onHovered($event, $index)\"\n />\n </svg>\n}\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ min }}</span>\n <span>{{ max }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;inset:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-body-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-body-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-body-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-body-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-h5)}.t-percent{position:absolute;display:flex;inset-block:auto 11%;inset-inline:25% auto;inline-size:50%;justify-content:space-between;font:var(--tui-font-body-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-body-m)}\n"], dependencies: [{ kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiArcChart, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiArcChart, decorators: [{
51
51
  type: Component,
52
52
  args: [{ selector: 'tui-arc-chart', imports: [TuiHovered], changeDetection: ChangeDetectionStrategy.OnPush, host: {
53
53
  '[attr.data-size]': 'size()',
@@ -26,10 +26,10 @@ class TuiAxes {
26
26
  this.hasYSecondaryLabels = computed(() => (this.axisYSecondaryLabels().length && !this.axisYSecondaryInset()) ||
27
27
  !!this.axisYSecondaryName());
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiAxes, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiAxes, isStandalone: true, selector: "tui-axes", inputs: { axisXLabels: { classPropertyName: "axisXLabels", publicName: "axisXLabels", isSignal: true, isRequired: false, transformFunction: null }, axisYInset: { classPropertyName: "axisYInset", publicName: "axisYInset", isSignal: true, isRequired: false, transformFunction: null }, axisYLabels: { classPropertyName: "axisYLabels", publicName: "axisYLabels", isSignal: true, isRequired: false, transformFunction: null }, axisYName: { classPropertyName: "axisYName", publicName: "axisYName", isSignal: true, isRequired: false, transformFunction: null }, axisYSecondaryInset: { classPropertyName: "axisYSecondaryInset", publicName: "axisYSecondaryInset", isSignal: true, isRequired: false, transformFunction: null }, axisYSecondaryLabels: { classPropertyName: "axisYSecondaryLabels", publicName: "axisYSecondaryLabels", isSignal: true, isRequired: false, transformFunction: null }, axisYSecondaryName: { classPropertyName: "axisYSecondaryName", publicName: "axisYSecondaryName", isSignal: true, isRequired: false, transformFunction: null }, centeredXLabels: { classPropertyName: "centeredXLabels", publicName: "centeredXLabels", isSignal: true, isRequired: false, transformFunction: null }, horizontalLines: { classPropertyName: "horizontalLines", publicName: "horizontalLines", isSignal: true, isRequired: false, transformFunction: null }, horizontalLinesHandler: { classPropertyName: "horizontalLinesHandler", publicName: "horizontalLinesHandler", isSignal: true, isRequired: false, transformFunction: null }, verticalLines: { classPropertyName: "verticalLines", publicName: "verticalLines", isSignal: true, isRequired: false, transformFunction: null }, verticalLinesHandler: { classPropertyName: "verticalLinesHandler", publicName: "verticalLinesHandler", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "dir": "ltr" }, properties: { "class._centered": "centeredXLabels()" } }, ngImport: i0, template: "@let ySecLabels = axisYSecondaryLabels();\n@let ySecInset = axisYSecondaryInset();\n@let yLabels = axisYLabels();\n@let yInset = axisYInset();\n@let hasXs = hasXLabels();\n\n<div\n class=\"t-side\"\n [class.t-side_padding]=\"hasXs\"\n>\n @if (hasYLabels()) {\n @let yName = axisYName();\n @if (yName) {\n <div\n automation-id=\"tui-axex__axis-y-name\"\n class=\"t-name t-name_primary\"\n >\n {{ yName }}\n </div>\n }\n @if (!yInset) {\n <div class=\"t-labels-y t-labels-y_primary\">\n @for (label of yLabels; track label) {\n <div\n automation-id=\"tui-axex__axis-y-label\"\n class=\"t-label-y\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n }\n</div>\n<div class=\"t-wrapper\">\n @let vLineFn = verticalLinesHandler();\n @let vLines = verticalLines();\n @let hLineFn = horizontalLinesHandler();\n @let hLines = horizontalLines();\n <div\n class=\"t-grid\"\n [style.border-block-end-style]=\"hLineFn(0, hLines)\"\n [style.border-inline-start-style]=\"vLineFn(0, vLines)\"\n >\n <div class=\"t-vertical\">\n @for (_ of '-'.repeat(vLines - 1); track $index) {\n <div\n automation-id=\"tui-axex__vertical-line\"\n class=\"t-line t-line_vertical\"\n [style.border-inline-end-style]=\"vLineFn($index + 1, vLines)\"\n ></div>\n }\n </div>\n <div class=\"t-horizontal\">\n @for (_ of '-'.repeat(hLines - 1); track $index) {\n <div\n automation-id=\"tui-axex__horizontal-line\"\n class=\"t-line\"\n [style.border-block-start-style]=\"hLineFn($index + 1, hLines)\"\n ></div>\n }\n </div>\n @if (yInset) {\n <div class=\"t-labels-y t-labels-y_inset\">\n @for (label of yLabels; track $index) {\n <div\n automation-id=\"tui-axex__axis-y-label\"\n class=\"t-label-y\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n @if (ySecInset) {\n <div class=\"t-labels-y t-labels-y_inset t-labels-y_inset_secondary\">\n @for (label of ySecLabels; track $index) {\n <div\n automation-id=\"tui-axex__axis-y-secondary-label\"\n class=\"t-label-y\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n <div class=\"t-content\">\n <ng-content />\n </div>\n </div>\n @if (hasXs) {\n <div class=\"t-labels-x\">\n @for (label of axisXLabels(); track $index) {\n <div\n automation-id=\"tui-axex__axis-x-label\"\n class=\"t-label-x\"\n [class.t-label-x_transparent]=\"label === null\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n</div>\n<div\n class=\"t-side\"\n [class.t-side_padding]=\"hasXs\"\n>\n @if (hasYSecondaryLabels()) {\n @if (!ySecInset) {\n <div class=\"t-labels-y t-labels-y_secondary\">\n @for (label of ySecLabels; track label) {\n <div\n automation-id=\"tui-axex__axis-y-secondary-label\"\n class=\"t-label-y\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n @let axisYSec = axisYSecondaryName();\n @if (axisYSec) {\n <div\n automation-id=\"tui-axex__axis-y-secondary-name\"\n class=\"t-name\"\n >\n {{ axisYSec }}\n </div>\n }\n }\n</div>\n", styles: [":host{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:1fr auto;block-size:100%}.t-wrapper{display:grid;grid-template-rows:1fr auto;grid-row:span 2}.t-grid{position:relative;display:flex;flex:1;justify-content:space-around;align-items:flex-end;border-width:1px;border-color:var(--tui-border-normal);isolation:isolate;grid-row:1}.t-horizontal{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;flex-direction:column}.t-vertical{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex}:host._centered .t-vertical:after{content:\"\";display:block;flex:1 0 1px}.t-line{flex:2 0 1px;box-sizing:border-box;border-width:1px;border-color:var(--tui-border-normal)}:host._centered .t-line_vertical:first-child{flex:1 0 1px;pointer-events:none}.t-side{display:flex;align-items:stretch}.t-side_padding{padding-block-end:2rem}.t-name{font:var(--tui-font-body-xs);writing-mode:tb;text-align:center;padding-block-end:.75rem;color:var(--tui-text-secondary)}.t-name_primary{transform:rotate(180deg)}.t-labels-y{display:flex;font:var(--tui-font-body-xs);flex-direction:column-reverse;justify-content:space-between;color:var(--tui-text-secondary)}.t-labels-y_primary{text-align:end;padding-inline-end:.75rem}.t-labels-y_secondary{padding-inline-start:.75rem}.t-labels-y_transparent{border-color:transparent}.t-labels-y_inset{position:absolute;inset-block:.5625rem -.75rem;inset-inline:.25rem auto;pointer-events:none}.t-labels-y_inset_secondary{inset-inline:auto .25rem;text-align:end}.t-labels-x{position:relative;display:flex;font:var(--tui-font-body-xs);border-inline-end:1px solid transparent;color:var(--tui-text-secondary)}.t-label-x{flex:1}.t-label-x:before{content:\"\";display:block;block-size:.5625rem;border-inline-start:1px solid var(--tui-border-normal)}.t-label-x:last-of-type:before{border:none}.t-label-x_transparent{border-color:transparent}:host._centered .t-label-x{block-size:2rem;text-align:center;margin:0}:host._centered .t-label-x:before{border:none}:host:not(._centered) .t-label-x:last-child:not(:first-child){position:absolute;inset-inline-end:0;text-align:end;border-inline-start:none}.t-label-y:first-child{margin-block-end:-.375rem}.t-label-y:last-child{margin-block-start:-.375rem}.t-content{position:absolute;display:flex;inset-block:0 -1px;inset-inline:-1px 0;align-items:flex-end}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiAxes, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiAxes, isStandalone: true, selector: "tui-axes", inputs: { axisXLabels: { classPropertyName: "axisXLabels", publicName: "axisXLabels", isSignal: true, isRequired: false, transformFunction: null }, axisYInset: { classPropertyName: "axisYInset", publicName: "axisYInset", isSignal: true, isRequired: false, transformFunction: null }, axisYLabels: { classPropertyName: "axisYLabels", publicName: "axisYLabels", isSignal: true, isRequired: false, transformFunction: null }, axisYName: { classPropertyName: "axisYName", publicName: "axisYName", isSignal: true, isRequired: false, transformFunction: null }, axisYSecondaryInset: { classPropertyName: "axisYSecondaryInset", publicName: "axisYSecondaryInset", isSignal: true, isRequired: false, transformFunction: null }, axisYSecondaryLabels: { classPropertyName: "axisYSecondaryLabels", publicName: "axisYSecondaryLabels", isSignal: true, isRequired: false, transformFunction: null }, axisYSecondaryName: { classPropertyName: "axisYSecondaryName", publicName: "axisYSecondaryName", isSignal: true, isRequired: false, transformFunction: null }, centeredXLabels: { classPropertyName: "centeredXLabels", publicName: "centeredXLabels", isSignal: true, isRequired: false, transformFunction: null }, horizontalLines: { classPropertyName: "horizontalLines", publicName: "horizontalLines", isSignal: true, isRequired: false, transformFunction: null }, horizontalLinesHandler: { classPropertyName: "horizontalLinesHandler", publicName: "horizontalLinesHandler", isSignal: true, isRequired: false, transformFunction: null }, verticalLines: { classPropertyName: "verticalLines", publicName: "verticalLines", isSignal: true, isRequired: false, transformFunction: null }, verticalLinesHandler: { classPropertyName: "verticalLinesHandler", publicName: "verticalLinesHandler", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "dir": "ltr" }, properties: { "class._centered": "centeredXLabels()" } }, ngImport: i0, template: "@let ySecLabels = axisYSecondaryLabels();\n@let ySecInset = axisYSecondaryInset();\n@let yLabels = axisYLabels();\n@let yInset = axisYInset();\n@let hasXs = hasXLabels();\n\n<div\n class=\"t-side\"\n [class.t-side_padding]=\"hasXs\"\n>\n @if (hasYLabels()) {\n @let yName = axisYName();\n @if (yName) {\n <div\n automation-id=\"tui-axex__axis-y-name\"\n class=\"t-name t-name_primary\"\n >\n {{ yName }}\n </div>\n }\n @if (!yInset) {\n <div class=\"t-labels-y t-labels-y_primary\">\n @for (label of yLabels; track label) {\n <div\n automation-id=\"tui-axex__axis-y-label\"\n class=\"t-label-y\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n }\n</div>\n<div class=\"t-wrapper\">\n @let vLineFn = verticalLinesHandler();\n @let vLines = verticalLines();\n @let hLineFn = horizontalLinesHandler();\n @let hLines = horizontalLines();\n <div\n class=\"t-grid\"\n [style.border-block-end-style]=\"hLineFn(0, hLines)\"\n [style.border-inline-start-style]=\"vLineFn(0, vLines)\"\n >\n <div class=\"t-vertical\">\n @for (_ of '-'.repeat(vLines - 1); track $index) {\n <div\n automation-id=\"tui-axex__vertical-line\"\n class=\"t-line t-line_vertical\"\n [style.border-inline-end-style]=\"vLineFn($index + 1, vLines)\"\n ></div>\n }\n </div>\n <div class=\"t-horizontal\">\n @for (_ of '-'.repeat(hLines - 1); track $index) {\n <div\n automation-id=\"tui-axex__horizontal-line\"\n class=\"t-line\"\n [style.border-block-start-style]=\"hLineFn($index + 1, hLines)\"\n ></div>\n }\n </div>\n @if (yInset) {\n <div class=\"t-labels-y t-labels-y_inset\">\n @for (label of yLabels; track $index) {\n <div\n automation-id=\"tui-axex__axis-y-label\"\n class=\"t-label-y\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n @if (ySecInset) {\n <div class=\"t-labels-y t-labels-y_inset t-labels-y_inset_secondary\">\n @for (label of ySecLabels; track $index) {\n <div\n automation-id=\"tui-axex__axis-y-secondary-label\"\n class=\"t-label-y\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n <div class=\"t-content\">\n <ng-content />\n </div>\n </div>\n @if (hasXs) {\n <div class=\"t-labels-x\">\n @for (label of axisXLabels(); track $index) {\n <div\n automation-id=\"tui-axex__axis-x-label\"\n class=\"t-label-x\"\n [class.t-label-x_transparent]=\"label === null\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n</div>\n<div\n class=\"t-side\"\n [class.t-side_padding]=\"hasXs\"\n>\n @if (hasYSecondaryLabels()) {\n @if (!ySecInset) {\n <div class=\"t-labels-y t-labels-y_secondary\">\n @for (label of ySecLabels; track label) {\n <div\n automation-id=\"tui-axex__axis-y-secondary-label\"\n class=\"t-label-y\"\n >\n {{ label || fallbackLabel }}\n </div>\n }\n </div>\n }\n @let axisYSec = axisYSecondaryName();\n @if (axisYSec) {\n <div\n automation-id=\"tui-axex__axis-y-secondary-name\"\n class=\"t-name\"\n >\n {{ axisYSec }}\n </div>\n }\n }\n</div>\n", styles: [":host{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:1fr auto;block-size:100%}.t-wrapper{display:grid;grid-template-rows:1fr auto;grid-row:span 2}.t-grid{position:relative;display:flex;flex:1;justify-content:space-around;align-items:flex-end;border-width:1px;border-color:var(--tui-border-normal);isolation:isolate;grid-row:1}.t-horizontal{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;flex-direction:column}.t-vertical{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex}:host._centered .t-vertical:after{content:\"\";display:block;flex:1 0 1px}.t-line{flex:2 0 1px;box-sizing:border-box;border-width:1px;border-color:var(--tui-border-normal)}:host._centered .t-line_vertical:first-child{flex:1 0 1px;pointer-events:none}.t-side{display:flex;align-items:stretch}.t-side_padding{padding-block-end:2rem}.t-name{font:var(--tui-font-body-xs);writing-mode:tb;text-align:center;padding-block-end:.75rem;color:var(--tui-text-secondary)}.t-name_primary{transform:rotate(180deg)}.t-labels-y{display:flex;font:var(--tui-font-body-xs);flex-direction:column-reverse;justify-content:space-between;color:var(--tui-text-secondary)}.t-labels-y_primary{text-align:end;padding-inline-end:.75rem}.t-labels-y_secondary{padding-inline-start:.75rem}.t-labels-y_transparent{border-color:transparent}.t-labels-y_inset{position:absolute;inset-block:.5625rem -.75rem;inset-inline:.25rem auto;pointer-events:none}.t-labels-y_inset_secondary{inset-inline:auto .25rem;text-align:end}.t-labels-x{position:relative;display:flex;font:var(--tui-font-body-xs);border-inline-end:1px solid transparent;color:var(--tui-text-secondary)}.t-label-x{flex:1}.t-label-x:before{content:\"\";display:block;block-size:.5625rem;border-inline-start:1px solid var(--tui-border-normal)}.t-label-x:last-of-type:before{border:none}.t-label-x_transparent{border-color:transparent}:host._centered .t-label-x{block-size:2rem;text-align:center;margin:0}:host._centered .t-label-x:before{border:none}:host:not(._centered) .t-label-x:last-child:not(:first-child){position:absolute;inset-inline-end:0;text-align:end;border-inline-start:none}.t-label-y:first-child{margin-block-end:-.375rem}.t-label-y:last-child{margin-block-start:-.375rem}.t-content{position:absolute;display:flex;inset-block:0 -1px;inset-inline:-1px 0;align-items:flex-end}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiAxes, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiAxes, decorators: [{
33
33
  type: Component,
34
34
  args: [{ selector: 'tui-axes', changeDetection: ChangeDetectionStrategy.OnPush, host: {
35
35
  dir: 'ltr',
@@ -37,10 +37,10 @@ class TuiBarChart {
37
37
  getHintId(index) {
38
38
  return `${this.autoId}_${index}`;
39
39
  }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiBarChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiBarChart, isStandalone: true, selector: "tui-bar-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tapColumn: "tapColumn" }, viewQueries: [{ propertyName: "drivers", predicate: TuiHintHover, descendants: true, isSignal: true }], ngImport: i0, template: "@for (set of transposed(); track $index) {\n <div\n class=\"t-wrapper\"\n [class.t-wrapper_hoverable]=\"!!hintContent\"\n [class.t-wrapper_hovered]=\"drivers()[$index] | async\"\n [tuiHint]=\"hintContent\"\n [tuiHintAppearance]=\"hintAppearance\"\n [tuiHintContext]=\"{$implicit: $index}\"\n [tuiHintDescribe]=\"getHintId($index)\"\n [tuiHintHost]=\"hintHost\"\n (click)=\"tapColumn.emit($index)\"\n (keydown.enter)=\"tapColumn.emit($index)\"\n (mouseenter.once)=\"(0)\"\n >\n <div\n class=\"t-container\"\n [style.height.%]=\"set | tuiMapper: percentMapper : collapsed() : computedMax()\"\n >\n <div\n #hintHost\n class=\"t-host\"\n ></div>\n <tui-bar-set\n class=\"t-set\"\n [collapsed]=\"collapsed()\"\n [id]=\"getHintId($index)\"\n [size]=\"size()\"\n [tabIndex]=\"hintContent ? 0 : -1\"\n [value]=\"set\"\n />\n </div>\n </div>\n}\n", styles: [":host{display:flex;flex:1;block-size:100%}.t-wrapper{transition-property:background-color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;display:flex;flex:1;align-items:flex-end;justify-content:center;block-size:100%}.t-wrapper_hoverable{cursor:pointer}.t-wrapper_hoverable:hover,.t-wrapper_hoverable.t-wrapper_hovered{background-color:#0000000d}.t-container{flex:1}.t-host{position:absolute;inset-inline:50%}.t-set{border-radius:var(--tui-radius-m);pointer-events:none;outline:none}.t-set:focus{box-shadow:0 0 0 2px var(--tui-border-focus)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: TuiBarSet, selector: "tui-bar-set", inputs: ["value", "size", "collapsed"] }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i1.TuiHintHost, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }], viewProviders: [tuiHintOptionsProvider({ direction: 'top' })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiBarChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiBarChart, isStandalone: true, selector: "tui-bar-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tapColumn: "tapColumn" }, viewQueries: [{ propertyName: "drivers", predicate: TuiHintHover, descendants: true, isSignal: true }], ngImport: i0, template: "@for (set of transposed(); track $index) {\n <div\n class=\"t-wrapper\"\n [class.t-wrapper_hoverable]=\"!!hintContent\"\n [class.t-wrapper_hovered]=\"drivers()[$index] | async\"\n [tuiHint]=\"hintContent\"\n [tuiHintAppearance]=\"hintAppearance\"\n [tuiHintContext]=\"{$implicit: $index}\"\n [tuiHintDescribe]=\"getHintId($index)\"\n [tuiHintHost]=\"hintHost\"\n (click)=\"tapColumn.emit($index)\"\n (keydown.enter)=\"tapColumn.emit($index)\"\n (mouseenter.once)=\"(0)\"\n >\n <div\n class=\"t-container\"\n [style.height.%]=\"set | tuiMapper: percentMapper : collapsed() : computedMax()\"\n >\n <div\n #hintHost\n class=\"t-host\"\n ></div>\n <tui-bar-set\n class=\"t-set\"\n [collapsed]=\"collapsed()\"\n [id]=\"getHintId($index)\"\n [size]=\"size()\"\n [tabIndex]=\"hintContent ? 0 : -1\"\n [value]=\"set\"\n />\n </div>\n </div>\n}\n", styles: [":host{display:flex;flex:1;block-size:100%}.t-wrapper{transition-property:background-color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;display:flex;flex:1;align-items:flex-end;justify-content:center;block-size:100%}.t-wrapper_hoverable{cursor:pointer}.t-wrapper_hoverable:hover,.t-wrapper_hoverable.t-wrapper_hovered{background-color:#0000000d}.t-container{flex:1}.t-host{position:absolute;inset-inline:50%}.t-set{border-radius:var(--tui-radius-m);pointer-events:none;outline:none}.t-set:focus{box-shadow:0 0 0 2px var(--tui-border-focus)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: TuiBarSet, selector: "tui-bar-set", inputs: ["value", "size", "collapsed"] }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i1.TuiHintHost, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }], viewProviders: [tuiHintOptionsProvider({ direction: 'top' })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
42
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiBarChart, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiBarChart, decorators: [{
44
44
  type: Component,
45
45
  args: [{ selector: 'tui-bar-chart', imports: [AsyncPipe, TuiBarSet, TuiHint, TuiMapperPipe], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [tuiHintOptionsProvider({ direction: 'top' })], template: "@for (set of transposed(); track $index) {\n <div\n class=\"t-wrapper\"\n [class.t-wrapper_hoverable]=\"!!hintContent\"\n [class.t-wrapper_hovered]=\"drivers()[$index] | async\"\n [tuiHint]=\"hintContent\"\n [tuiHintAppearance]=\"hintAppearance\"\n [tuiHintContext]=\"{$implicit: $index}\"\n [tuiHintDescribe]=\"getHintId($index)\"\n [tuiHintHost]=\"hintHost\"\n (click)=\"tapColumn.emit($index)\"\n (keydown.enter)=\"tapColumn.emit($index)\"\n (mouseenter.once)=\"(0)\"\n >\n <div\n class=\"t-container\"\n [style.height.%]=\"set | tuiMapper: percentMapper : collapsed() : computedMax()\"\n >\n <div\n #hintHost\n class=\"t-host\"\n ></div>\n <tui-bar-set\n class=\"t-set\"\n [collapsed]=\"collapsed()\"\n [id]=\"getHintId($index)\"\n [size]=\"size()\"\n [tabIndex]=\"hintContent ? 0 : -1\"\n [value]=\"set\"\n />\n </div>\n </div>\n}\n", styles: [":host{display:flex;flex:1;block-size:100%}.t-wrapper{transition-property:background-color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;display:flex;flex:1;align-items:flex-end;justify-content:center;block-size:100%}.t-wrapper_hoverable{cursor:pointer}.t-wrapper_hoverable:hover,.t-wrapper_hoverable.t-wrapper_hovered{background-color:#0000000d}.t-container{flex:1}.t-host{position:absolute;inset-inline:50%}.t-set{border-radius:var(--tui-radius-m);pointer-events:none;outline:none}.t-set:focus{box-shadow:0 0 0 2px var(--tui-border-focus)}\n"] }]
46
46
  }] });
@@ -17,10 +17,10 @@ class TuiBarSet {
17
17
  getHeight(value) {
18
18
  return Math.abs((100 * value) / this.largest());
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiBarSet, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiBarSet, isStandalone: true, selector: "tui-bar-set", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (size()) {\n @for (item of computedValue(); track item) {\n <ng-container\n [ngTemplateOutlet]=\"bar\"\n [ngTemplateOutletContext]=\"{$implicit: item, index: $index, flexible: false}\"\n />\n }\n} @else {\n @for (item of computedValue(); track item) {\n <div class=\"t-wrapper\">\n <ng-container\n [ngTemplateOutlet]=\"bar\"\n [ngTemplateOutletContext]=\"{$implicit: item, index: $index, flexible: true}\"\n />\n </div>\n }\n}\n<ng-template\n #bar\n let-flexible=\"flexible\"\n let-index=\"index\"\n let-item\n>\n <tui-bar\n automation-id=\"tui-bar-set__bar\"\n class=\"t-bar\"\n [class.t-bar_flexible]=\"flexible\"\n [class.t-bar_negative]=\"item < 0\"\n [size]=\"size() || 'm'\"\n [style.background]=\"`var(--tui-chart-categorical-${index.toString().padStart(2, '0')})`\"\n [style.height.%]=\"getHeight(item)\"\n [value]=\"computedSegments()\"\n />\n</ng-template>\n<span class=\"t-label\">\n <ng-content />\n</span>\n", styles: [":host{position:relative;display:flex;block-size:100%;align-items:flex-end;justify-content:center}.t-wrapper{display:flex;flex:1;block-size:100%;align-items:flex-end}.t-wrapper:first-of-type{margin-inline-start:25%}.t-wrapper:last-of-type{margin-inline-end:25%}.t-bar{transform-origin:bottom center}.t-bar_negative{transform:rotate(180deg);opacity:var(--tui-disabled-opacity)}.t-bar.t-bar_flexible{max-inline-size:none;inline-size:75%;margin:0 auto}.t-label{position:absolute;inset-block-start:-1.5rem;font:var(--tui-font-body-xs);color:var(--tui-text-secondary)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TuiBar, selector: "tui-bar", inputs: ["value", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiBarSet, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiBarSet, isStandalone: true, selector: "tui-bar-set", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (size()) {\n @for (item of computedValue(); track item) {\n <ng-container\n [ngTemplateOutlet]=\"bar\"\n [ngTemplateOutletContext]=\"{$implicit: item, index: $index, flexible: false}\"\n />\n }\n} @else {\n @for (item of computedValue(); track item) {\n <div class=\"t-wrapper\">\n <ng-container\n [ngTemplateOutlet]=\"bar\"\n [ngTemplateOutletContext]=\"{$implicit: item, index: $index, flexible: true}\"\n />\n </div>\n }\n}\n<ng-template\n #bar\n let-flexible=\"flexible\"\n let-index=\"index\"\n let-item\n>\n <tui-bar\n automation-id=\"tui-bar-set__bar\"\n class=\"t-bar\"\n [class.t-bar_flexible]=\"flexible\"\n [class.t-bar_negative]=\"item < 0\"\n [size]=\"size() || 'm'\"\n [style.background]=\"`var(--tui-chart-categorical-${index.toString().padStart(2, '0')})`\"\n [style.height.%]=\"getHeight(item)\"\n [value]=\"computedSegments()\"\n />\n</ng-template>\n<span class=\"t-label\">\n <ng-content />\n</span>\n", styles: [":host{position:relative;display:flex;block-size:100%;align-items:flex-end;justify-content:center}.t-wrapper{display:flex;flex:1;block-size:100%;align-items:flex-end}.t-wrapper:first-of-type{margin-inline-start:25%}.t-wrapper:last-of-type{margin-inline-end:25%}.t-bar{transform-origin:bottom center}.t-bar_negative{transform:rotate(180deg);opacity:var(--tui-disabled-opacity)}.t-bar.t-bar_flexible{max-inline-size:none;inline-size:75%;margin:0 auto}.t-label{position:absolute;inset-block-start:-1.5rem;font:var(--tui-font-body-xs);color:var(--tui-text-secondary)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TuiBar, selector: "tui-bar", inputs: ["value", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiBarSet, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiBarSet, decorators: [{
24
24
  type: Component,
25
25
  args: [{ selector: 'tui-bar-set', imports: [NgTemplateOutlet, TuiBar], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (size()) {\n @for (item of computedValue(); track item) {\n <ng-container\n [ngTemplateOutlet]=\"bar\"\n [ngTemplateOutletContext]=\"{$implicit: item, index: $index, flexible: false}\"\n />\n }\n} @else {\n @for (item of computedValue(); track item) {\n <div class=\"t-wrapper\">\n <ng-container\n [ngTemplateOutlet]=\"bar\"\n [ngTemplateOutletContext]=\"{$implicit: item, index: $index, flexible: true}\"\n />\n </div>\n }\n}\n<ng-template\n #bar\n let-flexible=\"flexible\"\n let-index=\"index\"\n let-item\n>\n <tui-bar\n automation-id=\"tui-bar-set__bar\"\n class=\"t-bar\"\n [class.t-bar_flexible]=\"flexible\"\n [class.t-bar_negative]=\"item < 0\"\n [size]=\"size() || 'm'\"\n [style.background]=\"`var(--tui-chart-categorical-${index.toString().padStart(2, '0')})`\"\n [style.height.%]=\"getHeight(item)\"\n [value]=\"computedSegments()\"\n />\n</ng-template>\n<span class=\"t-label\">\n <ng-content />\n</span>\n", styles: [":host{position:relative;display:flex;block-size:100%;align-items:flex-end;justify-content:center}.t-wrapper{display:flex;flex:1;block-size:100%;align-items:flex-end}.t-wrapper:first-of-type{margin-inline-start:25%}.t-wrapper:last-of-type{margin-inline-end:25%}.t-bar{transform-origin:bottom center}.t-bar_negative{transform:rotate(180deg);opacity:var(--tui-disabled-opacity)}.t-bar.t-bar_flexible{max-inline-size:none;inline-size:75%;margin:0 auto}.t-label{position:absolute;inset-block-start:-1.5rem;font:var(--tui-font-body-xs);color:var(--tui-text-secondary)}\n"] }]
26
26
  }] });
@@ -11,14 +11,12 @@ class TuiBar {
11
11
  getHeight(value) {
12
12
  return (100 * value) / this.sum();
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiBar, isStandalone: true, selector: "tui-bar", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()" } }, ngImport: i0, template: "@for (item of value(); track item) {\n <div\n automation-id=\"tui-bar__bar\"\n [style.background]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.height.%]=\"getHeight(item)\"\n ></div>\n}\n", styles: [":host{display:flex;min-inline-size:.125rem;flex-direction:column-reverse;border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:hidden}:host[data-size=l]{inline-size:1rem;max-inline-size:1rem;margin:0 .1875rem}:host[data-size=m]{inline-size:.5rem;max-inline-size:.5rem;margin:0 .1875rem}:host[data-size=s]{inline-size:.25rem;max-inline-size:.5rem;margin:0 .125rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiBar, isStandalone: true, selector: "tui-bar", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()" } }, ngImport: i0, template: "@for (item of value(); track item) {\n <div\n automation-id=\"tui-bar__bar\"\n [style.background]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.height.%]=\"getHeight(item)\"\n ></div>\n}\n", styles: [":host{display:flex;min-inline-size:.125rem;flex-direction:column-reverse;border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:hidden}:host[data-size=l]{inline-size:1rem;max-inline-size:1rem;margin:0 .1875rem}:host[data-size=m]{inline-size:.5rem;max-inline-size:.5rem;margin:0 .1875rem}:host[data-size=s]{inline-size:.25rem;max-inline-size:.5rem;margin:0 .125rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiBar, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiBar, decorators: [{
18
18
  type: Component,
19
- args: [{ selector: 'tui-bar', changeDetection: ChangeDetectionStrategy.OnPush, host: {
20
- '[attr.data-size]': 'size()',
21
- }, template: "@for (item of value(); track item) {\n <div\n automation-id=\"tui-bar__bar\"\n [style.background]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.height.%]=\"getHeight(item)\"\n ></div>\n}\n", styles: [":host{display:flex;min-inline-size:.125rem;flex-direction:column-reverse;border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:hidden}:host[data-size=l]{inline-size:1rem;max-inline-size:1rem;margin:0 .1875rem}:host[data-size=m]{inline-size:.5rem;max-inline-size:.5rem;margin:0 .1875rem}:host[data-size=s]{inline-size:.25rem;max-inline-size:.5rem;margin:0 .125rem}\n"] }]
19
+ args: [{ selector: 'tui-bar', changeDetection: ChangeDetectionStrategy.OnPush, host: { '[attr.data-size]': 'size()' }, template: "@for (item of value(); track item) {\n <div\n automation-id=\"tui-bar__bar\"\n [style.background]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.height.%]=\"getHeight(item)\"\n ></div>\n}\n", styles: [":host{display:flex;min-inline-size:.125rem;flex-direction:column-reverse;border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:hidden}:host[data-size=l]{inline-size:1rem;max-inline-size:1rem;margin:0 .1875rem}:host[data-size=m]{inline-size:.5rem;max-inline-size:.5rem;margin:0 .1875rem}:host[data-size=s]{inline-size:.25rem;max-inline-size:.5rem;margin:0 .125rem}\n"] }]
22
20
  }] });
23
21
 
24
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-bar.mjs","sources":["../../../projects/addon-charts/components/bar/bar.component.ts","../../../projects/addon-charts/components/bar/bar.template.html","../../../projects/addon-charts/components/bar/taiga-ui-addon-charts-components-bar.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\n@Component({\n selector: 'tui-bar',\n templateUrl: './bar.template.html',\n styleUrl: './bar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n },\n})\nexport class TuiBar {\n private readonly sum = computed(() => tuiSum(...this.value()));\n\n public readonly value = input<readonly number[]>([]);\n public readonly size = input<TuiSizeL | TuiSizeS>('m');\n\n protected getHeight(value: number): number {\n return (100 * value) / this.sum();\n }\n}\n","@for (item of value(); track item) {\n <div\n automation-id=\"tui-bar__bar\"\n [style.background]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.height.%]=\"getHeight(item)\"\n ></div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAaa,MAAM,CAAA;AATnB,IAAA,WAAA,GAAA;AAUqB,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAE9C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAoB,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAsB,GAAG,CAAC;AAKzD;AAHa,IAAA,SAAS,CAAC,KAAa,EAAA;QAC7B,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE;;+GAP5B,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAM,kXCbnB,6PAOA,EAAA,MAAA,EAAA,CAAA,yZAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDMa,MAAM,EAAA,UAAA,EAAA,CAAA;kBATlB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAGF,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,kBAAkB,EAAE,QAAQ;AAC/B,qBAAA,EAAA,QAAA,EAAA,6PAAA,EAAA,MAAA,EAAA,CAAA,yZAAA,CAAA,EAAA;;;AEXL;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-bar.mjs","sources":["../../../projects/addon-charts/components/bar/bar.component.ts","../../../projects/addon-charts/components/bar/bar.template.html","../../../projects/addon-charts/components/bar/taiga-ui-addon-charts-components-bar.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\n@Component({\n selector: 'tui-bar',\n templateUrl: './bar.template.html',\n styleUrl: './bar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[attr.data-size]': 'size()'},\n})\nexport class TuiBar {\n private readonly sum = computed(() => tuiSum(...this.value()));\n\n public readonly value = input<readonly number[]>([]);\n public readonly size = input<TuiSizeL | TuiSizeS>('m');\n\n protected getHeight(value: number): number {\n return (100 * value) / this.sum();\n }\n}\n","@for (item of value(); track item) {\n <div\n automation-id=\"tui-bar__bar\"\n [style.background]=\"`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`\"\n [style.height.%]=\"getHeight(item)\"\n ></div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAWa,MAAM,CAAA;AAPnB,IAAA,WAAA,GAAA;AAQqB,QAAA,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAE9C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAoB,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAsB,GAAG,CAAC;AAKzD;AAHa,IAAA,SAAS,CAAC,KAAa,EAAA;QAC7B,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE;;+GAP5B,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAM,kXCXnB,6PAOA,EAAA,MAAA,EAAA,CAAA,yZAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDIa,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPlB,SAAS;+BACI,SAAS,EAAA,eAAA,EAGF,uBAAuB,CAAC,MAAM,QACzC,EAAC,kBAAkB,EAAE,QAAQ,EAAC,EAAA,QAAA,EAAA,6PAAA,EAAA,MAAA,EAAA,CAAA,yZAAA,CAAA,EAAA;;;AETxC;;AAEG;;;;"}
@@ -6,14 +6,12 @@ class TuiChartHint {
6
6
  this.content = input('', { alias: 'tuiHintContent' });
7
7
  this.appearance = input('', { alias: 'tuiHintAppearance' });
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.17", type: TuiChartHint, isStandalone: true, selector: "[tuiHintContent]", inputs: { content: { classPropertyName: "content", publicName: "tuiHintContent", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "tuiHintAppearance", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.18", type: TuiChartHint, isStandalone: true, selector: "[tuiHintContent]", inputs: { content: { classPropertyName: "content", publicName: "tuiHintContent", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "tuiHintAppearance", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiChartHint, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiChartHint, decorators: [{
13
13
  type: Directive,
14
- args: [{
15
- selector: '[tuiHintContent]',
16
- }]
14
+ args: [{ selector: '[tuiHintContent]' }]
17
15
  }] });
18
16
 
19
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-chart-hint.mjs","sources":["../../../projects/addon-charts/components/chart-hint/chart-hint.directive.ts","../../../projects/addon-charts/components/chart-hint/taiga-ui-addon-charts-components-chart-hint.ts"],"sourcesContent":["import {Directive, input} from '@angular/core';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\n@Directive({\n selector: '[tuiHintContent]',\n})\nexport class TuiChartHint {\n public readonly content = input<PolymorpheusContent>('', {alias: 'tuiHintContent'});\n public readonly appearance = input('', {alias: 'tuiHintAppearance'});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAMa,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;QAIoB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAsB,EAAE,EAAE,EAAC,KAAK,EAAE,gBAAgB,EAAC,CAAC;QACnE,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,EAAE,EAAE,EAAC,KAAK,EAAE,mBAAmB,EAAC,CAAC;AACvE;+GAHY,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,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC/B,iBAAA;;;ACLD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-chart-hint.mjs","sources":["../../../projects/addon-charts/components/chart-hint/chart-hint.directive.ts","../../../projects/addon-charts/components/chart-hint/taiga-ui-addon-charts-components-chart-hint.ts"],"sourcesContent":["import {Directive, input} from '@angular/core';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\n@Directive({selector: '[tuiHintContent]'})\nexport class TuiChartHint {\n public readonly content = input<PolymorpheusContent>('', {alias: 'tuiHintContent'});\n public readonly appearance = input('', {alias: 'tuiHintAppearance'});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAIa,YAAY,CAAA;AADzB,IAAA,WAAA,GAAA;QAEoB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAsB,EAAE,EAAE,EAAC,KAAK,EAAE,gBAAgB,EAAC,CAAC;QACnE,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,EAAE,EAAE,EAAC,KAAK,EAAE,mBAAmB,EAAC,CAAC;AACvE;+GAHY,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,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,SAAS;mBAAC,EAAC,QAAQ,EAAE,kBAAkB,EAAC;;;ACHzC;;AAEG;;;;"}
@@ -10,10 +10,10 @@ class TuiLegendItem {
10
10
  this.size = input('m');
11
11
  this.disabled = input(false);
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLegendItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.17", type: TuiLegendItem, isStandalone: true, selector: "tui-legend-item", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "class._disabled": "disabled()", "style.--tui-background-accent-1": "color() === \"var(--tui-background-accent-1)\" ? null : color()" } }, ngImport: i0, template: "<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", styles: [":host{display:inline-block}.t-button{block-size:2rem;font-weight:700}:host[data-size=m] .t-button{block-size:2.25rem;font:var(--tui-font-body-m);font-weight:700}.t-wrapper{display:flex;align-items:center;pointer-events:none}:host._disabled .t-wrapper{color:var(--tui-text-tertiary)}.t-dot{inline-size:.5rem;block-size:.5rem;border-radius:100%;flex-shrink:0}:host._disabled .t-dot{background:var(--tui-border-normal)}.t-dot:not(:first-child){display:none}.t-text{margin:0 .5rem;font-weight:400}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLegendItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.18", type: TuiLegendItem, isStandalone: true, selector: "tui-legend-item", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "class._disabled": "disabled()", "style.--tui-background-accent-1": "color() === \"var(--tui-background-accent-1)\" ? null : color()" } }, ngImport: i0, template: "<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", styles: [":host{display:inline-block}.t-button{block-size:2rem;font-weight:700}:host[data-size=m] .t-button{block-size:2.25rem;font:var(--tui-font-body-m);font-weight:700}.t-wrapper{display:flex;align-items:center;pointer-events:none}:host._disabled .t-wrapper{color:var(--tui-text-tertiary)}.t-dot{inline-size:.5rem;block-size:.5rem;border-radius:100%;flex-shrink:0}:host._disabled .t-dot{background:var(--tui-border-normal)}.t-dot:not(:first-child){display:none}.t-text{margin:0 .5rem;font-weight:400}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLegendItem, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLegendItem, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'tui-legend-item', imports: [TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, host: {
19
19
  '[attr.data-size]': 'size()',
@@ -49,10 +49,10 @@ class TuiLineChartHint {
49
49
  this.charts().forEach((chart) => chart.onHovered(index));
50
50
  this.chartsRef().forEach(({ nativeElement }, index) => this.renderer.setStyle(nativeElement, 'z-index', sorted.indexOf(current[index] ?? [0, 0])));
51
51
  }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
53
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.17", type: TuiLineChartHint, isStandalone: true, selector: "[tuiLineChartHint]", inputs: { hint: { classPropertyName: "hint", publicName: "tuiLineChartHint", isSignal: true, isRequired: false, transformFunction: null } }, providers: [TuiHoveredService], queries: [{ propertyName: "charts", predicate: TuiLineChart, isSignal: true }, { propertyName: "chartsRef", predicate: TuiLineChart, read: ElementRef, isSignal: true }], ngImport: i0 }); }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLineChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
53
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.18", type: TuiLineChartHint, isStandalone: true, selector: "[tuiLineChartHint]", inputs: { hint: { classPropertyName: "hint", publicName: "tuiLineChartHint", isSignal: true, isRequired: false, transformFunction: null } }, providers: [TuiHoveredService], queries: [{ propertyName: "charts", predicate: TuiLineChart, isSignal: true }, { propertyName: "chartsRef", predicate: TuiLineChart, read: ElementRef, isSignal: true }], ngImport: i0 }); }
54
54
  }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineChartHint, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLineChartHint, decorators: [{
56
56
  type: Directive,
57
57
  args: [{
58
58
  selector: '[tuiLineChartHint]',
@@ -176,14 +176,12 @@ class TuiLineChart {
176
176
  ? 2 * ((this.value()[index]?.[0] || 0) - this.getX(index))
177
177
  : this.getX(index + 1) - this.getX(index);
178
178
  }
179
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
180
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiLineChart, isStandalone: true, selector: "tui-line-chart", inputs: { x: { classPropertyName: "x", publicName: "x", isSignal: true, isRequired: false, transformFunction: null }, y: { classPropertyName: "y", publicName: "y", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", 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 }, xStringify: { classPropertyName: "xStringify", publicName: "xStringify", isSignal: true, isRequired: false, transformFunction: null }, yStringify: { classPropertyName: "yStringify", publicName: "yStringify", isSignal: true, isRequired: false, transformFunction: null }, filled: { classPropertyName: "filled", publicName: "filled", 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: { listeners: { "mouseleave": "onMouseLeave()" } }, providers: [WaResizeObserverService], viewQueries: [{ propertyName: "drivers", predicate: TuiHintHover, descendants: true, isSignal: true }], ngImport: i0, template: "<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.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n ></div>\n }\n}\n@if (hasHints) {\n @for (point of value(); track point) {\n <!-- TODO: Fix hint type -->\n @if ($count > 1 || dots()) {\n <div\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers()[$index] | async\"\n [class.t-column_hovered]=\"hovered() === $index\"\n [style.inset-inline-start.%]=\"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.inset-inline-start.%]=\"getOffset($index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId($index)\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"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.inset-block-end.%]=\"getBottom(point[1])\"\n ></div>\n }\n }\n}\n@if (getHovered(hovered()); as point) {\n @let xString = xStringify();\n @let yString = yStringify();\n @if (xString) {\n <div\n class=\"t-hint t-hint_x\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n >\n {{ xString(point[0]) }}\n </div>\n }\n @if (yString) {\n <div\n class=\"t-hint t-hint_y\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n >\n {{ yString(point[1]) }}\n </div>\n }\n}\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;inset-block-start: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;inset-inline-start: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{inset-block:0;inset-inline:50% auto;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-body-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{inset-block-end:0}.t-hint_y{inset-inline-start:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i1.TuiHintHost, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
179
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLineChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
180
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiLineChart, isStandalone: true, selector: "tui-line-chart", inputs: { x: { classPropertyName: "x", publicName: "x", isSignal: true, isRequired: false, transformFunction: null }, y: { classPropertyName: "y", publicName: "y", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", 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 }, xStringify: { classPropertyName: "xStringify", publicName: "xStringify", isSignal: true, isRequired: false, transformFunction: null }, yStringify: { classPropertyName: "yStringify", publicName: "yStringify", isSignal: true, isRequired: false, transformFunction: null }, filled: { classPropertyName: "filled", publicName: "filled", 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: { listeners: { "mouseleave": "onMouseLeave()" } }, providers: [WaResizeObserverService], viewQueries: [{ propertyName: "drivers", predicate: TuiHintHover, descendants: true, isSignal: true }], ngImport: i0, template: "<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.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n ></div>\n }\n}\n@if (hasHints) {\n @for (point of value(); track point) {\n <!-- TODO: Fix hint type -->\n @if ($count > 1 || dots()) {\n <div\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers()[$index] | async\"\n [class.t-column_hovered]=\"hovered() === $index\"\n [style.inset-inline-start.%]=\"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.inset-inline-start.%]=\"getOffset($index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId($index)\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"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.inset-block-end.%]=\"getBottom(point[1])\"\n ></div>\n }\n }\n}\n@if (getHovered(hovered()); as point) {\n @let xString = xStringify();\n @let yString = yStringify();\n @if (xString) {\n <div\n class=\"t-hint t-hint_x\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n >\n {{ xString(point[0]) }}\n </div>\n }\n @if (yString) {\n <div\n class=\"t-hint t-hint_y\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n >\n {{ yString(point[1]) }}\n </div>\n }\n}\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;inset-block-start: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;inset-inline-start: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{inset-block:0;inset-inline:50% auto;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-body-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{inset-block-end:0}.t-hint_y{inset-inline-start:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i1.TuiHintHost, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
181
181
  }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineChart, decorators: [{
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLineChart, decorators: [{
183
183
  type: Component,
184
- args: [{ selector: 'tui-line-chart', imports: [AsyncPipe, TuiHint], changeDetection: ChangeDetectionStrategy.OnPush, providers: [WaResizeObserverService], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], host: {
185
- '(mouseleave)': 'onMouseLeave()',
186
- }, template: "<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.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n ></div>\n }\n}\n@if (hasHints) {\n @for (point of value(); track point) {\n <!-- TODO: Fix hint type -->\n @if ($count > 1 || dots()) {\n <div\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers()[$index] | async\"\n [class.t-column_hovered]=\"hovered() === $index\"\n [style.inset-inline-start.%]=\"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.inset-inline-start.%]=\"getOffset($index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId($index)\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"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.inset-block-end.%]=\"getBottom(point[1])\"\n ></div>\n }\n }\n}\n@if (getHovered(hovered()); as point) {\n @let xString = xStringify();\n @let yString = yStringify();\n @if (xString) {\n <div\n class=\"t-hint t-hint_x\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n >\n {{ xString(point[0]) }}\n </div>\n }\n @if (yString) {\n <div\n class=\"t-hint t-hint_y\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n >\n {{ yString(point[1]) }}\n </div>\n }\n}\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;inset-block-start: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;inset-inline-start: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{inset-block:0;inset-inline:50% auto;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-body-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{inset-block-end:0}.t-hint_y{inset-inline-start:0}\n"] }]
184
+ args: [{ selector: 'tui-line-chart', imports: [AsyncPipe, TuiHint], changeDetection: ChangeDetectionStrategy.OnPush, providers: [WaResizeObserverService], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], host: { '(mouseleave)': 'onMouseLeave()' }, template: "<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.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n ></div>\n }\n}\n@if (hasHints) {\n @for (point of value(); track point) {\n <!-- TODO: Fix hint type -->\n @if ($count > 1 || dots()) {\n <div\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers()[$index] | async\"\n [class.t-column_hovered]=\"hovered() === $index\"\n [style.inset-inline-start.%]=\"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.inset-inline-start.%]=\"getOffset($index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId($index)\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"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.inset-block-end.%]=\"getBottom(point[1])\"\n ></div>\n }\n }\n}\n@if (getHovered(hovered()); as point) {\n @let xString = xStringify();\n @let yString = yStringify();\n @if (xString) {\n <div\n class=\"t-hint t-hint_x\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n >\n {{ xString(point[0]) }}\n </div>\n }\n @if (yString) {\n <div\n class=\"t-hint t-hint_y\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n >\n {{ yString(point[1]) }}\n </div>\n }\n}\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;inset-block-start: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;inset-inline-start: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{inset-block:0;inset-inline:50% auto;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-body-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{inset-block-end:0}.t-hint_y{inset-inline-start:0}\n"] }]
187
185
  }] });
188
186
 
189
187
  /**
@@ -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 {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\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, tuiLineChartOptionsProvider] = tuiCreateOptions(\n TUI_LINE_CHART_DEFAULT_OPTIONS,\n);\n","import {\n type AfterViewInit,\n computed,\n contentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n Renderer2,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\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 selector: '[tuiLineChartHint]',\n providers: [TuiHoveredService],\n})\nexport class TuiLineChartHint implements AfterViewInit {\n private readonly charts = contentChildren(TuiLineChart);\n private readonly chartsRef = contentChildren(TuiLineChart, {read: ElementRef});\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 private readonly computedContext = computed<ReadonlyArray<readonly TuiPoint[]>>(\n (values = this.charts().map(({value}) => value())) =>\n (values[0] || []).map((_, index) =>\n values.map((value) => value[index] ?? [0, 0]),\n ),\n );\n\n public readonly hint = input<PolymorpheusContent<TuiContext<readonly TuiPoint[]>>>(\n '',\n {alias: 'tuiLineChartHint'},\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.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.computedContext()[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\nexport function tuiLineChartDrivers(\n charts: ReadonlyArray<{drivers$: Observable<ReadonlyArray<Observable<boolean>>>}>,\n): Observable<boolean> {\n return combineLatest(\n charts.map(({drivers$}) =>\n 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 signal,\n viewChildren,\n} from '@angular/core';\nimport {toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {WaResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {TuiChartHint} from '@taiga-ui/addon-charts/components/chart-hint';\nimport {type TuiLineChartHintContext} from '@taiga-ui/addon-charts/types';\nimport {tuiDraw} from '@taiga-ui/addon-charts/utils';\nimport {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiGenerateId, tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiHint, TuiHintHover, tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\nimport {type TuiPoint} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {filter, map} 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],\n templateUrl: './line-chart.template.html',\n styleUrl: './line-chart.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [WaResizeObserverService],\n viewProviders: [tuiHintOptionsProvider({direction: 'top', hideDelay: 0})],\n host: {\n '(mouseleave)': 'onMouseLeave()',\n },\n})\nexport class TuiLineChart {\n private readonly options = inject(TUI_LINE_CHART_OPTIONS);\n private readonly autoId = tuiGenerateId();\n private readonly resize = toSignal(\n inject(WaResizeObserverService, {self: true}).pipe(\n map(([e]) => e?.contentRect.height || NaN),\n filter((height) => !Number.isNaN(height)),\n ),\n {initialValue: NaN},\n );\n\n private readonly box = computed(\n () => `${this.x()} ${this.y()} ${this.width()} ${this.height()}`,\n );\n\n protected readonly hintDirective = inject(TuiLineChartHint, {optional: true});\n protected readonly hintOptions = inject(TuiChartHint, {optional: true});\n protected readonly viewBox = computed(() => {\n if (Number.isNaN(this.resize())) {\n return '0 0 0 0';\n }\n\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 protected readonly d = computed(() =>\n this.value().reduce(\n (d, point, index) =>\n index\n ? `${d} ${tuiDraw(this.value(), index, this.smoothingFactor())}`\n : `M ${point}`,\n '',\n ),\n );\n\n protected readonly fillD = computed(() =>\n 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 public readonly drivers = viewChildren(TuiHintHover);\n public readonly drivers$ = toObservable(this.drivers);\n\n public readonly x = input(0);\n public readonly y = input(0);\n public readonly width = input(0);\n public readonly height = input(0);\n public readonly smoothingFactor = input(this.options.smoothingFactor);\n\n public xStringify = input<TuiStringHandler<number> | null>(null);\n public yStringify = input<TuiStringHandler<number> | null>(null);\n\n public readonly filled = input(this.options.filled);\n public readonly dots = input(this.options.dots);\n\n public value = input<readonly TuiPoint[], readonly TuiPoint[]>([], {\n transform: (value) => value.filter((item) => !item.some(Number.isNaN)),\n });\n\n public readonly hovered = signal<number>(NaN);\n\n public onHovered(index: number): void {\n this.hovered.set(index);\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 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 (\n (100 * ((this.value()[x]?.[0] || 0) - this.getX(x))) / this.computeWidth(x)\n );\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 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","<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.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n ></div>\n }\n}\n@if (hasHints) {\n @for (point of value(); track point) {\n <!-- TODO: Fix hint type -->\n @if ($count > 1 || dots()) {\n <div\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers()[$index] | async\"\n [class.t-column_hovered]=\"hovered() === $index\"\n [style.inset-inline-start.%]=\"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.inset-inline-start.%]=\"getOffset($index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId($index)\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"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.inset-block-end.%]=\"getBottom(point[1])\"\n ></div>\n }\n }\n}\n@if (getHovered(hovered()); as point) {\n @let xString = xStringify();\n @let yString = yStringify();\n @if (xString) {\n <div\n class=\"t-hint t-hint_x\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n >\n {{ xString(point[0]) }}\n </div>\n }\n @if (yString) {\n <div\n class=\"t-hint t-hint_y\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n >\n {{ yString(point[1]) }}\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-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 {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\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, tuiLineChartOptionsProvider] = tuiCreateOptions(\n TUI_LINE_CHART_DEFAULT_OPTIONS,\n);\n","import {\n type AfterViewInit,\n computed,\n contentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n Renderer2,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiHoveredService} from '@taiga-ui/cdk/directives/hovered';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\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 selector: '[tuiLineChartHint]',\n providers: [TuiHoveredService],\n})\nexport class TuiLineChartHint implements AfterViewInit {\n private readonly charts = contentChildren(TuiLineChart);\n private readonly chartsRef = contentChildren(TuiLineChart, {read: ElementRef});\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 private readonly computedContext = computed<ReadonlyArray<readonly TuiPoint[]>>(\n (values = this.charts().map(({value}) => value())) =>\n (values[0] || []).map((_, index) =>\n values.map((value) => value[index] ?? [0, 0]),\n ),\n );\n\n public readonly hint = input<PolymorpheusContent<TuiContext<readonly TuiPoint[]>>>(\n '',\n {alias: 'tuiLineChartHint'},\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.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.computedContext()[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\nexport function tuiLineChartDrivers(\n charts: ReadonlyArray<{drivers$: Observable<ReadonlyArray<Observable<boolean>>>}>,\n): Observable<boolean> {\n return combineLatest(\n charts.map(({drivers$}) =>\n 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 signal,\n viewChildren,\n} from '@angular/core';\nimport {toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {WaResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {TuiChartHint} from '@taiga-ui/addon-charts/components/chart-hint';\nimport {type TuiLineChartHintContext} from '@taiga-ui/addon-charts/types';\nimport {tuiDraw} from '@taiga-ui/addon-charts/utils';\nimport {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiGenerateId, tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiHint, TuiHintHover, tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\nimport {type TuiPoint} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {filter, map} 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],\n templateUrl: './line-chart.template.html',\n styleUrl: './line-chart.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [WaResizeObserverService],\n viewProviders: [tuiHintOptionsProvider({direction: 'top', hideDelay: 0})],\n host: {'(mouseleave)': 'onMouseLeave()'},\n})\nexport class TuiLineChart {\n private readonly options = inject(TUI_LINE_CHART_OPTIONS);\n private readonly autoId = tuiGenerateId();\n private readonly resize = toSignal(\n inject(WaResizeObserverService, {self: true}).pipe(\n map(([e]) => e?.contentRect.height || NaN),\n filter((height) => !Number.isNaN(height)),\n ),\n {initialValue: NaN},\n );\n\n private readonly box = computed(\n () => `${this.x()} ${this.y()} ${this.width()} ${this.height()}`,\n );\n\n protected readonly hintDirective = inject(TuiLineChartHint, {optional: true});\n protected readonly hintOptions = inject(TuiChartHint, {optional: true});\n protected readonly viewBox = computed(() => {\n if (Number.isNaN(this.resize())) {\n return '0 0 0 0';\n }\n\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 protected readonly d = computed(() =>\n this.value().reduce(\n (d, point, index) =>\n index\n ? `${d} ${tuiDraw(this.value(), index, this.smoothingFactor())}`\n : `M ${point}`,\n '',\n ),\n );\n\n protected readonly fillD = computed(() =>\n 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 public readonly drivers = viewChildren(TuiHintHover);\n public readonly drivers$ = toObservable(this.drivers);\n\n public readonly x = input(0);\n public readonly y = input(0);\n public readonly width = input(0);\n public readonly height = input(0);\n public readonly smoothingFactor = input(this.options.smoothingFactor);\n\n public xStringify = input<TuiStringHandler<number> | null>(null);\n public yStringify = input<TuiStringHandler<number> | null>(null);\n\n public readonly filled = input(this.options.filled);\n public readonly dots = input(this.options.dots);\n\n public value = input<readonly TuiPoint[], readonly TuiPoint[]>([], {\n transform: (value) => value.filter((item) => !item.some(Number.isNaN)),\n });\n\n public readonly hovered = signal<number>(NaN);\n\n public onHovered(index: number): void {\n this.hovered.set(index);\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 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 (\n (100 * ((this.value()[x]?.[0] || 0) - this.getX(x))) / this.computeWidth(x)\n );\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 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","<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.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n ></div>\n }\n}\n@if (hasHints) {\n @for (point of value(); track point) {\n <!-- TODO: Fix hint type -->\n @if ($count > 1 || dots()) {\n <div\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers()[$index] | async\"\n [class.t-column_hovered]=\"hovered() === $index\"\n [style.inset-inline-start.%]=\"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.inset-inline-start.%]=\"getOffset($index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId($index)\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n [style.inset-inline-start.%]=\"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.inset-block-end.%]=\"getBottom(point[1])\"\n ></div>\n }\n }\n}\n@if (getHovered(hovered()); as point) {\n @let xString = xStringify();\n @let yString = yStringify();\n @if (xString) {\n <div\n class=\"t-hint t-hint_x\"\n [style.inset-inline-start.%]=\"getLeft(point[0])\"\n >\n {{ xString(point[0]) }}\n </div>\n }\n @if (yString) {\n <div\n class=\"t-hint t-hint_y\"\n [style.inset-block-end.%]=\"getBottom(point[1])\"\n >\n {{ yString(point[1]) }}\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -50,10 +50,10 @@ class TuiLineDaysChartHint {
50
50
  getMap(...values) {
51
51
  return (values[0] || []).reduce((map, [day]) => map.set(String(day), values.map((value) => find(value, day))), new Map());
52
52
  }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineDaysChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
- 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 }); }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLineDaysChartHint, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.18", 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 }); }
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineDaysChartHint, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLineDaysChartHint, decorators: [{
57
57
  type: Directive,
58
58
  args: [{
59
59
  selector: '[tuiLineChartHint]',
@@ -68,9 +68,7 @@ class TuiLineDaysChart {
68
68
  this.zone = inject(NgZone);
69
69
  this.hovered$ = inject(TuiHoveredService);
70
70
  this.options = inject(TUI_LINE_CHART_OPTIONS);
71
- this.hintDirective = inject(TuiLineDaysChartHint, {
72
- optional: true,
73
- });
71
+ this.hintDirective = inject(TuiLineDaysChartHint, { optional: true });
74
72
  this.brokenMonths = computed(() => {
75
73
  const value = this.value();
76
74
  const offset = (value[0]?.[0].day || 1) - 1;
@@ -191,8 +189,8 @@ class TuiLineDaysChart {
191
189
  const start = this.value()[0]?.[0];
192
190
  return this.value()[index - (start?.day || 0) + 1]?.[0];
193
191
  }
194
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineDaysChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
195
- 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: [
192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLineDaysChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", 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: [
196
194
  TuiHoveredService,
197
195
  {
198
196
  provide: TuiLineChartHint,
@@ -200,7 +198,7 @@ class TuiLineDaysChart {
200
198
  },
201
199
  ], 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 }); }
202
200
  }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiLineDaysChart, decorators: [{
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiLineDaysChart, decorators: [{
204
202
  type: Component,
205
203
  args: [{ selector: 'tui-line-days-chart', imports: [PolymorpheusOutlet, TuiChartHint, TuiLineChart], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
206
204
  TuiHoveredService,
@@ -208,9 +206,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
208
206
  provide: TuiLineChartHint,
209
207
  useExisting: TuiLineDaysChart,
210
208
  },
211
- ], host: {
212
- '[style.z-index]': 'zIndex',
213
- }, 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"] }]
209
+ ], host: { '[style.z-index]': 'zIndex' }, 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"] }]
214
210
  }] });
215
211
 
216
212
  /**
@@ -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 computed,\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 {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 private readonly map = computed(() =>\n this.getMap(...this.charts().map(({value}) => value())),\n );\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 this.map().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 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 {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 {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, 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() : [];\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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"}
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 computed,\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 {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 private readonly map = computed(() =>\n this.getMap(...this.charts().map(({value}) => value())),\n );\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 this.map().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 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 {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 {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, 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: {'[style.z-index]': 'zIndex'},\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, {optional: true});\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() : [];\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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"}
@@ -34,14 +34,12 @@ class TuiPieChartDirective {
34
34
  }), tuiZonefree(), takeUntilDestroyed())
35
35
  .subscribe(([start, end]) => this.el.setAttribute('d', tuiDescribeSector(start, end)));
36
36
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiPieChartDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.17", type: TuiPieChartDirective, isStandalone: true, selector: "path[tuiPieChart]", inputs: { tuiPieChart: { classPropertyName: "tuiPieChart", publicName: "tuiPieChart", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiPieChartDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.18", type: TuiPieChartDirective, isStandalone: true, selector: "path[tuiPieChart]", inputs: { tuiPieChart: { classPropertyName: "tuiPieChart", publicName: "tuiPieChart", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiPieChartDirective, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiPieChartDirective, decorators: [{
41
41
  type: Directive,
42
- args: [{
43
- selector: 'path[tuiPieChart]',
44
- }]
42
+ args: [{ selector: 'path[tuiPieChart]' }]
45
43
  }] });
46
44
 
47
45
  const RADII = {
@@ -98,8 +96,8 @@ class TuiPieChart {
98
96
  getDeg(value) {
99
97
  return 360 * (value / this.getSum()) || 0;
100
98
  }
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiPieChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiPieChart, isStandalone: true, selector: "tui-pie-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, masked: { classPropertyName: "masked", publicName: "masked", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size()", "class._empty": "!getSum()" } }, 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 @for (_ of '-'.repeat(segments().length); track $index) {\n <path\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 }\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: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], 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"] }], viewProviders: [
99
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiPieChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: TuiPieChart, isStandalone: true, selector: "tui-pie-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, masked: { classPropertyName: "masked", publicName: "masked", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size()", "class._empty": "!getSum()" } }, 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 @for (_ of '-'.repeat(segments().length); track $index) {\n <path\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 }\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: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], 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"] }], viewProviders: [
103
101
  tuiHintOptionsProvider({
104
102
  direction: 'top-end',
105
103
  appearance: 'floating',
@@ -108,7 +106,7 @@ class TuiPieChart {
108
106
  }),
109
107
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
110
108
  }
111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiPieChart, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiPieChart, decorators: [{
112
110
  type: Component,
113
111
  args: [{ selector: 'tui-pie-chart', imports: [TuiHint, TuiHovered, TuiPieChartDirective], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
114
112
  tuiHintOptionsProvider({
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-pie-chart.mjs","sources":["../../../projects/addon-charts/components/pie-chart/pie-chart.directive.ts","../../../projects/addon-charts/components/pie-chart/pie-chart.component.ts","../../../projects/addon-charts/components/pie-chart/pie-chart.template.html","../../../projects/addon-charts/components/pie-chart/taiga-ui-addon-charts-components-pie-chart.ts"],"sourcesContent":["import {Directive, inject, input} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {WA_ANIMATION_FRAME, WA_PERFORMANCE} from '@ng-web-apis/common';\nimport {tuiDescribeSector} from '@taiga-ui/addon-charts/utils';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiEaseInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {map, pairwise, startWith, switchMap, takeWhile} from 'rxjs';\n\n@Directive({\n selector: 'path[tuiPieChart]',\n})\nexport class TuiPieChartDirective {\n private readonly el = tuiInjectElement<SVGPathElement>();\n private readonly performance = inject(WA_PERFORMANCE);\n private readonly animationFrame$ = inject(WA_ANIMATION_FRAME);\n private readonly speed = inject(TUI_ANIMATIONS_SPEED);\n\n public tuiPieChart = input<readonly [number, number]>([0, 0]);\n\n protected readonly $ = toObservable(this.tuiPieChart)\n .pipe(\n startWith([0, 0]),\n pairwise(),\n switchMap(([prev, cur]) => {\n const now = this.performance.now();\n const startDelta = cur[0] - prev[0];\n const endDelta = cur[1] - prev[1];\n\n return this.animationFrame$.pipe(\n map((timestamp) =>\n tuiEaseInOutQuad(\n tuiClamp(\n (timestamp - now) / tuiGetDuration(this.speed),\n 0,\n 1,\n ),\n ),\n ),\n takeWhile((progress) => progress < 1, true),\n map((progress) => [\n prev[0] + startDelta * progress,\n cur[1] > 359 ? cur[1] : prev[1] + endDelta * progress,\n ]),\n );\n }),\n tuiZonefree(),\n takeUntilDestroyed(),\n )\n .subscribe(([start, end]) =>\n this.el.setAttribute('d', tuiDescribeSector(start, end)),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n} from '@angular/core';\nimport {TuiChartHint} from '@taiga-ui/addon-charts/components/chart-hint';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {tuiGenerateId} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiHint, tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\nimport {type TuiSizeXL, type TuiSizeXS} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiPieChartDirective} from './pie-chart.directive';\n\nconst RADII = {\n xs: '50',\n s: '50',\n m: '77.8',\n l: '81.9',\n xl: '81.3',\n};\nconst TRANSFORM = {\n xs: 1.15,\n s: 1.25,\n m: 1.11,\n l: 1.09,\n xl: 1.08,\n};\n\n@Component({\n selector: 'tui-pie-chart',\n imports: [TuiHint, TuiHovered, TuiPieChartDirective],\n templateUrl: './pie-chart.template.html',\n styleUrl: './pie-chart.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n tuiHintOptionsProvider({\n direction: 'top-end',\n appearance: 'floating',\n showDelay: 0,\n hideDelay: 0,\n }),\n ],\n host: {\n '[attr.data-size]': 'size()',\n '[class._empty]': '!getSum()',\n },\n})\nexport class TuiPieChart {\n private readonly hintOptions = inject(TuiChartHint, {optional: true});\n private readonly autoId = tuiGenerateId();\n\n protected readonly getSum = computed(() => tuiSum(...this.value()));\n protected readonly segments = computed<ReadonlyArray<[number, number]>>(() =>\n this.value()\n .map((initial, i, array) =>\n array.reduce(\n (sum, current, j) => (j < i ? this.getDeg(current) + sum : sum),\n this.getDeg(initial),\n ),\n )\n .map((angle, index, array) => [\n array[index - 1] || 0,\n Math.min(angle, 359.9999),\n ]),\n );\n\n public readonly value = input<readonly number[]>([]);\n public readonly size = input<TuiSizeXL | TuiSizeXS>('m');\n public readonly masked = input(false);\n public readonly activeItemIndex = model(NaN);\n\n protected get hintContent(): PolymorpheusContent<TuiContext<number>> {\n return this.hintOptions?.content() || '';\n }\n\n protected get maskId(): string {\n return `tui-ring-chart-${this.autoId}`;\n }\n\n protected get mask(): string | null {\n return this.masked() ? `url(#${this.maskId})` : null;\n }\n\n protected get radius(): string {\n return RADII[this.size()];\n }\n\n protected getTransform(index: number): string | null {\n const transform = this.masked()\n ? `scale(${TRANSFORM[this.size()]})`\n : `scale(${TRANSFORM.xs})`;\n\n return index === this.activeItemIndex() ? transform : null;\n }\n\n protected onHovered(hovered: boolean, index: number): void {\n this.activeItemIndex.set(hovered ? index : NaN);\n }\n\n private getDeg(value: number): number {\n return 360 * (value / this.getSum()) || 0;\n }\n}\n","<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 @for (_ of '-'.repeat(segments().length); track $index) {\n <path\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 }\n </g>\n</svg>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-pie-chart.mjs","sources":["../../../projects/addon-charts/components/pie-chart/pie-chart.directive.ts","../../../projects/addon-charts/components/pie-chart/pie-chart.component.ts","../../../projects/addon-charts/components/pie-chart/pie-chart.template.html","../../../projects/addon-charts/components/pie-chart/taiga-ui-addon-charts-components-pie-chart.ts"],"sourcesContent":["import {Directive, inject, input} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {WA_ANIMATION_FRAME, WA_PERFORMANCE} from '@ng-web-apis/common';\nimport {tuiDescribeSector} from '@taiga-ui/addon-charts/utils';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiEaseInOutQuad} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {map, pairwise, startWith, switchMap, takeWhile} from 'rxjs';\n\n@Directive({selector: 'path[tuiPieChart]'})\nexport class TuiPieChartDirective {\n private readonly el = tuiInjectElement<SVGPathElement>();\n private readonly performance = inject(WA_PERFORMANCE);\n private readonly animationFrame$ = inject(WA_ANIMATION_FRAME);\n private readonly speed = inject(TUI_ANIMATIONS_SPEED);\n\n public tuiPieChart = input<readonly [number, number]>([0, 0]);\n\n protected readonly $ = toObservable(this.tuiPieChart)\n .pipe(\n startWith([0, 0]),\n pairwise(),\n switchMap(([prev, cur]) => {\n const now = this.performance.now();\n const startDelta = cur[0] - prev[0];\n const endDelta = cur[1] - prev[1];\n\n return this.animationFrame$.pipe(\n map((timestamp) =>\n tuiEaseInOutQuad(\n tuiClamp(\n (timestamp - now) / tuiGetDuration(this.speed),\n 0,\n 1,\n ),\n ),\n ),\n takeWhile((progress) => progress < 1, true),\n map((progress) => [\n prev[0] + startDelta * progress,\n cur[1] > 359 ? cur[1] : prev[1] + endDelta * progress,\n ]),\n );\n }),\n tuiZonefree(),\n takeUntilDestroyed(),\n )\n .subscribe(([start, end]) =>\n this.el.setAttribute('d', tuiDescribeSector(start, end)),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n} from '@angular/core';\nimport {TuiChartHint} from '@taiga-ui/addon-charts/components/chart-hint';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {tuiGenerateId} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiHint, tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\nimport {type TuiSizeXL, type TuiSizeXS} from '@taiga-ui/core/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiPieChartDirective} from './pie-chart.directive';\n\nconst RADII = {\n xs: '50',\n s: '50',\n m: '77.8',\n l: '81.9',\n xl: '81.3',\n};\nconst TRANSFORM = {\n xs: 1.15,\n s: 1.25,\n m: 1.11,\n l: 1.09,\n xl: 1.08,\n};\n\n@Component({\n selector: 'tui-pie-chart',\n imports: [TuiHint, TuiHovered, TuiPieChartDirective],\n templateUrl: './pie-chart.template.html',\n styleUrl: './pie-chart.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n tuiHintOptionsProvider({\n direction: 'top-end',\n appearance: 'floating',\n showDelay: 0,\n hideDelay: 0,\n }),\n ],\n host: {\n '[attr.data-size]': 'size()',\n '[class._empty]': '!getSum()',\n },\n})\nexport class TuiPieChart {\n private readonly hintOptions = inject(TuiChartHint, {optional: true});\n private readonly autoId = tuiGenerateId();\n\n protected readonly getSum = computed(() => tuiSum(...this.value()));\n protected readonly segments = computed<ReadonlyArray<[number, number]>>(() =>\n this.value()\n .map((initial, i, array) =>\n array.reduce(\n (sum, current, j) => (j < i ? this.getDeg(current) + sum : sum),\n this.getDeg(initial),\n ),\n )\n .map((angle, index, array) => [\n array[index - 1] || 0,\n Math.min(angle, 359.9999),\n ]),\n );\n\n public readonly value = input<readonly number[]>([]);\n public readonly size = input<TuiSizeXL | TuiSizeXS>('m');\n public readonly masked = input(false);\n public readonly activeItemIndex = model(NaN);\n\n protected get hintContent(): PolymorpheusContent<TuiContext<number>> {\n return this.hintOptions?.content() || '';\n }\n\n protected get maskId(): string {\n return `tui-ring-chart-${this.autoId}`;\n }\n\n protected get mask(): string | null {\n return this.masked() ? `url(#${this.maskId})` : null;\n }\n\n protected get radius(): string {\n return RADII[this.size()];\n }\n\n protected getTransform(index: number): string | null {\n const transform = this.masked()\n ? `scale(${TRANSFORM[this.size()]})`\n : `scale(${TRANSFORM.xs})`;\n\n return index === this.activeItemIndex() ? transform : null;\n }\n\n protected onHovered(hovered: boolean, index: number): void {\n this.activeItemIndex.set(hovered ? index : NaN);\n }\n\n private getDeg(value: number): number {\n return 360 * (value / this.getSum()) || 0;\n }\n}\n","<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 @for (_ of '-'.repeat(segments().length); track $index) {\n <path\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 }\n </g>\n</svg>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -8,14 +8,12 @@ class TuiRingChart {
8
8
  this.size = input('m');
9
9
  this.activeItemIndex = model(NaN);
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiRingChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.17", type: TuiRingChart, isStandalone: true, selector: "tui-ring-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size()" } }, ngImport: i0, template: "<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n\n<tui-pie-chart\n class=\"t-chart\"\n [masked]=\"true\"\n [size]=\"size()\"\n [value]=\"value()\"\n [(activeItemIndex)]=\"activeItemIndex\"\n/>\n\n<div class=\"t-shield\"></div>\n", styles: [":host{position:relative;display:block;inline-size:var(--t-size);block-size:var(--t-size);flex-shrink:0;border-radius:100%}:host[data-size=xs]{--t-size: 3rem}: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-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;font:var(--tui-font-body-m);max-block-size:100%;flex-direction:column;justify-content:center;text-align:center;padding:1.5rem;border-radius:100%;box-sizing:border-box;overflow:hidden;word-break:break-word;white-space:pre-wrap;color:var(--tui-text-secondary)}:host[data-size=m] .t-content{font:var(--tui-font-body-xs)}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-body-l);font-weight:700}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-body-m);font-weight:700}.t-shield{position:absolute;inset:25%;border-radius:100%}.t-chart{inline-size:100%;block-size:100%}\n"], dependencies: [{ kind: "component", type: TuiPieChart, selector: "tui-pie-chart", inputs: ["value", "size", "masked", "activeItemIndex"], outputs: ["activeItemIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiRingChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.18", type: TuiRingChart, isStandalone: true, selector: "tui-ring-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, activeItemIndex: { classPropertyName: "activeItemIndex", publicName: "activeItemIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItemIndex: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size()" } }, ngImport: i0, template: "<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n\n<tui-pie-chart\n class=\"t-chart\"\n [masked]=\"true\"\n [size]=\"size()\"\n [value]=\"value()\"\n [(activeItemIndex)]=\"activeItemIndex\"\n/>\n\n<div class=\"t-shield\"></div>\n", styles: [":host{position:relative;display:block;inline-size:var(--t-size);block-size:var(--t-size);flex-shrink:0;border-radius:100%}:host[data-size=xs]{--t-size: 3rem}: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-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;font:var(--tui-font-body-m);max-block-size:100%;flex-direction:column;justify-content:center;text-align:center;padding:1.5rem;border-radius:100%;box-sizing:border-box;overflow:hidden;word-break:break-word;white-space:pre-wrap;color:var(--tui-text-secondary)}:host[data-size=m] .t-content{font:var(--tui-font-body-xs)}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-body-l);font-weight:700}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-body-m);font-weight:700}.t-shield{position:absolute;inset:25%;border-radius:100%}.t-chart{inline-size:100%;block-size:100%}\n"], dependencies: [{ kind: "component", type: TuiPieChart, selector: "tui-pie-chart", inputs: ["value", "size", "masked", "activeItemIndex"], outputs: ["activeItemIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiRingChart, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: TuiRingChart, decorators: [{
15
15
  type: Component,
16
- args: [{ selector: 'tui-ring-chart', imports: [TuiPieChart], changeDetection: ChangeDetectionStrategy.OnPush, host: {
17
- '[attr.data-size]': 'size()',
18
- }, template: "<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n\n<tui-pie-chart\n class=\"t-chart\"\n [masked]=\"true\"\n [size]=\"size()\"\n [value]=\"value()\"\n [(activeItemIndex)]=\"activeItemIndex\"\n/>\n\n<div class=\"t-shield\"></div>\n", styles: [":host{position:relative;display:block;inline-size:var(--t-size);block-size:var(--t-size);flex-shrink:0;border-radius:100%}:host[data-size=xs]{--t-size: 3rem}: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-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;font:var(--tui-font-body-m);max-block-size:100%;flex-direction:column;justify-content:center;text-align:center;padding:1.5rem;border-radius:100%;box-sizing:border-box;overflow:hidden;word-break:break-word;white-space:pre-wrap;color:var(--tui-text-secondary)}:host[data-size=m] .t-content{font:var(--tui-font-body-xs)}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-body-l);font-weight:700}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-body-m);font-weight:700}.t-shield{position:absolute;inset:25%;border-radius:100%}.t-chart{inline-size:100%;block-size:100%}\n"] }]
16
+ args: [{ selector: 'tui-ring-chart', imports: [TuiPieChart], changeDetection: ChangeDetectionStrategy.OnPush, host: { '[attr.data-size]': 'size()' }, template: "<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n\n<tui-pie-chart\n class=\"t-chart\"\n [masked]=\"true\"\n [size]=\"size()\"\n [value]=\"value()\"\n [(activeItemIndex)]=\"activeItemIndex\"\n/>\n\n<div class=\"t-shield\"></div>\n", styles: [":host{position:relative;display:block;inline-size:var(--t-size);block-size:var(--t-size);flex-shrink:0;border-radius:100%}:host[data-size=xs]{--t-size: 3rem}: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-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;font:var(--tui-font-body-m);max-block-size:100%;flex-direction:column;justify-content:center;text-align:center;padding:1.5rem;border-radius:100%;box-sizing:border-box;overflow:hidden;word-break:break-word;white-space:pre-wrap;color:var(--tui-text-secondary)}:host[data-size=m] .t-content{font:var(--tui-font-body-xs)}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-body-l);font-weight:700}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-body-m);font-weight:700}.t-shield{position:absolute;inset:25%;border-radius:100%}.t-chart{inline-size:100%;block-size:100%}\n"] }]
19
17
  }] });
20
18
 
21
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-charts-components-ring-chart.mjs","sources":["../../../projects/addon-charts/components/ring-chart/ring-chart.component.ts","../../../projects/addon-charts/components/ring-chart/ring-chart.template.html","../../../projects/addon-charts/components/ring-chart/taiga-ui-addon-charts-components-ring-chart.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, input, model} from '@angular/core';\nimport {TuiPieChart} from '@taiga-ui/addon-charts/components/pie-chart';\nimport {type TuiSizeXL, type TuiSizeXS} from '@taiga-ui/core/types';\n\n@Component({\n selector: 'tui-ring-chart',\n imports: [TuiPieChart],\n templateUrl: './ring-chart.template.html',\n styleUrl: './ring-chart.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-size]': 'size()',\n },\n})\nexport class TuiRingChart {\n public readonly value = input<readonly number[]>([]);\n public readonly size = input<TuiSizeXL | TuiSizeXS>('m');\n public readonly activeItemIndex = model(NaN);\n}\n","<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n\n<tui-pie-chart\n class=\"t-chart\"\n [masked]=\"true\"\n [size]=\"size()\"\n [value]=\"value()\"\n [(activeItemIndex)]=\"activeItemIndex\"\n/>\n\n<div class=\"t-shield\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAca,YAAY,CAAA;AAVzB,IAAA,WAAA,GAAA;AAWoB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAoB,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAwB,GAAG,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC;AAC/C;+GAJY,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdzB,2SAeA,EAAA,MAAA,EAAA,CAAA,kgCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTc,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAVxB,SAAS;+BACI,gBAAgB,EAAA,OAAA,EACjB,CAAC,WAAW,CAAC,mBAGL,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,kBAAkB,EAAE,QAAQ;AAC/B,qBAAA,EAAA,QAAA,EAAA,2SAAA,EAAA,MAAA,EAAA,CAAA,kgCAAA,CAAA,EAAA;;;AEZL;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-charts-components-ring-chart.mjs","sources":["../../../projects/addon-charts/components/ring-chart/ring-chart.component.ts","../../../projects/addon-charts/components/ring-chart/ring-chart.template.html","../../../projects/addon-charts/components/ring-chart/taiga-ui-addon-charts-components-ring-chart.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, input, model} from '@angular/core';\nimport {TuiPieChart} from '@taiga-ui/addon-charts/components/pie-chart';\nimport {type TuiSizeXL, type TuiSizeXS} from '@taiga-ui/core/types';\n\n@Component({\n selector: 'tui-ring-chart',\n imports: [TuiPieChart],\n templateUrl: './ring-chart.template.html',\n styleUrl: './ring-chart.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[attr.data-size]': 'size()'},\n})\nexport class TuiRingChart {\n public readonly value = input<readonly number[]>([]);\n public readonly size = input<TuiSizeXL | TuiSizeXS>('m');\n public readonly activeItemIndex = model(NaN);\n}\n","<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n\n<tui-pie-chart\n class=\"t-chart\"\n [masked]=\"true\"\n [size]=\"size()\"\n [value]=\"value()\"\n [(activeItemIndex)]=\"activeItemIndex\"\n/>\n\n<div class=\"t-shield\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAYa,YAAY,CAAA;AARzB,IAAA,WAAA,GAAA;AASoB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAoB,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAwB,GAAG,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC;AAC/C;+GAJY,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZzB,2SAeA,EAAA,MAAA,EAAA,CAAA,kgCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTc,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAMZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBARxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EACjB,OAAA,EAAA,CAAC,WAAW,CAAC,EAGL,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA,EAAC,kBAAkB,EAAE,QAAQ,EAAC,EAAA,QAAA,EAAA,2SAAA,EAAA,MAAA,EAAA,CAAA,kgCAAA,CAAA,EAAA;;;AEVxC;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/addon-charts",
3
- "version": "5.0.0-canary.0a459f7",
3
+ "version": "5.0.0-canary.0dce162",
4
4
  "description": "Extension package for Taiga UI that adds various charts, graphs and related components.",
5
5
  "keywords": [
6
6
  "angular",
@@ -19,9 +19,9 @@
19
19
  "peerDependencies": {
20
20
  "@angular/common": ">=19.0.0",
21
21
  "@angular/core": ">=19.0.0",
22
- "@ng-web-apis/common": "^5.0.2",
23
- "@taiga-ui/cdk": "^5.0.0-rc.0",
24
- "@taiga-ui/core": "^5.0.0-rc.0",
22
+ "@ng-web-apis/common": "^5.0.3",
23
+ "@taiga-ui/cdk": "^5.0.0-rc.2",
24
+ "@taiga-ui/core": "^5.0.0-rc.2",
25
25
  "@taiga-ui/polymorpheus": "^5.0.0"
26
26
  },
27
27
  "module": "fesm2022/taiga-ui-addon-charts.mjs",
@@ -38,10 +38,6 @@
38
38
  "types": "./components/index.d.ts",
39
39
  "default": "./fesm2022/taiga-ui-addon-charts-components.mjs"
40
40
  },
41
- "./types": {
42
- "types": "./types/index.d.ts",
43
- "default": "./fesm2022/taiga-ui-addon-charts-types.mjs"
44
- },
45
41
  "./utils": {
46
42
  "types": "./utils/index.d.ts",
47
43
  "default": "./fesm2022/taiga-ui-addon-charts-utils.mjs"
@@ -50,6 +46,10 @@
50
46
  "types": "./components/arc-chart/index.d.ts",
51
47
  "default": "./fesm2022/taiga-ui-addon-charts-components-arc-chart.mjs"
52
48
  },
49
+ "./types": {
50
+ "types": "./types/index.d.ts",
51
+ "default": "./fesm2022/taiga-ui-addon-charts-types.mjs"
52
+ },
53
53
  "./components/axes": {
54
54
  "types": "./components/axes/index.d.ts",
55
55
  "default": "./fesm2022/taiga-ui-addon-charts-components-axes.mjs"