{"version":3,"file":"taiga-ui-kit-components-line-clamp.mjs","sources":["../../../projects/kit/components/line-clamp/line-clamp.options.ts","../../../projects/kit/components/line-clamp/line-clamp-box.component.ts","../../../projects/kit/components/line-clamp/line-clamp-fallback.directive.ts","../../../projects/kit/components/line-clamp/line-clamp-position.directive.ts","../../../projects/kit/components/line-clamp/line-clamp.component.ts","../../../projects/kit/components/line-clamp/line-clamp.template.html","../../../projects/kit/components/line-clamp/taiga-ui-kit-components-line-clamp.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiLineClampOptions {\n    readonly showHint: boolean;\n}\n\nexport const TUI_LINE_CLAMP_DEFAULT_OPTIONS: TuiLineClampOptions = {showHint: true};\n\n/**\n * Default parameters for LineClamp component\n */\nexport const [TUI_LINE_CLAMP_OPTIONS, tuiLineClampOptionsProvider] = tuiCreateOptions(\n    TUI_LINE_CLAMP_DEFAULT_OPTIONS,\n);\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {TuiHintComponent} from '@taiga-ui/core/portals/hint';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiLineClamp} from './line-clamp.component';\n\n@Component({\n    selector: 'tui-line-clamp-box',\n    imports: [PolymorpheusOutlet],\n    template:\n        '<ng-container *polymorpheusOutlet=\"content() as text\">{{ text }}</ng-container>',\n    styleUrl: './line-clamp-box.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {'[style.line-height.px]': 'host.line()', '[style.min-width.px]': 'width'},\n})\nexport class TuiLineClampBox extends TuiHintComponent {\n    protected readonly host = inject(TuiLineClamp);\n\n    protected get width(): number {\n        return this.accessor.getClientRect().width;\n    }\n}\n","import {afterNextRender, Directive, effect, inject, INJECTOR} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {WaResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_TIMELINE_SUPPORT} from '@taiga-ui/core/tokens';\n\nimport {TuiLineClamp} from './line-clamp.component';\n\ntype Measure = Pick<Element, 'clientWidth' | 'scrollHeight' | 'scrollWidth'>;\n\n/**\n * Detects overflow by measuring, for browsers without scroll timeline support (see component\n * styles)\n */\n@Directive({\n    selector: '[tuiLineClampFallback]',\n    providers: [WaResizeObserverService],\n    host: {'(mouseenter)': 'apply(measure())'},\n})\nexport class TuiLineClampFallback {\n    private readonly host = inject(TuiLineClamp);\n    private readonly injector = inject(INJECTOR);\n    private readonly el = tuiInjectElement();\n\n    /**\n     * Reads of all instances are batched into the `earlyRead`\n     * phase, so writes of one of them do not force a reflow for the next one\n     */\n    protected readonly refresh =\n        !inject(TUI_TIMELINE_SUPPORT) &&\n        effect(() => {\n            this.host.content();\n            this.host.maxHeight();\n\n            afterNextRender(\n                {\n                    earlyRead: () => this.measure(),\n                    write: (measure) => this.apply(measure),\n                },\n                {injector: this.injector},\n            );\n        });\n\n    protected readonly resize =\n        !inject(TUI_TIMELINE_SUPPORT) &&\n        inject(WaResizeObserverService)\n            .pipe(takeUntilDestroyed())\n            .subscribe(() => this.apply(this.measure()));\n\n    protected measure(): Measure {\n        const {scrollHeight, scrollWidth, clientWidth} =\n            this.el.firstElementChild ?? this.el;\n\n        return {scrollHeight, scrollWidth, clientWidth};\n    }\n\n    protected apply({scrollHeight, scrollWidth, clientWidth}: Measure): void {\n        this.host.setOverflown(\n            scrollHeight > this.host.maxHeight() || scrollWidth > clientWidth,\n        );\n    }\n}\n","import {Directive, inject} from '@angular/core';\nimport {\n    tuiAsPositionAccessor,\n    TuiPositionAccessor,\n    type TuiRectAccessor,\n} from '@taiga-ui/core/classes';\nimport {TuiHintDirective} from '@taiga-ui/core/portals/hint';\nimport {type TuiPoint} from '@taiga-ui/core/types';\n\n@Directive({\n    selector: '[tuiLineClampPosition]',\n    providers: [tuiAsPositionAccessor(TuiLineClampPositionDirective)],\n})\nexport class TuiLineClampPositionDirective extends TuiPositionAccessor {\n    private readonly accessor = inject<TuiRectAccessor>(TuiHintDirective);\n\n    public readonly type = 'hint';\n\n    public getPosition(): TuiPoint {\n        const {top, left} = this.accessor.getClientRect();\n\n        return [left, top];\n    }\n}\n","import {type BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    inject,\n    input,\n    output,\n    signal,\n} from '@angular/core';\nimport {toObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {TuiTransitioned} from '@taiga-ui/cdk/directives/transitioned';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_HINT_COMPONENT, TuiHint} from '@taiga-ui/core/portals/hint';\nimport {TUI_FONT_OFFSET} from '@taiga-ui/core/utils/miscellaneous';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {filter, fromEvent, map, of, pairwise, startWith, switchMap} from 'rxjs';\n\nimport {TUI_LINE_CLAMP_OPTIONS} from './line-clamp.options';\nimport {TuiLineClampBox} from './line-clamp-box.component';\nimport {TuiLineClampFallback} from './line-clamp-fallback.directive';\nimport {TuiLineClampPositionDirective} from './line-clamp-position.directive';\n\n@Component({\n    selector: 'tui-line-clamp',\n    imports: [PolymorpheusOutlet, TuiHint, TuiLineClampPositionDirective],\n    templateUrl: './line-clamp.template.html',\n    styleUrl: './line-clamp.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{provide: TUI_HINT_COMPONENT, useValue: TuiLineClampBox}],\n    hostDirectives: [TuiTransitioned, TuiLineClampFallback],\n    host: {\n        '[class._overflown]': 'overflown()',\n        '[style.line-height.px]': 'line()',\n        '[style.max-height.px]': 'maxHeight()',\n    },\n})\nexport class TuiLineClamp {\n    private readonly offset = inject(TUI_FONT_OFFSET);\n    private readonly options = inject(TUI_LINE_CLAMP_OPTIONS);\n    private readonly el = tuiInjectElement();\n    private readonly overflows = signal(0);\n    private readonly destroyed = signal(false);\n\n    protected readonly overflown = signal(false);\n\n    public readonly maxHeight = computed(() => this.line() * this.linesLimit());\n    public readonly line = computed(() => this.lineHeight() + this.offset());\n    public readonly lineHeight = input(24);\n    public readonly linesLimit = input(1);\n    public readonly content = input<PolymorpheusContent>();\n\n    public readonly showHint = input<boolean, BooleanInput>(this.options.showHint, {\n        transform: coerceBooleanProperty,\n    });\n\n    public readonly overflownChange = output<boolean>();\n\n    protected readonly lineClamp = toSignal(\n        toObservable(this.linesLimit).pipe(\n            startWith(1),\n            pairwise(),\n            switchMap(([prev, next]) =>\n                next >= prev\n                    ? of(next)\n                    : fromEvent(this.el, 'transitionend').pipe(\n                          filter((e) => e.target === e.currentTarget),\n                          map(() => next),\n                      ),\n            ),\n        ),\n        {initialValue: 0},\n    );\n\n    protected readonly computedContent = computed(() =>\n        this.showHint() && this.overflown() ? this.content() : '',\n    );\n\n    constructor() {\n        inject(DestroyRef).onDestroy(() => this.destroyed.set(true));\n    }\n\n    public setOverflown(overflown: boolean): void {\n        if (this.destroyed() || this.overflown() === overflown) {\n            return;\n        }\n\n        this.overflown.set(overflown);\n        this.overflownChange.emit(overflown);\n    }\n\n    /**\n     * Both axes can overflow at once, and turning the clamp on can stop one of them,\n     * so a single axis going quiet does not mean the content fits\n     */\n    protected onOverflow(overflown: boolean): void {\n        this.overflows.update((val) => val + (overflown ? 1 : -1));\n\n        this.setOverflown(this.overflows() > 0);\n    }\n}\n","<div\n    tuiLineClampPosition\n    class=\"t-wrapper\"\n    [style.-webkit-line-clamp]=\"lineClamp()\"\n    [style.word-break]=\"lineClamp() > 1 ? 'break-word' : 'break-all'\"\n    [tuiHint]=\"computedContent()\"\n    (animationcancel.self)=\"onOverflow(false)\"\n    (animationstart.self)=\"onOverflow(true)\"\n>\n    <ng-container *polymorpheusOutlet=\"content() as text\">{{ text }}</ng-container>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.TuiLineClampFallback"],"mappings":"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"}