{"version":3,"file":"koobiq-components-link.mjs","sources":["../../../packages/components/link/link.component.ts","../../../packages/components/link/link.module.ts","../../../packages/components/link/koobiq-components-link.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    booleanAttribute,\n    ContentChild,\n    ContentChildren,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    forwardRef,\n    inject,\n    Input,\n    numberAttribute,\n    OnDestroy,\n    QueryList,\n    Renderer2,\n    signal\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n    getNodesWithoutComments,\n    kbqInjectNativeElement,\n    leftIconClassName,\n    rightIconClassName\n} from '@koobiq/components/core';\nimport { KbqIcon } from '@koobiq/components/icon';\n\nexport const baseURLRegex = /^http(s)?:\\/\\//;\n\n@Directive({\n    selector: '[kbq-link]',\n    exportAs: 'kbqLink',\n    host: {\n        class: 'kbq-link',\n        '[class.kbq-link_no-underline]': 'noUnderline',\n        '[class.kbq-link_use-visited]': 'useVisited',\n        '[class.kbq-link_big]': 'big',\n        '[class.kbq-link_compact]': 'compact',\n        '[class.kbq-link_pseudo]': 'pseudo',\n        '[class.kbq-link_multiline]': 'multiline',\n        '[class.kbq-link_print]': 'printMode',\n        '[class.kbq-text-only]': '!hasIcon',\n        '[class.kbq-text-with-icon]': 'hasIcon',\n        '[class.kbq-disabled]': 'disabled',\n        '[attr.disabled]': 'disabled || null',\n        '[attr.tabindex]': 'tabIndex',\n        '[attr.print]': 'printUrl'\n    }\n})\nexport class KbqLink implements AfterContentInit, AfterViewInit, OnDestroy {\n    protected readonly renderer = inject(Renderer2);\n    protected readonly destroyRef = inject(DestroyRef);\n    protected readonly nativeElement = kbqInjectNativeElement();\n\n    @ContentChildren(forwardRef(() => KbqIcon), { read: ElementRef }) icons: QueryList<ElementRef>;\n\n    // @todo 20 In the next major release this feature will be replaced on the input signal.\n    /** Whether the link is disabled. */\n    @Input({ transform: booleanAttribute })\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        this.disabledSignal.set(value);\n    }\n\n    /** @docs-private */\n    readonly disabledSignal = signal(false);\n\n    @Input({ transform: numberAttribute })\n    get tabIndex(): number {\n        return this.disabled ? -1 : this._tabIndex;\n    }\n\n    set tabIndex(value: number) {\n        this._tabIndex = value;\n    }\n\n    private _tabIndex = 0;\n\n    @Input({ transform: booleanAttribute }) pseudo: boolean = false;\n\n    @Input({ transform: booleanAttribute }) noUnderline: boolean = false;\n\n    @Input({ transform: booleanAttribute }) big: boolean = false;\n\n    @Input({ transform: booleanAttribute }) compact: boolean = false;\n\n    /** Whether the link has an increased hit area for multiline usage. */\n    @Input({ transform: booleanAttribute }) multiline: boolean = false;\n\n    @Input({ transform: booleanAttribute }) useVisited: boolean = false;\n\n    get hasIcon(): boolean {\n        return !!this.icon;\n    }\n\n    @Input()\n    set print(value: any) {\n        this.printMode = value !== null;\n\n        this._print = value;\n\n        this.updatePrintUrl();\n    }\n\n    private _print: string;\n\n    printMode: boolean;\n\n    printUrl: string;\n\n    // @todo 20 In the next major release this line will be deleted.\n    private _disabled: boolean;\n\n    @ContentChild(KbqIcon) icon: KbqIcon;\n\n    constructor(\n        private elementRef: ElementRef<HTMLAnchorElement>,\n        private focusMonitor: FocusMonitor\n    ) {\n        this.updatePrintUrl();\n\n        // @todo 20 In the next major release this line will be deleted.\n        toObservable(this.disabledSignal).subscribe((value) => (this._disabled = value));\n    }\n\n    ngAfterViewInit(): void {\n        this.focusMonitor.monitor(this.elementRef.nativeElement, true);\n    }\n\n    ngOnDestroy() {\n        this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n    }\n\n    focus(): void {\n        this.getHostElement().focus();\n    }\n\n    getHostElement() {\n        return this.elementRef.nativeElement;\n    }\n\n    ngAfterContentInit() {\n        this.updateClassModifierForIcons();\n\n        this.icons.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateClassModifierForIcons);\n    }\n\n    private updateClassModifierForIcons = () => {\n        this.icons.forEach(({ nativeElement }) => {\n            this.renderer.removeClass(nativeElement, leftIconClassName);\n            this.renderer.removeClass(nativeElement, rightIconClassName);\n        });\n\n        const filteredNodesWithoutComments = getNodesWithoutComments(this.nativeElement.childNodes as NodeList);\n\n        if (this.icons.length && filteredNodesWithoutComments.length > 1) {\n            this.icons.forEach(({ nativeElement }) => {\n                const iconIndex = filteredNodesWithoutComments.findIndex((node) => node === nativeElement);\n\n                if (iconIndex === 0) {\n                    this.renderer.addClass(nativeElement, leftIconClassName);\n                }\n\n                if (iconIndex === filteredNodesWithoutComments.length - 1) {\n                    this.renderer.addClass(nativeElement, rightIconClassName);\n                }\n            });\n        }\n    };\n\n    private updatePrintUrl() {\n        Promise.resolve().then(() => {\n            this.printUrl = this._print || this.getHostElement().href?.replace(baseURLRegex, '');\n        });\n    }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { KbqLink } from './link.component';\n\n@NgModule({\n    imports: [\n        A11yModule,\n        KbqLink\n    ],\n    exports: [KbqLink]\n})\nexport class KbqLinkModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}