{"version":3,"file":"taiga-ui-cdk-directives-active-zone.mjs","sources":["../../../projects/cdk/directives/active-zone/active-zone.directive.ts","../../../projects/cdk/directives/active-zone/taiga-ui-cdk-directives-active-zone.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {Directive, ElementRef, inject, Injectable, type OnDestroy} from '@angular/core';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TUI_ACTIVE_ELEMENT} from '@taiga-ui/cdk/tokens';\nimport {tuiArrayRemove} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {distinctUntilChanged, map, type Observable, share, skip, startWith} from 'rxjs';\n\n@Injectable({providedIn: 'root'})\n@Directive({\n    selector:\n        '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)',\n    inputs: ['tuiActiveZoneParentSetter: tuiActiveZoneParent'],\n    outputs: ['tuiActiveZoneChange'],\n    exportAs: 'tuiActiveZone',\n})\nexport class TuiActiveZone implements OnDestroy {\n    private readonly active$ = inject<Observable<Element | null>>(TUI_ACTIVE_ELEMENT);\n    private tuiActiveZoneParent: TuiActiveZone | null = null;\n    private readonly parent = inject(TuiActiveZone, {skipSelf: true, optional: true});\n    private readonly el: HTMLElement =\n        inject(ElementRef, {optional: true})?.nativeElement ??\n        inject(DOCUMENT).documentElement;\n\n    public readonly tuiActiveZoneChange = this.active$.pipe(\n        map((element) => !!element && this.contains(element)),\n        startWith(false),\n        distinctUntilChanged(),\n        skip(1),\n        tuiZoneOptimized(),\n        share(),\n    );\n\n    public children: readonly TuiActiveZone[] = [];\n\n    constructor() {\n        this.parent?.addSubActiveZone(this);\n    }\n\n    public set tuiActiveZoneParentSetter(zone: TuiActiveZone | null) {\n        this.tuiActiveZoneParent?.removeSubActiveZone(this);\n        zone?.addSubActiveZone(this);\n        this.tuiActiveZoneParent = zone;\n    }\n\n    public ngOnDestroy(): void {\n        this.parent?.removeSubActiveZone(this);\n        this.tuiActiveZoneParent?.removeSubActiveZone(this);\n    }\n\n    public contains(node: Node): boolean {\n        return (\n            this.el.contains(node) || this.children.some((item) => item.contains(node))\n        );\n    }\n\n    // issue: https://github.com/typescript-eslint/typescript-eslint/issues/11770\n    // eslint-disable-next-line @typescript-eslint/no-unused-private-class-members\n    private addSubActiveZone(activeZone: TuiActiveZone): void {\n        this.children = [...this.children, activeZone];\n    }\n\n    // issue: https://github.com/typescript-eslint/typescript-eslint/issues/11770\n    // eslint-disable-next-line @typescript-eslint/no-unused-private-class-members\n    private removeSubActiveZone(activeZone: TuiActiveZone): void {\n        this.children = tuiArrayRemove(this.children, this.children.indexOf(activeZone));\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}