{"version":3,"file":"koobiq-components-title.mjs","sources":["../../../packages/components/title/title.directive.ts","../../../packages/components/title/title.module.ts","../../../packages/components/title/koobiq-components-title.ts"],"sourcesContent":["import { ContentObserver } from '@angular/cdk/observers';\nimport {\n    AfterViewInit,\n    ContentChild,\n    Directive,\n    ElementRef,\n    Host,\n    inject,\n    Inject,\n    OnDestroy,\n    Optional\n} from '@angular/core';\nimport { KBQ_TITLE_TEXT_REF, kbqInjectNativeElement, KbqTitleTextRef, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Subject, Subscription, throttleTime } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n    selector: '[kbq-title]',\n    exportAs: 'kbqTitle',\n    host: {\n        '(mouseenter)': 'handleElementEnter()',\n        '(mouseleave)': 'hideTooltip()',\n        '(window:resize)': 'resizeStream.next($event)'\n    }\n})\nexport class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {\n    private readonly nativeElement = kbqInjectNativeElement();\n\n    private contentObserver = inject(ContentObserver);\n\n    // todo need rename kbqTrigger in popover, tooltip and title. Here workaround for kbq-title and popover on one button\n    set trigger(value: string) {\n        super.trigger = value;\n    }\n\n    get trigger(): string {\n        return PopUpTriggers.Hover;\n    }\n\n    get isOverflown(): boolean {\n        /** For special cases where the difference is a fraction of a pixel */\n        if (\n            !this.isVerticalOverflown &&\n            (this.child.scrollWidth === 0 || this.parent?.offsetWidth === this.child.scrollWidth)\n        ) {\n            if (this.hasOnlyText) {\n                const wrapper = this.renderer.createElement('span');\n\n                wrapper.innerText = this.child.innerText;\n                this.parent.appendChild(wrapper);\n\n                const result = this.parent.getBoundingClientRect().width < wrapper.getBoundingClientRect().width;\n\n                wrapper.remove();\n\n                return result;\n            }\n\n            return this.parent.getBoundingClientRect().width < this.child.getBoundingClientRect().width;\n        }\n\n        return this.isHorizontalOverflown || this.isVerticalOverflown;\n    }\n\n    get isHorizontalOverflown(): boolean {\n        return this.parent?.offsetWidth < this.child.scrollWidth;\n    }\n\n    get isVerticalOverflown(): boolean {\n        return this.parent?.offsetHeight < this.child.scrollHeight;\n    }\n\n    get viewValue(): string {\n        return (this.parent?.textContent || '').trim();\n    }\n\n    get parent(): HTMLElement {\n        return this.parentContainer?.nativeElement || this.parentContainer;\n    }\n\n    get child(): HTMLElement {\n        return this.childContainer.nativeElement || this.childContainer;\n    }\n\n    get hasOnlyText(): boolean {\n        return (\n            this.nativeElement.childNodes.length === 1 && this.nativeElement.childNodes[0].nodeType === Node.TEXT_NODE\n        );\n    }\n\n    readonly resizeStream = new Subject<Event>();\n\n    private readonly debounceInterval: number = 100;\n\n    private resizeSubscription = Subscription.EMPTY;\n    private contentObserverSubscription = Subscription.EMPTY;\n    private focusMonitorSubscription = Subscription.EMPTY;\n\n    @ContentChild('kbqTitleText', { descendants: true, static: true })\n    private childContainer: ElementRef;\n\n    @ContentChild('kbqTitleContainer')\n    private parentContainer: ElementRef;\n\n    constructor(@Host() @Optional() @Inject(KBQ_TITLE_TEXT_REF) private componentInstance?: KbqTitleTextRef) {\n        super();\n    }\n\n    ngAfterViewInit() {\n        this.parentContainer = this.parentContainer || this.componentInstance?.parentTextElement || this.elementRef;\n        this.childContainer = this.childContainer || this.componentInstance?.textElement || this.elementRef;\n        this.content = this.viewValue;\n\n        this.resizeSubscription = this.resizeStream\n            .pipe(debounceTime(this.debounceInterval))\n            .subscribe(() => (this.disabled = !this.isOverflown));\n\n        this.contentObserverSubscription = this.contentObserver\n            .observe(this.parent)\n            .pipe(throttleTime(this.debounceInterval))\n            .subscribe(() => {\n                this.disabled = !this.isOverflown;\n                this.content = this.viewValue;\n            });\n\n        this.focusMonitorSubscription = this.focusMonitor\n            .monitor(this.elementRef)\n            .subscribe((origin) => (origin === 'keyboard' ? this.handleElementEnter() : this.hideTooltip()));\n    }\n\n    ngOnDestroy() {\n        super.ngOnDestroy();\n\n        this.resizeSubscription.unsubscribe();\n        this.contentObserverSubscription.unsubscribe();\n        this.focusMonitorSubscription.unsubscribe();\n        this.focusMonitor.stopMonitoring(this.elementRef);\n    }\n\n    handleElementEnter() {\n        this.disabled = !this.isOverflown;\n    }\n\n    hideTooltip() {\n        this.disabled = true;\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqTitleDirective } from './title.directive';\n\n@NgModule({\n    imports: [KbqToolTipModule, KbqTitleDirective],\n    exports: [KbqTitleDirective]\n})\nexport class KbqTitleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}