{"version":3,"file":"ars37111337-ng-tooltip.mjs","sources":["../../src/lib/ng-tooltip.component.ts","../../src/lib/ng-tooltip.directive.ts","../../src/lib/ng-tooltip.module.ts","../../src/ars37111337-ng-tooltip.ts"],"sourcesContent":["import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipOptions, TooltipPosition, TooltipState, TooltipTheme } from './ng-tooltip.interface';\n\n@Component({\n  selector: 'ng-tooltip',\n  encapsulation: ViewEncapsulation.None,\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div\n      #tooltip\n      class=\"ng-tooltip\"\n      [class.ng-tooltip--visible]=\"state.visible\"\n      [class.ng-tooltip--theme-dark]=\"state.theme === 'dark'\"\n      [class.ng-tooltip--position-top]=\"state.position === 'top'\"\n      [class.ng-tooltip--position-bottom]=\"state.position === 'bottom'\"\n      [class.ng-tooltip--position-left]=\"state.position === 'left'\"\n      [class.ng-tooltip--position-right]=\"state.position === 'right'\"\n      [class.ng-tooltip--with-arrow]=\"options.arrow\"\n      [class.ng-tooltip--animated]=\"options.animation\"\n      [class]=\"options.customClass\"\n      [attr.role]=\"options.role || 'tooltip'\"\n      [attr.aria-label]=\"options.ariaLabel\"\n      [style.max-width.px]=\"options.maxWidth\"\n      [style.z-index]=\"'9999'\"\n    >\n      <div class=\"ng-tooltip__content\">\n        <ng-container *ngIf=\"isStringContent\">\n          {{ state.content }}\n        </ng-container>\n        <ng-container *ngIf=\"isTemplateContent\">\n          <ng-container *ngTemplateOutlet=\"templateContent\"></ng-container>\n        </ng-container>\n      </div>\n      <div *ngIf=\"options.arrow\" class=\"ng-tooltip__arrow\"></div>\n    </div>\n  `,\n  styles: [`\n    .ng-tooltip {\n      position: fixed;\n      z-index: 9999;\n      background: #fff;\n      border-radius: 4px;\n      padding: 8px 12px;\n      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n      opacity: 0;\n      visibility: hidden;\n      transition: opacity 0.2s, visibility 0.2s;\n      pointer-events: none;\n    }\n\n    .ng-tooltip--visible {\n      opacity: 1;\n      visibility: visible;\n    }\n\n    .ng-tooltip--theme-dark {\n      background: #333;\n      color: #fff;\n    }\n\n    .ng-tooltip--with-arrow .ng-tooltip__arrow {\n      position: absolute;\n      width: 8px;\n      height: 8px;\n      background: inherit;\n      transform: rotate(45deg);\n    }\n\n    .ng-tooltip--position-top .ng-tooltip__arrow {\n      bottom: -4px;\n      left: 50%;\n      margin-left: -4px;\n    }\n\n    .ng-tooltip--position-bottom .ng-tooltip__arrow {\n      top: -4px;\n      left: 50%;\n      margin-left: -4px;\n    }\n\n    .ng-tooltip--position-left .ng-tooltip__arrow {\n      right: -4px;\n      top: 50%;\n      margin-top: -4px;\n    }\n\n    .ng-tooltip--position-right .ng-tooltip__arrow {\n      left: -4px;\n      top: 50%;\n      margin-top: -4px;\n    }\n\n    .ng-tooltip--animated {\n      transition: transform 0.2s, opacity 0.2s, visibility 0.2s;\n    }\n\n    .ng-tooltip--position-top.ng-tooltip--animated {\n      transform: translateY(-8px);\n    }\n\n    .ng-tooltip--position-bottom.ng-tooltip--animated {\n      transform: translateY(8px);\n    }\n\n    .ng-tooltip--position-left.ng-tooltip--animated {\n      transform: translateX(-8px);\n    }\n\n    .ng-tooltip--position-right.ng-tooltip--animated {\n      transform: translateX(8px);\n    }\n\n    .ng-tooltip--visible.ng-tooltip--animated {\n      transform: translate(0);\n    }\n  `]\n})\nexport class NgTooltipComponent implements OnInit, OnDestroy {\n  @ViewChild('tooltip') tooltipElement!: ElementRef;\n  @Input() options: TooltipOptions = {\n    content: '',\n    position: 'top',\n    trigger: 'hover',\n    showDelay: 0,\n    hideDelay: 0,\n    theme: 'light',\n    disabled: false,\n    maxWidth: 200,\n    arrow: true,\n    animation: true\n  };\n\n  state: TooltipState = {\n    visible: false,\n    position: 'top',\n    theme: 'light',\n    content: ''\n  };\n\n  isStringContent = true;\n  isTemplateContent = false;\n  templateContent?: TemplateRef<any>;\n\n  ngOnInit() {\n    this.updateState();\n  }\n\n  ngOnDestroy() {\n    // Cleanup if needed\n  }\n\n  show() {\n    this.state.visible = true;\n  }\n\n  hide() {\n    this.state.visible = false;\n  }\n\n  updatePosition(position: TooltipPosition) {\n    this.state.position = position;\n  }\n\n  updateContent(content: string | HTMLElement | TemplateRef<any>) {\n    if (content) {\n      this.state.content = content;\n      this.isStringContent = typeof content === 'string';\n      this.isTemplateContent = content instanceof TemplateRef;\n      this.templateContent = this.isTemplateContent ? (content as TemplateRef<any>) : undefined;\n    } else {\n    }\n  }\n\n  updateTheme(theme: TooltipTheme) {\n    this.state.theme = theme;\n  }\n\n  private updateState() {\n    this.state = {\n      visible: false,\n      position: this.options.position || 'top',\n      theme: this.options.theme || 'light',\n      content: this.options.content\n    };\n    this.isStringContent = typeof this.options.content === 'string';\n    this.isTemplateContent = this.options.content instanceof TemplateRef;\n    this.templateContent = this.isTemplateContent ? (this.options.content as TemplateRef<any>) : undefined;\n  }\n} ","import { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, Renderer2, ComponentRef, createComponent, ApplicationRef, Injector, EmbeddedViewRef, TemplateRef } from '@angular/core';\nimport { NgTooltipComponent } from './ng-tooltip.component';\nimport { TooltipOptions, TooltipPosition, TooltipTrigger } from './ng-tooltip.interface';\n\n@Directive({\n  selector: '[ngTooltip]',\n  standalone: true\n})\nexport class NgTooltipDirective implements OnInit, OnDestroy {\n  @Input('ngTooltip') content: string | HTMLElement | TemplateRef<any> = '';\n  @Input('ngTooltipPosition') position: TooltipPosition = 'top';\n  @Input('ngTooltipTrigger') trigger: TooltipTrigger = 'hover';\n  @Input('ngTooltipShowDelay') showDelay = 0;\n  @Input('ngTooltipHideDelay') hideDelay = 0;\n  @Input('ngTooltipTheme') theme: 'light' | 'dark' = 'light';\n  @Input('ngTooltipDisabled') disabled = false;\n  @Input('ngTooltipMaxWidth') maxWidth = 200;\n  @Input('ngTooltipBoundary') boundary?: HTMLElement;\n  @Input('ngTooltipCustomClass') customClass?: string;\n  @Input('ngTooltipArrow') arrow = true;\n  @Input('ngTooltipAnimation') animation = true;\n  @Input('ngTooltipAriaLabel') ariaLabel?: string;\n  @Input('ngTooltipRole') role?: string;\n\n  private tooltipComponentRef?: ComponentRef<NgTooltipComponent>;\n  private showTimeout?: any;\n  private hideTimeout?: any;\n  private isVisible = false;\n\n  constructor(\n    private elementRef: ElementRef,\n    private renderer: Renderer2,\n    private appRef: ApplicationRef,\n    private injector: Injector\n  ) {\n  }\n\n  ngOnInit() {\n    this.createTooltip();\n  }\n\n  ngOnDestroy() {\n    this.destroyTooltip();\n  }\n\n  @HostListener('mouseenter')\n  onMouseEnter() {\n    if (this.trigger === 'hover' && !this.disabled) {\n      this.showTooltip();\n    }\n  }\n\n  @HostListener('mouseleave')\n  onMouseLeave() {\n    if (this.trigger === 'hover' && !this.disabled) {\n      this.hideTooltip();\n    }\n  }\n\n  @HostListener('click')\n  onClick() {\n    if (this.trigger === 'click' && !this.disabled) {\n      this.toggleTooltip();\n    }\n  }\n\n  @HostListener('focus')\n  onFocus() {\n    if (this.trigger === 'focus' && !this.disabled) {\n      this.showTooltip();\n    }\n  }\n\n  @HostListener('blur')\n  onBlur() {\n    if (this.trigger === 'focus' && !this.disabled) {\n      this.hideTooltip();\n    }\n  }\n\n  @HostListener('keydown.escape')\n  onEscape() {\n    if (this.isVisible) {\n      this.hideTooltip();\n    }\n  }\n\n  private createTooltip() {\n    const options: TooltipOptions = {\n      content: this.content,\n      position: this.position,\n      trigger: this.trigger,\n      showDelay: this.showDelay,\n      hideDelay: this.hideDelay,\n      theme: this.theme,\n      disabled: this.disabled,\n      maxWidth: this.maxWidth,\n      boundary: this.boundary,\n      customClass: this.customClass,\n      arrow: this.arrow,\n      animation: this.animation,\n      ariaLabel: this.ariaLabel,\n      role: this.role\n    };\n  \n    // 1. 建立 component\n    this.tooltipComponentRef = createComponent(NgTooltipComponent, {\n      environmentInjector: this.appRef.injector,\n      elementInjector: this.injector\n    });\n  \n    // 2. 把 view attach 給 Angular，才會走 change detection\n    this.appRef.attachView(this.tooltipComponentRef.hostView);\n  \n    // 3. 初始化 component state\n    const comp = this.tooltipComponentRef.instance;\n    comp.options = options;\n    comp.updateContent(this.content);\n    comp.updatePosition(this.position);\n    comp.updateTheme(this.theme);\n  \n    // 4. 實際 append 到 DOM\n    const domElem = (this.tooltipComponentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\n    document.body.appendChild(domElem);\n  \n  }\n\n  private destroyTooltip() {\n    if (this.tooltipComponentRef) {\n      this.tooltipComponentRef.instance.hide();\n      this.appRef.detachView(this.tooltipComponentRef.hostView);\n      this.tooltipComponentRef.destroy();\n      this.tooltipComponentRef = undefined;\n    }\n    this.clearTimeouts();\n  }\n\n  private showTooltip() {\n    this.clearTimeouts();\n  \n    const doShow = () => {\n      if (!this.tooltipComponentRef) return;\n      const compRef = this.tooltipComponentRef!;\n      // 呼叫 component 的 show()\n      compRef.instance.show();\n      // 立即強制變更檢測，讓 class 綁定生效\n      compRef.changeDetectorRef.detectChanges();\n      this.isVisible = true;\n      this.updatePosition();\n    };\n  \n    if (this.showDelay) {\n      this.showTimeout = setTimeout(doShow, this.showDelay);\n    } else {\n      doShow();\n    }\n  }\n\n  private hideTooltip() {\n    this.clearTimeouts();\n    if (this.hideDelay) {\n      this.hideTimeout = setTimeout(() => {\n        if (this.tooltipComponentRef) {\n          this.tooltipComponentRef.instance.hide();\n          this.isVisible = false;\n        }\n      }, this.hideDelay);\n    } else {\n      if (this.tooltipComponentRef) {\n        this.tooltipComponentRef.instance.hide();\n        this.isVisible = false;\n      }\n    }\n  }\n\n  private toggleTooltip() {\n    if (this.isVisible) {\n      this.hideTooltip();\n    } else {\n      this.showTooltip();\n    }\n  }\n\n  private updatePosition() {\n    if (!this.tooltipComponentRef) return;\n\n    const hostRect = this.elementRef.nativeElement.getBoundingClientRect();\n    const tooltipElement = this.tooltipComponentRef.instance.tooltipElement;\n    if (!tooltipElement) return;\n\n    const tooltipRect = tooltipElement.nativeElement.getBoundingClientRect();\n    const boundaryRect = this.boundary?.getBoundingClientRect() || {\n      top: 0,\n      left: 0,\n      right: window.innerWidth,\n      bottom: window.innerHeight\n    };\n\n    let position = this.position;\n    const positions: TooltipPosition[] = ['top', 'bottom', 'left', 'right'];\n\n    // Check if tooltip fits in the current position\n    const fits = positions.some(pos => {\n      const { top, left } = this.calculatePosition(pos, hostRect, tooltipRect);\n      return (\n        top >= boundaryRect.top &&\n        left >= boundaryRect.left &&\n        top + tooltipRect.height <= boundaryRect.bottom &&\n        left + tooltipRect.width <= boundaryRect.right\n      );\n    });\n\n    if (!fits) {\n      // Find the best position that fits\n      position = positions.find(pos => {\n        const { top, left } = this.calculatePosition(pos, hostRect, tooltipRect);\n        return (\n          top >= boundaryRect.top &&\n          left >= boundaryRect.left &&\n          top + tooltipRect.height <= boundaryRect.bottom &&\n          left + tooltipRect.width <= boundaryRect.right\n        );\n      }) || this.position;\n    }\n\n    this.tooltipComponentRef.instance.updatePosition(position);\n    const { top, left } = this.calculatePosition(position, hostRect, tooltipRect);\n    this.renderer.setStyle(tooltipElement.nativeElement, 'top', `${top}px`);\n    this.renderer.setStyle(tooltipElement.nativeElement, 'left', `${left}px`);\n  }\n\n  private calculatePosition(\n    position: TooltipPosition,\n    hostRect: DOMRect,\n    tooltipRect: DOMRect\n  ): { top: number; left: number } {\n    const spacing = 8;\n    let top = 0;\n    let left = 0;\n\n    switch (position) {\n      case 'top':\n        top = hostRect.top - tooltipRect.height - spacing;\n        left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\n        break;\n      case 'bottom':\n        top = hostRect.bottom + spacing;\n        left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\n        break;\n      case 'left':\n        top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\n        left = hostRect.left - tooltipRect.width - spacing;\n        break;\n      case 'right':\n        top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\n        left = hostRect.right + spacing;\n        break;\n    }\n\n    return { top, left };\n  }\n\n  private clearTimeouts() {\n    if (this.showTimeout) {\n      clearTimeout(this.showTimeout);\n      this.showTimeout = undefined;\n    }\n    if (this.hideTimeout) {\n      clearTimeout(this.hideTimeout);\n      this.hideTimeout = undefined;\n    }\n  }\n} ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgTooltipComponent } from './ng-tooltip.component';\r\nimport { NgTooltipDirective } from './ng-tooltip.directive';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    NgTooltipComponent,\r\n    NgTooltipDirective\r\n  ],\r\n  exports: [\r\n    NgTooltipComponent,\r\n    NgTooltipDirective\r\n  ]\r\n})\r\nexport class NgTooltipModule { } ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}