@ngneat/helipopper 4.1.0 → 5.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.
Files changed (54) hide show
  1. package/README.md +2 -1
  2. package/esm2020/lib/defaults.mjs +25 -0
  3. package/esm2020/lib/tippy.directive.mjs +345 -0
  4. package/esm2020/lib/tippy.module.mjs +28 -0
  5. package/esm2020/lib/tippy.service.mjs +73 -0
  6. package/esm2020/lib/tippy.types.mjs +12 -0
  7. package/{esm2015/lib/utils.js → esm2020/lib/utils.mjs} +3 -2
  8. package/{esm2015/ngneat-helipopper.js → esm2020/ngneat-helipopper.mjs} +1 -1
  9. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  10. package/fesm2015/{ngneat-helipopper.js → ngneat-helipopper.mjs} +114 -66
  11. package/fesm2015/ngneat-helipopper.mjs.map +1 -0
  12. package/fesm2020/ngneat-helipopper.mjs +561 -0
  13. package/fesm2020/ngneat-helipopper.mjs.map +1 -0
  14. package/lib/tippy.directive.d.ts +3 -0
  15. package/lib/tippy.module.d.ts +5 -0
  16. package/lib/tippy.service.d.ts +3 -0
  17. package/lib/tippy.types.d.ts +5 -2
  18. package/ngneat-helipopper.d.ts +1 -1
  19. package/package.json +23 -11
  20. package/bundles/ngneat-helipopper.umd.js +0 -897
  21. package/bundles/ngneat-helipopper.umd.js.map +0 -1
  22. package/esm2015/lib/defaults.js +0 -19
  23. package/esm2015/lib/tippy.directive.js +0 -308
  24. package/esm2015/lib/tippy.module.js +0 -23
  25. package/esm2015/lib/tippy.service.js +0 -60
  26. package/esm2015/lib/tippy.types.js +0 -12
  27. package/fesm2015/ngneat-helipopper.js.map +0 -1
  28. package/ngneat-helipopper.metadata.json +0 -1
  29. package/schematics/collection.json +0 -12
  30. package/schematics/ng-add/index.js +0 -73
  31. package/schematics/ng-add/index.js.map +0 -1
  32. package/schematics/ng-add/index.ts +0 -79
  33. package/schematics/ng-add/schema.js +0 -3
  34. package/schematics/ng-add/schema.js.map +0 -1
  35. package/schematics/ng-add/schema.json +0 -18
  36. package/schematics/ng-add/schema.ts +0 -10
  37. package/schematics/schematics.consts.js +0 -5
  38. package/schematics/schematics.consts.js.map +0 -1
  39. package/schematics/schematics.consts.ts +0 -1
  40. package/schematics/utils/ast-utils.js +0 -500
  41. package/schematics/utils/ast-utils.js.map +0 -1
  42. package/schematics/utils/ast-utils.ts +0 -596
  43. package/schematics/utils/change.js +0 -127
  44. package/schematics/utils/change.js.map +0 -1
  45. package/schematics/utils/change.ts +0 -162
  46. package/schematics/utils/find-module.js +0 -113
  47. package/schematics/utils/find-module.js.map +0 -1
  48. package/schematics/utils/find-module.ts +0 -125
  49. package/schematics/utils/package.js +0 -22
  50. package/schematics/utils/package.js.map +0 -1
  51. package/schematics/utils/package.ts +0 -22
  52. package/schematics/utils/projects.js +0 -31
  53. package/schematics/utils/projects.js.map +0 -1
  54. package/schematics/utils/projects.ts +0 -31
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, ElementRef, EventEmitter, Injector, Directive, Inject, PLATFORM_ID, ViewContainerRef, NgZone, Input, Output, NgModule, Injectable } from '@angular/core';
2
+ import { InjectionToken, ElementRef, EventEmitter, Injector, PLATFORM_ID, Directive, Inject, Input, Output, NgModule, Injectable } from '@angular/core';
3
3
  import { isPlatformServer } from '@angular/common';
4
4
  import tippy from 'tippy.js';
5
5
  import { Observable, Subject, fromEvent, merge } from 'rxjs';
6
6
  import { auditTime, map, switchMap, takeUntil, filter } from 'rxjs/operators';
