@taiga-ui/kit 4.62.0 → 4.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,7 @@ export declare class TuiPreviewZoom {
7
7
  zoomOut: string;
8
8
  reset: string;
9
9
  }>;
10
+ protected readonly sliderLabel$: import("rxjs").Observable<string>;
10
11
  min: number;
11
12
  max: number;
12
13
  value: number;
@@ -4,8 +4,9 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "@taiga-ui/core/directives/dropdown";
5
5
  import * as i2 from "@taiga-ui/cdk/directives/native-validator";
6
6
  import * as i3 from "@taiga-ui/core/components/textfield";
7
- export declare class TuiButtonSelect<T> extends TuiControl<T> implements TuiDataListHost<T> {
7
+ export declare class TuiButtonSelect<T> extends TuiControl<T | T[]> implements TuiDataListHost<T> {
8
8
  private readonly open;
9
+ private readonly handlers;
9
10
  readonly size = "s";
10
11
  handleOption(option: T): void;
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiButtonSelect<any>, never>;
@@ -2,6 +2,7 @@ import { AsyncPipe, NgIf, PercentPipe } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output, } from '@angular/core';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
5
+ import { TuiLet } from '@taiga-ui/cdk/directives/let';
5
6
  import { tuiClamp } from '@taiga-ui/cdk/utils/math';
6
7
  import { TuiButton } from '@taiga-ui/core/components/button';
7
8
  import { TuiHint } from '@taiga-ui/core/directives/hint';
@@ -18,6 +19,7 @@ class TuiPreviewZoom {
18
19
  constructor() {
19
20
  this.icons = inject(TUI_PREVIEW_ICONS);
20
21
  this.zoomTexts$ = inject(TUI_PREVIEW_ZOOM_TEXTS);
22
+ this.sliderLabel$ = this.zoomTexts$.pipe(map((texts) => `${texts.zoomOut} / ${texts.zoomIn}`));
21
23
  this.min = 0.5;
22
24
  this.max = 2;
23
25
  this.value = 1;
@@ -52,7 +54,7 @@ class TuiPreviewZoom {
52
54
  this.onModelChange(this.value < 1 ? 1 : this.value + STEP);
53
55
  }
54
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewZoom, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewZoom, isStandalone: true, selector: "tui-preview-zoom", inputs: { min: "min", max: "max", value: "value" }, outputs: { valueChange: "valueChange", reset: "reset" }, ngImport: i0, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i2.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: i3.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "component", type: i3.TuiSliderThumbLabel, selector: "[tuiSliderThumbLabel]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewZoom, isStandalone: true, selector: "tui-preview-zoom", inputs: { min: "min", max: "max", value: "value" }, outputs: { valueChange: "valueChange", reset: "reset" }, ngImport: i0, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label\n *tuiLet=\"(valueChange | async) || (value | percent) as sliderValueText\"\n tuiSliderThumbLabel\n >\n <div\n [tuiHint]=\"sliderValueText\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [attr.aria-label]=\"sliderLabel$ | async\"\n [attr.aria-valuetext]=\"sliderValueText\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n >\n {{ texts.reset }}\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i2.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: i3.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "component", type: i3.TuiSliderThumbLabel, selector: "[tuiSliderThumbLabel]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
56
58
  }
57
59
  export { TuiPreviewZoom };
58
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewZoom, decorators: [{
@@ -64,9 +66,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
64
66
  PercentPipe,
65
67
  TuiButton,
66
68
  TuiHint,
69
+ TuiLet,
67
70
  TuiPreviewAction,
68
71
  TuiSlider,
69
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"] }]
72
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label\n *tuiLet=\"(valueChange | async) || (value | percent) as sliderValueText\"\n tuiSliderThumbLabel\n >\n <div\n [tuiHint]=\"sliderValueText\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [attr.aria-label]=\"sliderLabel$ | async\"\n [attr.aria-valuetext]=\"sliderValueText\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n >\n {{ texts.reset }}\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"] }]
70
73
  }], propDecorators: { min: [{
71
74
  type: Input
72
75
  }], max: [{
@@ -78,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
78
81
  }], reset: [{
79
82
  type: Output
80
83
  }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy16b29tLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL3ByZXZpZXcvem9vbS9wcmV2aWV3LXpvb20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvcHJldmlldy96b29tL3ByZXZpZXctem9vbS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzFELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVqRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFFcEUsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBRWpCLE1BaUJhLGNBQWM7SUFqQjNCO1FBa0J1QixVQUFLLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBR3hELFFBQUcsR0FBRyxHQUFHLENBQUM7UUFHVixRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBR1IsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUdELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd6QyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVqQyxjQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzdDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDbkIsQ0FBQztLQW9DTDtJQWxDRyxJQUFjLGtCQUFrQjtRQUM1QixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBYyxtQkFBbUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQWMsZUFBZTtRQUN6QixPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNqQyxDQUFDO0lBRVMsYUFBYSxDQUFDLEtBQWE7UUFDakMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwRCxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hCLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFUyxPQUFPO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRVMsT0FBTztRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsTUFBTTtRQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDOytHQXpEUSxjQUFjO21HQUFkLGNBQWMseUxDdkMzQiwwMkRBK0RBLG1mRHJDUSxTQUFTLDZDQUNULFdBQVcsNndCQUNYLElBQUksd0ZBQ0osV0FBVyxnREFDWCxTQUFTLHNpQkFFVCxnQkFBZ0I7O1NBT1gsY0FBYzs0RkFBZCxjQUFjO2tCQWpCMUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sa0JBQWtCLFdBQ25CO3dCQUNMLFNBQVM7d0JBQ1QsV0FBVzt3QkFDWCxJQUFJO3dCQUNKLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsU0FBUztxQkFDWixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSVUsV0FBVztzQkFEMUIsTUFBTTtnQkFJUyxLQUFLO3NCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGUsIE5nSWYsIFBlcmNlbnRQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHt0dWlDbGFtcH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7VHVpQnV0dG9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQge1R1aUhpbnR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaGludCc7XG5pbXBvcnQge1R1aVNsaWRlcn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3NsaWRlcic7XG5pbXBvcnQge1RVSV9QUkVWSUVXX0lDT05TLCBUVUlfUFJFVklFV19aT09NX1RFWFRTfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge21hcCwgbWVyZ2UsIG9mLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aVByZXZpZXdBY3Rpb259IGZyb20gJy4uL2FjdGlvbi9wcmV2aWV3LWFjdGlvbi5kaXJlY3RpdmUnO1xuXG5jb25zdCBTVEVQID0gMC41O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLXByZXZpZXctem9vbScsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBQZXJjZW50UGlwZSxcbiAgICAgICAgVHVpQnV0dG9uLFxuICAgICAgICBUdWlIaW50LFxuICAgICAgICBUdWlQcmV2aWV3QWN0aW9uLFxuICAgICAgICBUdWlTbGlkZXIsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy16b29tLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ByZXZpZXctem9vbS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFR1aVByZXZpZXdab29tIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3QoVFVJX1BSRVZJRVdfSUNPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB6b29tVGV4dHMkID0gaW5qZWN0KFRVSV9QUkVWSUVXX1pPT01fVEVYVFMpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluID0gMC41O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4ID0gMjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlID0gMTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHJlc2V0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGhpbnRTaG93JCA9IHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IG1lcmdlKG9mKHRydWUpLCB0aW1lcigxMDAwKS5waXBlKG1hcChUVUlfRkFMU0VfSEFORExFUikpKSksXG4gICAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCBnZXQgbGVmdEJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gdGhpcy5taW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCByaWdodEJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb2xsYXBzZVZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID4gdGhpcy5taW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW9kZWxDaGFuZ2UodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGFtcGVkID0gdHVpQ2xhbXAodmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgaWYgKGNsYW1wZWQgPT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBjbGFtcGVkO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoY2xhbXBlZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uUmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXQuZW1pdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1pbnVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSAtIFNURVApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblBsdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlIDwgMSA/IDEgOiB0aGlzLnZhbHVlICsgU1RFUCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInpvb21UZXh0cyQgfCBhc3luYyBhcyB0ZXh0c1wiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwidC16b29tXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIHR1aVByZXZpZXdBY3Rpb25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LXNpZ25fbWludXNcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxlZnRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cImljb25zLnpvb21PdXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWludXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHRleHRzLnpvb21PdXQgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxsYWJlbCB0dWlTbGlkZXJUaHVtYkxhYmVsPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIFt0dWlIaW50XT1cImhpbnRcIlxuICAgICAgICAgICAgICAgIFt0dWlIaW50TWFudWFsXT1cIiEhKGhpbnRTaG93JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGludD5cbiAgICAgICAgICAgICAgICB7eyAodmFsdWVDaGFuZ2UgfCBhc3luYykgfHwgdmFsdWUgfCBwZXJjZW50IH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBzdGVwPVwiYW55XCJcbiAgICAgICAgICAgICAgICB0dWlTbGlkZXJcbiAgICAgICAgICAgICAgICB0dWlUaGVtZT1cImRhcmtcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXNsaWRlclwiXG4gICAgICAgICAgICAgICAgW21heF09XCJtYXhcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwibWluXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIHR1aVByZXZpZXdBY3Rpb25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LXNpZ25fcGx1c1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmlnaHRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cImljb25zLnpvb21JblwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25QbHVzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0ZXh0cy56b29tSW4gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICB0dWlIaW50QXBwZWFyYW5jZT1cImRhcmtcIlxuICAgICAgICB0dWlIaW50RGVzY3JpYmVcbiAgICAgICAgdHVpSGludERpcmVjdGlvbj1cInRvcC1yaWdodFwiXG4gICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgdHVpUHJldmlld0FjdGlvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJ0LXJlc2V0LWJ1dHRvblwiXG4gICAgICAgIFtjbGFzcy50LWludmlzaWJsZV09XCIhY29sbGFwc2VWaXNpYmxlXCJcbiAgICAgICAgW2ljb25TdGFydF09XCJpY29ucy56b29tUmVzZXRcIlxuICAgICAgICBbdHVpSGludF09XCJ0ZXh0cy5yZXNldFwiXG4gICAgICAgIChjbGljayk9XCJvblJlc2V0KClcIlxuICAgID48L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy16b29tLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL3ByZXZpZXcvem9vbS9wcmV2aWV3LXpvb20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvcHJldmlldy96b29tL3ByZXZpZXctem9vbS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDM0QsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFDLGdCQUFnQixFQUFD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QyxHQUFHO3NCQURULEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBSVMsS0FBSztzQkFEcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0lmLCBQZXJjZW50UGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VFVJX0ZBTFNFX0hBTkRMRVJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpTGV0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvbGV0JztcbmltcG9ydCB7dHVpQ2xhbXB9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5pbXBvcnQge1R1aUJ1dHRvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHtUdWlIaW50fSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2hpbnQnO1xuaW1wb3J0IHtUdWlTbGlkZXJ9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9zbGlkZXInO1xuaW1wb3J0IHtUVUlfUFJFVklFV19JQ09OUywgVFVJX1BSRVZJRVdfWk9PTV9URVhUU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHttYXAsIG1lcmdlLCBvZiwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRpbWVyfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUdWlQcmV2aWV3QWN0aW9ufSBmcm9tICcuLi9hY3Rpb24vcHJldmlldy1hY3Rpb24uZGlyZWN0aXZlJztcblxuY29uc3QgU1RFUCA9IDAuNTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1wcmV2aWV3LXpvb20nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgUGVyY2VudFBpcGUsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpSGludCxcbiAgICAgICAgVHVpTGV0LFxuICAgICAgICBUdWlQcmV2aWV3QWN0aW9uLFxuICAgICAgICBUdWlTbGlkZXIsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy16b29tLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ByZXZpZXctem9vbS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFR1aVByZXZpZXdab29tIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3QoVFVJX1BSRVZJRVdfSUNPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB6b29tVGV4dHMkID0gaW5qZWN0KFRVSV9QUkVWSUVXX1pPT01fVEVYVFMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzbGlkZXJMYWJlbCQgPSB0aGlzLnpvb21UZXh0cyQucGlwZShcbiAgICAgICAgbWFwKCh0ZXh0cykgPT4gYCR7dGV4dHMuem9vbU91dH0gLyAke3RleHRzLnpvb21Jbn1gKSxcbiAgICApO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluID0gMC41O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4ID0gMjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlID0gMTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHJlc2V0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGhpbnRTaG93JCA9IHRoaXMudmFsdWVDaGFuZ2UucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IG1lcmdlKG9mKHRydWUpLCB0aW1lcigxMDAwKS5waXBlKG1hcChUVUlfRkFMU0VfSEFORExFUikpKSksXG4gICAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCBnZXQgbGVmdEJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gdGhpcy5taW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCByaWdodEJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSA9PT0gdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb2xsYXBzZVZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID4gdGhpcy5taW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW9kZWxDaGFuZ2UodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGFtcGVkID0gdHVpQ2xhbXAodmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgaWYgKGNsYW1wZWQgPT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBjbGFtcGVkO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoY2xhbXBlZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uUmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXQuZW1pdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1pbnVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy52YWx1ZSAtIFNURVApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblBsdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlIDwgMSA/IDEgOiB0aGlzLnZhbHVlICsgU1RFUCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInpvb21UZXh0cyQgfCBhc3luYyBhcyB0ZXh0c1wiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwidC16b29tXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIHR1aVByZXZpZXdBY3Rpb25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LXNpZ25fbWludXNcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxlZnRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cImljb25zLnpvb21PdXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWludXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHRleHRzLnpvb21PdXQgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgKnR1aUxldD1cIih2YWx1ZUNoYW5nZSB8IGFzeW5jKSB8fCAodmFsdWUgfCBwZXJjZW50KSBhcyBzbGlkZXJWYWx1ZVRleHRcIlxuICAgICAgICAgICAgdHVpU2xpZGVyVGh1bWJMYWJlbFxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW3R1aUhpbnRdPVwic2xpZGVyVmFsdWVUZXh0XCJcbiAgICAgICAgICAgICAgICBbdHVpSGludE1hbnVhbF09XCIhIShoaW50U2hvdyQgfCBhc3luYylcIlxuICAgICAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBzdGVwPVwiYW55XCJcbiAgICAgICAgICAgICAgICB0dWlTbGlkZXJcbiAgICAgICAgICAgICAgICB0dWlUaGVtZT1cImRhcmtcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LXNsaWRlclwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzbGlkZXJMYWJlbCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZXRleHRdPVwic2xpZGVyVmFsdWVUZXh0XCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgdHVpUHJldmlld0FjdGlvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtc2lnbl9wbHVzXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyaWdodEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpY29uU3RhcnRdPVwiaWNvbnMuem9vbUluXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblBsdXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHRleHRzLnpvb21JbiB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR1aUhpbnRBcHBlYXJhbmNlPVwiZGFya1wiXG4gICAgICAgIHR1aUhpbnREZXNjcmliZVxuICAgICAgICB0dWlIaW50RGlyZWN0aW9uPVwidG9wLXJpZ2h0XCJcbiAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICB0dWlQcmV2aWV3QWN0aW9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInQtcmVzZXQtYnV0dG9uXCJcbiAgICAgICAgW2NsYXNzLnQtaW52aXNpYmxlXT1cIiFjb2xsYXBzZVZpc2libGVcIlxuICAgICAgICBbaWNvblN0YXJ0XT1cImljb25zLnpvb21SZXNldFwiXG4gICAgICAgIFt0dWlIaW50XT1cInRleHRzLnJlc2V0XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uUmVzZXQoKVwiXG4gICAgPlxuICAgICAgICB7eyB0ZXh0cy5yZXNldCB9fVxuICAgIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -37,7 +37,7 @@ class TuiSwitch {
37
37
  return this.showIcons && icon ? `url(${resolver(icon)})` : null;
38
38
  }
39
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwitch, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSwitch, isStandalone: true, selector: "input[type=\"checkbox\"][tuiSwitch]", inputs: { size: "size", showIcons: "showIcons" }, host: { attributes: { "role": "switch" }, properties: { "disabled": "!control || control.disabled", "attr.data-size": "size", "class._readonly": "!control", "style.--t-checked-icon": "icon" } }, hostDirectives: [{ directive: i1.TuiAppearance, inputs: ["tuiAppearanceState", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceFocus", "tuiAppearanceMode", "tuiAppearanceMode"] }, { directive: i2.TuiNativeValidator }], ngImport: i0, template: '', isInline: true, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1.125rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{content:\"\";position:absolute;block-size:100%;inline-size:1.5rem;transition-property:transform}[tuiSwitch]:before{display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;inline-size:1.375rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}[tuiSwitch]:invalid:not([data-mode]),[tuiSwitch][data-mode~=invalid]{color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSwitch, isStandalone: true, selector: "input[type=\"checkbox\"][tuiSwitch]", inputs: { size: "size", showIcons: "showIcons" }, host: { attributes: { "role": "switch" }, properties: { "disabled": "!control || control.disabled", "attr.data-size": "size", "class._readonly": "!control", "style.--t-checked-icon": "icon" } }, hostDirectives: [{ directive: i1.TuiAppearance, inputs: ["tuiAppearanceState", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceFocus", "tuiAppearanceMode", "tuiAppearanceMode"] }, { directive: i2.TuiNativeValidator }], ngImport: i0, template: '', isInline: true, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{content:\"\";position:absolute;block-size:100%;inline-size:1.5rem;transition-property:transform}[tuiSwitch]:before{left:.125rem;display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}[tuiSwitch]:invalid:not([data-mode]),[tuiSwitch][data-mode~=invalid]{color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
41
41
  }
42
42
  export { TuiSwitch };
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwitch, decorators: [{
@@ -54,7 +54,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
54
54
  '[attr.data-size]': 'size',
55
55
  '[class._readonly]': '!control',
56
56
  '[style.--t-checked-icon]': 'icon',
57
- }, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1.125rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{content:\"\";position:absolute;block-size:100%;inline-size:1.5rem;transition-property:transform}[tuiSwitch]:before{display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;inline-size:1.375rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}[tuiSwitch]:invalid:not([data-mode]),[tuiSwitch][data-mode~=invalid]{color:#fff}\n"] }]
57
+ }, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{content:\"\";position:absolute;block-size:100%;inline-size:1.5rem;transition-property:transform}[tuiSwitch]:before{left:.125rem;display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}[tuiSwitch]:invalid:not([data-mode]),[tuiSwitch][data-mode~=invalid]{color:#fff}\n"] }]
58
58
  }], propDecorators: { size: [{
59
59
  type: Input
60
60
  }], showIcons: [{
@@ -1,9 +1,11 @@
1
- import { Directive } from '@angular/core';
1
+ import { Directive, inject } from '@angular/core';
2
2
  import { TuiControl } from '@taiga-ui/cdk/classes';
3
3
  import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator';
4
+ import { tuiArrayToggle } from '@taiga-ui/cdk/utils/miscellaneous';
4
5
  import { tuiAsDataListHost, tuiAsOptionContent, } from '@taiga-ui/core/components/data-list';
5
6
  import { TuiWithTextfieldDropdown } from '@taiga-ui/core/components/textfield';
6
7
  import { TuiDropdownDirective, tuiDropdownOpen, tuiDropdownOptionsProvider, TuiWithDropdownOpen, } from '@taiga-ui/core/directives/dropdown';
8
+ import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
7
9
  import { TuiSelectOption } from '@taiga-ui/kit/components/select';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "@taiga-ui/core/directives/dropdown";
@@ -13,11 +15,18 @@ class TuiButtonSelect extends TuiControl {
13
15
  constructor() {
14
16
  super(...arguments);
15
17
  this.open = tuiDropdownOpen();
18
+ this.handlers = inject(TUI_ITEMS_HANDLERS);
16
19
  this.size = 's';
17
20
  }
18
21
  handleOption(option) {
19
- this.onChange(option);
20
- this.open.set(false);
22
+ if (Array.isArray(this.control.value)) {
23
+ const result = tuiArrayToggle(this.control.value, option, this.handlers.identityMatcher());
24
+ this.onChange(result);
25
+ }
26
+ else {
27
+ this.onChange(option);
28
+ this.open.set(false);
29
+ }
21
30
  }
22
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiButtonSelect, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
23
32
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiButtonSelect, isStandalone: true, selector: "button[tuiButtonSelect]", providers: [
@@ -45,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
45
54
  ],
46
55
  }]
47
56
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXNlbGVjdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvZGlyZWN0aXZlcy9idXR0b24tc2VsZWN0L2J1dHRvbi1zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsa0JBQWtCLEdBRXJCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUNILG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUN0QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7QUFFaEUsTUFlYSxlQUFtQixTQUFRLFVBQWE7SUFmckQ7O1FBZ0JxQixTQUFJLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFFMUIsU0FBSSxHQUFHLEdBQUcsQ0FBQztLQU05QjtJQUpVLFlBQVksQ0FBQyxNQUFTO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQzsrR0FSUSxlQUFlO21HQUFmLGVBQWUsc0VBWmI7WUFDUCxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7WUFDbkMsaUJBQWlCLENBQUMsZUFBZSxDQUFDO1lBQ2xDLDBCQUEwQixDQUFDLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxDQUFDO1NBQy9DOztTQVFRLGVBQWU7NEZBQWYsZUFBZTtrQkFmM0IsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsU0FBUyxFQUFFO3dCQUNQLGtCQUFrQixDQUFDLGVBQWUsQ0FBQzt3QkFDbkMsaUJBQWlCLGlCQUFpQjt3QkFDbEMsMEJBQTBCLENBQUMsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLENBQUM7cUJBQy9DO29CQUNELGNBQWMsRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQix3QkFBd0I7cUJBQzNCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlOYXRpdmVWYWxpZGF0b3J9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9uYXRpdmUtdmFsaWRhdG9yJztcbmltcG9ydCB7XG4gICAgdHVpQXNEYXRhTGlzdEhvc3QsXG4gICAgdHVpQXNPcHRpb25Db250ZW50LFxuICAgIHR5cGUgVHVpRGF0YUxpc3RIb3N0LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2RhdGEtbGlzdCc7XG5pbXBvcnQge1R1aVdpdGhUZXh0ZmllbGREcm9wZG93bn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy90ZXh0ZmllbGQnO1xuaW1wb3J0IHtcbiAgICBUdWlEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICB0dWlEcm9wZG93bk9wZW4sXG4gICAgdHVpRHJvcGRvd25PcHRpb25zUHJvdmlkZXIsXG4gICAgVHVpV2l0aERyb3Bkb3duT3Blbixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bic7XG5pbXBvcnQge1R1aVNlbGVjdE9wdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL3NlbGVjdCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdidXR0b25bdHVpQnV0dG9uU2VsZWN0XScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzT3B0aW9uQ29udGVudChUdWlTZWxlY3RPcHRpb24pLFxuICAgICAgICB0dWlBc0RhdGFMaXN0SG9zdChUdWlCdXR0b25TZWxlY3QpLFxuICAgICAgICB0dWlEcm9wZG93bk9wdGlvbnNQcm92aWRlcih7YWxpZ246ICdyaWdodCd9KSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIFR1aURyb3Bkb3duRGlyZWN0aXZlLFxuICAgICAgICBUdWlOYXRpdmVWYWxpZGF0b3IsXG4gICAgICAgIFR1aVdpdGhEcm9wZG93bk9wZW4sXG4gICAgICAgIFR1aVdpdGhUZXh0ZmllbGREcm9wZG93bixcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlCdXR0b25TZWxlY3Q8VD4gZXh0ZW5kcyBUdWlDb250cm9sPFQ+IGltcGxlbWVudHMgVHVpRGF0YUxpc3RIb3N0PFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wZW4gPSB0dWlEcm9wZG93bk9wZW4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBzaXplID0gJ3MnO1xuXG4gICAgcHVibGljIGhhbmRsZU9wdGlvbihvcHRpb246IFQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShvcHRpb24pO1xuICAgICAgICB0aGlzLm9wZW4uc2V0KGZhbHNlKTtcbiAgICB9XG59XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXNlbGVjdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvZGlyZWN0aXZlcy9idXR0b24tc2VsZWN0L2J1dHRvbi1zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxFQUNILGlCQUFpQixFQUNqQixrQkFBa0IsR0FFckIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsbUJBQW1CLEdBQ3RCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQUVoRSxNQWVhLGVBQ1QsU0FBUSxVQUFtQjtJQWhCL0I7O1FBbUJxQixTQUFJLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDekIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXZDLFNBQUksR0FBRyxHQUFHLENBQUM7S0FnQjlCO0lBZFUsWUFBWSxDQUFDLE1BQVM7UUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQVksRUFDekIsTUFBTSxFQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQ2xDLENBQUM7WUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pCO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQzsrR0F0QlEsZUFBZTttR0FBZixlQUFlLHNFQVpiO1lBQ1Asa0JBQWtCLENBQUMsZUFBZSxDQUFDO1lBQ25DLGlCQUFpQixDQUFDLGVBQWUsQ0FBQztZQUNsQywwQkFBMEIsQ0FBQyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQztTQUMvQzs7U0FRUSxlQUFlOzRGQUFmLGVBQWU7a0JBZjNCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFNBQVMsRUFBRTt3QkFDUCxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7d0JBQ25DLGlCQUFpQixpQkFBaUI7d0JBQ2xDLDBCQUEwQixDQUFDLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxDQUFDO3FCQUMvQztvQkFDRCxjQUFjLEVBQUU7d0JBQ1osb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3FCQUMzQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlOYXRpdmVWYWxpZGF0b3J9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9uYXRpdmUtdmFsaWRhdG9yJztcbmltcG9ydCB7dHVpQXJyYXlUb2dnbGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1xuICAgIHR1aUFzRGF0YUxpc3RIb3N0LFxuICAgIHR1aUFzT3B0aW9uQ29udGVudCxcbiAgICB0eXBlIFR1aURhdGFMaXN0SG9zdCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QnO1xuaW1wb3J0IHtUdWlXaXRoVGV4dGZpZWxkRHJvcGRvd259IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7XG4gICAgVHVpRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgdHVpRHJvcGRvd25PcGVuLFxuICAgIHR1aURyb3Bkb3duT3B0aW9uc1Byb3ZpZGVyLFxuICAgIFR1aVdpdGhEcm9wZG93bk9wZW4sXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24nO1xuaW1wb3J0IHtUVUlfSVRFTVNfSEFORExFUlN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaXRlbXMtaGFuZGxlcnMnO1xuaW1wb3J0IHtUdWlTZWxlY3RPcHRpb259IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9zZWxlY3QnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnYnV0dG9uW3R1aUJ1dHRvblNlbGVjdF0nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc09wdGlvbkNvbnRlbnQoVHVpU2VsZWN0T3B0aW9uKSxcbiAgICAgICAgdHVpQXNEYXRhTGlzdEhvc3QoVHVpQnV0dG9uU2VsZWN0KSxcbiAgICAgICAgdHVpRHJvcGRvd25PcHRpb25zUHJvdmlkZXIoe2FsaWduOiAncmlnaHQnfSksXG4gICAgXSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICBUdWlEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICAgICAgVHVpTmF0aXZlVmFsaWRhdG9yLFxuICAgICAgICBUdWlXaXRoRHJvcGRvd25PcGVuLFxuICAgICAgICBUdWlXaXRoVGV4dGZpZWxkRHJvcGRvd24sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQnV0dG9uU2VsZWN0PFQ+XG4gICAgZXh0ZW5kcyBUdWlDb250cm9sPFQgfCBUW10+XG4gICAgaW1wbGVtZW50cyBUdWlEYXRhTGlzdEhvc3Q8VD5cbntcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wZW4gPSB0dWlEcm9wZG93bk9wZW4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhbmRsZXJzID0gaW5qZWN0KFRVSV9JVEVNU19IQU5ETEVSUyk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2l6ZSA9ICdzJztcblxuICAgIHB1YmxpYyBoYW5kbGVPcHRpb24ob3B0aW9uOiBUKTogdm9pZCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHR1aUFycmF5VG9nZ2xlKFxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC52YWx1ZSBhcyBUW10sXG4gICAgICAgICAgICAgICAgb3B0aW9uLFxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlcnMuaWRlbnRpdHlNYXRjaGVyKCksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG9wdGlvbik7XG4gICAgICAgICAgICB0aGlzLm9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -20,9 +20,10 @@ import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
20
20
  import { tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
21
21
  import * as i2 from '@taiga-ui/core/directives/hint';
22
22
  import { TuiHint } from '@taiga-ui/core/directives/hint';
23
- import { switchMap, merge, of, timer, map, startWith, BehaviorSubject, combineLatest } from 'rxjs';
23
+ import { map, switchMap, merge, of, timer, startWith, BehaviorSubject, combineLatest } from 'rxjs';
24
24
  import * as i1$1 from '@angular/forms';
25
25
  import { FormsModule } from '@angular/forms';
26
+ import { TuiLet } from '@taiga-ui/cdk/directives/let';
26
27
  import * as i3 from '@taiga-ui/kit/components/slider';
27
28
  import { TuiSlider } from '@taiga-ui/kit/components/slider';
28
29
 
@@ -147,6 +148,7 @@ class TuiPreviewZoom {
147
148
  constructor() {
148
149
  this.icons = inject(TUI_PREVIEW_ICONS);
149
150
  this.zoomTexts$ = inject(TUI_PREVIEW_ZOOM_TEXTS);
151
+ this.sliderLabel$ = this.zoomTexts$.pipe(map((texts) => `${texts.zoomOut} / ${texts.zoomIn}`));
150
152
  this.min = 0.5;
151
153
  this.max = 2;
152
154
  this.value = 1;
@@ -181,7 +183,7 @@ class TuiPreviewZoom {
181
183
  this.onModelChange(this.value < 1 ? 1 : this.value + STEP);
182
184
  }
183
185
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewZoom, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
184
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewZoom, isStandalone: true, selector: "tui-preview-zoom", inputs: { min: "min", max: "max", value: "value" }, outputs: { valueChange: "valueChange", reset: "reset" }, ngImport: i0, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i2.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: i3.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "component", type: i3.TuiSliderThumbLabel, selector: "[tuiSliderThumbLabel]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPreviewZoom, isStandalone: true, selector: "tui-preview-zoom", inputs: { min: "min", max: "max", value: "value" }, outputs: { valueChange: "valueChange", reset: "reset" }, ngImport: i0, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label\n *tuiLet=\"(valueChange | async) || (value | percent) as sliderValueText\"\n tuiSliderThumbLabel\n >\n <div\n [tuiHint]=\"sliderValueText\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [attr.aria-label]=\"sliderLabel$ | async\"\n [attr.aria-valuetext]=\"sliderValueText\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n >\n {{ texts.reset }}\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i2.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: i3.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "component", type: i3.TuiSliderThumbLabel, selector: "[tuiSliderThumbLabel]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
185
187
  }
186
188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPreviewZoom, decorators: [{
187
189
  type: Component,
@@ -192,9 +194,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
192
194
  PercentPipe,
193
195
  TuiButton,
194
196
  TuiHint,
197
+ TuiLet,
195
198
  TuiPreviewAction,
196
199
  TuiSlider,
197
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"] }]
200
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label\n *tuiLet=\"(valueChange | async) || (value | percent) as sliderValueText\"\n tuiSliderThumbLabel\n >\n <div\n [tuiHint]=\"sliderValueText\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [attr.aria-label]=\"sliderLabel$ | async\"\n [attr.aria-valuetext]=\"sliderValueText\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n >\n {{ texts.reset }}\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-text-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"] }]
198
201
  }], propDecorators: { min: [{
199
202
  type: Input
200
203
  }], max: [{
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-preview.mjs","sources":["../../../projects/kit/components/preview/action/preview-action.directive.ts","../../../projects/kit/components/preview/dialog/preview-dialog.component.ts","../../../projects/kit/components/preview/dialog/preview-dialog.service.ts","../../../projects/kit/components/preview/dialog/preview-dialog.directive.ts","../../../projects/kit/components/preview/pagination/preview-pagination.component.ts","../../../projects/kit/components/preview/pagination/preview-pagination.template.html","../../../projects/kit/components/preview/zoom/preview-zoom.component.ts","../../../projects/kit/components/preview/zoom/preview-zoom.template.html","../../../projects/kit/components/preview/preview.component.ts","../../../projects/kit/components/preview/preview.template.html","../../../projects/kit/components/preview/title/preview-title.component.ts","../../../projects/kit/components/preview/preview.ts","../../../projects/kit/components/preview/taiga-ui-kit-components-preview.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\n@Directive({\n standalone: true,\n selector: '[tuiPreviewAction]',\n providers: [\n tuiButtonOptionsProvider({\n appearance: 'preview-action',\n size: 's',\n }),\n ],\n host: {\n '[style.border-radius.rem]': '100',\n },\n})\nexport class TuiPreviewAction {}\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {type TuiPopover} from '@taiga-ui/cdk/services';\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-dialog',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n {{ text }}\n </ng-container>\n `,\n styleUrls: ['./preview-dialog.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiAnimated],\n host: {\n '(document:keydown.esc.prevent)': 'context.$implicit.complete()',\n },\n})\nexport class TuiPreviewDialog {\n protected readonly context = injectContext<TuiPopover<void, void>>();\n}\n","import {Injectable} from '@angular/core';\nimport {TuiPopoverService} from '@taiga-ui/cdk/services';\nimport {TUI_DIALOGS} from '@taiga-ui/core/components/dialog';\n\nimport {TuiPreviewDialog} from './preview-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new TuiPreviewDialogService(TUI_DIALOGS, TuiPreviewDialog),\n})\nexport class TuiPreviewDialogService extends TuiPopoverService<unknown> {}\n","import {Directive} from '@angular/core';\nimport {TuiPopoverDirective} from '@taiga-ui/cdk/directives/popover';\nimport {tuiAsPopover} from '@taiga-ui/cdk/services';\n\nimport {TuiPreviewDialogService} from './preview-dialog.service';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiPreviewDialog]',\n inputs: ['open: tuiPreviewDialog'],\n outputs: ['openChange: tuiPreviewDialogChange'],\n providers: [tuiAsPopover(TuiPreviewDialogService)],\n})\nexport class TuiPreviewDialogDirective extends TuiPopoverDirective<unknown> {}\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_PAGINATION_TEXTS, TUI_PREVIEW_ICONS} from '@taiga-ui/kit/tokens';\n\nimport {TuiPreviewAction} from '../action/preview-action.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-pagination',\n imports: [AsyncPipe, NgIf, TuiButton, TuiPreviewAction],\n templateUrl: './preview-pagination.template.html',\n styleUrls: ['./preview-pagination.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.arrowRight.prevent)': 'onArrowClick(1)',\n '(document:keydown.arrowLeft.prevent)': 'onArrowClick(-1)',\n },\n})\nexport class TuiPreviewPagination {\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly texts$ = inject(TUI_PAGINATION_TEXTS);\n\n @Input()\n public length = 1;\n\n @Input()\n public index = 0;\n\n @Output()\n public readonly indexChange = new EventEmitter<number>();\n\n public onArrowClick(step: number): void {\n this.updateIndex(tuiClamp(this.index + step, 0, this.length - 1));\n }\n\n protected get leftButtonDisabled(): boolean {\n return this.index === 0;\n }\n\n protected get rightButtonDisabled(): boolean {\n return this.index === this.length - 1;\n }\n\n private updateIndex(index: number): void {\n if (this.index === index) {\n return;\n }\n\n this.index = index;\n this.indexChange.emit(index);\n }\n}\n","<ng-container *ngIf=\"texts$ | async as texts\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow t-arrow_left\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.prev\"\n (click)=\"onArrowClick(-1)\"\n >\n {{ texts[0] }}\n </button>\n {{ index + 1 }}/{{ length }}\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow t-arrow_right\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.next\"\n (click)=\"onArrowClick(1)\"\n >\n {{ texts[1] }}\n </button>\n</ng-container>\n","import {AsyncPipe, NgIf, PercentPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {TuiSlider} from '@taiga-ui/kit/components/slider';\nimport {TUI_PREVIEW_ICONS, TUI_PREVIEW_ZOOM_TEXTS} from '@taiga-ui/kit/tokens';\nimport {map, merge, of, startWith, switchMap, timer} from 'rxjs';\n\nimport {TuiPreviewAction} from '../action/preview-action.directive';\n\nconst STEP = 0.5;\n\n@Component({\n standalone: true,\n selector: 'tui-preview-zoom',\n imports: [\n AsyncPipe,\n FormsModule,\n NgIf,\n PercentPipe,\n TuiButton,\n TuiHint,\n TuiPreviewAction,\n TuiSlider,\n ],\n templateUrl: './preview-zoom.template.html',\n styleUrls: ['./preview-zoom.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewZoom {\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly zoomTexts$ = inject(TUI_PREVIEW_ZOOM_TEXTS);\n\n @Input()\n public min = 0.5;\n\n @Input()\n public max = 2;\n\n @Input()\n public value = 1;\n\n @Output()\n public readonly valueChange = new EventEmitter<number>();\n\n @Output()\n public readonly reset = new EventEmitter<void>();\n\n public readonly hintShow$ = this.valueChange.pipe(\n switchMap(() => merge(of(true), timer(1000).pipe(map(TUI_FALSE_HANDLER)))),\n startWith(false),\n );\n\n protected get leftButtonDisabled(): boolean {\n return this.value === this.min;\n }\n\n protected get rightButtonDisabled(): boolean {\n return this.value === this.max;\n }\n\n protected get collapseVisible(): boolean {\n return this.value > this.min;\n }\n\n protected onModelChange(value: number): void {\n const clamped = tuiClamp(value, this.min, this.max);\n\n if (clamped === this.value) {\n return;\n }\n\n this.value = clamped;\n this.valueChange.emit(clamped);\n }\n\n protected onReset(): void {\n this.reset.emit();\n }\n\n protected onMinus(): void {\n this.onModelChange(this.value - STEP);\n }\n\n protected onPlus(): void {\n this.onModelChange(this.value < 1 ? 1 : this.value + STEP);\n }\n}\n","<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n [tuiHint]=\"hint\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <ng-template #hint>\n {{ (valueChange | async) || value | percent }}\n </ng-template>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n ></button>\n</ng-container>\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n} from '@angular/core';\nimport {WaMutationObserver} from '@ng-web-apis/mutation-observer';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiPan} from '@taiga-ui/cdk/directives/pan';\nimport {TuiZoom, type TuiZoomEvent} from '@taiga-ui/cdk/directives/zoom';\nimport {tuiDragAndDropFrom, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {TUI_PREVIEW_ICONS, TUI_PREVIEW_TEXTS} from '@taiga-ui/kit/tokens';\nimport {BehaviorSubject, combineLatest, map, merge, startWith} from 'rxjs';\n\nimport {TuiPreviewAction} from './action/preview-action.directive';\nimport {TuiPreviewZoom} from './zoom/preview-zoom.component';\n\nconst EMPTY_COORDINATES: [number, number] = [0, 0];\nconst ROTATION_ANGLE = 90;\n\n@Component({\n standalone: true,\n selector: 'tui-preview',\n imports: [\n AsyncPipe,\n NgIf,\n TuiButton,\n TuiHint,\n TuiPan,\n TuiPreviewAction,\n TuiPreviewZoom,\n TuiZoom,\n WaMutationObserver,\n WaResizeObserver,\n ],\n templateUrl: './preview.template.html',\n styleUrls: ['./preview.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewComponent {\n private readonly el = tuiInjectElement();\n\n protected minZoom = 1;\n protected width = 0;\n protected height = 0;\n protected readonly texts$ = inject(TUI_PREVIEW_TEXTS);\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly zoom$ = new BehaviorSubject<number>(this.minZoom);\n protected readonly rotation$ = new BehaviorSubject<number>(0);\n protected readonly coordinates$ = new BehaviorSubject<readonly [number, number]>(\n EMPTY_COORDINATES,\n );\n\n protected readonly transitioned$ = merge(\n tuiDragAndDropFrom(this.el).pipe(map(({stage}) => stage !== 'continues')),\n tuiTypedFromEvent(this.el, 'touchmove', {\n passive: true,\n }).pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'wheel', {passive: true}).pipe(map(TUI_FALSE_HANDLER)),\n );\n\n protected readonly cursor$ = tuiDragAndDropFrom(this.el).pipe(\n map(({stage}) => (stage === 'continues' ? 'grabbing' : 'initial')),\n startWith('initial'),\n );\n\n protected readonly wrapperTransform$ = combineLatest([\n this.coordinates$.pipe(map(([x, y]) => `${tuiPx(x)}, ${tuiPx(y)}`)),\n this.zoom$,\n this.rotation$,\n ]).pipe(\n map(\n ([translate, zoom, rotation]) =>\n `translate(${translate}) scale(${zoom}) rotate(${rotation}deg)`,\n ),\n );\n\n @Input()\n public zoomable = true;\n\n @Input()\n public rotatable = false;\n\n @Input()\n public initialScale = 0.8;\n\n protected rotate(): void {\n this.rotation$.next(this.rotation$.value - ROTATION_ANGLE);\n }\n\n protected onPan(delta: readonly [number, number]): void {\n this.coordinates$.next(\n this.getGuardedCoordinates(\n this.coordinates$.value[0] + delta[0],\n this.coordinates$.value[1] + delta[1],\n ),\n );\n }\n\n protected onMutation(contentWrapper: HTMLElement): void {\n const {clientWidth, clientHeight} = contentWrapper;\n\n this.refresh(clientWidth, clientHeight);\n }\n\n protected onZoom({clientX, clientY, delta}: TuiZoomEvent): void {\n if (this.zoomable) {\n this.processZoom(clientX, clientY, delta);\n }\n }\n\n protected onResize([entry]: readonly ResizeObserverEntry[]): void {\n if (entry?.contentRect) {\n this.refresh(entry.contentRect.width, entry.contentRect.height);\n this.cdr.detectChanges();\n }\n }\n\n protected reset(): void {\n this.zoom$.next(this.minZoom);\n this.coordinates$.next(EMPTY_COORDINATES);\n }\n\n protected setZoom(zoom: number): void {\n this.zoom$.next(zoom);\n const [x, y] = this.coordinates$.value;\n\n this.coordinates$.next(this.getGuardedCoordinates(x, y));\n }\n\n private get offsets(): {offsetX: number; offsetY: number} {\n const offsetX = ((this.zoom$.value - this.minZoom) * this.width) / 2;\n const offsetY = ((this.zoom$.value - this.minZoom) * this.height) / 2;\n\n return {offsetX, offsetY};\n }\n\n private calculateMinZoom(\n contentHeight: number,\n contentWidth: number,\n boxHeight: number,\n boxWidth: number,\n ): number {\n const bigSize =\n contentHeight > boxHeight * this.initialScale ||\n contentWidth > boxWidth * this.initialScale;\n const {clientHeight, clientWidth} = this.el;\n\n return bigSize\n ? tuiRound(\n Math.min(\n (clientHeight * this.initialScale) / contentHeight,\n (clientWidth * this.initialScale) / contentWidth,\n ),\n 2,\n )\n : 1;\n }\n\n private refresh(width: number, height: number): void {\n this.width = width;\n this.height = height;\n this.minZoom = this.calculateMinZoom(\n height,\n width,\n this.el.clientHeight,\n this.el.clientWidth,\n );\n this.zoom$.next(this.minZoom);\n this.coordinates$.next(EMPTY_COORDINATES);\n this.rotation$.next(0);\n }\n\n private processZoom(clientX: number, clientY: number, delta: number): void {\n const oldScale = this.zoom$.value;\n const newScale = tuiClamp(oldScale + delta, this.minZoom, 2);\n\n const center = this.getScaleCenter(\n {clientX, clientY},\n this.coordinates$.value,\n this.zoom$.value,\n );\n\n const moveX = center[0] * oldScale - center[0] * newScale;\n const moveY = center[1] * oldScale - center[1] * newScale;\n\n this.zoom$.next(newScale);\n this.coordinates$.next(\n this.getGuardedCoordinates(\n this.coordinates$.value[0] + moveX,\n this.coordinates$.value[1] + moveY,\n ),\n );\n }\n\n private getGuardedCoordinates(x: number, y: number): readonly [number, number] {\n const {offsetX, offsetY} = this.offsets;\n\n return [tuiClamp(x, -offsetX, offsetX), tuiClamp(y, -offsetY, offsetY)];\n }\n\n private getScaleCenter(\n {clientX, clientY}: {clientX: number; clientY: number},\n [x, y]: readonly [number, number],\n scale: number,\n ): [number, number] {\n return [\n (clientX - x - this.el.offsetWidth / 2) / scale,\n (clientY - y - this.el.offsetHeight / 2) / scale,\n ];\n }\n}\n","<ng-container *ngIf=\"texts$ | async as texts\">\n <section\n #contentWrapper\n attributeFilter=\"src\"\n characterData\n childList\n subtree\n class=\"t-wrapper\"\n [class.t-not-interactive-content]=\"zoomable\"\n [class.t-transitive]=\"transitioned$ | async\"\n [style.cursor]=\"cursor$ | async\"\n [style.transform]=\"wrapperTransform$ | async\"\n (tuiPan)=\"onPan($event)\"\n (tuiZoom)=\"onZoom($event)\"\n (waMutationObserver)=\"onMutation(contentWrapper)\"\n (waResizeObserver)=\"onResize($event)\"\n >\n <ng-content />\n </section>\n\n <header class=\"t-header\">\n <div class=\"t-title\">\n <ng-content select=\"tui-preview-title\" />\n </div>\n\n <ng-content select=\"tui-preview-pagination\" />\n\n <div class=\"t-actions\">\n <ng-content select=\"[tuiPreviewAction]\" />\n </div>\n </header>\n\n <footer class=\"t-footer\">\n <button\n *ngIf=\"rotatable\"\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-rotate-button\"\n [iconStart]=\"icons.rotate\"\n [tuiHint]=\"texts.rotate\"\n (click)=\"rotate()\"\n ></button>\n\n <tui-preview-zoom\n *ngIf=\"zoomable\"\n [min]=\"minZoom\"\n [value]=\"(zoom$ | async) || 1\"\n (reset)=\"reset()\"\n (valueChange)=\"setZoom($event)\"\n />\n </footer>\n</ng-container>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-title',\n template: `\n <ng-content />\n `,\n styleUrls: ['./preview-title.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewTitle {}\n","import {TuiPreviewAction} from './action/preview-action.directive';\nimport {TuiPreviewPagination} from './pagination/preview-pagination.component';\nimport {TuiPreviewComponent} from './preview.component';\nimport {TuiPreviewTitle} from './title/preview-title.component';\nimport {TuiPreviewZoom} from './zoom/preview-zoom.component';\n\nexport const TuiPreview = [\n TuiPreviewComponent,\n TuiPreviewTitle,\n TuiPreviewPagination,\n TuiPreviewAction,\n TuiPreviewZoom,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-preview.mjs","sources":["../../../projects/kit/components/preview/action/preview-action.directive.ts","../../../projects/kit/components/preview/dialog/preview-dialog.component.ts","../../../projects/kit/components/preview/dialog/preview-dialog.service.ts","../../../projects/kit/components/preview/dialog/preview-dialog.directive.ts","../../../projects/kit/components/preview/pagination/preview-pagination.component.ts","../../../projects/kit/components/preview/pagination/preview-pagination.template.html","../../../projects/kit/components/preview/zoom/preview-zoom.component.ts","../../../projects/kit/components/preview/zoom/preview-zoom.template.html","../../../projects/kit/components/preview/preview.component.ts","../../../projects/kit/components/preview/preview.template.html","../../../projects/kit/components/preview/title/preview-title.component.ts","../../../projects/kit/components/preview/preview.ts","../../../projects/kit/components/preview/taiga-ui-kit-components-preview.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\n@Directive({\n standalone: true,\n selector: '[tuiPreviewAction]',\n providers: [\n tuiButtonOptionsProvider({\n appearance: 'preview-action',\n size: 's',\n }),\n ],\n host: {\n '[style.border-radius.rem]': '100',\n },\n})\nexport class TuiPreviewAction {}\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {type TuiPopover} from '@taiga-ui/cdk/services';\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-dialog',\n imports: [PolymorpheusOutlet],\n template: `\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n {{ text }}\n </ng-container>\n `,\n styleUrls: ['./preview-dialog.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiAnimated],\n host: {\n '(document:keydown.esc.prevent)': 'context.$implicit.complete()',\n },\n})\nexport class TuiPreviewDialog {\n protected readonly context = injectContext<TuiPopover<void, void>>();\n}\n","import {Injectable} from '@angular/core';\nimport {TuiPopoverService} from '@taiga-ui/cdk/services';\nimport {TUI_DIALOGS} from '@taiga-ui/core/components/dialog';\n\nimport {TuiPreviewDialog} from './preview-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n useFactory: () => new TuiPreviewDialogService(TUI_DIALOGS, TuiPreviewDialog),\n})\nexport class TuiPreviewDialogService extends TuiPopoverService<unknown> {}\n","import {Directive} from '@angular/core';\nimport {TuiPopoverDirective} from '@taiga-ui/cdk/directives/popover';\nimport {tuiAsPopover} from '@taiga-ui/cdk/services';\n\nimport {TuiPreviewDialogService} from './preview-dialog.service';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiPreviewDialog]',\n inputs: ['open: tuiPreviewDialog'],\n outputs: ['openChange: tuiPreviewDialogChange'],\n providers: [tuiAsPopover(TuiPreviewDialogService)],\n})\nexport class TuiPreviewDialogDirective extends TuiPopoverDirective<unknown> {}\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_PAGINATION_TEXTS, TUI_PREVIEW_ICONS} from '@taiga-ui/kit/tokens';\n\nimport {TuiPreviewAction} from '../action/preview-action.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-pagination',\n imports: [AsyncPipe, NgIf, TuiButton, TuiPreviewAction],\n templateUrl: './preview-pagination.template.html',\n styleUrls: ['./preview-pagination.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(document:keydown.arrowRight.prevent)': 'onArrowClick(1)',\n '(document:keydown.arrowLeft.prevent)': 'onArrowClick(-1)',\n },\n})\nexport class TuiPreviewPagination {\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly texts$ = inject(TUI_PAGINATION_TEXTS);\n\n @Input()\n public length = 1;\n\n @Input()\n public index = 0;\n\n @Output()\n public readonly indexChange = new EventEmitter<number>();\n\n public onArrowClick(step: number): void {\n this.updateIndex(tuiClamp(this.index + step, 0, this.length - 1));\n }\n\n protected get leftButtonDisabled(): boolean {\n return this.index === 0;\n }\n\n protected get rightButtonDisabled(): boolean {\n return this.index === this.length - 1;\n }\n\n private updateIndex(index: number): void {\n if (this.index === index) {\n return;\n }\n\n this.index = index;\n this.indexChange.emit(index);\n }\n}\n","<ng-container *ngIf=\"texts$ | async as texts\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow t-arrow_left\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.prev\"\n (click)=\"onArrowClick(-1)\"\n >\n {{ texts[0] }}\n </button>\n {{ index + 1 }}/{{ length }}\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-arrow t-arrow_right\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.next\"\n (click)=\"onArrowClick(1)\"\n >\n {{ texts[1] }}\n </button>\n</ng-container>\n","import {AsyncPipe, NgIf, PercentPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiLet} from '@taiga-ui/cdk/directives/let';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {TuiSlider} from '@taiga-ui/kit/components/slider';\nimport {TUI_PREVIEW_ICONS, TUI_PREVIEW_ZOOM_TEXTS} from '@taiga-ui/kit/tokens';\nimport {map, merge, of, startWith, switchMap, timer} from 'rxjs';\n\nimport {TuiPreviewAction} from '../action/preview-action.directive';\n\nconst STEP = 0.5;\n\n@Component({\n standalone: true,\n selector: 'tui-preview-zoom',\n imports: [\n AsyncPipe,\n FormsModule,\n NgIf,\n PercentPipe,\n TuiButton,\n TuiHint,\n TuiLet,\n TuiPreviewAction,\n TuiSlider,\n ],\n templateUrl: './preview-zoom.template.html',\n styleUrls: ['./preview-zoom.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewZoom {\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly zoomTexts$ = inject(TUI_PREVIEW_ZOOM_TEXTS);\n protected readonly sliderLabel$ = this.zoomTexts$.pipe(\n map((texts) => `${texts.zoomOut} / ${texts.zoomIn}`),\n );\n\n @Input()\n public min = 0.5;\n\n @Input()\n public max = 2;\n\n @Input()\n public value = 1;\n\n @Output()\n public readonly valueChange = new EventEmitter<number>();\n\n @Output()\n public readonly reset = new EventEmitter<void>();\n\n public readonly hintShow$ = this.valueChange.pipe(\n switchMap(() => merge(of(true), timer(1000).pipe(map(TUI_FALSE_HANDLER)))),\n startWith(false),\n );\n\n protected get leftButtonDisabled(): boolean {\n return this.value === this.min;\n }\n\n protected get rightButtonDisabled(): boolean {\n return this.value === this.max;\n }\n\n protected get collapseVisible(): boolean {\n return this.value > this.min;\n }\n\n protected onModelChange(value: number): void {\n const clamped = tuiClamp(value, this.min, this.max);\n\n if (clamped === this.value) {\n return;\n }\n\n this.value = clamped;\n this.valueChange.emit(clamped);\n }\n\n protected onReset(): void {\n this.reset.emit();\n }\n\n protected onMinus(): void {\n this.onModelChange(this.value - STEP);\n }\n\n protected onPlus(): void {\n this.onModelChange(this.value < 1 ? 1 : this.value + STEP);\n }\n}\n","<ng-container *ngIf=\"zoomTexts$ | async as texts\">\n <section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"leftButtonDisabled\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"onMinus()\"\n >\n {{ texts.zoomOut }}\n </button>\n <label\n *tuiLet=\"(valueChange | async) || (value | percent) as sliderValueText\"\n tuiSliderThumbLabel\n >\n <div\n [tuiHint]=\"sliderValueText\"\n [tuiHintManual]=\"!!(hintShow$ | async)\"\n ></div>\n\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [attr.aria-label]=\"sliderLabel$ | async\"\n [attr.aria-valuetext]=\"sliderValueText\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onModelChange($event)\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"rightButtonDisabled\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"onPlus()\"\n >\n {{ texts.zoomIn }}\n </button>\n </section>\n\n <button\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"!collapseVisible\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts.reset\"\n (click)=\"onReset()\"\n >\n {{ texts.reset }}\n </button>\n</ng-container>\n","import {AsyncPipe, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n} from '@angular/core';\nimport {WaMutationObserver} from '@ng-web-apis/mutation-observer';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiPan} from '@taiga-ui/cdk/directives/pan';\nimport {TuiZoom, type TuiZoomEvent} from '@taiga-ui/cdk/directives/zoom';\nimport {tuiDragAndDropFrom, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiHint} from '@taiga-ui/core/directives/hint';\nimport {TUI_PREVIEW_ICONS, TUI_PREVIEW_TEXTS} from '@taiga-ui/kit/tokens';\nimport {BehaviorSubject, combineLatest, map, merge, startWith} from 'rxjs';\n\nimport {TuiPreviewAction} from './action/preview-action.directive';\nimport {TuiPreviewZoom} from './zoom/preview-zoom.component';\n\nconst EMPTY_COORDINATES: [number, number] = [0, 0];\nconst ROTATION_ANGLE = 90;\n\n@Component({\n standalone: true,\n selector: 'tui-preview',\n imports: [\n AsyncPipe,\n NgIf,\n TuiButton,\n TuiHint,\n TuiPan,\n TuiPreviewAction,\n TuiPreviewZoom,\n TuiZoom,\n WaMutationObserver,\n WaResizeObserver,\n ],\n templateUrl: './preview.template.html',\n styleUrls: ['./preview.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewComponent {\n private readonly el = tuiInjectElement();\n\n protected minZoom = 1;\n protected width = 0;\n protected height = 0;\n protected readonly texts$ = inject(TUI_PREVIEW_TEXTS);\n protected readonly icons = inject(TUI_PREVIEW_ICONS);\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly zoom$ = new BehaviorSubject<number>(this.minZoom);\n protected readonly rotation$ = new BehaviorSubject<number>(0);\n protected readonly coordinates$ = new BehaviorSubject<readonly [number, number]>(\n EMPTY_COORDINATES,\n );\n\n protected readonly transitioned$ = merge(\n tuiDragAndDropFrom(this.el).pipe(map(({stage}) => stage !== 'continues')),\n tuiTypedFromEvent(this.el, 'touchmove', {\n passive: true,\n }).pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'wheel', {passive: true}).pipe(map(TUI_FALSE_HANDLER)),\n );\n\n protected readonly cursor$ = tuiDragAndDropFrom(this.el).pipe(\n map(({stage}) => (stage === 'continues' ? 'grabbing' : 'initial')),\n startWith('initial'),\n );\n\n protected readonly wrapperTransform$ = combineLatest([\n this.coordinates$.pipe(map(([x, y]) => `${tuiPx(x)}, ${tuiPx(y)}`)),\n this.zoom$,\n this.rotation$,\n ]).pipe(\n map(\n ([translate, zoom, rotation]) =>\n `translate(${translate}) scale(${zoom}) rotate(${rotation}deg)`,\n ),\n );\n\n @Input()\n public zoomable = true;\n\n @Input()\n public rotatable = false;\n\n @Input()\n public initialScale = 0.8;\n\n protected rotate(): void {\n this.rotation$.next(this.rotation$.value - ROTATION_ANGLE);\n }\n\n protected onPan(delta: readonly [number, number]): void {\n this.coordinates$.next(\n this.getGuardedCoordinates(\n this.coordinates$.value[0] + delta[0],\n this.coordinates$.value[1] + delta[1],\n ),\n );\n }\n\n protected onMutation(contentWrapper: HTMLElement): void {\n const {clientWidth, clientHeight} = contentWrapper;\n\n this.refresh(clientWidth, clientHeight);\n }\n\n protected onZoom({clientX, clientY, delta}: TuiZoomEvent): void {\n if (this.zoomable) {\n this.processZoom(clientX, clientY, delta);\n }\n }\n\n protected onResize([entry]: readonly ResizeObserverEntry[]): void {\n if (entry?.contentRect) {\n this.refresh(entry.contentRect.width, entry.contentRect.height);\n this.cdr.detectChanges();\n }\n }\n\n protected reset(): void {\n this.zoom$.next(this.minZoom);\n this.coordinates$.next(EMPTY_COORDINATES);\n }\n\n protected setZoom(zoom: number): void {\n this.zoom$.next(zoom);\n const [x, y] = this.coordinates$.value;\n\n this.coordinates$.next(this.getGuardedCoordinates(x, y));\n }\n\n private get offsets(): {offsetX: number; offsetY: number} {\n const offsetX = ((this.zoom$.value - this.minZoom) * this.width) / 2;\n const offsetY = ((this.zoom$.value - this.minZoom) * this.height) / 2;\n\n return {offsetX, offsetY};\n }\n\n private calculateMinZoom(\n contentHeight: number,\n contentWidth: number,\n boxHeight: number,\n boxWidth: number,\n ): number {\n const bigSize =\n contentHeight > boxHeight * this.initialScale ||\n contentWidth > boxWidth * this.initialScale;\n const {clientHeight, clientWidth} = this.el;\n\n return bigSize\n ? tuiRound(\n Math.min(\n (clientHeight * this.initialScale) / contentHeight,\n (clientWidth * this.initialScale) / contentWidth,\n ),\n 2,\n )\n : 1;\n }\n\n private refresh(width: number, height: number): void {\n this.width = width;\n this.height = height;\n this.minZoom = this.calculateMinZoom(\n height,\n width,\n this.el.clientHeight,\n this.el.clientWidth,\n );\n this.zoom$.next(this.minZoom);\n this.coordinates$.next(EMPTY_COORDINATES);\n this.rotation$.next(0);\n }\n\n private processZoom(clientX: number, clientY: number, delta: number): void {\n const oldScale = this.zoom$.value;\n const newScale = tuiClamp(oldScale + delta, this.minZoom, 2);\n\n const center = this.getScaleCenter(\n {clientX, clientY},\n this.coordinates$.value,\n this.zoom$.value,\n );\n\n const moveX = center[0] * oldScale - center[0] * newScale;\n const moveY = center[1] * oldScale - center[1] * newScale;\n\n this.zoom$.next(newScale);\n this.coordinates$.next(\n this.getGuardedCoordinates(\n this.coordinates$.value[0] + moveX,\n this.coordinates$.value[1] + moveY,\n ),\n );\n }\n\n private getGuardedCoordinates(x: number, y: number): readonly [number, number] {\n const {offsetX, offsetY} = this.offsets;\n\n return [tuiClamp(x, -offsetX, offsetX), tuiClamp(y, -offsetY, offsetY)];\n }\n\n private getScaleCenter(\n {clientX, clientY}: {clientX: number; clientY: number},\n [x, y]: readonly [number, number],\n scale: number,\n ): [number, number] {\n return [\n (clientX - x - this.el.offsetWidth / 2) / scale,\n (clientY - y - this.el.offsetHeight / 2) / scale,\n ];\n }\n}\n","<ng-container *ngIf=\"texts$ | async as texts\">\n <section\n #contentWrapper\n attributeFilter=\"src\"\n characterData\n childList\n subtree\n class=\"t-wrapper\"\n [class.t-not-interactive-content]=\"zoomable\"\n [class.t-transitive]=\"transitioned$ | async\"\n [style.cursor]=\"cursor$ | async\"\n [style.transform]=\"wrapperTransform$ | async\"\n (tuiPan)=\"onPan($event)\"\n (tuiZoom)=\"onZoom($event)\"\n (waMutationObserver)=\"onMutation(contentWrapper)\"\n (waResizeObserver)=\"onResize($event)\"\n >\n <ng-content />\n </section>\n\n <header class=\"t-header\">\n <div class=\"t-title\">\n <ng-content select=\"tui-preview-title\" />\n </div>\n\n <ng-content select=\"tui-preview-pagination\" />\n\n <div class=\"t-actions\">\n <ng-content select=\"[tuiPreviewAction]\" />\n </div>\n </header>\n\n <footer class=\"t-footer\">\n <button\n *ngIf=\"rotatable\"\n tuiHintAppearance=\"dark\"\n tuiHintDescribe\n tuiHintDirection=\"top-right\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-rotate-button\"\n [iconStart]=\"icons.rotate\"\n [tuiHint]=\"texts.rotate\"\n (click)=\"rotate()\"\n ></button>\n\n <tui-preview-zoom\n *ngIf=\"zoomable\"\n [min]=\"minZoom\"\n [value]=\"(zoom$ | async) || 1\"\n (reset)=\"reset()\"\n (valueChange)=\"setZoom($event)\"\n />\n </footer>\n</ng-container>\n","import {ChangeDetectionStrategy, Component} from '@angular/core';\n\n@Component({\n standalone: true,\n selector: 'tui-preview-title',\n template: `\n <ng-content />\n `,\n styleUrls: ['./preview-title.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPreviewTitle {}\n","import {TuiPreviewAction} from './action/preview-action.directive';\nimport {TuiPreviewPagination} from './pagination/preview-pagination.component';\nimport {TuiPreviewComponent} from './preview.component';\nimport {TuiPreviewTitle} from './title/preview-title.component';\nimport {TuiPreviewZoom} from './zoom/preview-zoom.component';\n\nexport const TuiPreview = [\n TuiPreviewComponent,\n TuiPreviewTitle,\n TuiPreviewPagination,\n TuiPreviewAction,\n TuiPreviewZoom,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAaa,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAVd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA,wBAAwB,CAAC;AACrB,gBAAA,UAAU,EAAE,gBAAgB;AAC5B,gBAAA,IAAI,EAAE,GAAG;aACZ,CAAC;AACL,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAKQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE;AACP,wBAAA,wBAAwB,CAAC;AACrB,4BAAA,UAAU,EAAE,gBAAgB;AAC5B,4BAAA,IAAI,EAAE,GAAG;yBACZ,CAAC;AACL,qBAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,2BAA2B,EAAE,KAAK;AACrC,qBAAA;AACJ,iBAAA,CAAA;;;ACVD,MAiBa,gBAAgB,CAAA;AAjB7B,IAAA,WAAA,GAAA;QAkBuB,IAAO,CAAA,OAAA,GAAG,aAAa,EAA0B,CAAC;AACxE,KAAA;+GAFY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAbf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,8BAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,orDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EALS,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAcnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAjB5B,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,oBAAoB,EAAA,OAAA,EACrB,CAAC,kBAAkB,CAAC,EACnB,QAAA,EAAA,CAAA;;;;KAIT,EAEc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAC/B,cAAA,EAAA,CAAC,WAAW,CAAC,EACvB,IAAA,EAAA;AACF,wBAAA,gCAAgC,EAAE,8BAA8B;AACnE,qBAAA,EAAA,MAAA,EAAA,CAAA,orDAAA,CAAA,EAAA,CAAA;;;ACdL,MAIa,uBAAwB,SAAQ,iBAA0B,CAAA;+GAA1D,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAHpB,UAAA,EAAA,MAAM,EACN,UAAA,EAAA,MAAM,IAAI,uBAAuB,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAA,CAAA,CAAA,EAAA;;4FAEnE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;oBAClB,UAAU,EAAE,MAAM,4BAA4B,WAAW,EAAE,gBAAgB,CAAC;AAC/E,iBAAA,CAAA;;;ACHD,MAOa,yBAA0B,SAAQ,mBAA4B,CAAA;+GAA9D,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,+KAFvB,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEzC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,+BAA+B;oBACzC,MAAM,EAAE,CAAC,wBAAwB,CAAC;oBAClC,OAAO,EAAE,CAAC,oCAAoC,CAAC;AAC/C,oBAAA,SAAS,EAAE,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;AACrD,iBAAA,CAAA;;;ACGD,MAYa,oBAAoB,CAAA;AAZjC,IAAA,WAAA,GAAA;AAauB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAGlD,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;QAGX,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;AAGD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAsB5D,KAAA;AApBU,IAAA,YAAY,CAAC,IAAY,EAAA;QAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KACrE;AAED,IAAA,IAAc,kBAAkB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;KAC3B;AAED,IAAA,IAAc,mBAAmB,GAAA;QAC7B,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KACzC;AAEO,IAAA,WAAW,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;YACtB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;+GAhCQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,qCAAA,EAAA,iBAAA,EAAA,oCAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BjC,4qBAyBA,EDPc,MAAA,EAAA,CAAA,iWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,8CAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAS7C,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAZhC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,wBAAwB,EAAA,OAAA,EACzB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAA,eAAA,EAGtC,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,uCAAuC,EAAE,iBAAiB;AAC1D,wBAAA,sCAAsC,EAAE,kBAAkB;AAC7D,qBAAA,EAAA,QAAA,EAAA,4qBAAA,EAAA,MAAA,EAAA,CAAA,iWAAA,CAAA,EAAA,CAAA;8BAOM,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIU,WAAW,EAAA,CAAA;sBAD1B,MAAM;;;AEhBX,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB,MAkBa,cAAc,CAAA;AAlB3B,IAAA,WAAA,GAAA;AAmBuB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC5C,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAClD,GAAG,CAAC,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,CAAC,OAAO,CAAA,GAAA,EAAM,KAAK,CAAC,MAAM,CAAA,CAAE,CAAC,CACvD,CAAC;QAGK,IAAG,CAAA,GAAA,GAAG,GAAG,CAAC;QAGV,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC;QAGR,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;AAGD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAGzC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEjC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAC7C,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAC1E,SAAS,CAAC,KAAK,CAAC,CACnB,CAAC;AAoCL,KAAA;AAlCG,IAAA,IAAc,kBAAkB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC;KAClC;AAED,IAAA,IAAc,mBAAmB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC;KAClC;AAED,IAAA,IAAc,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;KAChC;AAES,IAAA,aAAa,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAEpD,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE;YACxB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClC;IAES,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACrB;IAES,OAAO,GAAA;QACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;KACzC;IAES,MAAM,GAAA;QACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;KAC9D;+GA5DQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,ECzC3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4/DAkEA,EDvCQ,MAAA,EAAA,CAAA,gcAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CACT,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACJ,WAAW,EACX,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,EAET,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAM,yEACN,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAOX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,kBAAkB,EACnB,OAAA,EAAA;wBACL,SAAS;wBACT,WAAW;wBACX,IAAI;wBACJ,WAAW;wBACX,SAAS;wBACT,OAAO;wBACP,MAAM;wBACN,gBAAgB;wBAChB,SAAS;qBACZ,EAGgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4/DAAA,EAAA,MAAA,EAAA,CAAA,gcAAA,CAAA,EAAA,CAAA;8BAUxC,GAAG,EAAA,CAAA;sBADT,KAAK;gBAIC,GAAG,EAAA,CAAA;sBADT,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIU,WAAW,EAAA,CAAA;sBAD1B,MAAM;gBAIS,KAAK,EAAA,CAAA;sBADpB,MAAM;;;AEnCX,MAAM,iBAAiB,GAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAmBa,mBAAmB,CAAA;AAnBhC,IAAA,WAAA,GAAA;QAoBqB,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;QAE/B,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;QACZ,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QACV,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;AACF,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChC,IAAK,CAAA,KAAA,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CACjD,iBAAiB,CACpB,CAAC;AAEiB,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CACpC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAC,KAAK,KAAK,KAAK,WAAW,CAAC,CAAC,EACzE,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE;AACpC,YAAA,OAAO,EAAE,IAAI;AAChB,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAC/B,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CACpF,CAAC;AAEiB,QAAA,IAAA,CAAA,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CACzD,GAAG,CAAC,CAAC,EAAC,KAAK,EAAC,MAAM,KAAK,KAAK,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC,EAClE,SAAS,CAAC,SAAS,CAAC,CACvB,CAAC;QAEiB,IAAiB,CAAA,iBAAA,GAAG,aAAa,CAAC;AACjD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAG,EAAA,KAAK,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,KAAK,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,KAAK;AACV,YAAA,IAAI,CAAC,SAAS;SACjB,CAAC,CAAC,IAAI,CACH,GAAG,CACC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,KACxB,CAAA,UAAA,EAAa,SAAS,CAAA,QAAA,EAAW,IAAI,CAAA,SAAA,EAAY,QAAQ,CAAA,IAAA,CAAM,CACtE,CACJ,CAAC;QAGK,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAGhB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAGlB,IAAY,CAAA,YAAA,GAAG,GAAG,CAAC;AA+H7B,KAAA;IA7Ha,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;KAC9D;AAES,IAAA,KAAK,CAAC,KAAgC,EAAA;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAClB,IAAI,CAAC,qBAAqB,CACtB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EACrC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CACxC,CACJ,CAAC;KACL;AAES,IAAA,UAAU,CAAC,cAA2B,EAAA;AAC5C,QAAA,MAAM,EAAC,WAAW,EAAE,YAAY,EAAC,GAAG,cAAc,CAAC;AAEnD,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;KAC3C;AAES,IAAA,MAAM,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAe,EAAA;QACpD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7C,SAAA;KACJ;IAES,QAAQ,CAAC,CAAC,KAAK,CAAiC,EAAA;QACtD,IAAI,KAAK,EAAE,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC5B,SAAA;KACJ;IAES,KAAK,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC7C;AAES,IAAA,OAAO,CAAC,IAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAEvC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5D;AAED,IAAA,IAAY,OAAO,GAAA;QACf,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AAEtE,QAAA,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC;KAC7B;AAEO,IAAA,gBAAgB,CACpB,aAAqB,EACrB,YAAoB,EACpB,SAAiB,EACjB,QAAgB,EAAA;QAEhB,MAAM,OAAO,GACT,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,YAAY;AAC7C,YAAA,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QAChD,MAAM,EAAC,YAAY,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAE5C,QAAA,OAAO,OAAO;AACV,cAAE,QAAQ,CACJ,IAAI,CAAC,GAAG,CACJ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,aAAa,EAClD,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,YAAY,CACnD,EACD,CAAC,CACJ;cACD,CAAC,CAAC;KACX;IAEO,OAAO,CAAC,KAAa,EAAE,MAAc,EAAA;AACzC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAChC,MAAM,EACN,KAAK,EACL,IAAI,CAAC,EAAE,CAAC,YAAY,EACpB,IAAI,CAAC,EAAE,CAAC,WAAW,CACtB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;AAEO,IAAA,WAAW,CAAC,OAAe,EAAE,OAAe,EAAE,KAAa,EAAA;AAC/D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAC9B,EAAC,OAAO,EAAE,OAAO,EAAC,EAClB,IAAI,CAAC,YAAY,CAAC,KAAK,EACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CACnB,CAAC;AAEF,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC1D,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAE1D,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAClB,IAAI,CAAC,qBAAqB,CACtB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,EAClC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CACrC,CACJ,CAAC;KACL;IAEO,qBAAqB,CAAC,CAAS,EAAE,CAAS,EAAA;QAC9C,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAExC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;KAC3E;AAEO,IAAA,cAAc,CAClB,EAAC,OAAO,EAAE,OAAO,EAAqC,EACtD,CAAC,CAAC,EAAE,CAAC,CAA4B,EACjC,KAAa,EAAA;QAEb,OAAO;AACH,YAAA,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,GAAG,CAAC,IAAI,KAAK;AAC/C,YAAA,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK;SACnD,CAAC;KACL;+GA5KQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,+JC/ChC,wqDAwDA,EAAA,MAAA,EAAA,CAAA,myBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDxBQ,SAAS,EACT,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,6FACJ,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAET,MAAM,EACN,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,+DAChB,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,oQAClB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAMX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnB/B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,aAAa,EACd,OAAA,EAAA;wBACL,SAAS;wBACT,IAAI;wBACJ,SAAS;wBACT,OAAO;wBACP,MAAM;wBACN,gBAAgB;wBAChB,cAAc;wBACd,OAAO;wBACP,kBAAkB;wBAClB,gBAAgB;qBACnB,EAGgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wqDAAA,EAAA,MAAA,EAAA,CAAA,myBAAA,CAAA,EAAA,CAAA;8BA0CxC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,YAAY,EAAA,CAAA;sBADlB,KAAK;;;AE1FV,MASa,eAAe,CAAA;+GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EANd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qIAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAIQ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,mBAAmB,EACnB,QAAA,EAAA,CAAA;;KAET,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,qIAAA,CAAA,EAAA,CAAA;;;ACHtC,MAAA,UAAU,GAAG;IACtB,mBAAmB;IACnB,eAAe;IACf,oBAAoB;IACpB,gBAAgB;IAChB,cAAc;;;ACXlB;;AAEG;;;;"}
@@ -50,7 +50,7 @@ class TuiSwitch {
50
50
  return this.showIcons && icon ? `url(${resolver(icon)})` : null;
51
51
  }
