{"version":3,"file":"edsis-component-tooltip.mjs","sources":["../../../library/component/tooltip/tooltip.component.ts","../../../library/component/tooltip/tooltip-content.directive.ts","../../../library/component/tooltip/tooltip-trigger.directive.ts","../../../library/component/tooltip/tooltip.directive.ts","../../../library/component/tooltip/edsis-component-tooltip.ts"],"sourcesContent":["import { Component, InjectionToken, Signal, forwardRef, input } from '@angular/core';\n\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left';\nexport type TooltipAlign = 'start' | 'center' | 'end';\n\nexport interface TooltipDefaults {\n  readonly side: Signal<TooltipSide>;\n  readonly align: Signal<TooltipAlign>;\n  readonly sideOffset: Signal<number>;\n  readonly openDelay: Signal<number>;\n  readonly closeDelay: Signal<number>;\n}\n\nexport const TOOLTIP_DEFAULTS = new InjectionToken<TooltipDefaults>('TOOLTIP_DEFAULTS');\n\n@Component({\n  selector: 'Tooltip',\n  providers: [{ provide: TOOLTIP_DEFAULTS, useExisting: forwardRef(() => TooltipComponent) }],\n  host: {\n    class: 'contents',\n  },\n  template: '<ng-content />',\n})\nexport class TooltipComponent implements TooltipDefaults {\n  readonly side = input<TooltipSide>('top');\n  readonly align = input<TooltipAlign>('center');\n  readonly sideOffset = input(4);\n  readonly openDelay = input(150);\n  readonly closeDelay = input(0);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n  selector: 'ng-template[TooltipContent]',\n  exportAs: 'TooltipContent',\n})\nexport class TooltipContentDirective {\n  readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  booleanAttribute,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  ViewContainerRef,\n  inject,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { uniqueId } from '@edsis/component/id';\nimport { connectedPositionFor, oppositeSide, overlayDismissals } from '@edsis/component/overlay';\n\nimport { TOOLTIP_DEFAULTS, type TooltipAlign, type TooltipSide } from './tooltip.component';\nimport type { TooltipContentDirective } from './tooltip-content.directive';\n\nconst TOOLTIP_PANEL_CLASSES = [\n  'tooltip-panel',\n  'pointer-events-none',\n  'z-50',\n  'max-w-xs',\n  'overflow-hidden',\n  'rounded-md',\n  'border',\n  'border-border',\n  'bg-primary',\n  'px-3',\n  'py-1.5',\n  'text-xs',\n  'font-medium',\n  'leading-none',\n  'text-primary-foreground',\n  'shadow-md',\n  'select-none',\n] as const;\n\n@Directive({\n  selector: '[TooltipTrigger]',\n  exportAs: 'TooltipTrigger',\n  host: {\n    '[attr.aria-describedby]': 'contentId()',\n    '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n    '(pointerenter)': 'handlePointerEnter()',\n    '(pointerleave)': 'handlePointerLeave($event)',\n    '(focusin)': 'handleFocusIn()',\n    '(focusout)': 'handleFocusOut($event)',\n    '(keydown.escape)': 'close()',\n  },\n})\nexport class TooltipTriggerDirective {\n  private readonly overlay = inject(Overlay);\n  private readonly vcr = inject(ViewContainerRef);\n  private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly defaults = inject(TOOLTIP_DEFAULTS, { optional: true });\n\n  readonly TooltipTrigger = input.required<TooltipContentDirective>();\n  readonly side = input<TooltipSide | undefined>(undefined);\n  readonly align = input<TooltipAlign | undefined>(undefined);\n  readonly sideOffset = input<number | undefined>(undefined);\n  readonly openDelay = input<number | undefined>(undefined);\n  readonly closeDelay = input<number | undefined>(undefined);\n  readonly disabled = input(false, { transform: booleanAttribute });\n\n  readonly openedChange = output<boolean>();\n\n  readonly isOpen = signal(false);\n  protected readonly contentId = signal<string | null>(null);\n\n  private overlayRef: OverlayRef | null = null;\n  private openTimeoutId: number | null = null;\n  private closeTimeoutId: number | null = null;\n  private isPointerInsideTrigger = false;\n  private isTriggerFocused = false;\n  private isDestroying = false;\n\n  constructor() {\n    this.destroyRef.onDestroy(() => {\n      this.isDestroying = true;\n      this.clearOpenTimeout();\n      this.clearCloseTimeout();\n      this.contentId.set(null);\n      this.isOpen.set(false);\n      this.overlayRef?.dispose();\n      this.overlayRef = null;\n    });\n  }\n\n  handlePointerEnter(): void {\n    if (this.disabled()) {\n      return;\n    }\n\n    this.isPointerInsideTrigger = true;\n    this.clearCloseTimeout();\n    this.scheduleOpen();\n  }\n\n  handlePointerLeave(event: PointerEvent): void {\n    if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n      return;\n    }\n\n    this.isPointerInsideTrigger = false;\n    this.scheduleClose();\n  }\n\n  handleFocusIn(): void {\n    if (this.disabled()) {\n      return;\n    }\n\n    this.isTriggerFocused = true;\n    this.clearCloseTimeout();\n    this.scheduleOpen();\n  }\n\n  handleFocusOut(event: FocusEvent): void {\n    if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n      return;\n    }\n\n    this.isTriggerFocused = false;\n    this.scheduleClose();\n  }\n\n  open(): void {\n    if (this.isOpen() || this.disabled()) {\n      return;\n    }\n\n    const side = this.side() ?? this.defaults?.side() ?? 'top';\n    const align = this.align() ?? this.defaults?.align() ?? 'center';\n    const sideOffset = this.sideOffset() ?? this.defaults?.sideOffset() ?? 4;\n\n    const primary = connectedPositionFor(side, align, sideOffset);\n    const fallback = connectedPositionFor(oppositeSide(side), align, sideOffset);\n\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.el)\n      .withPositions([primary, fallback])\n      .withPush(false)\n      .withFlexibleDimensions(false);\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: false,\n      panelClass: [...TOOLTIP_PANEL_CLASSES],\n    });\n\n    const tooltipId = uniqueId('Tooltip');\n    this.overlayRef.overlayElement.id = tooltipId;\n    this.overlayRef.overlayElement.setAttribute('role', 'tooltip');\n\n    const portal = new TemplatePortal(this.TooltipTrigger().template, this.vcr);\n    this.overlayRef.attach(portal);\n    this.bindOverlayLifecycle();\n\n    this.contentId.set(tooltipId);\n    this.isOpen.set(true);\n\n    if (!this.isDestroying) {\n      this.openedChange.emit(true);\n    }\n  }\n\n  close(): void {\n    this.clearOpenTimeout();\n    this.clearCloseTimeout();\n\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.overlayRef?.dispose();\n    this.overlayRef = null;\n    this.contentId.set(null);\n    this.isOpen.set(false);\n\n    if (!this.isDestroying) {\n      this.openedChange.emit(false);\n    }\n  }\n\n  private bindOverlayLifecycle(): void {\n    if (!this.overlayRef) {\n      return;\n    }\n\n    overlayDismissals(this.overlayRef, this.el.nativeElement)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.close());\n  }\n\n  private scheduleOpen(): void {\n    this.clearCloseTimeout();\n\n    if (this.isOpen()) {\n      return;\n    }\n\n    this.clearOpenTimeout();\n    this.openTimeoutId = window.setTimeout(\n      () => {\n        this.openTimeoutId = null;\n\n        if (this.disabled() || (!this.isPointerInsideTrigger && !this.isTriggerFocused)) {\n          return;\n        }\n\n        this.open();\n      },\n      this.openDelay() ?? this.defaults?.openDelay() ?? 150,\n    );\n  }\n\n  private scheduleClose(): void {\n    this.clearOpenTimeout();\n\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.clearCloseTimeout();\n    this.closeTimeoutId = window.setTimeout(\n      () => {\n        this.closeTimeoutId = null;\n\n        if (this.isPointerInsideTrigger || this.isTriggerFocused) {\n          return;\n        }\n\n        this.close();\n      },\n      this.closeDelay() ?? this.defaults?.closeDelay() ?? 0,\n    );\n  }\n\n  private clearOpenTimeout(): void {\n    if (this.openTimeoutId !== null) {\n      window.clearTimeout(this.openTimeoutId);\n      this.openTimeoutId = null;\n    }\n  }\n\n  private clearCloseTimeout(): void {\n    if (this.closeTimeoutId !== null) {\n      window.clearTimeout(this.closeTimeoutId);\n      this.closeTimeoutId = null;\n    }\n  }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n  Component,\n  ComponentRef,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  computed,\n  effect,\n  inject,\n  input,\n  signal,\n} from '@angular/core';\nimport { uniqueId } from '@edsis/component/id';\nimport { connectedPositionFor, oppositeSide, type OverlaySide } from '@edsis/component/overlay';\n\n/** Posisi tooltip; kompatibel dengan nilai `matTooltipPosition` lama. */\nexport type TooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\n\nconst POSITION_TO_SIDE: Record<TooltipPosition, OverlaySide> = {\n  above: 'top',\n  below: 'bottom',\n  left: 'left',\n  right: 'right',\n  before: 'left',\n  after: 'right',\n};\n\nconst PANEL_CLASSES = [\n  'tooltip-panel',\n  'pointer-events-none',\n  'z-50',\n  'max-w-xs',\n  'overflow-hidden',\n  'rounded-md',\n  'border',\n  'border-border',\n  'bg-primary',\n  'px-3',\n  'py-1.5',\n  'text-xs',\n  'font-medium',\n  'leading-none',\n  'text-primary-foreground',\n  'shadow-md',\n  'select-none',\n] as const;\n\n@Component({\n  template: `{{ text() }}`,\n})\nclass TooltipTextComponent {\n  readonly text = signal('');\n}\n\n/**\n * Shadcn-styled text tooltip — CDK overlay, tanpa dependensi Material.\n *\n * @example\n * <button Button [Tooltip]=\"'Save changes'\" TooltipPosition=\"above\">Save</button>\n */\n@Directive({\n  selector: '[Tooltip]',\n  exportAs: 'Tooltip',\n  host: {\n    '(pointerenter)': 'scheduleShow()',\n    '(pointerleave)': 'scheduleHide()',\n    '(focusin)': 'scheduleShow()',\n    '(focusout)': 'scheduleHide()',\n    '(keydown.escape)': 'hide()',\n  },\n})\nexport class TooltipDirective {\n  private readonly overlay = inject(Overlay);\n  private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly destroyRef = inject(DestroyRef);\n\n  readonly Tooltip = input<string>('');\n  readonly TooltipPosition = input<TooltipPosition>('above');\n  readonly TooltipDisabled = input<boolean>(false);\n  readonly TooltipShowDelay = input<number>(150);\n  readonly TooltipHideDelay = input<number>(0);\n\n  private overlayRef: OverlayRef | null = null;\n  private contentRef: ComponentRef<TooltipTextComponent> | null = null;\n  private showTimeoutId: number | null = null;\n  private hideTimeoutId: number | null = null;\n  private previousDescribedBy: string | null = null;\n\n  private readonly side = computed(() => POSITION_TO_SIDE[this.TooltipPosition()]);\n\n  constructor() {\n    this.destroyRef.onDestroy(() => {\n      this.clearTimers();\n      this.hide();\n    });\n\n    // Update teks saat pesan berubah ketika tooltip sedang tampil.\n    effect(() => {\n      const message = this.Tooltip();\n      this.contentRef?.instance.text.set(message);\n    });\n  }\n\n  show(): void {\n    if (this.overlayRef || this.TooltipDisabled() || !this.Tooltip()) {\n      return;\n    }\n\n    const side = this.side();\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.el)\n      .withPositions([\n        connectedPositionFor(side, 'center', 4),\n        connectedPositionFor(oppositeSide(side), 'center', 4),\n      ])\n      .withPush(false)\n      .withFlexibleDimensions(false);\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: false,\n      panelClass: [...PANEL_CLASSES],\n    });\n\n    this.contentRef = this.overlayRef.attach(new ComponentPortal(TooltipTextComponent));\n    this.contentRef.instance.text.set(this.Tooltip());\n\n    const pane = this.overlayRef.overlayElement;\n    pane.id = uniqueId('Tooltip');\n    pane.setAttribute('role', 'tooltip');\n    this.previousDescribedBy = this.el.nativeElement.getAttribute('aria-describedby');\n    this.el.nativeElement.setAttribute(\n      'aria-describedby',\n      [this.previousDescribedBy, pane.id].filter(Boolean).join(' '),\n    );\n  }\n\n  hide(): void {\n    this.clearTimers();\n    if (this.previousDescribedBy) {\n      this.el.nativeElement.setAttribute('aria-describedby', this.previousDescribedBy);\n    } else {\n      this.el.nativeElement.removeAttribute('aria-describedby');\n    }\n    this.previousDescribedBy = null;\n    this.contentRef = null;\n    this.overlayRef?.dispose();\n    this.overlayRef = null;\n  }\n\n  protected scheduleShow(): void {\n    this.clearTimers();\n    this.showTimeoutId = window.setTimeout(() => {\n      this.showTimeoutId = null;\n      this.show();\n    }, this.TooltipShowDelay());\n  }\n\n  protected scheduleHide(): void {\n    this.clearTimers();\n    this.hideTimeoutId = window.setTimeout(() => {\n      this.hideTimeoutId = null;\n      this.hide();\n    }, this.TooltipHideDelay());\n  }\n\n  private clearTimers(): void {\n    if (this.showTimeoutId !== null) {\n      window.clearTimeout(this.showTimeoutId);\n      this.showTimeoutId = null;\n    }\n    if (this.hideTimeoutId !== null) {\n      window.clearTimeout(this.hideTimeoutId);\n      this.hideTimeoutId = null;\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}