{"version":3,"file":"taiga-ui-layout-components-dynamic-header.mjs","sources":["../../../projects/layout/components/dynamic-header/dynamic-header-anchor.directive.ts","../../../projects/layout/components/dynamic-header/dynamic-header-container.directive.ts","../../../projects/layout/components/dynamic-header/dynamic-header.component.ts","../../../projects/layout/components/dynamic-header/dynamic-header.ts","../../../projects/layout/components/dynamic-header/taiga-ui-layout-components-dynamic-header.ts"],"sourcesContent":["import {\n    type AfterViewInit,\n    Directive,\n    inject,\n    type OnDestroy,\n    signal,\n    TemplateRef,\n    ViewContainerRef,\n} from '@angular/core';\nimport {WaIntersectionObserverDirective} from '@ng-web-apis/intersection-observer';\n\nimport {TuiDynamicHeaderContainerDirective} from './dynamic-header-container.directive';\n\n@Directive({selector: '[tuiDynamicHeaderAnchor]'})\nexport class TuiDynamicHeaderAnchorDirective implements AfterViewInit, OnDestroy {\n    private readonly vcr = inject(ViewContainerRef);\n    private readonly observer = inject(WaIntersectionObserverDirective);\n    private readonly container = inject(TuiDynamicHeaderContainerDirective);\n    public readonly templateRef = inject(TemplateRef<unknown>);\n    public readonly view = this.vcr.createEmbeddedView(this.templateRef);\n    public readonly visible = signal(false);\n\n    public ngAfterViewInit(): void {\n        this.observer.observe(this.view.rootNodes[0], ([e]) => {\n            this.visible.set(!e?.isIntersecting);\n            this.container.update();\n        });\n    }\n\n    public ngOnDestroy(): void {\n        this.observer.unobserve(this.view.rootNodes[0]);\n    }\n}\n","import {contentChildren, Directive, signal, type TemplateRef} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {\n    WaIntersectionObserverDirective,\n    WaIntersectionRoot,\n} from '@ng-web-apis/intersection-observer';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {distinctUntilChanged, fromEvent, map, pairwise} from 'rxjs';\n\nimport {TuiDynamicHeaderAnchorDirective} from './dynamic-header-anchor.directive';\n\n@Directive({\n    selector: '[tuiDynamicHeaderContainer]',\n    hostDirectives: [WaIntersectionRoot, WaIntersectionObserverDirective],\n    host: {waIntersectionRootMargin: '-44px 0px 1000000% 0px'},\n})\nexport class TuiDynamicHeaderContainerDirective {\n    private readonly el = tuiInjectElement();\n\n    protected readonly headers = contentChildren(TuiDynamicHeaderAnchorDirective, {\n        descendants: true,\n    });\n\n    public readonly hiddenHeaders = signal<Array<TemplateRef<unknown>>>([]);\n\n    public readonly scrollDir = toSignal(\n        fromEvent(this.el, 'scroll').pipe(\n            map(({target}) => (target as HTMLElement).scrollTop),\n            pairwise(),\n            map(([prev, next]) => (next > prev ? -1 : 1)),\n            distinctUntilChanged(),\n            tuiZoneOptimized(),\n        ),\n    );\n\n    public update(): void {\n        this.hiddenHeaders.set(\n            this.headers()\n                .filter((h) => h.visible())\n                .map((h) => h.templateRef),\n        );\n    }\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDynamicHeaderContainerDirective} from './dynamic-header-container.directive';\n\n@Component({\n    selector: '[tuiDynamicHeader]',\n    imports: [PolymorpheusOutlet, TuiAnimated],\n    template: `\n        @for (header of container.hiddenHeaders(); track header) {\n            @if ($last) {\n                <div tuiAnimated>\n                    <div *polymorpheusOutlet=\"header as text\">{{ text }}</div>\n                </div>\n            }\n        } @empty {\n            <div tuiAnimated>\n                <ng-content />\n            </div>\n        }\n    `,\n    styleUrl: './dynamic-header.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {'[style.--t-dir]': 'container.scrollDir() || -1'},\n})\nexport class TuiDynamicHeaderComponent {\n    protected readonly container = inject(TuiDynamicHeaderContainerDirective);\n}\n","import {TuiDynamicHeaderComponent} from './dynamic-header.component';\nimport {TuiDynamicHeaderAnchorDirective} from './dynamic-header-anchor.directive';\nimport {TuiDynamicHeaderContainerDirective} from './dynamic-header-container.directive';\n\nexport const TuiDynamicHeader = [\n    TuiDynamicHeaderComponent,\n    TuiDynamicHeaderAnchorDirective,\n    TuiDynamicHeaderContainerDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}