7
- import * as i2 from '@ngneat/overview';
8
- import { isString as isString$1, isComponent, isTemplateRef, ViewService } from '@ngneat/overview';
7
+ import * as i1 from '@ngneat/overview';
8
+ import { isString as isString$1, isComponent, isTemplateRef } from '@ngneat/overview';
9
9
 
10
10
  const TIPPY_CONFIG = new InjectionToken('Tippy config', {
11
11
  providedIn: 'root',
@@ -85,6 +85,7 @@ function onlyTippyProps(allProps) {
85
85
  'onlyTextOverflow',
86
86
  'data',
87
87
  'content',
88
+ 'context',
88
89
  'hideOnEscape',
89
90
  'customHost'
90
91
  ];
@@ -194,6 +195,7 @@ class TippyDirective {
194
195
  }
195
196
  destroyView() {
196
197
  var _a;
198
+ this.viewOptions$ = null;
197
199
  (_a = this.viewRef) === null || _a === void 0 ? void 0 : _a.destroy();
198
200
  this.viewRef = null;
199
201
  }
@@ -257,7 +259,7 @@ class TippyDirective {
257
259
  if (isString$1(content)) {
258
260
  instance.setProps({ allowHTML: false });
259
261
  }
260
- instance.setContent(this.resolveContent());
262
+ instance.setContent(content);
261
263
  this.hideOnEscape && this.handleEscapeButton();
262
264
  });
263
265
  if (this.useHostWidth) {
@@ -284,9 +286,15 @@ class TippyDirective {
284
286
  resolveContent() {
285
287
  if (!this.viewOptions$ && !isString$1(this.content)) {
286
288
  if (isComponent(this.content)) {
289
+ this.instance.data = this.data;
287
290
  this.viewOptions$ = {
288
291
  injector: Injector.create({
289
- providers: [{ provide: TIPPY_REF, useValue: this.instance }],
292
+ providers: [
293
+ {
294
+ provide: TIPPY_REF,
295
+ useValue: this.instance
296
+ }
297
+ ],
290
298
  parent: this.injector
291
299
  })
292
300
  };
@@ -355,50 +363,78 @@ class TippyDirective {
355
363
  });
356
364
  }
357
365
  }
358
- TippyDirective.decorators = [
359
- { type: Directive, args: [{
360
- // eslint-disable-next-line @angular-eslint/directive-selector
361
- selector: '[tippy]',
362
- exportAs: 'tippy'
363
- },] }
364
- ];
365
- TippyDirective.ctorParameters = () => [
366
- { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
367
- { type: undefined, decorators: [{ type: Inject, args: [TIPPY_CONFIG,] }] },
368
- { type: Injector },
369
- { type: ViewService },
370
- { type: ViewContainerRef },
371
- { type: NgZone },
372
- { type: ElementRef }
373
- ];
374
- TippyDirective.propDecorators = {
375
- appendTo: [{ type: Input }],
376
- delay: [{ type: Input }],
377
- duration: [{ type: Input }],
378
- hideOnClick: [{ type: Input }],
379
- interactive: [{ type: Input }],
380
- interactiveBorder: [{ type: Input }],
381
- maxWidth: [{ type: Input }],
382
- offset: [{ type: Input }],
383
- placement: [{ type: Input }],
384
- popperOptions: [{ type: Input }],
385
- showOnCreate: [{ type: Input }],
386
- trigger: [{ type: Input }],
387
- triggerTarget: [{ type: Input }],
388
- zIndex: [{ type: Input }],
389
- lazy: [{ type: Input }],
390
- variation: [{ type: Input }],
391
- isEnabled: [{ type: Input }],
392
- className: [{ type: Input }],
393
- onlyTextOverflow: [{ type: Input }],
394
- data: [{ type: Input }],
395
- useHostWidth: [{ type: Input }],
396
- hideOnEscape: [{ type: Input }],
397
- content: [{ type: Input, args: ['tippy',] }],
398
- customHost: [{ type: Input, args: ['tippyHost',] }],
399
- visible: [{ type: Output }],
400
- isVisible: [{ type: Input }]
401
- };
366
+ TippyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TippyDirective, deps: [{ token: PLATFORM_ID }, { token: TIPPY_CONFIG }, { token: i0.Injector }, { token: i1.ViewService }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
367
+ TippyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: TippyDirective, selector: "[tippy]", inputs: { appendTo: "appendTo", delay: "delay", duration: "duration", hideOnClick: "hideOnClick", interactive: "interactive", interactiveBorder: "interactiveBorder", maxWidth: "maxWidth", offset: "offset", placement: "placement", popperOptions: "popperOptions", showOnCreate: "showOnCreate", trigger: "trigger", triggerTarget: "triggerTarget", zIndex: "zIndex", lazy: "lazy", variation: "variation", isEnabled: "isEnabled", className: "className", onlyTextOverflow: "onlyTextOverflow", data: "data", useHostWidth: "useHostWidth", hideOnEscape: "hideOnEscape", content: ["tippy", "content"], customHost: ["tippyHost", "customHost"], isVisible: "isVisible" }, outputs: { visible: "visible" }, exportAs: ["tippy"], usesOnChanges: true, ngImport: i0 });
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TippyDirective, decorators: [{
369
+ type: Directive,
370
+ args: [{
371
+ // eslint-disable-next-line @angular-eslint/directive-selector
372
+ selector: '[tippy]',
373
+ exportAs: 'tippy'
374
+ }]
375
+ }], ctorParameters: function () {
376
+ return [{ type: undefined, decorators: [{
377
+ type: Inject,
378
+ args: [PLATFORM_ID]
379
+ }] }, { type: undefined, decorators: [{
380
+ type: Inject,
381
+ args: [TIPPY_CONFIG]
382
+ }] }, { type: i0.Injector }, { type: i1.ViewService }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.ElementRef }];
383
+ }, propDecorators: { appendTo: [{
384
+ type: Input
385
+ }], delay: [{
386
+ type: Input
387
+ }], duration: [{
388
+ type: Input
389
+ }], hideOnClick: [{
390
+ type: Input
391
+ }], interactive: [{
392
+ type: Input
393
+ }], interactiveBorder: [{
394
+ type: Input
395
+ }], maxWidth: [{
396
+ type: Input
397
+ }], offset: [{
398
+ type: Input
399
+ }], placement: [{
400
+ type: Input
401
+ }], popperOptions: [{
402
+ type: Input
403
+ }], showOnCreate: [{
404
+ type: Input
405
+ }], trigger: [{
406
+ type: Input
407
+ }], triggerTarget: [{
408
+ type: Input
409
+ }], zIndex: [{
410
+ type: Input
411
+ }], lazy: [{
412
+ type: Input
413
+ }], variation: [{
414
+ type: Input
415
+ }], isEnabled: [{
416
+ type: Input
417
+ }], className: [{
418
+ type: Input
419
+ }], onlyTextOverflow: [{
420
+ type: Input
421
+ }], data: [{
422
+ type: Input
423
+ }], useHostWidth: [{
424
+ type: Input
425
+ }], hideOnEscape: [{
426
+ type: Input
427
+ }], content: [{
428
+ type: Input,
429
+ args: ['tippy']
430
+ }], customHost: [{
431
+ type: Input,
432
+ args: ['tippyHost']
433
+ }], visible: [{
434
+ type: Output
435
+ }], isVisible: [{
436
+ type: Input
437
+ }] } });
402
438
  function isChanged(key, changes) {
403
439
  return key in changes;
404
440
  }