52
52
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwitch, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSwitch, isStandalone: true, selector: "input[type=\"checkbox\"][tuiSwitch]", inputs: { size: "size", showIcons: "showIcons" }, host: { attributes: { "role": "switch" }, properties: { "disabled": "!control || control.disabled", "attr.data-size": "size", "class._readonly": "!control", "style.--t-checked-icon": "icon" } }, hostDirectives: [{ directive: i1.TuiAppearance, inputs: ["tuiAppearanceState", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceFocus", "tuiAppearanceMode", "tuiAppearanceMode"] }, { directive: i2.TuiNativeValidator }], ngImport: i0, template: '', isInline: true, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1.125rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{content:\"\";position:absolute;block-size:100%;inline-size:1.5rem;transition-property:transform}[tuiSwitch]:before{display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;inline-size:1.375rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}[tuiSwitch]:invalid:not([data-mode]),[tuiSwitch][data-mode~=invalid]{color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSwitch, isStandalone: true, selector: "input[type=\"checkbox\"][tuiSwitch]", inputs: { size: "size", showIcons: "showIcons" }, host: { attributes: { "role": "switch" }, properties: { "disabled": "!control || control.disabled", "attr.data-size": "size", "class._readonly": "!control", "style.--t-checked-icon": "icon" } }, hostDirectives: [{ directive: i1.TuiAppearance, inputs: ["tuiAppearanceState", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceFocus", "tuiAppearanceMode", "tuiAppearanceMode"] }, { directive: i2.TuiNativeValidator }], ngImport: i0, template: '', isInline: true, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{content:\"\";position:absolute;block-size:100%;inline-size:1.5rem;transition-property:transform}[tuiSwitch]:before{left:.125rem;display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}[tuiSwitch]:invalid:not([data-mode]),[tuiSwitch][data-mode~=invalid]{color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
54
54
  }
55
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSwitch, decorators: [{
56
56
  type: Component,
@@ -66,7 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
66
66
  '[attr.data-size]': 'size',
67
67
  '[class._readonly]': '!control',
68
68
  '[style.--t-checked-icon]': 'icon',
69
- }, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1.125rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{content:\"\";position:absolute;block-size:100%;inline-size:1.5rem;transition-property:transform}[tuiSwitch]:before{display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;inline-size:1.375rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}[tuiSwitch]:invalid:not([data-mode]),[tuiSwitch][data-mode~=invalid]{color:#fff}\n"] }]
69
+ }, styles: ["[tuiSwitch]{transition-property:background,box-shadow;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:3rem;block-size:1.5rem;border-radius:2rem;overflow:hidden;cursor:pointer;margin:0;flex-shrink:0}[tuiSwitch][data-size=s]{block-size:1rem;inline-size:2rem}[tuiSwitch][data-size=s]:before{inline-size:1rem;transform:translate(-1rem);-webkit-mask-size:.75rem;mask-size:.75rem}[tuiSwitch][data-size=s]:after{inline-size:1rem;box-shadow:-2.625rem 0 0 .5rem var(--tui-background-base);outline-width:.167rem;transform:scale(.375)}[tuiSwitch][data-size=s]:checked:after{transform:scale(.375) translate(2.625rem)}[tuiSwitch]:checked:before{transform:none}[tuiSwitch]:checked:after{transform:scale(.33333) translate(4.5rem)}[tuiSwitch]:disabled._readonly._readonly{opacity:1}[tuiSwitch]:before,[tuiSwitch]:after{content:\"\";position:absolute;block-size:100%;inline-size:1.5rem;transition-property:transform}[tuiSwitch]:before{left:.125rem;display:var(--t-checked-icon, none);background:currentColor;-webkit-mask:var(--t-checked-icon) no-repeat center;mask:var(--t-checked-icon) no-repeat center;-webkit-mask-size:1rem;mask-size:1rem;transform:translate(-1.5rem)}[tuiSwitch]:after{right:0;border-radius:100%;transform:scale(.33333);box-shadow:-4.5rem 0 0 .75rem var(--tui-background-base);outline:.375rem solid var(--tui-background-neutral-2-pressed);outline-offset:var(--t-checked-icon, 20rem)}[tuiSwitch]:invalid:not([data-mode]),[tuiSwitch][data-mode~=invalid]{color:#fff}\n"] }]
70
70
  }], propDecorators: { size: [{
71
71
  type: Input
72
72
  }], showIcons: [{
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-switch.mjs","sources":["../../../projects/kit/components/switch/switch.options.ts","../../../projects/kit/components/switch/switch.component.ts","../../../projects/kit/components/switch/taiga-ui-kit-components-switch.ts"],"sourcesContent":["import {InjectionToken, type Provider} from '@angular/core';\nimport {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiSwitchOptions {\n readonly showIcons: boolean;\n readonly size: TuiSizeS;\n readonly icon: TuiStringHandler<TuiSizeS> | string;\n readonly appearance: TuiStringHandler<HTMLInputElement>;\n}\n\nexport const TUI_SWITCH_DEFAULT_OPTIONS: TuiSwitchOptions = {\n showIcons: true,\n size: 'm',\n icon: '@tui.check',\n appearance: (el) => (el.checked ? 'primary' : 'secondary'),\n};\n\nexport const TUI_SWITCH_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_SWITCH_OPTIONS' : '',\n {\n factory: () => TUI_SWITCH_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiSwitchOptionsProvider(options: Partial<TuiSwitchOptions>): Provider {\n return tuiProvideOptions(TUI_SWITCH_OPTIONS, options, TUI_SWITCH_DEFAULT_OPTIONS);\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n type DoCheck,\n inject,\n Input,\n type OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {tuiInjectIconResolver} from '@taiga-ui/core/tokens';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nimport {TUI_SWITCH_OPTIONS} from './switch.options';\n\n@Component({\n standalone: true,\n selector: 'input[type=\"checkbox\"][tuiSwitch]',\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/switch.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TuiAppearance,\n inputs: ['tuiAppearanceState', 'tuiAppearanceFocus', 'tuiAppearanceMode'],\n },\n TuiNativeValidator,\n ],\n host: {\n role: 'switch',\n '[disabled]': '!control || control.disabled',\n '[attr.data-size]': 'size',\n '[class._readonly]': '!control',\n '[style.--t-checked-icon]': 'icon',\n },\n})\nexport class TuiSwitch implements DoCheck, OnInit {\n private readonly appearance = inject(TuiAppearance);\n private readonly resolver = tuiInjectIconResolver();\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly options = inject(TUI_SWITCH_OPTIONS);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n\n protected readonly control = inject(NgControl, {self: true, optional: true});\n\n @Input()\n public size: TuiSizeS = this.options.size;\n\n @Input()\n public showIcons = this.options.showIcons;\n\n public ngOnInit(): void {\n this.control?.valueChanges\n ?.pipe(tuiWatch(this.cdr), takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n\n public ngDoCheck(): void {\n this.appearance.tuiAppearance = this.options.appearance(this.el);\n }\n\n protected get icon(): string | null {\n const {options, resolver, size} = this;\n const icon = tuiIsString(options.icon) ? options.icon : options.icon(size);\n\n return this.showIcons && icon ? `url(${resolver(icon)})` : null;\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-kit-components-switch.mjs","sources":["../../../projects/kit/components/switch/switch.options.ts","../../../projects/kit/components/switch/switch.component.ts","../../../projects/kit/components/switch/taiga-ui-kit-components-switch.ts"],"sourcesContent":["import {InjectionToken, type Provider} from '@angular/core';\nimport {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiSwitchOptions {\n readonly showIcons: boolean;\n readonly size: TuiSizeS;\n readonly icon: TuiStringHandler<TuiSizeS> | string;\n readonly appearance: TuiStringHandler<HTMLInputElement>;\n}\n\nexport const TUI_SWITCH_DEFAULT_OPTIONS: TuiSwitchOptions = {\n showIcons: true,\n size: 'm',\n icon: '@tui.check',\n appearance: (el) => (el.checked ? 'primary' : 'secondary'),\n};\n\nexport const TUI_SWITCH_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_SWITCH_OPTIONS' : '',\n {\n factory: () => TUI_SWITCH_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiSwitchOptionsProvider(options: Partial<TuiSwitchOptions>): Provider {\n return tuiProvideOptions(TUI_SWITCH_OPTIONS, options, TUI_SWITCH_DEFAULT_OPTIONS);\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n type DoCheck,\n inject,\n Input,\n type OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {tuiInjectIconResolver} from '@taiga-ui/core/tokens';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nimport {TUI_SWITCH_OPTIONS} from './switch.options';\n\n@Component({\n standalone: true,\n selector: 'input[type=\"checkbox\"][tuiSwitch]',\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/switch.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TuiAppearance,\n inputs: ['tuiAppearanceState', 'tuiAppearanceFocus', 'tuiAppearanceMode'],\n },\n TuiNativeValidator,\n ],\n host: {\n role: 'switch',\n '[disabled]': '!control || control.disabled',\n '[attr.data-size]': 'size',\n '[class._readonly]': '!control',\n '[style.--t-checked-icon]': 'icon',\n },\n})\nexport class TuiSwitch implements DoCheck, OnInit {\n private readonly appearance = inject(TuiAppearance);\n private readonly resolver = tuiInjectIconResolver();\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly options = inject(TUI_SWITCH_OPTIONS);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n\n protected readonly control = inject(NgControl, {self: true, optional: true});\n\n @Input()\n public size: TuiSizeS = this.options.size;\n\n @Input()\n public showIcons = this.options.showIcons;\n\n public ngOnInit(): void {\n this.control?.valueChanges\n ?.pipe(tuiWatch(this.cdr), takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n\n public ngDoCheck(): void {\n this.appearance.tuiAppearance = this.options.appearance(this.el);\n }\n\n protected get icon(): string | null {\n const {options, resolver, size} = this;\n const icon = tuiIsString(options.icon) ? options.icon : options.icon(size);\n\n return this.showIcons && icon ? `url(${resolver(icon)})` : null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,24 +1,33 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive } from '@angular/core';
2
+ import { inject, Directive } from '@angular/core';
3
3
  import { TuiControl } from '@taiga-ui/cdk/classes';
4
4
  import * as i2 from '@taiga-ui/cdk/directives/native-validator';
5
5
  import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator';
6
+ import { tuiArrayToggle } from '@taiga-ui/cdk/utils/miscellaneous';
6
7
  import { tuiAsOptionContent, tuiAsDataListHost } from '@taiga-ui/core/components/data-list';
7
8
  import * as i3 from '@taiga-ui/core/components/textfield';
8
9
  import { TuiWithTextfieldDropdown } from '@taiga-ui/core/components/textfield';
9
10
  import * as i1 from '@taiga-ui/core/directives/dropdown';
10
11
  import { tuiDropdownOpen, tuiDropdownOptionsProvider, TuiDropdownDirective, TuiWithDropdownOpen } from '@taiga-ui/core/directives/dropdown';
12
+ import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
11
13
  import { TuiSelectOption } from '@taiga-ui/kit/components/select';
12
14
 
13
15
  class TuiButtonSelect extends TuiControl {
14
16
  constructor() {
15
17
  super(...arguments);
16
18
  this.open = tuiDropdownOpen();
19
+ this.handlers = inject(TUI_ITEMS_HANDLERS);
17
20
  this.size = 's';
18
21
  }
19
22
  handleOption(option) {
20
- this.onChange(option);
21
- this.open.set(false);
23
+ if (Array.isArray(this.control.value)) {
24
+ const result = tuiArrayToggle(this.control.value, option, this.handlers.identityMatcher());
25
+ this.onChange(result);
26
+ }
27
+ else {
28
+ this.onChange(option);
29
+ this.open.set(false);
30
+ }
22
31
  }
23
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiButtonSelect, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
24
33
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiButtonSelect, isStandalone: true, selector: "button[tuiButtonSelect]", providers: [
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-directives-button-select.mjs","sources":["../../../projects/kit/directives/button-select/button-select.directive.ts","../../../projects/kit/directives/button-select/taiga-ui-kit-directives-button-select.ts"],"sourcesContent":["import {Directive} from '@angular/core';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {\n tuiAsDataListHost,\n tuiAsOptionContent,\n type TuiDataListHost,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiWithTextfieldDropdown} from '@taiga-ui/core/components/textfield';\nimport {\n TuiDropdownDirective,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\n\n@Directive({\n standalone: true,\n selector: 'button[tuiButtonSelect]',\n providers: [\n tuiAsOptionContent(TuiSelectOption),\n tuiAsDataListHost(TuiButtonSelect),\n tuiDropdownOptionsProvider({align: 'right'}),\n ],\n hostDirectives: [\n TuiDropdownDirective,\n TuiNativeValidator,\n TuiWithDropdownOpen,\n TuiWithTextfieldDropdown,\n ],\n})\nexport class TuiButtonSelect<T> extends TuiControl<T> implements TuiDataListHost<T> {\n private readonly open = tuiDropdownOpen();\n\n public readonly size = 's';\n\n public handleOption(option: T): void {\n this.onChange(option);\n this.open.set(false);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAiBA,MAea,eAAmB,SAAQ,UAAa,CAAA;AAfrD,IAAA,WAAA,GAAA;;QAgBqB,IAAI,CAAA,IAAA,GAAG,eAAe,EAAE,CAAC;QAE1B,IAAI,CAAA,IAAA,GAAG,GAAG,CAAC;AAM9B,KAAA;AAJU,IAAA,YAAY,CAAC,MAAS,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;+GARQ,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAZb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,SAAA,EAAA;YACP,kBAAkB,CAAC,eAAe,CAAC;YACnC,iBAAiB,CAAC,eAAe,CAAC;AAClC,YAAA,0BAA0B,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC;AAC/C,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAQQ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAf3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,SAAS,EAAE;wBACP,kBAAkB,CAAC,eAAe,CAAC;AACnC,wBAAA,iBAAiB,CAAiB,eAAA,CAAA;AAClC,wBAAA,0BAA0B,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC;AAC/C,qBAAA;AACD,oBAAA,cAAc,EAAE;wBACZ,oBAAoB;wBACpB,kBAAkB;wBAClB,mBAAmB;wBACnB,wBAAwB;AAC3B,qBAAA;AACJ,iBAAA,CAAA;;;AC/BD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-directives-button-select.mjs","sources":["../../../projects/kit/directives/button-select/button-select.directive.ts","../../../projects/kit/directives/button-select/taiga-ui-kit-directives-button-select.ts"],"sourcesContent":["import {Directive, inject} from '@angular/core';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsDataListHost,\n tuiAsOptionContent,\n type TuiDataListHost,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiWithTextfieldDropdown} from '@taiga-ui/core/components/textfield';\nimport {\n TuiDropdownDirective,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\n\n@Directive({\n standalone: true,\n selector: 'button[tuiButtonSelect]',\n providers: [\n tuiAsOptionContent(TuiSelectOption),\n tuiAsDataListHost(TuiButtonSelect),\n tuiDropdownOptionsProvider({align: 'right'}),\n ],\n hostDirectives: [\n TuiDropdownDirective,\n TuiNativeValidator,\n TuiWithDropdownOpen,\n TuiWithTextfieldDropdown,\n ],\n})\nexport class TuiButtonSelect<T>\n extends TuiControl<T | T[]>\n implements TuiDataListHost<T>\n{\n private readonly open = tuiDropdownOpen();\n private readonly handlers = inject(TUI_ITEMS_HANDLERS);\n\n public readonly size = 's';\n\n public handleOption(option: T): void {\n if (Array.isArray(this.control.value)) {\n const result = tuiArrayToggle(\n this.control.value as T[],\n option,\n this.handlers.identityMatcher(),\n );\n\n this.onChange(result);\n } else {\n this.onChange(option);\n this.open.set(false);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAmBA,MAea,eACT,SAAQ,UAAmB,CAAA;AAhB/B,IAAA,WAAA,GAAA;;QAmBqB,IAAI,CAAA,IAAA,GAAG,eAAe,EAAE,CAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAEvC,IAAI,CAAA,IAAA,GAAG,GAAG,CAAC;AAgB9B,KAAA;AAdU,IAAA,YAAY,CAAC,MAAS,EAAA;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,MAAM,MAAM,GAAG,cAAc,CACzB,IAAI,CAAC,OAAO,CAAC,KAAY,EACzB,MAAM,EACN,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAClC,CAAC;AAEF,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;KACJ;+GAtBQ,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAZb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,SAAA,EAAA;YACP,kBAAkB,CAAC,eAAe,CAAC;YACnC,iBAAiB,CAAC,eAAe,CAAC;AAClC,YAAA,0BAA0B,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC;AAC/C,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAQQ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAf3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,SAAS,EAAE;wBACP,kBAAkB,CAAC,eAAe,CAAC;AACnC,wBAAA,iBAAiB,CAAiB,eAAA,CAAA;AAClC,wBAAA,0BAA0B,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC;AAC/C,qBAAA;AACD,oBAAA,cAAc,EAAE;wBACZ,oBAAoB;wBACpB,kBAAkB;wBAClB,mBAAmB;wBACnB,wBAAwB;AAC3B,qBAAA;AACJ,iBAAA,CAAA;;;ACjCD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/kit",
3
- "version": "4.62.0",
3
+ "version": "4.64.0",
4
4
  "description": "Taiga UI Angular main components kit",
5
5
  "keywords": [
6
6
  "angular",
@@ -673,9 +673,9 @@
673
673
  "@ng-web-apis/intersection-observer": "^4.12.0",
674
674
  "@ng-web-apis/mutation-observer": "^4.12.0",
675
675
  "@ng-web-apis/resize-observer": "^4.12.0",
676
- "@taiga-ui/cdk": "^4.62.0",
677
- "@taiga-ui/core": "^4.62.0",
678
- "@taiga-ui/i18n": "^4.62.0",
676
+ "@taiga-ui/cdk": "^4.64.0",
677
+ "@taiga-ui/core": "^4.64.0",
678
+ "@taiga-ui/i18n": "^4.64.0",
679
679
  "@taiga-ui/polymorpheus": "^4.9.0",
680
680
  "rxjs": ">=7.0.0"
681
681
  },
@@ -35,7 +35,7 @@
35
35
  inline-size: 2rem;
36
36
 
37
37
  &::before {
38
- inline-size: 1.125rem;
38
+ inline-size: 1rem;
39
39
  transform: translateX(-1rem);
40
40
  mask-size: 0.75rem;
41
41
  }
@@ -76,11 +76,11 @@
76
76
  }
77
77
 
78
78
  &::before {
79
+ left: 0.125rem;
79
80
  display: var(--t-checked-icon, none);
80
81
  background: currentColor;
81
82
  mask: var(--t-checked-icon) no-repeat center;
82
83
  mask-size: 1rem;
83
- inline-size: 1.375rem;
84
84
  transform: translateX(-1.5rem);
85
85
  }
86
86