{"version":3,"file":"taiga-ui-core-components-expand.mjs","sources":["../../../projects/core/components/expand/expand-content.directive.ts","../../../projects/core/components/expand/expand.component.ts","../../../projects/core/components/expand/expand.template.html","../../../projects/core/components/expand/expand.ts","../../../projects/core/components/expand/taiga-ui-core-components-expand.ts"],"sourcesContent":["import {Directive} from '@angular/core';\n\n/**\n * @deprecated use {@link TuiExpand} from @taiga-ui/experimental\n */\n@Directive({\n    standalone: true,\n    selector: '[tuiExpandContent]',\n})\nexport class TuiExpandContent {}\n","import {NgIf, type NgIfContext, NgTemplateOutlet} from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    DestroyRef,\n    type ElementRef,\n    inject,\n    Input,\n    TemplateRef,\n    ViewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {type TuiValuesOf} from '@taiga-ui/cdk/types';\nimport {tuiParentAnimation} from '@taiga-ui/core/animations';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {timer} from 'rxjs';\n\nimport {TuiExpandContent} from './expand-content.directive';\n\nconst State = {\n    Idle: 0,\n    Loading: 1,\n    Prepared: 2,\n    Animated: 3,\n} as const;\n\nconst LOADER_HEIGHT = 48;\n\n/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * @deprecated use {@link TuiExpand} from @taiga-ui/experimental\n */\n@Component({\n    standalone: true,\n    selector: 'tui-expand',\n    imports: [NgIf, NgTemplateOutlet, TuiLoader],\n    templateUrl: './expand.template.html',\n    styleUrls: ['./expand.style.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [tuiParentAnimation],\n    host: {\n        '[style.height.px]': 'height',\n        '[class._loading]': 'loading',\n        '[class._overflow]': 'overflow',\n        '[class._expanded]': 'expanded',\n        '[attr.aria-expanded]': 'expanded',\n        '(transitionend.self)': 'onTransitionEnd($event)',\n        [`(${TUI_EXPAND_LOADED})`]: 'onExpandLoaded($event)',\n    },\n})\nexport class TuiExpandComponent {\n    @ViewChild('wrapper')\n    private readonly contentWrapper?: ElementRef<HTMLDivElement>;\n\n    private readonly cdr = inject(ChangeDetectorRef);\n    private readonly destroyRef = inject(DestroyRef);\n    private state: TuiValuesOf<typeof State> = State.Idle;\n\n    @ContentChild(TuiExpandContent, {read: TemplateRef})\n    protected content: TemplateRef<NgIfContext<boolean>> | null = null;\n\n    protected expanded: boolean | null = null;\n\n    @Input()\n    public async = false;\n\n    @Input('expanded')\n    public set expandedSetter(expanded: boolean | null) {\n        if (this.expanded === null) {\n            this.expanded = expanded;\n\n            return;\n        }\n\n        if (this.state !== State.Idle) {\n            this.expanded = expanded;\n            this.state = State.Animated;\n\n            return;\n        }\n\n        this.expanded = expanded;\n        this.retrigger(this.async && expanded ? State.Loading : State.Animated);\n    }\n\n    public get contentVisible(): boolean {\n        return this.expanded || this.state !== State.Idle;\n    }\n\n    protected get overflow(): boolean {\n        return this.state !== State.Idle;\n    }\n\n    protected get loading(): boolean {\n        return !!this.expanded && this.async && this.state === State.Loading;\n    }\n\n    protected get height(): number | null {\n        const {expanded, state, contentWrapper} = this;\n\n        if (\n            (expanded && state === State.Prepared) ||\n            (!expanded && state === State.Animated)\n        ) {\n            return 0;\n        }\n\n        if (\n            contentWrapper &&\n            ((!expanded && state === State.Prepared) ||\n                (expanded && state === State.Animated))\n        ) {\n            return contentWrapper.nativeElement.offsetHeight;\n        }\n\n        if (contentWrapper && expanded && state === State.Loading) {\n            return Math.max(contentWrapper.nativeElement.offsetHeight, LOADER_HEIGHT);\n        }\n\n        return null;\n    }\n\n    protected onTransitionEnd({propertyName, pseudoElement}: TransitionEvent): void {\n        if (\n            propertyName === 'opacity' &&\n            !pseudoElement &&\n            this.state === State.Animated\n        ) {\n            this.state = State.Idle;\n        }\n    }\n\n    protected onExpandLoaded(event: Event): void {\n        event.stopPropagation();\n\n        if (this.state === State.Loading) {\n            this.retrigger(State.Animated);\n        }\n    }\n\n    private retrigger(state: TuiValuesOf<typeof State>): void {\n        this.state = State.Prepared;\n\n        timer(0)\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => {\n                // We need delay to re-trigger CSS height transition from the correct number\n                if (this.state !== State.Prepared) {\n                    return;\n                }\n\n                this.state = state;\n                this.cdr.markForCheck();\n            });\n    }\n}\n","<div\n    #wrapper\n    class=\"t-wrapper\"\n    @tuiParentAnimation\n    [@.disabled]=\"overflow\"\n>\n    <ng-container *ngIf=\"contentVisible\">\n        <ng-content />\n        <tui-loader\n            *ngIf=\"async; else content\"\n            size=\"l\"\n            [overlay]=\"true\"\n            [showLoader]=\"loading\"\n        >\n            <ng-container [ngTemplateOutlet]=\"content\" />\n        </tui-loader>\n    </ng-container>\n</div>\n","import {TuiExpandComponent} from './expand.component';\nimport {TuiExpandContent} from './expand-content.directive';\n\n/**\n * @deprecated use {@link TuiExpand} from @taiga-ui/experimental\n */\nexport const TuiExpand = [TuiExpandComponent, TuiExpandContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}