@@ -416,12 +452,16 @@ class TippyModule {
416
452
  };
417
453
  }
418
454
  }
419
- TippyModule.decorators = [
420
- { type: NgModule, args: [{
421
- declarations: [TippyDirective],
422
- exports: [TippyDirective]
423
- },] }
424
- ];
455
+ TippyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TippyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
456
+ TippyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TippyModule, declarations: [TippyDirective], exports: [TippyDirective] });
457
+ TippyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TippyModule });
458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TippyModule, decorators: [{
459
+ type: NgModule,
460
+ args: [{
461
+ declarations: [TippyDirective],
462
+ exports: [TippyDirective]
463
+ }]
464
+ }] });
425
465
 
426
466
  const tooltipVariation = {
427
467
  theme: null,
@@ -457,8 +497,15 @@ class TippyService {
457
497
  instance.$viewOptions.context = Object.assign({ $implicit: instance.hide.bind(instance) }, options.context);
458
498
  }
459
499
  else if (isComponent(content)) {
500
+ instance.context = options.context;
501
+ instance.data = options.data;
460
502
  instance.$viewOptions.injector = Injector.create({
461
- providers: [{ provide: TIPPY_REF, useValue: instance }],
503
+ providers: [
504
+ {
505
+ provide: TIPPY_REF,
506
+ useValue: instance
507
+ }
508
+ ],
462
509
  parent: options.injector || this.injector
463
510
  });
464
511
  }
@@ -484,19 +531,20 @@ class TippyService {
484
531
  return tippy(host, config);
485
532
  }
486
533
  }
