{"version":3,"file":"edsis-component-hover-card.mjs","sources":["../../../library/component/hover-card/hover-card.component.ts","../../../library/component/hover-card/hover-card-content.directive.ts","../../../library/component/hover-card/hover-card-trigger.directive.ts","../../../library/component/hover-card/edsis-component-hover-card.ts"],"sourcesContent":["import { Component, InjectionToken, Signal, forwardRef, input } from '@angular/core';\n\nexport type HoverCardSide = 'top' | 'right' | 'bottom' | 'left';\nexport type HoverCardAlign = 'start' | 'center' | 'end';\n\nexport interface HoverCardDefaults {\n  readonly side: Signal<HoverCardSide>;\n  readonly align: Signal<HoverCardAlign>;\n  readonly sideOffset: Signal<number>;\n  readonly openDelay: Signal<number>;\n  readonly closeDelay: Signal<number>;\n}\n\nexport const HOVER_CARD_DEFAULTS = new InjectionToken<HoverCardDefaults>('HOVER_CARD_DEFAULTS');\n\n@Component({\n  selector: 'HoverCard',\n  providers: [{ provide: HOVER_CARD_DEFAULTS, useExisting: forwardRef(() => HoverCardComponent) }],\n  host: {\n    class: 'contents',\n  },\n  template: '<ng-content />',\n})\nexport class HoverCardComponent implements HoverCardDefaults {\n  readonly side = input<HoverCardSide>('bottom');\n  readonly align = input<HoverCardAlign>('center');\n  readonly sideOffset = input(8);\n  readonly openDelay = input(100);\n  readonly closeDelay = input(100);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n  selector: 'ng-template[HoverCardContent]',\n  exportAs: 'HoverCardContent',\n})\nexport class HoverCardContentDirective {\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 { connectedPositionFor, oppositeSide, overlayDismissals } from '@edsis/component/overlay';\n\nimport {\n  HOVER_CARD_DEFAULTS,\n  type HoverCardAlign,\n  type HoverCardSide,\n} from './hover-card.component';\nimport type { HoverCardContentDirective } from './hover-card-content.directive';\n\n// Hover cards are visual preview content (Radix-style): the trigger keeps its\n// own semantics and must NOT advertise aria-haspopup=\"dialog\" for content that\n// is not a dialog.\n@Directive({\n  selector: '[HoverCardTrigger]',\n  exportAs: 'HoverCardTrigger',\n  host: {\n    '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n    '(pointerenter)': 'handleTriggerPointerEnter()',\n    '(pointerleave)': 'handleTriggerPointerLeave($event)',\n    '(focusin)': 'handleTriggerFocusIn()',\n    '(focusout)': 'handleTriggerFocusOut($event)',\n    '(keydown.escape)': 'close()',\n  },\n})\nexport class HoverCardTriggerDirective {\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(HOVER_CARD_DEFAULTS, { optional: true });\n\n  readonly HoverCardTrigger = input.required<HoverCardContentDirective>();\n  readonly side = input<HoverCardSide | undefined>(undefined);\n  readonly align = input<HoverCardAlign | 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\n  private overlayRef: OverlayRef | null = null;\n  private openTimeoutId: number | null = null;\n  private closeTimeoutId: number | null = null;\n  private isTriggerHovered = false;\n  private isContentHovered = false;\n  private isTriggerFocused = false;\n  private isContentFocused = false;\n\n  constructor() {\n    this.destroyRef.onDestroy(() => {\n      this.clearOpenTimeout();\n      this.clearCloseTimeout();\n      this.close(false);\n    });\n  }\n\n  handleTriggerPointerEnter(): void {\n    if (this.disabled()) {\n      return;\n    }\n\n    this.isTriggerHovered = true;\n    this.clearCloseTimeout();\n    this.scheduleOpen();\n  }\n\n  handleTriggerPointerLeave(event: PointerEvent): void {\n    this.isTriggerHovered = false;\n\n    if (this.relatedTargetInsideContent(event.relatedTarget)) {\n      return;\n    }\n\n    this.scheduleClose();\n  }\n\n  handleTriggerFocusIn(): void {\n    if (this.disabled()) {\n      return;\n    }\n\n    this.isTriggerFocused = true;\n    this.clearCloseTimeout();\n    this.scheduleOpen();\n  }\n\n  handleTriggerFocusOut(event: FocusEvent): void {\n    this.isTriggerFocused = false;\n\n    if (this.relatedTargetInsideContent(event.relatedTarget)) {\n      return;\n    }\n\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() ?? 'bottom';\n    const align = this.align() ?? this.defaults?.align() ?? 'center';\n    const sideOffset = this.sideOffset() ?? this.defaults?.sideOffset() ?? 8;\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: 'hover-card-panel',\n    });\n\n    const portal = new TemplatePortal(this.HoverCardTrigger().template, this.vcr);\n    this.overlayRef.attach(portal);\n    this.bindOverlayInteractions();\n\n    overlayDismissals(this.overlayRef, this.el.nativeElement)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.close());\n\n    this.isOpen.set(true);\n    this.openedChange.emit(true);\n  }\n\n  close(emitOpenedChange = true): void {\n    this.clearOpenTimeout();\n    this.clearCloseTimeout();\n\n    if (!this.isOpen()) {\n      return;\n    }\n\n    const overlayRef = this.overlayRef;\n    this.unbindOverlayInteractions();\n    this.overlayRef = null;\n    this.isContentHovered = false;\n    this.isContentFocused = false;\n    this.isOpen.set(false);\n    overlayRef?.dispose();\n\n    if (emitOpenedChange) {\n      this.openedChange.emit(false);\n    }\n  }\n\n  private bindOverlayInteractions(): void {\n    const overlayElement = this.overlayRef?.overlayElement;\n\n    if (!overlayElement) {\n      return;\n    }\n\n    overlayElement.addEventListener('pointerenter', this.onContentPointerEnter);\n    overlayElement.addEventListener('pointerleave', this.onContentPointerLeave);\n    overlayElement.addEventListener('focusin', this.onContentFocusIn);\n    overlayElement.addEventListener('focusout', this.onContentFocusOut);\n  }\n\n  private unbindOverlayInteractions(): void {\n    const overlayElement = this.overlayRef?.overlayElement;\n\n    if (!overlayElement) {\n      return;\n    }\n\n    overlayElement.removeEventListener('pointerenter', this.onContentPointerEnter);\n    overlayElement.removeEventListener('pointerleave', this.onContentPointerLeave);\n    overlayElement.removeEventListener('focusin', this.onContentFocusIn);\n    overlayElement.removeEventListener('focusout', this.onContentFocusOut);\n  }\n\n  private readonly onContentPointerEnter = (): void => {\n    this.isContentHovered = true;\n    this.clearCloseTimeout();\n  };\n\n  private readonly onContentPointerLeave = (event: PointerEvent): void => {\n    this.isContentHovered = false;\n\n    if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n      return;\n    }\n\n    this.scheduleClose();\n  };\n\n  private readonly onContentFocusIn = (): void => {\n    this.isContentFocused = true;\n    this.clearCloseTimeout();\n  };\n\n  private readonly onContentFocusOut = (event: FocusEvent): void => {\n    this.isContentFocused = false;\n\n    if (this.el.nativeElement.contains(event.relatedTarget as Node | null)) {\n      return;\n    }\n\n    this.scheduleClose();\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.isTriggerHovered && !this.isTriggerFocused)) {\n          return;\n        }\n\n        this.open();\n      },\n      this.openDelay() ?? this.defaults?.openDelay() ?? 100,\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 (\n          this.isTriggerHovered ||\n          this.isContentHovered ||\n          this.isTriggerFocused ||\n          this.isContentFocused\n        ) {\n          return;\n        }\n\n        this.close();\n      },\n      this.closeDelay() ?? this.defaults?.closeDelay() ?? 100,\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  private relatedTargetInsideContent(relatedTarget: EventTarget | null): boolean {\n    return this.overlayRef?.overlayElement.contains(relatedTarget as Node | null) ?? false;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}