{"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 type {TuiZoomEvent} from '@taiga-ui/cdk/directives/zoom';\nimport {TuiZoom} 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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"}