487
- TippyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TippyService_Factory() { return new TippyService(i0.ɵɵinject(TIPPY_CONFIG), i0.ɵɵinject(i2.ViewService), i0.ɵɵinject(i0.INJECTOR)); }, token: TippyService, providedIn: "root" });
488
- TippyService.decorators = [
489
- { type: Injectable, args: [{ providedIn: 'root' },] }
490
- ];
491
- TippyService.ctorParameters = () => [
492
- { type: undefined, decorators: [{ type: Inject, args: [TIPPY_CONFIG,] }] },
493
- { type: ViewService },
494
- { type: Injector }
495
- ];
534
+ TippyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TippyService, deps: [{ token: TIPPY_CONFIG }, { token: i1.ViewService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
535
+ TippyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TippyService, providedIn: 'root' });
536
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: TippyService, decorators: [{
537
+ type: Injectable,
538
+ args: [{ providedIn: 'root' }]
539
+ }], ctorParameters: function () {
540
+ return [{ type: undefined, decorators: [{
541
+ type: Inject,
542
+ args: [TIPPY_CONFIG]
543
+ }] }, { type: i1.ViewService }, { type: i0.Injector }];
544
+ } });
496
545
 
497
546
  /**
498
547
  * Generated bundle index. Do not edit.
499
548
  */
500
549
 
501
550
  export { TIPPY_CONFIG, TIPPY_REF, TippyDirective, TippyModule, TippyService, inView, overflowChanges, popperVariation, tooltipVariation, withContextMenuVariation };
