{"version":3,"file":"ngneat-helipopper.mjs","sources":["../../../../projects/ngneat/helipopper/src/lib/intersection-observer.ts","../../../../projects/ngneat/helipopper/src/lib/utils.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.factory.ts","../../../../projects/ngneat/helipopper/src/lib/inject-tippy.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.service.ts","../../../../projects/ngneat/helipopper/src/lib/coercion.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.directive.ts","../../../../projects/ngneat/helipopper/src/ngneat-helipopper.ts"],"sourcesContent":["// Let's retrieve the native `IntersectionObserver` implementation hidden by\n// `__zone_symbol__IntersectionObserver`. This would be the unpatched version of\n// the observer present in zone.js environments.\n// Otherwise, if the user is using zoneless change detection (and zone.js is not included),\n// we fall back to the native implementation. Accessing the native implementation\n// allows us to remove `runOutsideAngular` calls and reduce indentation,\n// making the code a bit more readable.\nexport const IntersectionObserver: typeof globalThis.IntersectionObserver =\n  (globalThis as any)['__zone_symbol__IntersectionObserver'] ||\n  globalThis.IntersectionObserver;\n","import { ElementRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { auditTime, map } from 'rxjs/operators';\nimport type { TippyElement } from '@ngneat/helipopper/config';\n\nimport { IntersectionObserver } from './intersection-observer';\n\nlet supportsIntersectionObserver = false;\nlet supportsResizeObserver = false;\n\nif (typeof window !== 'undefined') {\n  supportsIntersectionObserver = 'IntersectionObserver' in window;\n  supportsResizeObserver = 'ResizeObserver' in window;\n}\n\nexport const enum TippyErrorCode {\n  TippyNotProvided = 1,\n}\n\nexport function inView(\n  host: TippyElement,\n  options: IntersectionObserverInit = {\n    root: null,\n    threshold: 0.3,\n  },\n) {\n  const element = coerceElement(host);\n\n  return new Observable<void>((subscriber) => {\n    if (!supportsIntersectionObserver) {\n      subscriber.next();\n      subscriber.complete();\n      return;\n    }\n\n    const observer = new IntersectionObserver((entries) => {\n      // Several changes may occur in the same tick, we want to check the latest entry state.\n      const entry = entries[entries.length - 1];\n      if (entry.isIntersecting) {\n        subscriber.next();\n        subscriber.complete();\n      }\n    }, options);\n\n    observer.observe(element);\n\n    return () => observer.disconnect();\n  });\n}\n\nexport function isElementOverflow(host: HTMLElement): boolean {\n  // Don't access the `offsetWidth`/`offsetHeight` multiple times since it triggers layout updates.\n  const hostOffsetWidth = host.offsetWidth;\n  const hostOffsetHeight = host.offsetHeight;\n\n  return (\n    hostOffsetWidth > host.parentElement!.offsetWidth ||\n    hostOffsetWidth < host.scrollWidth ||\n    hostOffsetHeight < host.scrollHeight\n  );\n}\n\nexport function overflowChanges(host: TippyElement) {\n  const element = coerceElement(host);\n\n  return dimensionsChanges(element).pipe(\n    auditTime(150),\n    map(() => isElementOverflow(element)),\n  );\n}\n\nexport function dimensionsChanges(target: HTMLElement) {\n  return new Observable<void>((subscriber) => {\n    if (!supportsResizeObserver) {\n      subscriber.next();\n      subscriber.complete();\n      return;\n    }\n\n    const observer = new ResizeObserver(() => subscriber.next());\n    observer.observe(target);\n    return () => observer.disconnect();\n  });\n}\n\nexport function onlyTippyProps(allProps: any) {\n  const tippyProps: any = {};\n\n  if (!allProps) {\n    return tippyProps;\n  }\n\n  const ownProps = [\n    'useTextContent',\n    'variations',\n    'useHostWidth',\n    'defaultVariation',\n    'beforeRender',\n    'isLazy',\n    'variation',\n    'isEnabled',\n    'className',\n    'onlyTextOverflow',\n    'data',\n    'content',\n    'context',\n    'hideOnEscape',\n    'customHost',\n    'injector',\n    'preserveView',\n    'vcr',\n    'popperWidth',\n    'zIndexGetter',\n    'staticWidthHost',\n    'bindings',\n    'directives',\n  ];\n\n  const overriddenMethods = ['onShow', 'onHidden', 'onCreate'];\n\n  Object.keys(allProps).forEach((prop) => {\n    if (!ownProps.includes(prop) && !overriddenMethods.includes(prop)) {\n      tippyProps[prop] = allProps[prop];\n    }\n  });\n\n  return tippyProps;\n}\n\nexport function normalizeClassName(className: string | string[]): string[] {\n  const classes = typeof className === 'string' ? className.split(' ') : className;\n\n  return classes.map((klass) => klass?.trim()).filter(Boolean);\n}\n\nexport function coerceCssPixelValue<T>(value: T): string {\n  if (value == null) {\n    return '';\n  }\n\n  return typeof value === 'string' ? value : `${value}px`;\n}\n\nfunction coerceElement(element: TippyElement) {\n  return element instanceof ElementRef ? element.nativeElement : element;\n}\n\nlet observer: IntersectionObserver;\nconst elementHiddenHandlers = new WeakMap<Element, () => void>();\nexport function observeVisibility(host: Element, hiddenHandler: () => void) {\n  observer ??= new IntersectionObserver((entries: IntersectionObserverEntry[]) => {\n    entries.forEach((entry) => {\n      if (!entry.isIntersecting) {\n        elementHiddenHandlers.get(entry.target)!();\n      }\n    });\n  });\n  elementHiddenHandlers.set(host, hiddenHandler);\n  observer.observe(host);\n\n  return () => {\n    elementHiddenHandlers.delete(host);\n    observer.unobserve(host);\n  };\n}\n","import type tippy from 'tippy.js';\nimport { inject, Injectable, NgZone, ɵisPromise as isPromise } from '@angular/core';\nimport { defer, Observable, of, tap } from 'rxjs';\nimport { TIPPY_LOADER } from '@ngneat/helipopper/config';\n\n@Injectable({ providedIn: 'root' })\nexport class TippyFactory {\n  private readonly _ngZone = inject(NgZone);\n\n  private readonly _loader = inject(TIPPY_LOADER);\n\n  private _tippyImpl$: Observable<typeof tippy> | null = null;\n  private _tippy: typeof tippy | null = null;\n\n  /**\n   * This returns an observable because the user should provide a `loader`\n   * function, which may return a promise if the tippy.js library is to be\n   * loaded asynchronously.\n   */\n  getTippyImpl() {\n    this._tippyImpl$ ||= defer(() => {\n      if (this._tippy) return of(this._tippy);\n\n      // Call the `loader` function lazily — only when a subscriber\n      // arrives — to avoid importing `tippy.js` on the server.\n      const maybeTippy = this._ngZone.runOutsideAngular(() => this._loader());\n\n      let tippy$: Observable<typeof tippy>;\n      // We need to use `isPromise` instead of checking whether\n      // `result instanceof Promise`. In zone.js patched environments, `global.Promise`\n      // is the `ZoneAwarePromise`. Some APIs, which are likely not patched by zone.js\n      // for certain reasons, might not work with `instanceof`. For instance, the dynamic\n      // import `() => import('./chunk.js')` returns a native promise (not a `ZoneAwarePromise`),\n      // causing this check to be falsy.\n      if (isPromise(maybeTippy)) {\n        // This pulls less RxJS symbols compared to using `from()` to resolve a promise value.\n        tippy$ = new Observable((subscriber) => {\n          maybeTippy.then((tippy) => {\n            subscriber.next(tippy.default);\n            subscriber.complete();\n          });\n        });\n      } else {\n        tippy$ = of(maybeTippy);\n      }\n\n      return tippy$.pipe(\n        tap((tippy) => {\n          this._tippy = tippy;\n        }),\n      );\n    });\n\n    return this._tippyImpl$;\n  }\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport type { TippyInstance } from '@ngneat/helipopper/config';\n\nimport { TippyErrorCode } from './utils';\n\nexport const TIPPY_REF = /* @__PURE__ */ new InjectionToken<TippyInstance>(\n  ngDevMode ? 'TIPPY_REF' : '',\n);\n\nexport function injectTippyRef(): TippyInstance {\n  const instance = inject(TIPPY_REF, { optional: true });\n\n  if (!instance) {\n    if (ngDevMode) {\n      throw new Error(\n        'tp is not provided in the current context or on one of its ancestors',\n      );\n    } else {\n      throw new Error(`[tp]: ${TippyErrorCode.TippyNotProvided}`);\n    }\n  }\n\n  return instance;\n}\n","import { inject, Injectable, Injector, NgZone, signal } from '@angular/core';\nimport {\n  isComponent,\n  isTemplateRef,\n  ResolveViewRef,\n  ViewService,\n} from '@ngneat/overview';\nimport { Content } from '@ngneat/overview';\nimport { map, type Observable } from 'rxjs';\n\nimport {\n  CreateOptions,\n  ExtendedTippyInstance,\n  TIPPY_CONFIG,\n  TippyInstance,\n} from '@ngneat/helipopper/config';\n\nimport { TIPPY_REF } from './inject-tippy';\nimport { TippyFactory } from './tippy.factory';\nimport { normalizeClassName, onlyTippyProps } from './utils';\n\n@Injectable({ providedIn: 'root' })\nexport class TippyService {\n  private readonly _ngZone = inject(NgZone);\n  private readonly _injector = inject(Injector);\n  private readonly _globalConfig = inject(TIPPY_CONFIG, { optional: true });\n  private readonly _viewService = inject(ViewService);\n  private readonly _tippyFactory = inject(TippyFactory);\n\n  readonly enabled = signal(true);\n\n  enableAll(): void {\n    this.enabled.set(true);\n  }\n\n  disableAll(): void {\n    this.enabled.set(false);\n  }\n\n  create<T extends Content>(\n    host: HTMLElement,\n    content: T,\n    options: Partial<CreateOptions> = {},\n  ): Observable<ExtendedTippyInstance<T>> {\n    const variation = options.variation || this._globalConfig?.defaultVariation || '';\n    const config = {\n      onShow: (instance: ExtendedTippyInstance<T>) => {\n        host.setAttribute('data-tippy-open', '');\n        if (!instance.$viewOptions) {\n          instance.$viewOptions = {\n            injector: Injector.create({\n              providers: [\n                {\n                  provide: TIPPY_REF,\n                  useValue: instance,\n                },\n              ],\n              parent: options.injector || this._injector,\n            }),\n          };\n\n          if (isTemplateRef(content)) {\n            instance.$viewOptions.context = {\n              $implicit: instance.hide.bind(instance),\n              ...options.context,\n            };\n          } else if (isComponent(content)) {\n            instance.context = options.context;\n            instance.data = options.data;\n          }\n        }\n\n        instance.view ||= this._viewService.createView(content, {\n          ...options,\n          ...instance.$viewOptions,\n        }) as ResolveViewRef<T>;\n\n        instance.setContent(instance.view.getElement());\n        options?.onShow?.(instance);\n      },\n      onHidden: (instance: ExtendedTippyInstance<T>) => {\n        host.removeAttribute('data-tippy-open');\n\n        if (!options.preserveView) {\n          instance.view?.destroy();\n          instance.view = null;\n        }\n        options?.onHidden?.(instance);\n      },\n      ...onlyTippyProps(this._globalConfig),\n      ...this._globalConfig?.variations?.[variation],\n      ...onlyTippyProps(options),\n      onCreate: (instance: TippyInstance) => {\n        instance.popper.classList.add(`tippy-variation-${variation}`);\n        if (options.className) {\n          for (const klass of normalizeClassName(options.className)) {\n            instance.popper.classList.add(klass);\n          }\n        }\n        this._globalConfig?.onCreate?.(instance);\n        options.onCreate?.(instance);\n      },\n    };\n\n    return this._tippyFactory.getTippyImpl().pipe(\n      map((tippy) => {\n        return this._ngZone.runOutsideAngular(() => {\n          return tippy(host, config) as ExtendedTippyInstance<T>;\n        });\n      }),\n    );\n  }\n}\n","import { booleanAttribute as originalBooleanAttribute } from '@angular/core';\n\ntype BooleanInput = boolean | `${boolean}` | '' | null | undefined;\n\n/**\n * Transforms a value (typically a string) to a boolean.\n * Intended to be used as a transform function of an input.\n *\n * @see https://material.angular.io/cdk/coercion/overview\n */\nconst coerceBooleanAttribute: (value: BooleanInput) => boolean = originalBooleanAttribute;\n\nexport { coerceBooleanAttribute };\n","import {\n  afterEveryRender,\n  AfterViewInit,\n  computed,\n  DestroyRef,\n  Directive,\n  effect,\n  ElementRef,\n  inject,\n  Injector,\n  input,\n  InputSignal,\n  model,\n  NgZone,\n  OnChanges,\n  output,\n  PLATFORM_ID,\n  SimpleChanges,\n  untracked,\n  ViewContainerRef,\n  type Type,\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { Instance } from 'tippy.js';\nimport { combineLatest, firstValueFrom, from, merge, Observable, Subject } from 'rxjs';\nimport { filter, map, switchMap, takeUntil } from 'rxjs/operators';\nimport {\n  Content,\n  isComponent,\n  isString,\n  isTemplateRef,\n  ViewOptions,\n  ViewRef,\n  ViewService,\n} from '@ngneat/overview';\n\nimport {\n  coerceCssPixelValue,\n  dimensionsChanges,\n  inView,\n  isElementOverflow,\n  normalizeClassName,\n  observeVisibility,\n  onlyTippyProps,\n  overflowChanges,\n} from './utils';\nimport {\n  TIPPY_CONFIG,\n  TIPPY_LOADER_COMPONENT,\n  TIPPY_LOADER_TIMING,\n  type TippyConfig,\n  type TippyContent,\n  type TippyInstance,\n  type TippyProps,\n} from '@ngneat/helipopper/config';\nimport { TippyFactory } from './tippy.factory';\nimport { TippyService } from './tippy.service';\nimport { coerceBooleanAttribute } from './coercion';\nimport { TIPPY_REF } from './inject-tippy';\n\n// An arrow function defined inside a method closes over the method's lexical scope,\n// causing V8 to allocate a Context object that indirectly references the directive\n// instance — keeping it alive after destroy.\n//\n// A bound function (JSBoundFunction) has no [[context]] field in V8's heap layout;\n// it only stores { bound_target_function, bound_this, bound_arguments }.\n// Binding to `null` produces a context-free callable, breaking the retention chain.\nconst appendTo = function appendTo() {\n  return document.fullscreenElement || document.body;\n}.bind(null);\n\n// These are the default values used by `tippy.js`.\n// We are providing them as default input values.\n// The `tippy.js` repository has been archived and is unlikely to\n// change in the future, so it is safe to use these values as defaults.\nconst defaultAppendTo = (() => document.body) as TippyProps['appendTo'];\nconst defaultDelay = 0 as TippyProps['delay'];\nconst defaultDuration = [300, 250] as TippyProps['duration'];\nconst defaultInteractiveBorder = 2 as TippyProps['interactiveBorder'];\nconst defaultMaxWidth = 350 as TippyProps['maxWidth'];\nconst defaultOffset = [0, 10] as TippyProps['offset'];\nconst defaultPlacement = 'top' as TippyProps['placement'];\nconst defaultTrigger = 'mouseenter focus' as TippyProps['trigger'];\nconst defaultTriggerTarget = null as TippyProps['triggerTarget'];\nconst defaultZIndex = 9999 as TippyProps['zIndex'];\nconst defaultAnimation = 'fade' as TippyProps['animation'];\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[tp]',\n  exportAs: 'tippy',\n})\nexport class TippyDirective implements OnChanges, AfterViewInit {\n  readonly appendTo = input(defaultAppendTo, {\n    alias: 'tpAppendTo',\n  });\n\n  readonly content = input<TippyContent | undefined | null>('', { alias: 'tp' });\n\n  readonly delay = input(defaultDelay, {\n    alias: 'tpDelay',\n  });\n\n  readonly duration = input(defaultDuration, {\n    alias: 'tpDuration',\n  });\n\n  readonly hideOnClick = input(true, {\n    alias: 'tpHideOnClick',\n  });\n\n  readonly interactive = input(false, {\n    alias: 'tpInteractive',\n  });\n\n  readonly interactiveBorder = input(defaultInteractiveBorder, {\n    alias: 'tpInteractiveBorder',\n  });\n\n  readonly maxWidth = input(defaultMaxWidth, {\n    alias: 'tpMaxWidth',\n  });\n\n  // Note that some of the input signal types are declared explicitly because the compiler\n  // also uses types from `@popperjs/core` and requires a type annotation.\n  readonly offset: InputSignal<TippyProps['offset']> = input(defaultOffset, {\n    alias: 'tpOffset',\n  });\n\n  readonly placement: InputSignal<TippyProps['placement']> = input(defaultPlacement, {\n    alias: 'tpPlacement',\n  });\n\n  readonly popperOptions: InputSignal<TippyProps['popperOptions']> = input(\n    {},\n    {\n      alias: 'tpPopperOptions',\n    },\n  );\n\n  readonly showOnCreate = input(false, {\n    alias: 'tpShowOnCreate',\n  });\n\n  readonly trigger = input(defaultTrigger, {\n    alias: 'tpTrigger',\n  });\n\n  readonly triggerTarget = input(defaultTriggerTarget, {\n    alias: 'tpTriggerTarget',\n  });\n\n  readonly zIndex = input(defaultZIndex, {\n    alias: 'tpZIndex',\n  });\n\n  readonly animation = input(defaultAnimation, {\n    alias: 'tpAnimation',\n  });\n\n  readonly useTextContent = input(false, {\n    transform: coerceBooleanAttribute,\n    alias: 'tpUseTextContent',\n  });\n\n  readonly isLazy = input(false, {\n    transform: coerceBooleanAttribute,\n    alias: 'tpIsLazy',\n  });\n\n  readonly variation = input<string | undefined>(undefined, { alias: 'tpVariation' });\n\n  readonly isEnabled = input(true, { alias: 'tpIsEnabled' });\n\n  readonly className = input<string | string[]>('', { alias: 'tpClassName' });\n\n  readonly onlyTextOverflow = input(false, {\n    transform: coerceBooleanAttribute,\n    alias: 'tpOnlyTextOverflow',\n  });\n\n  readonly staticWidthHost = input(false, {\n    transform: coerceBooleanAttribute,\n    alias: 'tpStaticWidthHost',\n  });\n\n  readonly data = input<any>(undefined, { alias: 'tpData' });\n\n  /** Angular `inputBinding`/`outputBinding`/`twoWayBinding` descriptors forwarded to `createComponent`. */\n  readonly bindings = input<ViewOptions['bindings']>(undefined, { alias: 'tpBindings' });\n\n  /** Host directives (with optional bindings) forwarded to `createComponent`. */\n  readonly directives = input<ViewOptions['directives']>(undefined, {\n    alias: 'tpDirectives',\n  });\n\n  readonly useHostWidth = input(false, {\n    transform: coerceBooleanAttribute,\n    alias: 'tpUseHostWidth',\n  });\n\n  readonly hideOnEscape = input(false, {\n    transform: coerceBooleanAttribute,\n    alias: 'tpHideOnEscape',\n  });\n\n  readonly tippyProps = input<Record<string, unknown> | undefined>(undefined, {\n    alias: 'tpTippyProps',\n  });\n\n  readonly popperWidth = input<number | string | undefined>(undefined, {\n    alias: 'tpPopperWidth',\n  });\n\n  readonly customHost = input<HTMLElement | undefined>(undefined, { alias: 'tpHost' });\n\n  readonly tpOnShow = output<void>({ alias: 'tpOnShow' });\n\n  readonly tpOnHide = output<void>({ alias: 'tpOnHide' });\n\n  readonly isVisible = model(false, { alias: 'tpIsVisible' });\n\n  visible = output<boolean>({ alias: 'tpVisible' });\n\n  protected instance!: TippyInstance;\n  protected viewRef: ViewRef | null = null;\n  protected props!: Partial<TippyConfig>;\n  protected variationDefined = false;\n  protected viewOptions$: ViewOptions | null = null;\n\n  /**\n   * We had use `visible` event emitter previously as a `takeUntil` subscriber in multiple places\n   * within the directive.\n   * This is for internal use only; thus we don't have to deal with the `visible` event emitter\n   * and trigger change detections only when the `visible` event is being listened outside\n   * in the template (`<button [tippy]=\"...\" (visible)=\"...\"></button>`).\n   */\n  protected visibleInternal = new Subject<boolean>();\n  private visibilityObserverCleanup: VoidFunction | null = null;\n  private contentChanged = new Subject<void>();\n\n  private host = computed<HTMLElement>(\n    () => this.customHost() || this.hostRef.nativeElement,\n  );\n\n  // It should be a getter because computations are cached until\n  // any of the producers change.\n  private get hostWidth() {\n    return this.host().getBoundingClientRect().width;\n  }\n\n  private destroyRef = inject(DestroyRef);\n  private tippyService = inject(TippyService);\n  private isServer =\n    // Drop `isPlatformServer` once `ngServeMode` is available during compilation.\n    (typeof ngServerMode !== 'undefined' && ngServerMode) ||\n    isPlatformServer(inject(PLATFORM_ID));\n  private tippyFactory = inject(TippyFactory);\n  private destroyed = false;\n  private created = false;\n\n  protected globalConfig = inject(TIPPY_CONFIG);\n  protected injector = inject(Injector);\n  protected viewService = inject(ViewService);\n  protected vcr = inject(ViewContainerRef);\n  protected ngZone = inject(NgZone);\n  protected hostRef = inject(ElementRef);\n\n  private loaderViewRef: ViewRef | null = null;\n  private globalLoaderComponent = inject(TIPPY_LOADER_COMPONENT, { optional: true });\n  private loaderTiming = inject(TIPPY_LOADER_TIMING);\n\n  constructor() {\n    if (this.isServer) return;\n\n    this.setupListeners();\n\n    // `afterEveryRender` fires synchronously within Angular's CD cycle.\n    // This lets us update the enabled/disabled state of the instance BEFORE a\n    // synthetic mouseenter event is dispatched, which fixes test timing when\n    // Angular-triggered changes (content/style bindings) cause the overflow\n    // state to change. ResizeObserver (`overflowChanges`) remains as a fallback\n    // for non-Angular-triggered resize events (browser window resize, etc.).\n    afterEveryRender({\n      read: () => {\n        if (!this.onlyTextOverflow()) return;\n        untracked(() => this.checkOverflow(isElementOverflow(this.host())));\n      },\n    });\n\n    this.destroyRef.onDestroy(() => {\n      this.destroyed = true;\n      this.instance?.destroy();\n      this.destroyView();\n      this.visibilityObserverCleanup?.();\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (this.isServer) return;\n\n    // `isVisible` and `tippyProps` are not merged into `this.props`; they are\n    // handled separately (model signal and direct-spread effect respectively).\n    const changedProps = Object.keys(changes)\n      .filter((key) => key !== 'isVisible' && key !== 'tippyProps')\n      .reduce(\n        (accumulator, key) => ({ ...accumulator, [key]: changes[key].currentValue }),\n        {} as Partial<TippyConfig>,\n      );\n\n    // Variation defaults are applied only on the first call or when the variation\n    // input itself changes. Re-applying them on every ngOnChanges call would\n    // overwrite explicitly-bound inputs (e.g. tpTrigger) with variation defaults\n    // whenever any other input (e.g. tpData, tpIsEnabled) changes.\n    if (!this.variationDefined || 'variation' in changes) {\n      this.variationDefined = true;\n      const variation = this.variation() || this.globalConfig.defaultVariation || '';\n      this.setProps({\n        ...this.globalConfig.variations?.[variation],\n        ...this.props,\n        ...changedProps,\n      });\n    } else {\n      this.updateProps(changedProps);\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.isServer) return;\n\n    const onlyTextOverflow = this.onlyTextOverflow();\n    if (this.isLazy()) {\n      const hostInView$ = inView(this.host());\n\n      if (onlyTextOverflow) {\n        hostInView$\n          .pipe(\n            switchMap(() => this.isOverflowing$()),\n            takeUntilDestroyed(this.destroyRef),\n          )\n          .subscribe((isElementOverflow) => {\n            this.checkOverflow(isElementOverflow);\n          });\n      } else {\n        hostInView$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n          this.createInstance();\n        });\n      }\n    } else if (onlyTextOverflow) {\n      this.isOverflowing$()\n        .pipe(takeUntilDestroyed(this.destroyRef))\n        .subscribe((isElementOverflow) => {\n          this.checkOverflow(isElementOverflow);\n        });\n    } else {\n      this.createInstance();\n    }\n  }\n\n  destroyView() {\n    this.viewOptions$ = null;\n    this.viewRef?.destroy();\n    this.viewRef = null;\n    this.loaderViewRef?.destroy();\n    this.loaderViewRef = null;\n  }\n\n  /**\n   * This method is useful when you append to an element that you might remove from the DOM.\n   * In such cases we want to hide the tooltip and let it go through the destroy lifecycle.\n   * For example, if you have a grid row with an element that you toggle using the display CSS property on hover.\n   */\n  observeHostVisibility() {\n    if (this.isServer) return;\n    // We don't want to observe the host visibility if we are appending to the body.\n    if (this.props.appendTo && this.props.appendTo !== document.body) {\n      this.visibilityObserverCleanup?.();\n      return this.visibleInternal\n        .pipe(takeUntilDestroyed(this.destroyRef))\n        .subscribe((isVisible) => {\n          if (isVisible) {\n            this.visibilityObserverCleanup = observeVisibility(\n              this.instance.reference,\n              () => {\n                this.hide();\n                // Because we have animation on the popper it doesn't close immediately doesn't trigger the `tpVisible` event.\n                // Tippy is relying on the transitionend event to trigger the `onHidden` callback.\n                // https://github.com/atomiks/tippyjs/blob/master/src/dom-utils.ts#L117\n                // This event never fires because the popper is removed from the DOM before the transition ends.\n                if (this.props.animation) {\n                  this.onHidden();\n                }\n              },\n            );\n          } else {\n            this.visibilityObserverCleanup?.();\n          }\n        });\n    }\n  }\n\n  show() {\n    this.instance?.show();\n  }\n\n  hide() {\n    this.instance?.hide();\n  }\n\n  enable() {\n    this.instance?.enable();\n  }\n\n  disable() {\n    this.instance?.disable();\n  }\n\n  protected updateProps(props: Partial<TippyConfig>) {\n    this.setProps({ ...this.props, ...props });\n  }\n\n  protected setProps(props: Partial<TippyConfig>) {\n    this.props = props;\n    this.instance?.setProps({ ...onlyTippyProps(props), ...(this.tippyProps() ?? {}) });\n  }\n\n  protected setStatus(isEnabled: boolean) {\n    isEnabled ? this.instance?.enable() : this.instance?.disable();\n  }\n\n  protected hasContent(): boolean {\n    return !!(this.content() || this.useTextContent());\n  }\n\n  protected async createInstance() {\n    if (this.created || !this.hasContent()) {\n      return;\n    }\n\n    this.created = true;\n\n    const tippy = await this.ngZone.runOutsideAngular(() => {\n      return firstValueFrom(this.tippyFactory.getTippyImpl(), {\n        defaultValue: undefined,\n      });\n    });\n\n    if (tippy === undefined || this.destroyRef.destroyed) {\n      return;\n    }\n\n    this.instance = this.ngZone.runOutsideAngular(() => {\n      return tippy(this.host(), {\n        appendTo,\n        allowHTML: true,\n        ...(this.globalConfig.zIndexGetter\n          ? { zIndex: this.globalConfig.zIndexGetter() }\n          : {}),\n        ...onlyTippyProps(this.globalConfig),\n        ...onlyTippyProps(this.props),\n        ...(this.tippyProps() ?? {}),\n        // Arrow functions or inline callbacks close over the method's lexical scope,\n        // causing V8 to allocate a Context object that indirectly retains the directive\n        // instance inside tippy.js after destroy. A JSBoundFunction has no [[Context]]\n        // slot — only { bound_target_function, bound_this, bound_arguments } — so no\n        // closure context is created. onHide is bound to null because it needs no `this`\n        // at all, fully breaking the retention chain (same reasoning as `appendTo` above).\n        onMount: this.onMount.bind(this),\n        onCreate: this.onCreate.bind(this),\n        onShow: this.onShow.bind(this),\n        onHide: function (instance: TippyInstance) {\n          instance.reference.removeAttribute('data-tippy-open');\n        }.bind(null),\n        onHidden: this.onHidden.bind(this),\n      });\n    });\n\n    this.setStatus(this.isEnabled());\n    this.setProps(this.props);\n\n    const variationName = this.variation() || this.globalConfig.defaultVariation || '';\n    const variationConfig = this.globalConfig.variations?.[variationName];\n    // Check the isContextMenu marker set by withContextMenuVariation so any\n    // variation name works. The 'contextMenu' name fallback preserves\n    // compatibility with manually-constructed variations that predate this flag.\n    (variationConfig?.isContextMenu || variationName === 'contextMenu') &&\n      this.handleContextMenu();\n  }\n\n  // `resolvedContent` is provided when the caller already awaited a lazy factory.\n  // Passing it here avoids re-reading `this.content()`, which would still carry\n  // the raw factory function type and require another cast.\n  protected resolveContent(instance: TippyInstance, resolvedContent?: Type<unknown>) {\n    const content = (resolvedContent ?? this.content()) as Content | undefined | null;\n\n    if (!this.viewOptions$ && !isString(content)) {\n      const injector = Injector.create({\n        providers: [\n          {\n            provide: TIPPY_REF,\n            useValue: this.instance,\n          },\n        ],\n        parent: this.injector,\n      });\n\n      const data = this.data();\n\n      if (isComponent(content)) {\n        this.instance.data = data;\n\n        this.viewOptions$ = {\n          injector,\n          bindings: this.bindings(),\n          directives: this.directives(),\n        };\n      } else if (isTemplateRef(content)) {\n        this.viewOptions$ = {\n          injector,\n          context: {\n            data,\n            $implicit: this.hide.bind(this),\n          },\n        };\n      }\n    }\n\n    let newContent = this.ngZone.run(() => {\n      this.viewRef = this.viewService.createView(content!, {\n        vcr: this.vcr,\n        ...this.viewOptions$,\n      });\n\n      // We need to call `detectChanges` for OnPush components to update their content.\n      if (isComponent(content)) {\n        // `ɵcmp` is a component defition set for any component.\n        // Checking the `onPush` property of the component definition is a\n        // smarter way to determine whether we need to call `detectChanges()`,\n        // as users may be unaware of setting the binding.\n        const isOnPush = (content as { ɵcmp?: { onPush: boolean } }).ɵcmp?.onPush;\n        if (isOnPush) {\n          this.viewRef.detectChanges();\n        }\n      }\n\n      return this.viewRef.getElement();\n    });\n\n    if (this.useTextContent()) {\n      newContent = instance.reference.textContent!;\n    }\n\n    if (isString(newContent) && this.globalConfig.beforeRender) {\n      newContent = this.globalConfig.beforeRender(newContent);\n    }\n\n    return newContent;\n  }\n\n  protected handleContextMenu() {\n    const host = this.host();\n    const onContextMenu = (event: MouseEvent) => {\n      event.preventDefault();\n\n      this.instance.setProps({\n        getReferenceClientRect: () =>\n          ({\n            width: 0,\n            height: 0,\n            top: event.clientY,\n            bottom: event.clientY,\n            left: event.clientX,\n            right: event.clientX,\n          }) as DOMRectReadOnly,\n      });\n\n      this.instance.show();\n    };\n\n    host.addEventListener('contextmenu', onContextMenu);\n    this.destroyRef.onDestroy(() =>\n      host.removeEventListener('contextmenu', onContextMenu),\n    );\n  }\n\n  protected handleEscapeButton(): void {\n    const onKeydown = (event: KeyboardEvent) => {\n      if (event.code === 'Escape') {\n        this.hide();\n      }\n    };\n\n    document.body.addEventListener('keydown', onKeydown);\n\n    // Remove listener when `visibleInternal` becomes false.\n    const visibleSubscription = this.visibleInternal.subscribe((v) => {\n      if (!v) {\n        document.body.removeEventListener('keydown', onKeydown);\n        visibleSubscription.unsubscribe();\n      }\n    });\n\n    this.destroyRef.onDestroy(() => {\n      document.body.removeEventListener('keydown', onKeydown);\n      visibleSubscription.unsubscribe();\n    });\n  }\n\n  protected checkOverflow(isElementOverflow: boolean) {\n    if (isElementOverflow) {\n      if (!this.instance) {\n        this.createInstance();\n      } else {\n        this.instance.enable();\n      }\n    } else {\n      this.instance?.disable();\n    }\n  }\n\n  protected listenToHostResize() {\n    dimensionsChanges(this.host())\n      .pipe(takeUntil(this.visibleInternal), takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => {\n        this.setInstanceWidth(this.instance, this.hostWidth);\n      });\n  }\n\n  protected clearInstanceWidth(instance: Instance) {\n    instance.popper.style.width = '';\n    instance.popper.style.maxWidth = '';\n    (instance.popper.firstElementChild as HTMLElement).style.maxWidth = '';\n  }\n\n  protected setInstanceWidth(instance: Instance, width: string | number) {\n    const inPixels = coerceCssPixelValue(width);\n    instance.popper.style.width = inPixels;\n    instance.popper.style.maxWidth = inPixels;\n    (instance.popper.firstElementChild as HTMLElement).style.maxWidth = inPixels;\n  }\n\n  private onMount(instance: TippyInstance) {\n    const isVisible = true;\n    this.isVisible.set(isVisible);\n    this.visibleInternal.next(isVisible);\n    this.ngZone.run(() => this.visible.emit(isVisible));\n    this.useHostWidth() && this.listenToHostResize();\n    this.globalConfig.onMount?.(instance);\n  }\n\n  private onCreate(instance: TippyInstance) {\n    instance.popper.classList.add(\n      `tippy-variation-${this.variation() || this.globalConfig.defaultVariation}`,\n    );\n    if (this.className()) {\n      for (const klass of normalizeClassName(this.className())) {\n        instance.popper.classList.add(klass);\n      }\n    }\n    this.globalConfig.onCreate?.(instance);\n    if (this.isVisible() === true) {\n      instance.show();\n    }\n  }\n\n  private onHidden(instance: TippyInstance = this.instance) {\n    this.destroyView();\n    const isVisible = false;\n    // `model()` uses `OutputEmitterRef` internally to emit events when the\n    // signal changes. If the directive is destroyed, it will throw an error:\n    // \"Unexpected emit for destroyed `OutputRef`\".\n    if (!this.destroyed) {\n      this.isVisible.set(isVisible);\n      this.ngZone.run(() => this.visible.emit(isVisible));\n      this.tpOnHide.emit();\n    }\n    this.visibleInternal.next(isVisible);\n\n    this.globalConfig.onHidden?.(instance);\n  }\n\n  private onShow(instance: TippyInstance) {\n    // In onlyTextOverflow mode the tooltip must not appear when the host is\n    // not overflowing. Returning false from onShow prevents tippy from\n    // showing regardless of the instance's enabled/disabled state. This\n    // acts as a last-resort guard for cases where checkOverflow() hasn't\n    // been called yet (e.g. Angular's scheduler hasn't flushed CD between\n    // the content/width change and the trigger event).\n    if (this.onlyTextOverflow() && !isElementOverflow(this.host())) {\n      return false;\n    }\n\n    // The outer `onShow` must be synchronous so that `return false` above\n    // is seen as a boolean by tippy.js (an `async` function always returns\n    // a Promise, which is truthy and would never suppress the show).\n    this.handleOnShow(instance);\n  }\n\n  private async handleOnShow(instance: Instance) {\n    instance.reference.setAttribute('data-tippy-open', '');\n\n    const maybeContent = this.content();\n    const isLazyFactory =\n      !isComponentClass(maybeContent) && typeof maybeContent === 'function';\n\n    let resolvedContent: Type<unknown> | undefined;\n    if (isLazyFactory) {\n      const loaderComponent = this.globalLoaderComponent;\n      if (loaderComponent) {\n        const loaderElement = this.ngZone.run(() => {\n          this.loaderViewRef = this.viewService.createView(loaderComponent, {\n            vcr: this.vcr,\n          });\n          return this.loaderViewRef.getElement();\n        });\n        instance.setContent(loaderElement);\n      }\n\n      const cancelled = Symbol();\n      // combineLatest ensures we swap the loader only when both the component\n      // is ready AND the timing observable has emitted — guaranteeing the spinner\n      // is visible for at least the configured duration regardless of import speed.\n      // takeUntil + takeUntilDestroyed cancel if the tooltip hides or the\n      // directive is destroyed mid-flight.\n      const result = await firstValueFrom(\n        combineLatest([\n          from((maybeContent as () => Promise<Type<unknown>>)()),\n          this.loaderTiming,\n        ]).pipe(\n          map(([component]) => component),\n          takeUntil(this.visibleInternal.pipe(filter((v) => !v))),\n          takeUntilDestroyed(this.destroyRef),\n        ),\n        { defaultValue: cancelled },\n      );\n\n      this.loaderViewRef?.destroy();\n      this.loaderViewRef = null;\n\n      if (result === cancelled) return;\n      resolvedContent = result as Type<unknown>;\n    }\n\n    // For non-lazy content this call is fully synchronous — skipping the\n    // await avoids a microtask tick that would otherwise cause a visible flicker.\n    const content = this.resolveContent(instance, resolvedContent);\n\n    if (isString(content)) {\n      instance.setProps({ allowHTML: false });\n\n      if (content?.trim()) {\n        this.enable();\n      } else {\n        this.disable();\n      }\n    }\n\n    instance.setContent(content);\n    this.hideOnEscape() && this.handleEscapeButton();\n\n    this.clearInstanceWidth(instance);\n    if (this.useHostWidth()) {\n      this.setInstanceWidth(instance, this.hostWidth);\n    } else if (this.popperWidth()) {\n      this.setInstanceWidth(instance, this.popperWidth()!);\n    }\n    this.globalConfig.onShow?.(instance);\n    this.tpOnShow.emit();\n  }\n\n  private isOverflowing$() {\n    const host = this.host();\n    const notifiers$ = [overflowChanges(host)];\n\n    // We need to handle cases where the host has a static width but the content might change\n    if (this.staticWidthHost()) {\n      notifiers$.push(\n        this.contentChanged.pipe(\n          // We need to wait for the content to be rendered before we can check if it's overflowing.\n          switchMap(() => {\n            return new Observable<boolean>((subscriber) => {\n              const id = window.requestAnimationFrame(() => {\n                subscriber.next(isElementOverflow(host));\n                subscriber.complete();\n              });\n\n              return () => cancelAnimationFrame(id);\n            });\n          }),\n        ),\n      );\n    }\n\n    return merge(...notifiers$);\n  }\n\n  private setupListeners(): void {\n    effect(() => {\n      // Capture signal read to track its changes.\n      this.content();\n      untracked(() => this.contentChanged.next());\n    });\n\n    effect(() => this.setStatus(this.tippyService.enabled() && this.isEnabled()));\n\n    effect(() => {\n      const maxWidth = this.useHostWidth() ? this.hostWidth : defaultMaxWidth;\n      untracked(() => this.setProps({ ...this.props, maxWidth }));\n    });\n\n    effect(() => {\n      const isVisible = this.isVisible();\n      isVisible ? this.show() : this.hide();\n    });\n\n    effect(() => {\n      const hasContent = this.hasContent();\n\n      if (hasContent && !this.instance && !this.isLazy() && !this.onlyTextOverflow()) {\n        this.createInstance();\n      } else if (!hasContent && this.instance) {\n        this.instance.destroy();\n        this.instance = null as any;\n        this.destroyView();\n        this.created = false;\n      }\n    });\n\n    effect(() => {\n      const tippyProps = this.tippyProps();\n      untracked(() => this.instance?.setProps(tippyProps ?? {}));\n    });\n  }\n}\n\nfunction isComponentClass(\n  content: TippyContent | null | undefined,\n): content is Type<any> {\n  return (\n    typeof content === 'function' &&\n    /^class\\s/.test(Function.prototype.toString.call(content))\n  );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["isPromise","map","originalBooleanAttribute"],"mappings":"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"}