{"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-tooltip.mjs","sources":["../../../projects/ng-dsv/ds/tooltip/dto/tooltip.dto.ts","../../../projects/ng-dsv/ds/tooltip/utils/tooltip.utils.ts","../../../projects/ng-dsv/ds/tooltip/component/tooltip.component.ts","../../../projects/ng-dsv/ds/tooltip/component/tooltip.component.html","../../../projects/ng-dsv/ds/tooltip/ng-vagabond-lab-ng-dsv-ds-tooltip.ts"],"sourcesContent":["export type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport enum TooltipPositionEnum {\n    TOP = 'top',\n    BOTTOM = 'bottom',\n    LEFT = 'left',\n    RIGHT = 'right',\n}","import { TooltipPosition, TooltipPositionEnum } from \"../dto/tooltip.dto\";\n\nexport const POSITION_MAX_TOP = 50;\nexport const POSITION_MAX_BOTTOM = 50;\nexport const POSITION_MAX_LEFT = 50;\nexport const POSITION_MAX_RIGHT = 50;\n\nexport const getTooltipPosition = (position: TooltipPosition, rect: DOMRect) => {\n    if (position === TooltipPositionEnum.TOP && rect.top < POSITION_MAX_TOP) {\n        return TooltipPositionEnum.BOTTOM;\n    } else if (position === TooltipPositionEnum.BOTTOM && rect.bottom > (window.innerHeight - POSITION_MAX_BOTTOM)) {\n        return TooltipPositionEnum.TOP;\n    } else if (position === TooltipPositionEnum.LEFT && rect.left < POSITION_MAX_LEFT) {\n        return TooltipPositionEnum.RIGHT;\n    } else if (position === TooltipPositionEnum.RIGHT && rect.right > (window.innerWidth - POSITION_MAX_RIGHT)) {\n        return TooltipPositionEnum.LEFT;\n    }\n    return position;\n}","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostListener, input, signal, ViewChild } from '@angular/core';\nimport { TooltipPosition, TooltipPositionEnum } from '../dto/tooltip.dto';\nimport { getTooltipPosition } from '../utils/tooltip.utils';\n@Component({\n    selector: 'dsv-tooltip',\n    imports: [CommonModule],\n    templateUrl: './tooltip.component.html',\n    styleUrls: ['./tooltip.component.scss']\n})\nexport class DsvTooltipComponent {\n    text = input<string>('');\n    position = input<TooltipPosition>(TooltipPositionEnum.TOP);\n\n    visible = signal<boolean>(false);\n    opacity = signal<number>(0);\n\n    positionClass = signal<TooltipPosition>(TooltipPositionEnum.TOP);\n\n    @ViewChild('tooltipBox')\n    tooltipBox!: ElementRef<HTMLElement>;\n\n    @HostListener('window:resize')\n    onResize() {\n        this.adjustPosition();\n    }\n\n    @HostListener('mouseenter')\n    onMouseEnter() {\n        this.visible.set(true);\n        this.adjustPosition();\n    }\n\n    @HostListener('mouseleave')\n    onMouseLeave() {\n        this.opacity.set(0);\n        this.visible.set(false);\n    }\n\n    adjustPosition() {\n        setTimeout(() => {\n            const tooltipEl = this.tooltipBox?.nativeElement;\n            if (!tooltipEl) return;\n            const rect = tooltipEl.getBoundingClientRect();\n\n            this.positionClass.set(getTooltipPosition(this.position(), rect));\n            this.opacity.set(0.9);\n        });\n    }\n}","<ng-content></ng-content>\n@if (visible()) {\n  <div\n    #tooltipBox\n    class=\"dsv-tooltip\"\n    [ngClass]=\"positionClass()\"\n    [style.opacity]=\"opacity()\"\n  >\n    {{ text() }}\n  </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}