502
- //# sourceMappingURL=ngneat-helipopper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngneat-helipopper.mjs","sources":["../../../../projects/ngneat/helipopper/src/lib/tippy.types.ts","../../../../projects/ngneat/helipopper/src/lib/utils.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.directive.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.module.ts","../../../../projects/ngneat/helipopper/src/lib/defaults.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.service.ts","../../../../projects/ngneat/helipopper/src/ngneat-helipopper.ts"],"sourcesContent":["import { Instance, Props } from 'tippy.js';\nimport { ElementRef, InjectionToken } from '@angular/core';\nimport { ViewOptions } from '@ngneat/overview';\n\nexport interface CreateOptions extends Partial<TippyProps>, ViewOptions {\n variation: string;\n className: string | string[];\n data: any;\n}\n\nexport type NgChanges<Component extends object, Props = ExcludeFunctions<Component>> = {\n [Key in keyof Props]: {\n previousValue: Props[Key];\n currentValue: Props[Key];\n firstChange: boolean;\n isFirstChange(): boolean;\n };\n};\n\ntype MarkFunctionPropertyNames<Component> = {\n [Key in keyof Component]: Component[Key] extends Function ? never : Key;\n}[keyof Component];\n\ntype ExcludeFunctions<T extends object> = Pick<T, MarkFunctionPropertyNames<T>>;\n\nexport const TIPPY_CONFIG = new InjectionToken<Partial<TippyConfig>>('Tippy config', {\n providedIn: 'root',\n factory() {\n return {};\n }\n});\nexport const TIPPY_REF = new InjectionToken<TippyInstance>('TIPPY_REF');\n\nexport interface TippyInstance extends Instance {\n data?: any;\n}\n\nexport type TippyProps = Props;\n\nexport interface TippyConfig extends TippyProps {\n variations: Record<string, Partial<TippyProps>>;\n defaultVariation: keyof TippyConfig['variations'];\n beforeRender?: (text: string) => string;\n}\n\nexport function coerceElement(element: TippyElement) {\n return element instanceof ElementRef ? element.nativeElement : element;\n}\n\nexport type TippyElement = ElementRef | Element;\n","import { Observable } from 'rxjs';\nimport { auditTime, map } from 'rxjs/operators';\nimport { coerceElement, TippyElement } from './tippy.types';\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 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\nfunction isElementOverflow(host: HTMLElement): boolean {\n // Don't access the `offsetWidth` multipe times since it triggers layout updates.\n const hostOffsetWidth = host.offsetWidth;\n return hostOffsetWidth > host.parentElement.offsetWidth || hostOffsetWidth < host.scrollWidth;\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 resizeObserverStrategy(target);\n}\n\nfunction resizeObserverStrategy(target: HTMLElement): Observable<boolean> {\n return new Observable(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 = {};\n\n const ownProps = [\n 'variations',\n 'useHostWidth',\n 'defaultVariation',\n 'beforeRender',\n 'lazy',\n 'variation',\n 'isEnabled',\n 'className',\n 'onlyTextOverflow',\n 'data',\n 'content',\n 'context',\n 'hideOnEscape',\n 'customHost'\n ];\n\n Object.keys(allProps).forEach(prop => {\n if (!ownProps.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 = isString(className) ? className.split(' ') : className;\n\n return classes.map(klass => klass?.trim()).filter(Boolean);\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Injector,\n Input,\n NgZone,\n Output,\n PLATFORM_ID,\n ViewContainerRef,\n AfterViewInit,\n OnChanges,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport tippy from 'tippy.js';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { isComponent, isString, isTemplateRef, ViewService, ViewOptions, ViewRef, Content } from '@ngneat/overview';\n\nimport { dimensionsChanges, inView, normalizeClassName, onlyTippyProps, overflowChanges } from './utils';\nimport { NgChanges, TIPPY_CONFIG, TIPPY_REF, TippyConfig, TippyInstance, TippyProps } from './tippy.types';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[tippy]',\n exportAs: 'tippy'\n})\nexport class TippyDirective implements OnChanges, AfterViewInit, OnDestroy, OnInit {\n @Input() appendTo: TippyProps['appendTo'];\n @Input() delay: TippyProps['delay'];\n @Input() duration: TippyProps['duration'];\n @Input() hideOnClick: TippyProps['hideOnClick'];\n @Input() interactive: TippyProps['interactive'];\n @Input() interactiveBorder: TippyProps['interactiveBorder'];\n @Input() maxWidth: TippyProps['maxWidth'];\n @Input() offset: TippyProps['offset'];\n @Input() placement: TippyProps['placement'];\n @Input() popperOptions: TippyProps['popperOptions'];\n @Input() showOnCreate: TippyProps['showOnCreate'];\n @Input() trigger: TippyProps['trigger'];\n @Input() triggerTarget: TippyProps['triggerTarget'];\n @Input() zIndex: TippyProps['zIndex'];\n\n @Input() lazy: boolean;\n @Input() variation: string;\n @Input() isEnabled: boolean;\n @Input() className: string | string[];\n @Input() onlyTextOverflow = false;\n @Input() data: any;\n @Input() useHostWidth = false;\n @Input() hideOnEscape = false;\n @Input('tippy') content: Content;\n @Input('tippyHost') customHost: HTMLElement;\n\n @Output() visible = new EventEmitter<boolean>();\n @Input() public isVisible = false;\n\n private instance: TippyInstance;\n private viewRef: ViewRef;\n private destroyed = new Subject<void>();\n private props: Partial<TippyConfig>;\n private enabled = true;\n private variationDefined = false;\n private viewOptions$: ViewOptions;\n constructor(\n @Inject(PLATFORM_ID) private platformId: string,\n @Inject(TIPPY_CONFIG) private globalConfig: TippyConfig,\n private injector: Injector,\n private viewService: ViewService,\n private vcr: ViewContainerRef,\n private zone: NgZone,\n private hostRef: ElementRef\n ) {}\n\n ngOnChanges(changes: NgChanges<TippyDirective>) {\n if (isPlatformServer(this.platformId)) return;\n\n let props: Partial<TippyConfig> = Object.keys(changes).reduce((acc, change) => {\n if (change === 'isVisible') return acc;\n\n acc[change] = changes[change].currentValue;\n\n return acc;\n }, {});\n\n let variation: string;\n\n if (isChanged<NgChanges<TippyDirective>>('variation', changes)) {\n variation = changes.variation.currentValue;\n this.variationDefined = true;\n } else if (!this.variationDefined) {\n variation = this.globalConfig.defaultVariation;\n this.variationDefined = true;\n }\n\n if (variation) {\n props = {\n ...this.globalConfig.variations[variation],\n ...props\n };\n }\n\n if (isChanged<NgChanges<TippyDirective>>('isEnabled', changes)) {\n this.enabled = changes.isEnabled.currentValue;\n this.setStatus();\n }\n\n if (isChanged<NgChanges<TippyDirective>>('isVisible', changes)) {\n this.isVisible ? this.show() : this.hide();\n }\n\n this.setProps(props);\n }\n\n ngOnInit() {\n if (this.useHostWidth) {\n this.props.maxWidth = this.hostWidth;\n }\n }\n\n ngAfterViewInit() {\n this.zone.runOutsideAngular(() => {\n if (this.lazy) {\n if (this.onlyTextOverflow) {\n inView(this.host)\n .pipe(\n switchMap(() => overflowChanges(this.host)),\n takeUntil(this.destroyed)\n )\n .subscribe(isElementOverflow => {\n this.checkOverflow(isElementOverflow);\n });\n } else {\n inView(this.host)\n .pipe(takeUntil(this.destroyed))\n .subscribe(() => {\n this.createInstance();\n });\n }\n } else if (this.onlyTextOverflow) {\n overflowChanges(this.host)\n .pipe(takeUntil(this.destroyed))\n .subscribe(isElementOverflow => {\n this.checkOverflow(isElementOverflow);\n });\n } else {\n this.createInstance();\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n this.instance?.destroy();\n this.destroyView();\n }\n\n destroyView() {\n this.viewOptions$ = null;\n this.viewRef?.destroy();\n this.viewRef = null;\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 private setProps(props: Partial<TippyConfig>) {\n this.props = props;\n this.instance?.setProps(onlyTippyProps(props));\n }\n\n private setStatus() {\n this.enabled ? this.instance?.enable() : this.instance?.disable();\n }\n\n private get host(): HTMLElement {\n return this.customHost || this.hostRef.nativeElement;\n }\n\n private get hostWidth(): string {\n return `${this.host.getBoundingClientRect().width}px`;\n }\n\n private createInstance() {\n if (this.content == null) {\n return;\n }\n\n this.zone.runOutsideAngular(() => {\n this.instance = tippy(this.host, {\n allowHTML: true,\n appendTo: document.body,\n ...onlyTippyProps(this.globalConfig),\n ...onlyTippyProps(this.props),\n onMount: instance => {\n this.isVisible = true;\n this.visible.next(true);\n this.useHostWidth && this.listenToHostResize();\n this.globalConfig.onMount?.(instance);\n },\n onCreate: instance => {\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 this.zone.run(() => {\n const content = this.resolveContent();\n if (isString(content)) {\n instance.setProps({ allowHTML: false });\n }\n instance.setContent(content);\n this.hideOnEscape && this.handleEscapeButton();\n });\n if (this.useHostWidth) {\n // Don't access `hostWidth` multiple times since it's a getter that calls `getBoundingClientRect()`,\n // which triggers the whole layout update.\n const hostWidth = this.hostWidth;\n instance.popper.style.width = hostWidth;\n instance.popper.style.maxWidth = hostWidth;\n (instance.popper.firstElementChild as HTMLElement).style.maxWidth = hostWidth;\n }\n this.globalConfig.onShow?.(instance);\n },\n onHidden: instance => {\n this.destroyView();\n this.isVisible = false;\n this.visible.next(false);\n this.globalConfig.onHidden?.(instance);\n }\n });\n\n this.setStatus();\n this.setProps(this.props);\n\n this.variation === 'contextMenu' && this.handleContextMenu();\n });\n }\n\n private resolveContent() {\n if (!this.viewOptions$ && !isString(this.content)) {\n if (isComponent(this.content)) {\n this.instance.data = this.data;\n this.viewOptions$ = {\n injector: Injector.create({\n providers: [\n {\n provide: TIPPY_REF,\n useValue: this.instance\n }\n ],\n parent: this.injector\n })\n };\n } else if (isTemplateRef(this.content)) {\n this.viewOptions$ = {\n context: {\n $implicit: this.hide.bind(this),\n data: this.data\n }\n };\n }\n }\n\n this.viewRef = this.viewService.createView(this.content, {\n vcr: this.vcr,\n ...this.viewOptions$\n });\n\n let content = this.viewRef.getElement();\n\n if (isString(content) && this.globalConfig.beforeRender) {\n content = this.globalConfig.beforeRender(content);\n }\n\n return content;\n }\n\n private handleContextMenu() {\n fromEvent(this.host, 'contextmenu')\n .pipe(takeUntil(this.destroyed))\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 any)\n });\n\n this.instance.show();\n });\n }\n\n private handleEscapeButton() {\n this.pressButton$(document.body, 'Escape')\n .pipe(takeUntil(merge(this.destroyed, this.visible.pipe(filter(v => !v)))))\n .subscribe(() => this.hide());\n }\n\n private pressButton$(element: HTMLElement, codeButton: string) {\n return fromEvent(element, 'keydown').pipe(filter(({ code }: KeyboardEvent) => codeButton === code));\n }\n\n private 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 private listenToHostResize() {\n dimensionsChanges(this.host)\n .pipe(takeUntil(merge(this.destroyed, this.visible)))\n .subscribe(() => {\n this.instance.popper.style.width = this.hostWidth;\n });\n }\n}\n\nfunction isChanged<T>(key: keyof T, changes: T) {\n return key in changes;\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { TippyDirective } from './tippy.directive';\nimport { TIPPY_CONFIG, TippyConfig } from './tippy.types';\n\n@NgModule({\n declarations: [TippyDirective],\n exports: [TippyDirective]\n})\nexport class TippyModule {\n static forRoot(config: Partial<TippyConfig> = {}): ModuleWithProviders<TippyModule> {\n return {\n ngModule: TippyModule,\n providers: [\n {\n provide: TIPPY_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","import { TippyConfig } from './tippy.types';\n\ntype Variation = TippyConfig['variations'][0];\n\nexport const tooltipVariation: Variation = {\n theme: null,\n arrow: false,\n animation: 'scale',\n trigger: 'mouseenter',\n offset: [0, 5]\n};\n\nexport const popperVariation: Variation = {\n theme: 'light',\n arrow: true,\n offset: [0, 10],\n animation: null,\n trigger: 'click',\n interactive: true\n};\n\nexport function withContextMenuVariation(baseVariation: Variation): Variation {\n return {\n ...baseVariation,\n placement: 'right-start',\n trigger: 'manual',\n arrow: false,\n offset: [0, 0]\n };\n}\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport tippy from 'tippy.js';\nimport { isComponent, isTemplateRef, ViewService } from '@ngneat/overview';\nimport { Content } from '@ngneat/overview';\nimport { CreateOptions, TIPPY_CONFIG, TIPPY_REF, TippyConfig, TippyInstance } from './tippy.types';\nimport { normalizeClassName, onlyTippyProps } from './utils';\n\n@Injectable({ providedIn: 'root' })\nexport class TippyService {\n constructor(\n @Inject(TIPPY_CONFIG) private globalConfig: TippyConfig,\n private view: ViewService,\n private injector: Injector\n ) {}\n\n create(host: Element, content: Content, options: Partial<CreateOptions> = {}): TippyInstance {\n const config = {\n onShow: instance => {\n if (!instance.$viewOptions) {\n instance.$viewOptions = {};\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 instance.$viewOptions.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 instance.view = this.view.createView(content, { ...options, ...instance.$viewOptions });\n instance.setContent(instance.view.getElement());\n options?.onShow?.(instance);\n },\n onHidden: instance => {\n instance.view.destroy();\n options?.onHidden?.(instance);\n instance.view = null;\n },\n ...onlyTippyProps(this.globalConfig),\n ...this.globalConfig.variations[options.variation || this.globalConfig.defaultVariation],\n ...onlyTippyProps(options),\n onCreate: instance => {\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 tippy(host, config);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["isString"],"mappings":"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"}