{"version":3,"file":"ipi-soft-ng-components-tooltip.mjs","sources":["../../../../projects/ipi-soft/ng-components/tooltip/src/tooltip.directive.ts","../../../../projects/ipi-soft/ng-components/tooltip/ipi-soft-ng-components-tooltip.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\n\nimport { Directive, Input, ElementRef, Inject, HostListener } from '@angular/core';\n\nimport { OSService, MobileOS, OverlayService } from '@ipi-soft/ng-components/services';\n\nexport enum TooltipPosition {\n  Before,\n  After,\n  Above,\n  Below\n}\n\n@Directive({\n  standalone: true,\n  selector: '[ipiTooltip]'\n})\n\nexport class IpiTooltipDirective {\n\n  constructor(\n    private osService: OSService,\n    private elementRef: ElementRef,\n    private overlayService: OverlayService,\n    @Inject(DOCUMENT) private document: Document) {\n      this.platform = this.osService.mobileOS;\n    }\n\n  @Input() ipiTooltip = '';\n  @Input() tooltipPosition = TooltipPosition.Before;\n\n  private platform;\n\n  private tooltip!: HTMLElement;\n  private triangle!: HTMLElement;\n  private tooltipWrapper!: HTMLElement;\n\n  private isActivated = false;\n\n  private triangleWidth = 8;\n  private tooltipWidth!: number;\n  private parentElementPos!: DOMRect;\n\n  private errorMargin = 2;\n\n  public ngOnDestroy(): void {\n    this.onMouseLeave();\n  }\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    (this.elementRef.nativeElement as HTMLElement).style.touchAction = 'manipulation';\n    this.parentElementPos = this.getParentElementPosition();\n    this.openToolTip();\n  }\n\n  @HostListener('mouseleave')\n  onMouseLeave(): void {\n    (this.elementRef.nativeElement as HTMLElement).style.touchAction = 'auto';\n    this.closeToolTip();\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    this.closeToolTip();\n  }\n\n  @HostListener('touchstart', ['$event'])\n  onTouchStart(event: TouchEvent): void {\n    event.preventDefault();\n\n    (this.elementRef.nativeElement as HTMLElement).style.userSelect = 'none';\n      this.parentElementPos = this.getParentElementPosition();\n      this.openToolTip();\n  }\n\n  @HostListener('touchend')\n  onTouchEnd(): void {\n    this.closeToolTip();\n  }\n\n  @HostListener('touchcancel')\n  onTouchCancel(): void {\n    this.closeToolTip();\n  }\n\n  @HostListener('window:scroll', ['$event'])\n  onScroll(): void {\n    if (this.isActivated) {\n      this.parentElementPos = this.getParentElementPosition();\n\n      let parentPosTop = this.parentElementPos.top;\n\n      const tooltipElement = document.querySelector('.tooltip-wrapper') as HTMLElement;\n\n      if (this.platform === MobileOS.iOS) {\n        parentPosTop += window.visualViewport!.offsetTop;\n      }\n\n      tooltipElement.style.top = `${parentPosTop}px`;\n    }\n  }\n\n  private getParentElementPosition(): DOMRect {\n    return this.elementRef.nativeElement.getBoundingClientRect();\n  }\n\n  private openToolTip(): void {\n    this.createTooltip();\n    this.createTriangle();\n    this.createTooltipWrapper();\n\n    this.tooltipWrapper.appendChild(this.tooltip);\n    this.tooltipWrapper.appendChild(this.triangle);\n\n    this.overlayService.appendToOverlay(this.tooltipWrapper);\n\n    this.positionTooltip();\n\n    this.isActivated = true;\n  }\n\n  private closeToolTip(): void {\n    if (this.tooltipWrapper) {\n      this.overlayService.removeFromOverlay(this.tooltipWrapper);\n\n      this.isActivated = false;\n    }\n  }\n\n  private createTooltip(): void {\n    this.tooltip = this.document.createElement('div');\n    this.tooltip.classList.add('tooltip');\n\n    this.tooltip.innerHTML = this.ipiTooltip;\n\n    this.tooltip.style.gap = '10px';\n    this.tooltip.style.color = 'white';\n    this.tooltip.style.minWidth = '50px';\n    this.tooltip.style.minHeight = '10px';\n    this.tooltip.style.fontSize = '12px';\n    this.tooltip.style.fontWeight = '400';\n    this.tooltip.style.maxWidth = '200px';\n    this.tooltip.style.lineHeight = '16px';\n    this.tooltip.style.padding = '4px 8px';\n    this.tooltip.style.textAlign = 'center';\n    this.tooltip.style.borderRadius = '4px';\n    this.tooltip.style.whiteSpace = 'pre-wrap';\n    this.tooltip.style.wordBreak = 'break-word';\n    this.tooltip.style.backgroundColor = '#0B1222';\n  }\n\n  private createTriangle(): void {\n    this.triangle = this.document.createElement('div');\n    this.triangle.classList.add('triangle');\n\n    this.triangle.style.width = '0';\n    this.triangle.style.height = '0';\n    this.triangle.style.content = '';\n    this.triangle.style.borderRight = '8px solid #0B1222';\n    this.triangle.style.borderTop = '5px solid transparent';\n    this.triangle.style.borderBottom = '5px solid transparent';\n  }\n\n  private createTooltipWrapper(): void {\n    this.tooltipWrapper = this.document.createElement('div');\n    this.tooltipWrapper.classList.add('tooltip-wrapper');\n\n    this.tooltipWrapper.style.display = 'flex';\n    this.tooltipWrapper.style.position = 'absolute';\n    this.tooltipWrapper.style.alignItems = 'center';\n\n    const keyframes = [\n      { opacity: 0 },\n      { opacity: 1 }\n    ];\n\n    this.tooltipWrapper.animate(keyframes, {\n      duration: 400,\n      easing: 'ease'\n    });\n  }\n\n  private positionTooltip(): void {\n    if (this.overlayService.overlay) {\n      this.tooltipWidth = this.overlayService.overlay.querySelector('.tooltip-wrapper')?.firstElementChild?.clientWidth || 0;\n    }\n\n    switch (this.tooltipPosition) {\n      case TooltipPosition.Before:\n        this.positionBefore();\n        break;\n      case TooltipPosition.After:\n        this.positionAfter();\n        break;\n      case TooltipPosition.Above:\n        this.positionAbove();\n        break;\n      case TooltipPosition.Below:\n        this.positionBelow();\n        break;\n    }\n\n    this.repositionTooltip();\n  }\n\n  private positionBefore(): void {\n    let parentPosTop = this.parentElementPos.top;\n    let parentPosLeft = this.parentElementPos.left;\n\n    this.tooltipWrapper.style.flexDirection = 'row';\n    this.triangle.style.transform = 'rotate(180deg)';\n    this.tooltipWrapper.style.transform = `translateY(${this.parentElementPos.height / 2}px) translateY(-50%)`;\n\n    if (this.platform === MobileOS.iOS) {\n      parentPosTop += window.visualViewport!.offsetTop;\n      parentPosLeft += window.visualViewport!.offsetLeft;\n    }\n\n    this.tooltipWrapper.style.left = `${parentPosLeft - this.tooltipWidth - this.triangleWidth}px`;\n    this.tooltipWrapper.style.top = `${parentPosTop}px`;\n  }\n\n  private positionAfter(): void {\n    let parentPosTop = this.parentElementPos.top;\n    let parentPosRight = this.parentElementPos.right;\n\n    this.triangle.style.transform = 'rotate(0deg)';\n    this.tooltipWrapper.style.flexDirection = 'row-reverse';\n    this.tooltipWrapper.style.transform = `translateY(${this.parentElementPos.height / 2}px) translateY(-50%)`;\n\n    if (this.platform === MobileOS.iOS) {\n      parentPosTop += window.visualViewport!.offsetTop;\n      parentPosRight += window.visualViewport!.offsetLeft;\n    }\n\n    this.tooltipWrapper.style.top = `${parentPosTop}px`;\n    this.tooltipWrapper.style.left = `${parentPosRight}px`;\n  }\n\n  private positionAbove(): void {\n    let parentPosTop = this.parentElementPos.top;\n    let parentPosLeft = this.parentElementPos.left;\n\n    this.tooltipWrapper.style.flexDirection = 'column';\n    this.tooltipWrapper.style.transform = 'translateY(-100%)';\n    this.tooltipWrapper.style.transform = 'translateY(-100%)';\n\n    if (this.platform === MobileOS.iOS) { \n      parentPosTop += window.visualViewport!.offsetTop;\n      parentPosLeft += window.visualViewport!.offsetLeft;\n    }\n\n    this.tooltipWrapper.style.top = `${parentPosTop}px`;\n    this.tooltipWrapper.style.left = ` ${ (parentPosLeft + this.parentElementPos.width / 2) - this.tooltipWidth / 2 }px`;\n\n\n    this.triangle.style.transform = 'rotate(-90deg) translateX(1px)';\n  }\n\n  private positionBelow(): void {\n    let parentPosTop = this.parentElementPos.top;\n    let parentPosLeft = this.parentElementPos.left;\n\n    this.tooltipWrapper.style.flexDirection = 'column-reverse';\n    this.triangle.style.transform = 'rotate(90deg) translateX(1px)';\n    this.tooltipWrapper.style.transform = `translateY(${this.parentElementPos.height}px)`;\n\n    if (this.platform === MobileOS.iOS) { \n      parentPosTop += window.visualViewport!.offsetTop;\n      parentPosLeft += window.visualViewport!.offsetLeft;\n    }\n\n    this.tooltipWrapper.style.top = ` ${parentPosTop}px`;\n    this.tooltipWrapper.style.left = ` ${ (parentPosLeft + this.parentElementPos.width / 2) - this.tooltipWidth / 2 }px`;  \n  }\n\n  private repositionTooltip(): void {\n    const tooltipPosition = this.tooltipWrapper.getBoundingClientRect();\n\n    let tooltipX = tooltipPosition.x;\n\n    if (this.platform === MobileOS.iOS) {\n      tooltipX += window.visualViewport!.offsetLeft;\n    }\n\n    switch (this.tooltipPosition) {\n      case TooltipPosition.Before:\n        if (tooltipPosition.x < 0) {\n          this.positionAfter();\n        }\n\n        if (window.innerWidth - tooltipPosition.right <= tooltipPosition.width) {\n          this.positionAbove();\n        }\n\n        break;\n      case TooltipPosition.After:\n        \n        if (window.innerWidth < tooltipX + tooltipPosition.width) {\n          this.positionBefore();\n        }\n\n        if (tooltipPosition.width > this.parentElementPos.left) {\n          this.positionAbove();\n        }\n\n        break;\n      case TooltipPosition.Above:\n        if (tooltipX < 0) {\n          this.positionAfter();\n\n          break;\n        }\n\n        if (tooltipPosition.left > window.innerWidth / 2 && (tooltipPosition.left + tooltipPosition.width / 2) + this.errorMargin < this.parentElementPos.left + this.parentElementPos.width / 2) {\n          this.positionBefore();\n\n          break;\n        }\n\n        if (this.parentElementPos.top < tooltipPosition.height) {\n          this.positionBelow();\n        }\n\n        break;\n      case TooltipPosition.Below:\n        if (tooltipX < 0) {\n          this.positionAfter();\n\n          break;\n        }\n\n        if (tooltipPosition.left > window.innerWidth / 2 && (tooltipPosition.left + tooltipPosition.width / 2) + this.errorMargin < this.parentElementPos.left + this.parentElementPos.width / 2) {\n          this.positionBefore();\n\n          break;\n        }\n\n        if (window.innerHeight - this.parentElementPos.bottom < tooltipPosition.height) {\n          this.positionAbove();\n        }\n\n        break;\n    }\n  }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}