@ngneat/helipopper 10.2.1 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ElementRef, inject, NgZone, Injectable, booleanAttribute, InjectionToken, input, output, model, EventEmitter, computed, DestroyRef, PLATFORM_ID, Injector, effect, untracked, Directive, Inject, Output } from '@angular/core';
2
+ import { ElementRef, inject, NgZone, Injectable, booleanAttribute, InjectionToken, input, output, model, computed, DestroyRef, PLATFORM_ID, Injector, ViewContainerRef, effect, untracked, Directive, Inject } from '@angular/core';
3
3
  import { isPlatformServer } from '@angular/common';
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import { Observable, defer, from, map as map$1, of, shareReplay, Subject, fromEvent, merge } from 'rxjs';
6
6
  import { auditTime, map, switchMap, filter, takeUntil } from 'rxjs/operators';
7
7
  import * as i1 from '@ngneat/overview';
8
- import { isString, isComponent, isTemplateRef } from '@ngneat/overview';
8
+ import { ViewService, isString, isComponent, isTemplateRef } from '@ngneat/overview';
9
9
  import { TIPPY_LOADER, TIPPY_CONFIG } from '@ngneat/helipopper/config';
10
10
 
11
11
  // Let's retrieve the native `IntersectionObserver` implementation hidden by
@@ -217,13 +217,7 @@ class TippyDirective {
217
217
  get hostWidth() {
218
218
  return this.host().getBoundingClientRect().width;
219
219
  }
220
- constructor(globalConfig, injector, viewService, vcr, ngZone, hostRef) {
221
- this.globalConfig = globalConfig;
222
- this.injector = injector;
223
- this.viewService = viewService;
224
- this.vcr = vcr;
225
- this.ngZone = ngZone;
226
- this.hostRef = hostRef;
220
+ constructor() {
227
221
  this.appendTo = input(defaultAppendTo, {
228
222
  alias: 'tpAppendTo',
229
223
  });
@@ -307,7 +301,7 @@ class TippyDirective {
307
301
  this.onShow = output({ alias: 'tpOnShow' });
308
302
  this.onHide = output({ alias: 'tpOnHide' });
309
303
  this.isVisible = model(false, { alias: 'tpIsVisible' });
310
- this.visible = new EventEmitter();
304
+ this.visible = output({ alias: 'tpVisible' });
311
305
  this.viewRef = null;
312
306
  this.variationDefined = false;
313
307
  this.viewOptions$ = null;
@@ -326,6 +320,13 @@ class TippyDirective {
326
320
  this.isServer = isPlatformServer(inject(PLATFORM_ID));
327
321
  this.tippyFactory = inject(TippyFactory);
328
322
  this.destroyed = false;
323
+ this.created = false;
324
+ this.globalConfig = inject(TIPPY_CONFIG);
325
+ this.injector = inject(Injector);
326
+ this.viewService = inject(ViewService);
327
+ this.vcr = inject(ViewContainerRef);
328
+ this.ngZone = inject(NgZone);
329
+ this.hostRef = inject(ElementRef);
329
330
  if (this.isServer)
330
331
  return;
331
332
  this.setupListeners();
@@ -440,10 +441,14 @@ class TippyDirective {
440
441
  setStatus(isEnabled) {
441
442
  isEnabled ? this.instance?.enable() : this.instance?.disable();
442
443
  }
444
+ hasContent() {
445
+ return !!(this.content() || this.useTextContent());
446
+ }
443
447
  createInstance() {
444
- if (!this.content() && !this.useTextContent()) {
448
+ if (this.created || !this.hasContent()) {
445
449
  return;
446
450
  }
451
+ this.created = true;
447
452
  this.tippyFactory
448
453
  .create(this.host(), {
449
454
  allowHTML: true,
@@ -457,9 +462,7 @@ class TippyDirective {
457
462
  const isVisible = true;
458
463
  this.isVisible.set(isVisible);
459
464
  this.visibleInternal.next(isVisible);
460
- if (this.visible.observed) {
461
- this.ngZone.run(() => this.visible.next(isVisible));
462
- }
465
+ this.ngZone.run(() => this.visible.emit(isVisible));
463
466
  this.useHostWidth() && this.listenToHostResize();
464
467
  this.globalConfig.onMount?.(instance);
465
468
  },
@@ -628,9 +631,7 @@ class TippyDirective {
628
631
  this.onHide.emit();
629
632
  }
630
633
  this.visibleInternal.next(isVisible);
631
- if (this.visible.observed) {
632
- this.ngZone.run(() => this.visible.next(isVisible));
633
- }
634
+ this.ngZone.run(() => this.visible.emit(isVisible));
634
635
  this.globalConfig.onHidden?.(instance);
635
636
  }
636
637
  isOverflowing$() {
@@ -663,8 +664,20 @@ class TippyDirective {
663
664
  const isVisible = this.isVisible();
664
665
  isVisible ? this.show() : this.hide();
665
666
  });
667
+ effect(() => {
668
+ const hasContent = this.hasContent();
669
+ if (hasContent && !this.instance && !this.isLazy() && !this.onlyTextOverflow()) {
670
+ this.createInstance();
671
+ }
672
+ else if (!hasContent && this.instance) {
673
+ this.instance.destroy();
674
+ this.instance = null;
675
+ this.destroyView();
676
+ this.created = false;
677
+ }
678
+ });
666
679
  }
667
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: TippyDirective, deps: [{ token: TIPPY_CONFIG }, { token: i0.Injector }, { token: i1.ViewService }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
680
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: TippyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
668
681
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: TippyDirective, isStandalone: true, selector: "[tp]", inputs: { appendTo: { classPropertyName: "appendTo", publicName: "tpAppendTo", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "tp", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "tpDelay", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "tpDuration", isSignal: true, isRequired: false, transformFunction: null }, hideOnClick: { classPropertyName: "hideOnClick", publicName: "tpHideOnClick", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "tpInteractive", isSignal: true, isRequired: false, transformFunction: null }, interactiveBorder: { classPropertyName: "interactiveBorder", publicName: "tpInteractiveBorder", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "tpMaxWidth", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "tpOffset", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "tpPlacement", isSignal: true, isRequired: false, transformFunction: null }, popperOptions: { classPropertyName: "popperOptions", publicName: "tpPopperOptions", isSignal: true, isRequired: false, transformFunction: null }, showOnCreate: { classPropertyName: "showOnCreate", publicName: "tpShowOnCreate", isSignal: true, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "tpTrigger", isSignal: true, isRequired: false, transformFunction: null }, triggerTarget: { classPropertyName: "triggerTarget", publicName: "tpTriggerTarget", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "tpZIndex", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "tpAnimation", isSignal: true, isRequired: false, transformFunction: null }, useTextContent: { classPropertyName: "useTextContent", publicName: "tpUseTextContent", isSignal: true, isRequired: false, transformFunction: null }, isLazy: { classPropertyName: "isLazy", publicName: "tpIsLazy", isSignal: true, isRequired: false, transformFunction: null }, variation: { classPropertyName: "variation", publicName: "tpVariation", isSignal: true, isRequired: false, transformFunction: null }, isEnabled: { classPropertyName: "isEnabled", publicName: "tpIsEnabled", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "tpClassName", isSignal: true, isRequired: false, transformFunction: null }, onlyTextOverflow: { classPropertyName: "onlyTextOverflow", publicName: "tpOnlyTextOverflow", isSignal: true, isRequired: false, transformFunction: null }, staticWidthHost: { classPropertyName: "staticWidthHost", publicName: "tpStaticWidthHost", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "tpData", isSignal: true, isRequired: false, transformFunction: null }, useHostWidth: { classPropertyName: "useHostWidth", publicName: "tpUseHostWidth", isSignal: true, isRequired: false, transformFunction: null }, hideOnEscape: { classPropertyName: "hideOnEscape", publicName: "tpHideOnEscape", isSignal: true, isRequired: false, transformFunction: null }, popperWidth: { classPropertyName: "popperWidth", publicName: "tpPopperWidth", isSignal: true, isRequired: false, transformFunction: null }, customHost: { classPropertyName: "customHost", publicName: "tpHost", isSignal: true, isRequired: false, transformFunction: null }, isVisible: { classPropertyName: "isVisible", publicName: "tpIsVisible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onShow: "tpOnShow", onHide: "tpOnHide", isVisible: "tpIsVisibleChange", visible: "tpVisible" }, exportAs: ["tippy"], usesOnChanges: true, ngImport: i0 }); }
669
682
  }
670
683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: TippyDirective, decorators: [{
@@ -675,13 +688,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
675
688
  exportAs: 'tippy',
676
689
  standalone: true,
677
690
  }]
678
- }], ctorParameters: () => [{ type: undefined, decorators: [{
679
- type: Inject,
680
- args: [TIPPY_CONFIG]
681
- }] }, { type: i0.Injector }, { type: i1.ViewService }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { visible: [{
682
- type: Output,
683
- args: ['tpVisible']
684
- }] } });
691
+ }], ctorParameters: () => [] });
685
692
 
686
693
  class TippyService {
687
694
  constructor(globalConfig, view, injector) {
@@ -1 +1 @@
1
- {"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/coercion.ts","../../../../projects/ngneat/helipopper/src/lib/inject-tippy.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.directive.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.service.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\ndeclare const ResizeObserver: any;\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((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` multiple times since it triggers layout updates.\n const hostOffsetWidth = host.offsetWidth;\n\n return (\n hostOffsetWidth > host.parentElement!.offsetWidth ||\n hostOffsetWidth < host.scrollWidth\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<boolean>((subscriber) => {\n if (!supportsResizeObserver) {\n subscriber.next();\n subscriber.complete();\n return;\n }\n\n const observer = new ResizeObserver(() => subscriber.next(true));\n observer.observe(target);\n return () => observer.disconnect();\n });\n}\n\nexport function onlyTippyProps(allProps: any) {\n const tippyProps: any = {};\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 ];\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 } from '@angular/core';\nimport { defer, from, map, type Observable, of, shareReplay } from 'rxjs';\nimport { TIPPY_LOADER, type TippyProps } from '@ngneat/helipopper/config';\n\n// We need to use `isPromise` instead of checking whether\n// `value instanceof Promise`. In zone.js patched environments, `global.Promise`\n// is the `ZoneAwarePromise`.\n// `import(...)` returns a native promise (not a `ZoneAwarePromise`), causing\n// `instanceof` check to be falsy.\nfunction isPromise<T>(value: any): value is Promise<T> {\n return typeof value?.then === 'function';\n}\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\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 create(target: HTMLElement, props?: Partial<TippyProps>) {\n // We use `shareReplay` to ensure that subsequent emissions are\n // synchronous and to avoid triggering the `defer` callback repeatedly\n // when new subscribers arrive.\n this._tippyImpl$ ||= defer(() => {\n const maybeTippy = this._ngZone.runOutsideAngular(() => this._loader());\n return isPromise(maybeTippy)\n ? from(maybeTippy).pipe(map((tippy) => tippy.default))\n : of(maybeTippy);\n }).pipe(shareReplay());\n\n return this._tippyImpl$.pipe(\n map((tippy) => {\n return this._ngZone.runOutsideAngular(() => tippy(target, props));\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 { 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 typeof ngDevMode !== 'undefined' && ngDevMode ? 'TIPPY_REF' : ''\n);\n\nexport function injectTippyRef(): TippyInstance {\n const instance = inject(TIPPY_REF, { optional: true });\n\n if (!instance) {\n if (typeof ngDevMode !== 'undefined' && 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 {\n AfterViewInit,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n EventEmitter,\n inject,\n Inject,\n Injector,\n input,\n InputSignal,\n model,\n NgZone,\n OnChanges,\n OnInit,\n output,\n Output,\n PLATFORM_ID,\n SimpleChanges,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { Instance } from 'tippy.js';\nimport { fromEvent, 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 TippyConfig,\n TippyInstance,\n TippyProps,\n} from '@ngneat/helipopper/config';\nimport { TippyFactory } from './tippy.factory';\nimport { coerceBooleanAttribute } from './coercion';\nimport { TIPPY_REF } from './inject-tippy';\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: TippyProps['appendTo'] = () => document.body;\nconst defaultDelay: TippyProps['delay'] = 0;\nconst defaultDuration: TippyProps['duration'] = [300, 250];\nconst defaultInteractiveBorder: TippyProps['interactiveBorder'] = 2;\nconst defaultMaxWidth: TippyProps['maxWidth'] = 350;\nconst defaultOffset: TippyProps['offset'] = [0, 10];\nconst defaultPlacement: TippyProps['placement'] = 'top';\nconst defaultTrigger: TippyProps['trigger'] = 'mouseenter focus';\nconst defaultTriggerTarget: TippyProps['triggerTarget'] = null;\nconst defaultZIndex: TippyProps['zIndex'] = 9999;\nconst defaultAnimation: TippyProps['animation'] = 'fade';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[tp]',\n exportAs: 'tippy',\n standalone: true,\n})\nexport class TippyDirective implements OnChanges, AfterViewInit, OnInit {\n readonly appendTo = input(defaultAppendTo, {\n alias: 'tpAppendTo',\n });\n\n readonly content = input<Content | 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 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 popperWidth = input<number | string | undefined>(undefined, {\n alias: 'tpPopperWidth',\n });\n\n readonly customHost = input<HTMLElement | undefined>(undefined, { alias: 'tpHost' });\n\n readonly onShow = output<void>({ alias: 'tpOnShow' });\n\n readonly onHide = output<void>({ alias: 'tpOnHide' });\n\n readonly isVisible = model(false, { alias: 'tpIsVisible' });\n\n @Output('tpVisible') visible = new EventEmitter<boolean>();\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 isServer = isPlatformServer(inject(PLATFORM_ID));\n private tippyFactory = inject(TippyFactory);\n private destroyed = false;\n\n constructor(\n @Inject(TIPPY_CONFIG) protected globalConfig: TippyConfig,\n protected injector: Injector,\n protected viewService: ViewService,\n protected vcr: ViewContainerRef,\n protected ngZone: NgZone,\n protected hostRef: ElementRef\n ) {\n if (this.isServer) return;\n\n this.setupListeners();\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 const variation = this.variation() || this.globalConfig.defaultVariation || '';\n const props = Object.keys(changes)\n // `isVisible` is not required as a prop since we update it manually\n // in an effect-like manner.\n .filter((key) => key !== 'isVisible')\n .reduce(\n (accumulator, key) => ({ ...accumulator, [key]: changes[key].currentValue }),\n { ...this.globalConfig.variations?.[variation] }\n );\n\n this.updateProps(props);\n }\n\n ngOnInit() {\n if (this.useHostWidth()) {\n this.props.maxWidth = this.hostWidth;\n }\n }\n\n ngAfterViewInit() {\n if (this.isServer) return;\n\n if (this.isLazy()) {\n const hostInView$ = inView(this.host());\n\n if (this.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 (this.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 }\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));\n }\n\n protected setStatus(isEnabled: boolean) {\n isEnabled ? this.instance?.enable() : this.instance?.disable();\n }\n\n protected createInstance() {\n if (!this.content() && !this.useTextContent()) {\n return;\n }\n\n this.tippyFactory\n .create(this.host(), {\n allowHTML: true,\n appendTo: document.body,\n ...(this.globalConfig.zIndexGetter\n ? { zIndex: this.globalConfig.zIndexGetter() }\n : {}),\n ...onlyTippyProps(this.globalConfig),\n ...onlyTippyProps(this.props),\n onMount: (instance) => {\n const isVisible = true;\n this.isVisible.set(isVisible);\n this.visibleInternal.next(isVisible);\n if (this.visible.observed) {\n this.ngZone.run(() => this.visible.next(isVisible));\n }\n this.useHostWidth() && this.listenToHostResize();\n this.globalConfig.onMount?.(instance);\n },\n onCreate: (instance) => {\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 onShow: (instance) => {\n instance.reference.setAttribute('data-tippy-open', '');\n\n // We're re-entering because we might create an Angular component,\n // which should be done within the zone.\n const content = this.ngZone.run(() => this.resolveContent(instance));\n\n if (isString(content)) {\n instance.setProps({ allowHTML: false });\n\n if (!content?.trim()) {\n this.disable();\n } else {\n this.enable();\n }\n }\n\n instance.setContent(content);\n this.hideOnEscape() && this.handleEscapeButton();\n\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.onShow.emit();\n },\n onHide(instance) {\n instance.reference.removeAttribute('data-tippy-open');\n },\n onHidden: (instance) => {\n this.onHidden(instance);\n },\n })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((instance) => {\n this.instance = instance;\n\n this.setStatus(this.isEnabled());\n this.setProps(this.props);\n\n this.variation() === 'contextMenu' && this.handleContextMenu();\n });\n }\n\n protected resolveContent(instance: TippyInstance) {\n const content = this.content();\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 };\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 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 let newContent = this.viewRef.getElement();\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 fromEvent<MouseEvent>(this.host(), 'contextmenu')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((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\n protected handleEscapeButton(): void {\n fromEvent<KeyboardEvent>(document.body, 'keydown')\n .pipe(\n filter(({ code }: KeyboardEvent) => code === 'Escape'),\n takeUntil(this.visibleInternal.pipe(filter((v) => !v))),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.hide());\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 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 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.onHide.emit();\n }\n this.visibleInternal.next(isVisible);\n if (this.visible.observed) {\n this.ngZone.run(() => this.visible.next(isVisible));\n }\n this.globalConfig.onHidden?.(instance);\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((subscriber) => {\n const id = window.requestAnimationFrame(() => {\n subscriber.next();\n subscriber.complete();\n });\n\n return () => cancelAnimationFrame(id);\n });\n }),\n map(() => isElementOverflow(host))\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.isEnabled()));\n\n effect(() => {\n const isVisible = this.isVisible();\n isVisible ? this.show() : this.hide();\n });\n }\n}\n","import { inject, Inject, Injectable, Injector } from '@angular/core';\nimport {\n isComponent,\n isTemplateRef,\n ResolveViewRef,\n ViewService,\n} from '@ngneat/overview';\nimport { Content } from '@ngneat/overview';\nimport type { Observable } from 'rxjs';\n\nimport {\n CreateOptions,\n ExtendedTippyInstance,\n TIPPY_CONFIG,\n TippyConfig,\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 _tippyFactory = inject(TippyFactory);\n\n constructor(\n @Inject(TIPPY_CONFIG) private globalConfig: TippyConfig,\n private view: ViewService,\n private injector: Injector\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.view.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.create(host, config) as Observable<\n ExtendedTippyInstance<T>\n >;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","originalBooleanAttribute"],"mappings":"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"}
1
+ {"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/coercion.ts","../../../../projects/ngneat/helipopper/src/lib/inject-tippy.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.directive.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.service.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\ndeclare const ResizeObserver: any;\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((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` multiple times since it triggers layout updates.\n const hostOffsetWidth = host.offsetWidth;\n\n return (\n hostOffsetWidth > host.parentElement!.offsetWidth ||\n hostOffsetWidth < host.scrollWidth\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<boolean>((subscriber) => {\n if (!supportsResizeObserver) {\n subscriber.next();\n subscriber.complete();\n return;\n }\n\n const observer = new ResizeObserver(() => subscriber.next(true));\n observer.observe(target);\n return () => observer.disconnect();\n });\n}\n\nexport function onlyTippyProps(allProps: any) {\n const tippyProps: any = {};\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 ];\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 } from '@angular/core';\nimport { defer, from, map, type Observable, of, shareReplay } from 'rxjs';\nimport { TIPPY_LOADER, type TippyProps } from '@ngneat/helipopper/config';\n\n// We need to use `isPromise` instead of checking whether\n// `value instanceof Promise`. In zone.js patched environments, `global.Promise`\n// is the `ZoneAwarePromise`.\n// `import(...)` returns a native promise (not a `ZoneAwarePromise`), causing\n// `instanceof` check to be falsy.\nfunction isPromise<T>(value: any): value is Promise<T> {\n return typeof value?.then === 'function';\n}\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\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 create(target: HTMLElement, props?: Partial<TippyProps>) {\n // We use `shareReplay` to ensure that subsequent emissions are\n // synchronous and to avoid triggering the `defer` callback repeatedly\n // when new subscribers arrive.\n this._tippyImpl$ ||= defer(() => {\n const maybeTippy = this._ngZone.runOutsideAngular(() => this._loader());\n return isPromise(maybeTippy)\n ? from(maybeTippy).pipe(map((tippy) => tippy.default))\n : of(maybeTippy);\n }).pipe(shareReplay());\n\n return this._tippyImpl$.pipe(\n map((tippy) => {\n return this._ngZone.runOutsideAngular(() => tippy(target, props));\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 { 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 typeof ngDevMode !== 'undefined' && ngDevMode ? 'TIPPY_REF' : ''\n);\n\nexport function injectTippyRef(): TippyInstance {\n const instance = inject(TIPPY_REF, { optional: true });\n\n if (!instance) {\n if (typeof ngDevMode !== 'undefined' && 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 {\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 OnInit,\n output,\n PLATFORM_ID,\n SimpleChanges,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { Instance } from 'tippy.js';\nimport { fromEvent, 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 TippyConfig,\n TippyInstance,\n TippyProps,\n} from '@ngneat/helipopper/config';\nimport { TippyFactory } from './tippy.factory';\nimport { coerceBooleanAttribute } from './coercion';\nimport { TIPPY_REF } from './inject-tippy';\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: TippyProps['appendTo'] = () => document.body;\nconst defaultDelay: TippyProps['delay'] = 0;\nconst defaultDuration: TippyProps['duration'] = [300, 250];\nconst defaultInteractiveBorder: TippyProps['interactiveBorder'] = 2;\nconst defaultMaxWidth: TippyProps['maxWidth'] = 350;\nconst defaultOffset: TippyProps['offset'] = [0, 10];\nconst defaultPlacement: TippyProps['placement'] = 'top';\nconst defaultTrigger: TippyProps['trigger'] = 'mouseenter focus';\nconst defaultTriggerTarget: TippyProps['triggerTarget'] = null;\nconst defaultZIndex: TippyProps['zIndex'] = 9999;\nconst defaultAnimation: TippyProps['animation'] = 'fade';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[tp]',\n exportAs: 'tippy',\n standalone: true,\n})\nexport class TippyDirective implements OnChanges, AfterViewInit, OnInit {\n readonly appendTo = input(defaultAppendTo, {\n alias: 'tpAppendTo',\n });\n\n readonly content = input<Content | 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 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 popperWidth = input<number | string | undefined>(undefined, {\n alias: 'tpPopperWidth',\n });\n\n readonly customHost = input<HTMLElement | undefined>(undefined, { alias: 'tpHost' });\n\n readonly onShow = output<void>({ alias: 'tpOnShow' });\n\n readonly onHide = 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 isServer = 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 constructor() {\n if (this.isServer) return;\n\n this.setupListeners();\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 const variation = this.variation() || this.globalConfig.defaultVariation || '';\n const props = Object.keys(changes)\n // `isVisible` is not required as a prop since we update it manually\n // in an effect-like manner.\n .filter((key) => key !== 'isVisible')\n .reduce(\n (accumulator, key) => ({ ...accumulator, [key]: changes[key].currentValue }),\n { ...this.globalConfig.variations?.[variation] }\n );\n\n this.updateProps(props);\n }\n\n ngOnInit() {\n if (this.useHostWidth()) {\n this.props.maxWidth = this.hostWidth;\n }\n }\n\n ngAfterViewInit() {\n if (this.isServer) return;\n\n if (this.isLazy()) {\n const hostInView$ = inView(this.host());\n\n if (this.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 (this.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 }\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));\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 createInstance() {\n if (this.created || !this.hasContent()) {\n return;\n }\n\n this.created = true;\n\n this.tippyFactory\n .create(this.host(), {\n allowHTML: true,\n appendTo: document.body,\n ...(this.globalConfig.zIndexGetter\n ? { zIndex: this.globalConfig.zIndexGetter() }\n : {}),\n ...onlyTippyProps(this.globalConfig),\n ...onlyTippyProps(this.props),\n onMount: (instance) => {\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 onCreate: (instance) => {\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 onShow: (instance) => {\n instance.reference.setAttribute('data-tippy-open', '');\n\n // We're re-entering because we might create an Angular component,\n // which should be done within the zone.\n const content = this.ngZone.run(() => this.resolveContent(instance));\n\n if (isString(content)) {\n instance.setProps({ allowHTML: false });\n\n if (!content?.trim()) {\n this.disable();\n } else {\n this.enable();\n }\n }\n\n instance.setContent(content);\n this.hideOnEscape() && this.handleEscapeButton();\n\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.onShow.emit();\n },\n onHide(instance) {\n instance.reference.removeAttribute('data-tippy-open');\n },\n onHidden: (instance) => {\n this.onHidden(instance);\n },\n })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((instance) => {\n this.instance = instance;\n\n this.setStatus(this.isEnabled());\n this.setProps(this.props);\n\n this.variation() === 'contextMenu' && this.handleContextMenu();\n });\n }\n\n protected resolveContent(instance: TippyInstance) {\n const content = this.content();\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 };\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 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 let newContent = this.viewRef.getElement();\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 fromEvent<MouseEvent>(this.host(), 'contextmenu')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((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\n protected handleEscapeButton(): void {\n fromEvent<KeyboardEvent>(document.body, 'keydown')\n .pipe(\n filter(({ code }: KeyboardEvent) => code === 'Escape'),\n takeUntil(this.visibleInternal.pipe(filter((v) => !v))),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.hide());\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 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 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.onHide.emit();\n }\n this.visibleInternal.next(isVisible);\n this.ngZone.run(() => this.visible.emit(isVisible));\n this.globalConfig.onHidden?.(instance);\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((subscriber) => {\n const id = window.requestAnimationFrame(() => {\n subscriber.next();\n subscriber.complete();\n });\n\n return () => cancelAnimationFrame(id);\n });\n }),\n map(() => isElementOverflow(host))\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.isEnabled()));\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}\n","import { inject, Inject, Injectable, Injector } from '@angular/core';\nimport {\n isComponent,\n isTemplateRef,\n ResolveViewRef,\n ViewService,\n} from '@ngneat/overview';\nimport { Content } from '@ngneat/overview';\nimport type { Observable } from 'rxjs';\n\nimport {\n CreateOptions,\n ExtendedTippyInstance,\n TIPPY_CONFIG,\n TippyConfig,\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 _tippyFactory = inject(TippyFactory);\n\n constructor(\n @Inject(TIPPY_CONFIG) private globalConfig: TippyConfig,\n private view: ViewService,\n private injector: Injector\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.view.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.create(host, config) as Observable<\n ExtendedTippyInstance<T>\n >;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","originalBooleanAttribute"],"mappings":"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"}
@@ -1,17 +1,11 @@
1
- import { AfterViewInit, ElementRef, EventEmitter, Injector, InputSignal, NgZone, OnChanges, OnInit, SimpleChanges, ViewContainerRef } from '@angular/core';
1
+ import { AfterViewInit, ElementRef, Injector, InputSignal, NgZone, OnChanges, OnInit, SimpleChanges, ViewContainerRef } from '@angular/core';
2
2
  import type { Instance } from 'tippy.js';
3
3
  import { Subject } from 'rxjs';
4
4
  import { Content, ViewOptions, ViewRef, ViewService } from '@ngneat/overview';
5
5
  import { TippyConfig, TippyInstance, TippyProps } from '@ngneat/helipopper/config';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class TippyDirective implements OnChanges, AfterViewInit, OnInit {
8
- protected globalConfig: TippyConfig;
9
- protected injector: Injector;
10
- protected viewService: ViewService;
11
- protected vcr: ViewContainerRef;
12
- protected ngZone: NgZone;
13
- protected hostRef: ElementRef;
14
- readonly appendTo: InputSignal<"parent" | Element | ((ref: Element) => Element)>;
8
+ readonly appendTo: InputSignal<Element | "parent" | ((ref: Element) => Element)>;
15
9
  readonly content: InputSignal<Content | null | undefined>;
16
10
  readonly delay: InputSignal<number | [number | null, number | null]>;
17
11
  readonly duration: InputSignal<number | [number | null, number | null]>;
@@ -42,7 +36,7 @@ export declare class TippyDirective implements OnChanges, AfterViewInit, OnInit
42
36
  readonly onShow: import("@angular/core").OutputEmitterRef<void>;
43
37
  readonly onHide: import("@angular/core").OutputEmitterRef<void>;
44
38
  readonly isVisible: import("@angular/core").ModelSignal<boolean>;
45
- visible: EventEmitter<boolean>;
39
+ visible: import("@angular/core").OutputEmitterRef<boolean>;
46
40
  protected instance: TippyInstance;
47
41
  protected viewRef: ViewRef | null;
48
42
  protected props: Partial<TippyConfig>;
@@ -64,7 +58,14 @@ export declare class TippyDirective implements OnChanges, AfterViewInit, OnInit
64
58
  private isServer;
65
59
  private tippyFactory;
66
60
  private destroyed;
67
- constructor(globalConfig: TippyConfig, injector: Injector, viewService: ViewService, vcr: ViewContainerRef, ngZone: NgZone, hostRef: ElementRef);
61
+ private created;
62
+ protected globalConfig: Partial<import("@ngneat/helipopper/config").ExtendedTippyProps>;
63
+ protected injector: Injector;
64
+ protected viewService: ViewService;
65
+ protected vcr: ViewContainerRef;
66
+ protected ngZone: NgZone;
67
+ protected hostRef: ElementRef<any>;
68
+ constructor();
68
69
  ngOnChanges(changes: SimpleChanges): void;
69
70
  ngOnInit(): void;
70
71
  ngAfterViewInit(): void;
@@ -82,6 +83,7 @@ export declare class TippyDirective implements OnChanges, AfterViewInit, OnInit
82
83
  protected updateProps(props: Partial<TippyConfig>): void;
83
84
  protected setProps(props: Partial<TippyConfig>): void;
84
85
  protected setStatus(isEnabled: boolean): void;
86
+ protected hasContent(): boolean;
85
87
  protected createInstance(): void;
86
88
  protected resolveContent(instance: TippyInstance): string | Element;
87
89
  protected handleContextMenu(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngneat/helipopper",
3
- "version": "10.2.1",
3
+ "version": "11.0.0",
4
4
  "description": "A Powerful Tooltip and Popover for Angular Applications",
5
5
  "dependencies": {
6
6
  "tslib": "^2.3.0",