{"version":3,"file":"taiga-ui-kit-components-pagination.mjs","sources":["../../../projects/kit/components/pagination/pagination.component.ts","../../../projects/kit/components/pagination/pagination.template.html","../../../projects/kit/components/pagination/taiga-ui-kit-components-pagination.ts"],"sourcesContent":["import {AsyncPipe, NgIf} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    ViewChildren,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiLet} from '@taiga-ui/cdk/directives/let';\nimport {TuiRepeatTimes} from '@taiga-ui/cdk/directives/repeat-times';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsNativeFocusedIn} from '@taiga-ui/cdk/utils/focus';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_SPIN_ICONS} from '@taiga-ui/core/tokens';\nimport type {\n    TuiHorizontalDirection,\n    TuiSizeL,\n    TuiSizeS,\n    TuiSizeXS,\n} from '@taiga-ui/core/types';\nimport {TUI_PAGINATION_TEXTS} from '@taiga-ui/kit/tokens';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nconst DOTS_LENGTH = 1;\nconst ACTIVE_ITEM_LENGTH = 1;\n\n@Component({\n    standalone: true,\n    selector: 'tui-pagination',\n    imports: [AsyncPipe, NgIf, PolymorpheusOutlet, TuiButton, TuiLet, TuiRepeatTimes],\n    templateUrl: './pagination.template.html',\n    styleUrls: ['./pagination.style.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiPagination {\n    @ViewChildren('element', {read: ElementRef})\n    private readonly els: QueryList<ElementRef<HTMLElement>> = EMPTY_QUERY;\n\n    private readonly el = tuiInjectElement();\n\n    protected readonly texts$ = inject(TUI_PAGINATION_TEXTS);\n    protected readonly icons = inject(TUI_SPIN_ICONS);\n\n    @Input()\n    public length = 1;\n\n    @Input()\n    public focusable = true;\n\n    @Input()\n    public size: TuiSizeL | TuiSizeS = 'l';\n\n    @Input()\n    public readonly disabled = false;\n\n    /**\n     * Amount of visible pages around active page\n     */\n    @Input()\n    public activePadding = 1;\n\n    /**\n     * Amount of visible pages at the edges\n     */\n    @Input()\n    public sidePadding = 1;\n\n    /**\n     * Customization for page number display.\n     */\n    @Input()\n    public content: PolymorpheusContent<TuiContext<number>>;\n\n    /**\n     * Active page index\n     */\n    @Input()\n    public index = 0;\n\n    @Output()\n    public readonly indexChange = new EventEmitter<number>();\n\n    public get nativeFocusableElement(): HTMLElement | null {\n        if (this.disabled) {\n            return null;\n        }\n\n        let activeElementIndex = 0;\n        const {elementsLength} = this;\n\n        for (let i = 0; i < elementsLength; i++) {\n            const itemIndex = this.getItemIndexByElementIndex(i);\n\n            if (itemIndex) {\n                activeElementIndex++;\n            }\n\n            if (itemIndex === this.index) {\n                break;\n            }\n        }\n\n        return (\n            this.els.find((_, index) => index === activeElementIndex)?.nativeElement ??\n            null\n        );\n    }\n\n    public get focused(): boolean {\n        return tuiIsNativeFocusedIn(this.el);\n    }\n\n    public get arrowIsDisabledLeft(): boolean {\n        return this.index === 0;\n    }\n\n    public get arrowIsDisabledRight(): boolean {\n        return this.reverseIndex === 0;\n    }\n\n    /**\n     * Number of items in a container.\n     */\n    protected get elementsLength(): number {\n        return this.itemsFit ? this.length : this.maxElementsLength;\n    }\n\n    protected get buttonSize(): TuiSizeXS {\n        return this.size === 'm' ? 'xs' : 's';\n    }\n\n    protected elementIsFocusable(index: number): boolean {\n        return this.index === index && !this.focused;\n    }\n\n    /**\n     * Get index by element index\n     * @param elementIndex\n     * @returns index or null (for '…')\n     */\n    protected getItemIndexByElementIndex(elementIndex: number): number | null {\n        if (this.size === 's') {\n            return elementIndex;\n        }\n\n        if (elementIndex < this.sidePadding) {\n            return elementIndex;\n        }\n\n        if (elementIndex === this.sidePadding && this.hasCollapsedItems(this.index)) {\n            return null;\n        }\n\n        const reverseElementIndex = this.lastElementIndex - elementIndex;\n\n        if (\n            reverseElementIndex === this.sidePadding &&\n            this.hasCollapsedItems(this.reverseIndex)\n        ) {\n            return null;\n        }\n\n        if (reverseElementIndex < this.sidePadding) {\n            return this.lastIndex - reverseElementIndex;\n        }\n\n        const computedIndex = this.index - this.maxHalfLength + elementIndex;\n\n        return tuiClamp(\n            computedIndex,\n            elementIndex,\n            this.lastIndex - reverseElementIndex,\n        );\n    }\n\n    protected getElementMode(index: number): string {\n        const fallback = this.size === 's' ? 'secondary' : 'flat';\n\n        return this.index === index ? 'primary' : fallback;\n    }\n\n    protected onElementClick(index: number): void {\n        this.updateIndex(index);\n    }\n\n    protected onElementKeyDownArrowLeft(element: HTMLElement): void {\n        if (element === this.els.first.nativeElement) {\n            return;\n        }\n\n        const previous = this.els.find(\n            (_, index, array) => array[index + 1]?.nativeElement === element,\n        );\n\n        previous?.nativeElement.focus();\n    }\n\n    protected onElementKeyDownArrowRight(element: HTMLElement): void {\n        if (element === this.els.last.nativeElement) {\n            return;\n        }\n\n        const next = this.els.find(\n            (_, index, array) => array[index - 1]?.nativeElement === element,\n        );\n\n        next?.nativeElement.focus();\n    }\n\n    protected onArrowClick(direction: TuiHorizontalDirection): void {\n        this.tryChangeTo(direction);\n        this.focusActive();\n    }\n\n    /**\n     * Active index from the end\n     */\n    private get reverseIndex(): number {\n        return this.lastIndex - this.index;\n    }\n\n    /**\n     * Max number of elements in half (not counting the middle one).\n     */\n    private get maxHalfLength(): number {\n        return this.sidePadding + DOTS_LENGTH + this.activePadding;\n    }\n\n    /**\n     * Is there '...' anywhere\n     */\n    private get itemsFit(): boolean {\n        return this.length <= this.maxElementsLength;\n    }\n\n    /**\n     * Max number of elements\n     */\n    private get maxElementsLength(): number {\n        return this.maxHalfLength * 2 + ACTIVE_ITEM_LENGTH;\n    }\n\n    private get lastIndex(): number {\n        return this.length - 1;\n    }\n\n    private get lastElementIndex(): number {\n        return this.elementsLength - 1;\n    }\n\n    /**\n     * Are there collapsed items at that index\n     * @param index\n     * @returns there are collapsed items\n     */\n    private hasCollapsedItems(index: number): boolean {\n        return !this.itemsFit && index > this.maxHalfLength;\n    }\n\n    private tryChangeTo(direction: TuiHorizontalDirection): void {\n        this.updateIndex(\n            tuiClamp(this.index + (direction === 'right' ? 1 : -1), 0, this.lastIndex),\n        );\n    }\n\n    private focusActive(): void {\n        const {nativeFocusableElement} = this;\n\n        if (nativeFocusableElement) {\n            nativeFocusableElement.focus();\n        }\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","<div class=\"t-content\">\n    <ng-container *ngIf=\"size !== 's'; else smallButtons\">\n        <ng-container *ngIf=\"texts$ | async as texts\">\n            <button\n                appearance=\"flat\"\n                tabIndex=\"-1\"\n                tuiIconButton\n                type=\"button\"\n                class=\"t-button\"\n                [disabled]=\"arrowIsDisabledLeft\"\n                [iconStart]=\"icons.decrement\"\n                [size]=\"buttonSize\"\n                (click)=\"onArrowClick('left')\"\n                (mousedown.zoneless.prevent)=\"(0)\"\n            >\n                {{ texts[0] }}\n            </button>\n            <ng-container *tuiRepeatTimes=\"let elementIndex of elementsLength\">\n                <ng-container *tuiLet=\"getItemIndexByElementIndex(elementIndex) as index\">\n                    <button\n                        *ngIf=\"index !== null; else dotsTemplate\"\n                        #element\n                        automation-id=\"tui-pagination__element\"\n                        tuiButton\n                        type=\"button\"\n                        class=\"t-button\"\n                        [appearance]=\"getElementMode(index)\"\n                        [disabled]=\"disabled\"\n                        [size]=\"buttonSize\"\n                        [tabIndex]=\"elementIsFocusable(index) ? 0 : -1\"\n                        (click)=\"onElementClick(index)\"\n                        (keydown.arrowLeft.prevent)=\"onElementKeyDownArrowLeft(element)\"\n                        (keydown.arrowRight.prevent)=\"onElementKeyDownArrowRight(element)\"\n                    >\n                        <ng-container *polymorpheusOutlet=\"content || index + 1 as text; context: {$implicit: index}\">\n                            {{ text }}\n                        </ng-container>\n                    </button>\n                </ng-container>\n            </ng-container>\n            <button\n                appearance=\"flat\"\n                tabIndex=\"-1\"\n                tuiIconButton\n                type=\"button\"\n                class=\"t-button\"\n                [disabled]=\"arrowIsDisabledRight\"\n                [iconStart]=\"icons.increment\"\n                [size]=\"buttonSize\"\n                (click)=\"onArrowClick('right')\"\n                (mousedown.zoneless.prevent)=\"(0)\"\n            >\n                {{ texts[1] }}\n            </button>\n        </ng-container>\n    </ng-container>\n    <ng-template #smallButtons>\n        <button\n            *tuiRepeatTimes=\"let indexItem of length\"\n            #element\n            tuiButton\n            type=\"button\"\n            class=\"t-button t-button_small\"\n            [appearance]=\"getElementMode(indexItem)\"\n            [disabled]=\"disabled\"\n            [tabIndex]=\"elementIsFocusable(indexItem) ? 0 : -1\"\n            (click)=\"onElementClick(indexItem)\"\n            (keydown.arrowLeft.prevent)=\"onElementKeyDownArrowLeft(element)\"\n            (keydown.arrowRight.prevent)=\"onElementKeyDownArrowRight(element)\"\n        >\n            {{ indexItem + 1 }}\n        </button>\n    </ng-template>\n    <ng-template #dotsTemplate>\n        <div\n            automation-id=\"tui-pagination__element\"\n            class=\"t-dots\"\n            [class.t-dots_small]=\"size === 'm'\"\n        ></div>\n    </ng-template>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}