{"version":3,"file":"mayvio-ui-angular-tooltip.mjs","sources":["../../src/tooltip/tooltip.directive.ts","../../src/tooltip/mayvio-ui-angular-tooltip.ts"],"sourcesContent":["import {\n  Directive,\n  Input,\n  ElementRef,\n  Renderer2,\n  OnInit,\n  OnDestroy,\n  HostListener,\n  inject,\n} from '@angular/core';\n\n@Directive({\n  selector: '[mvTooltip]',\n  standalone: true,\n})\nexport class TooltipDirective implements OnInit, OnDestroy {\n  @Input('mvTooltip') content = '';\n  @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'top';\n  @Input() delay = 0;\n\n  private tooltipEl!: HTMLElement;\n  private id = `mv-tooltip-${Math.random().toString(36).substr(2, 9)}`;\n  private timer: ReturnType<typeof setTimeout> | null = null;\n\n  private el = inject(ElementRef);\n  private renderer = inject(Renderer2);\n\n  constructor() {}\n\n  ngOnInit(): void {\n    // Set up host attributes\n    this.renderer.setAttribute(this.el.nativeElement, 'aria-describedby', this.id);\n    this.createTooltip();\n  }\n\n  ngOnDestroy(): void {\n    if (this.timer) clearTimeout(this.timer);\n    if (this.tooltipEl && this.tooltipEl.parentNode) {\n      this.tooltipEl.parentNode.removeChild(this.tooltipEl);\n    }\n  }\n\n  private createTooltip(): void {\n    this.tooltipEl = this.renderer.createElement('div');\n    this.renderer.setAttribute(this.tooltipEl, 'id', this.id);\n    this.renderer.setAttribute(this.tooltipEl, 'role', 'tooltip');\n\n    // Add base classes\n    this.renderer.addClass(this.tooltipEl, 'mv-tooltip');\n    this.renderer.addClass(this.tooltipEl, `mv-tooltip--${this.placement}`);\n\n    const text = this.renderer.createText(this.content);\n    this.renderer.appendChild(this.tooltipEl, text);\n\n    // Append to body or parent (we append next to host element or container)\n    const parent = this.el.nativeElement.parentNode;\n    if (parent) {\n      this.renderer.appendChild(parent, this.tooltipEl);\n    }\n  }\n\n  @HostListener('mouseenter')\n  @HostListener('focus')\n  show(): void {\n    if (this.timer) clearTimeout(this.timer);\n    if (this.delay > 0) {\n      this.timer = setTimeout(() => this.setVisible(true), this.delay);\n    } else {\n      this.setVisible(true);\n    }\n  }\n\n  @HostListener('mouseleave')\n  @HostListener('blur')\n  hide(): void {\n    if (this.timer) clearTimeout(this.timer);\n    this.setVisible(false);\n  }\n\n  private setVisible(visible: boolean): void {\n    if (visible) {\n      this.renderer.addClass(this.tooltipEl, 'mv-tooltip--visible');\n    } else {\n      this.renderer.removeClass(this.tooltipEl, 'mv-tooltip--visible');\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}