@ngneat/helipopper 9.2.0 → 10.0.0-alpha.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.
@@ -0,0 +1,43 @@
1
+ import { inject, Injectable, NgZone } from '@angular/core';
2
+ import { defer, from, map, of, shareReplay } from 'rxjs';
3
+ import { TIPPY_CONFIG } from './tippy.types';
4
+ import * as i0 from "@angular/core";
5
+ // We need to use `isPromise` instead of checking whether
6
+ // `value instanceof Promise`. In zone.js patched environments, `global.Promise`
7
+ // is the `ZoneAwarePromise`.
8
+ // `import(...)` returns a native promise (not a `ZoneAwarePromise`), causing
9
+ // `instanceof` check to be falsy.
10
+ function isPromise(value) {
11
+ return typeof value?.then === 'function';
12
+ }
13
+ export class TippyFactory {
14
+ constructor() {
15
+ this._ngZone = inject(NgZone);
16
+ this._config = inject(TIPPY_CONFIG);
17
+ this._tippyImpl$ = null;
18
+ }
19
+ /**
20
+ * This returns an observable because the user should provide a `loader`
21
+ * function, which may return a promise if the tippy.js library is to be
22
+ * loaded asynchronously.
23
+ */
24
+ create(target, props) {
25
+ // We use `shareReplay` to ensure that subsequent emissions are
26
+ // synchronous and to avoid triggering the `defer` callback repeatedly
27
+ // when new subscribers arrive.
28
+ this._tippyImpl$ ||= defer(() => {
29
+ const maybeTippy = this._ngZone.runOutsideAngular(() => this._config.loader());
30
+ return isPromise(maybeTippy) ? from(maybeTippy).pipe(map((tippy) => tippy.default)) : of(maybeTippy);
31
+ }).pipe(shareReplay());
32
+ return this._tippyImpl$.pipe(map((tippy) => {
33
+ return this._ngZone.runOutsideAngular(() => tippy(target, props));
34
+ }));
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TippyFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
37
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TippyFactory, providedIn: 'root' }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TippyFactory, decorators: [{
40
+ type: Injectable,
41
+ args: [{ providedIn: 'root' }]
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL3NyYy9saWIvdGlwcHkuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sZUFBZSxDQUFDOztBQUU5RCx5REFBeUQ7QUFDekQsZ0ZBQWdGO0FBQ2hGLDZCQUE2QjtBQUM3Qiw2RUFBNkU7QUFDN0Usa0NBQWtDO0FBQ2xDLFNBQVMsU0FBUyxDQUFJLEtBQVU7SUFDOUIsT0FBTyxPQUFPLEtBQUssRUFBRSxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQzNDLENBQUM7QUFHRCxNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVtQixZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpCLFlBQU8sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFeEMsZ0JBQVcsR0FBb0MsSUFBSSxDQUFDO0tBc0I3RDtJQXBCQzs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQW1CLEVBQUUsS0FBMkI7UUFDckQsK0RBQStEO1FBQy9ELHNFQUFzRTtRQUN0RSwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV2QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OEdBMUJVLFlBQVk7a0hBQVosWUFBWSxjQURDLE1BQU07OzJGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHRpcHB5IGZyb20gJ3RpcHB5LmpzJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZlciwgZnJvbSwgbWFwLCB0eXBlIE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUSVBQWV9DT05GSUcsIHR5cGUgVGlwcHlQcm9wcyB9IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuXG4vLyBXZSBuZWVkIHRvIHVzZSBgaXNQcm9taXNlYCBpbnN0ZWFkIG9mIGNoZWNraW5nIHdoZXRoZXJcbi8vIGB2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2VgLiBJbiB6b25lLmpzIHBhdGNoZWQgZW52aXJvbm1lbnRzLCBgZ2xvYmFsLlByb21pc2VgXG4vLyBpcyB0aGUgYFpvbmVBd2FyZVByb21pc2VgLlxuLy8gYGltcG9ydCguLi4pYCByZXR1cm5zIGEgbmF0aXZlIHByb21pc2UgKG5vdCBhIGBab25lQXdhcmVQcm9taXNlYCksIGNhdXNpbmdcbi8vIGBpbnN0YW5jZW9mYCBjaGVjayB0byBiZSBmYWxzeS5cbmZ1bmN0aW9uIGlzUHJvbWlzZTxUPih2YWx1ZTogYW55KTogdmFsdWUgaXMgUHJvbWlzZTxUPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWU/LnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGlwcHlGYWN0b3J5IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnID0gaW5qZWN0KFRJUFBZX0NPTkZJRyk7XG5cbiAgcHJpdmF0ZSBfdGlwcHlJbXBsJDogT2JzZXJ2YWJsZTx0eXBlb2YgdGlwcHk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoaXMgcmV0dXJucyBhbiBvYnNlcnZhYmxlIGJlY2F1c2UgdGhlIHVzZXIgc2hvdWxkIHByb3ZpZGUgYSBgbG9hZGVyYFxuICAgKiBmdW5jdGlvbiwgd2hpY2ggbWF5IHJldHVybiBhIHByb21pc2UgaWYgdGhlIHRpcHB5LmpzIGxpYnJhcnkgaXMgdG8gYmVcbiAgICogbG9hZGVkIGFzeW5jaHJvbm91c2x5LlxuICAgKi9cbiAgY3JlYXRlKHRhcmdldDogSFRNTEVsZW1lbnQsIHByb3BzPzogUGFydGlhbDxUaXBweVByb3BzPikge1xuICAgIC8vIFdlIHVzZSBgc2hhcmVSZXBsYXlgIHRvIGVuc3VyZSB0aGF0IHN1YnNlcXVlbnQgZW1pc3Npb25zIGFyZVxuICAgIC8vIHN5bmNocm9ub3VzIGFuZCB0byBhdm9pZCB0cmlnZ2VyaW5nIHRoZSBgZGVmZXJgIGNhbGxiYWNrIHJlcGVhdGVkbHlcbiAgICAvLyB3aGVuIG5ldyBzdWJzY3JpYmVycyBhcnJpdmUuXG4gICAgdGhpcy5fdGlwcHlJbXBsJCB8fD0gZGVmZXIoKCkgPT4ge1xuICAgICAgY29uc3QgbWF5YmVUaXBweSA9IHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLl9jb25maWcubG9hZGVyKCkpO1xuICAgICAgcmV0dXJuIGlzUHJvbWlzZShtYXliZVRpcHB5KSA/IGZyb20obWF5YmVUaXBweSkucGlwZShtYXAoKHRpcHB5KSA9PiB0aXBweS5kZWZhdWx0KSkgOiBvZihtYXliZVRpcHB5KTtcbiAgICB9KS5waXBlKHNoYXJlUmVwbGF5KCkpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3RpcHB5SW1wbCQucGlwZShcbiAgICAgIG1hcCgodGlwcHkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aXBweSh0YXJnZXQsIHByb3BzKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,8 @@
1
- import { Inject, Injectable, Injector } from '@angular/core';
2
- import tippy from 'tippy.js';
1
+ import { inject, Inject, Injectable, Injector } from '@angular/core';
3
2
  import { isComponent, isTemplateRef } from '@ngneat/overview';
4
3
  import { TIPPY_CONFIG, TIPPY_REF } from './tippy.types';
5
4
  import { normalizeClassName, onlyTippyProps } from './utils';
5
+ import { TippyFactory } from './tippy.factory';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@ngneat/overview";
8
8
  export class TippyService {
@@ -10,32 +10,34 @@ export class TippyService {
10
10
  this.globalConfig = globalConfig;
11
11
  this.view = view;
12
12
  this.injector = injector;
13
+ this._tippyFactory = inject(TippyFactory);
13
14
  }
14
15
  create(host, content, options = {}) {
15
16
  const variation = options.variation || this.globalConfig.defaultVariation;
16
17
  const config = {
17
- onShow: instance => {
18
+ onShow: (instance) => {
18
19
  host.setAttribute('data-tippy-open', '');
19
20
  if (!instance.$viewOptions) {
20
21
  instance.$viewOptions = {};
22
+ const injector = Injector.create({
23
+ providers: [
24
+ {
25
+ provide: TIPPY_REF,
26
+ useValue: instance,
27
+ },
28
+ ],
29
+ parent: options.injector || this.injector,
30
+ });
31
+ instance.$viewOptions.injector = injector;
21
32
  if (isTemplateRef(content)) {
22
33
  instance.$viewOptions.context = {
23
34
  $implicit: instance.hide.bind(instance),
24
- ...options.context
35
+ ...options.context,
25
36
  };
26
37
  }
27
38
  else if (isComponent(content)) {
28
39
  instance.context = options.context;
29
40
  instance.data = options.data;
30
- instance.$viewOptions.injector = Injector.create({
31
- providers: [
32
- {
33
- provide: TIPPY_REF,
34
- useValue: instance
35
- }
36
- ],
37
- parent: options.injector || this.injector
38
- });
39
41
  }
40
42
  }
41
43
  if (!instance.view) {
@@ -44,7 +46,7 @@ export class TippyService {
44
46
  instance.setContent(instance.view.getElement());
45
47
  options?.onShow?.(instance);
46
48
  },
47
- onHidden: instance => {
49
+ onHidden: (instance) => {
48
50
  host.removeAttribute('data-tippy-open');
49
51
  if (!options.preserveView) {
50
52
  instance.view.destroy();
@@ -55,7 +57,7 @@ export class TippyService {
55
57
  ...onlyTippyProps(this.globalConfig),
56
58
  ...this.globalConfig.variations[variation],
57
59
  ...onlyTippyProps(options),
58
- onCreate: instance => {
60
+ onCreate: (instance) => {
59
61
  instance.popper.classList.add(`tippy-variation-${variation}`);
60
62
  if (options.className) {
61
63
  for (const klass of normalizeClassName(options.className)) {
@@ -64,18 +66,18 @@ export class TippyService {
64
66
  }
65
67
  this.globalConfig.onCreate?.(instance);
66
68
  options.onCreate?.(instance);
67
- }
69
+ },
68
70
  };
69
- return tippy(host, config);
71
+ return this._tippyFactory.create(host, config);
70
72
  }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TippyService, deps: [{ token: TIPPY_CONFIG }, { token: i1.ViewService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
72
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TippyService, providedIn: 'root' }); }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TippyService, deps: [{ token: TIPPY_CONFIG }, { token: i1.ViewService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
74
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TippyService, providedIn: 'root' }); }
73
75
  }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TippyService, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: TippyService, decorators: [{
75
77
  type: Injectable,
76
78
  args: [{ providedIn: 'root' }]
77
79
  }], ctorParameters: () => [{ type: undefined, decorators: [{
78
80
  type: Inject,
79
81
  args: [TIPPY_CONFIG]
80
82
  }] }, { type: i1.ViewService }, { type: i0.Injector }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL3NyYy9saWIvdGlwcHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxLQUFLLE1BQU0sVUFBVSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFlLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsT0FBTyxFQUF3QyxZQUFZLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7OztBQUc3RCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNnQyxZQUF5QixFQUMvQyxJQUFpQixFQUNqQixRQUFrQjtRQUZJLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQy9DLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUN6QixDQUFDO0lBRUosTUFBTSxDQUFvQixJQUFhLEVBQUUsT0FBVSxFQUFFLFVBQWtDLEVBQUU7UUFDdkYsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1FBQzFFLE1BQU0sTUFBTSxHQUFHO1lBQ2IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtvQkFDMUIsUUFBUSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7b0JBRTNCLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dC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bGFyL2NvcmUnO1xuaW1wb3J0IHRpcHB5IGZyb20gJ3RpcHB5LmpzJztcbmltcG9ydCB7IGlzQ29tcG9uZW50LCBpc1RlbXBsYXRlUmVmLCBWaWV3U2VydmljZSB9IGZyb20gJ0BuZ25lYXQvb3ZlcnZpZXcnO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gJ0BuZ25lYXQvb3ZlcnZpZXcnO1xuaW1wb3J0IHsgQ3JlYXRlT3B0aW9ucywgRXh0ZW5kZWRUaXBweUluc3RhbmNlLCBUSVBQWV9DT05GSUcsIFRJUFBZX1JFRiwgVGlwcHlDb25maWcgfSBmcm9tICcuL3RpcHB5LnR5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUNsYXNzTmFtZSwgb25seVRpcHB5UHJvcHMgfSBmcm9tICcuL3V0aWxzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUaXBweVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRJUFBZX0NPTkZJRykgcHJpdmF0ZSBnbG9iYWxDb25maWc6IFRpcHB5Q29uZmlnLFxuICAgIHByaXZhdGUgdmlldzogVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIGNyZWF0ZTxUIGV4dGVuZHMgQ29udGVudD4oaG9zdDogRWxlbWVudCwgY29udGVudDogVCwgb3B0aW9uczogUGFydGlhbDxDcmVhdGVPcHRpb25zPiA9IHt9KTogRXh0ZW5kZWRUaXBweUluc3RhbmNlPFQ+IHtcbiAgICBjb25zdCB2YXJpYXRpb24gPSBvcHRpb25zLnZhcmlhdGlvbiB8fCB0aGlzLmdsb2JhbENvbmZpZy5kZWZhdWx0VmFyaWF0aW9uO1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIG9uU2hvdzogaW5zdGFuY2UgPT4ge1xuICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJywgJycpO1xuICAgICAgICBpZiAoIWluc3RhbmNlLiR2aWV3T3B0aW9ucykge1xuICAgICAgICAgIGluc3RhbmNlLiR2aWV3T3B0aW9ucyA9IHt9O1xuXG4gICAgICAgICAgaWYgKGlzVGVtcGxhdGVSZWYoY29udGVudCkpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLiR2aWV3T3B0aW9ucy5jb250ZXh0ID0ge1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGluc3RhbmNlLmhpZGUuYmluZChpbnN0YW5jZSksXG4gICAgICAgICAgICAgIC4uLm9wdGlvbnMuY29udGV4dFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGlzQ29tcG9uZW50KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5jb250ZXh0ID0gb3B0aW9ucy5jb250ZXh0O1xuICAgICAgICAgICAgaW5zdGFuY2UuZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICAgICAgICAgIGluc3RhbmNlLiR2aWV3T3B0aW9ucy5pbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IFRJUFBZX1JFRixcbiAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBpbnN0YW5jZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgcGFyZW50OiBvcHRpb25zLmluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWluc3RhbmNlLnZpZXcpIHtcbiAgICAgICAgICBpbnN0YW5jZS52aWV3ID0gdGhpcy52aWV3LmNyZWF0ZVZpZXcoY29udGVudCwgeyAuLi5vcHRpb25zLCAuLi5pbnN0YW5jZS4kdmlld09wdGlvbnMgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zdGFuY2Uuc2V0Q29udGVudChpbnN0YW5jZS52aWV3LmdldEVsZW1lbnQoKSk7XG4gICAgICAgIG9wdGlvbnM/Lm9uU2hvdz8uKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgICBvbkhpZGRlbjogaW5zdGFuY2UgPT4ge1xuICAgICAgICBob3N0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXBweS1vcGVuJyk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnByZXNlcnZlVmlldykge1xuICAgICAgICAgIGluc3RhbmNlLnZpZXcuZGVzdHJveSgpO1xuICAgICAgICAgIGluc3RhbmNlLnZpZXcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnM/Lm9uSGlkZGVuPy4oaW5zdGFuY2UpO1xuICAgICAgfSxcbiAgICAgIC4uLm9ubHlUaXBweVByb3BzKHRoaXMuZ2xvYmFsQ29uZmlnKSxcbiAgICAgIC4uLnRoaXMuZ2xvYmFsQ29uZmlnLnZhcmlhdGlvbnNbdmFyaWF0aW9uXSxcbiAgICAgIC4uLm9ubHlUaXBweVByb3BzKG9wdGlvbnMpLFxuICAgICAgb25DcmVhdGU6IGluc3RhbmNlID0+IHtcbiAgICAgICAgaW5zdGFuY2UucG9wcGVyLmNsYXNzTGlzdC5hZGQoYHRpcHB5LXZhcmlhdGlvbi0ke3ZhcmlhdGlvbn1gKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrbGFzcyBvZiBub3JtYWxpemVDbGFzc05hbWUob3B0aW9ucy5jbGFzc05hbWUpKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5wb3BwZXIuY2xhc3NMaXN0LmFkZChrbGFzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2xvYmFsQ29uZmlnLm9uQ3JlYXRlPy4oaW5zdGFuY2UpO1xuICAgICAgICBvcHRpb25zLm9uQ3JlYXRlPy4oaW5zdGFuY2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gdGlwcHkoaG9zdCwgY29uZmlnKSBhcyBFeHRlbmRlZFRpcHB5SW5zdGFuY2U8VD47XG4gIH1cbn1cbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9oZWxpcG9wcGVyL3NyYy9saWIvdGlwcHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFlLE1BQU0sa0JBQWtCLENBQUM7QUFJM0UsT0FBTyxFQUF3QyxZQUFZLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFHL0MsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFDZ0MsWUFBeUIsRUFDL0MsSUFBaUIsRUFDakIsUUFBa0I7UUFGSSxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUMvQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMWCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQU1uRCxDQUFDO0lBRUosTUFBTSxDQUNKLElBQWlCLEVBQ2pCLE9BQVUsRUFDVixVQUFrQyxFQUFFO1FBRXBDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMxRSxNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO29C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LENBQUM7OEdBMUVVLFlBQVksa0JBSWIsWUFBWTtrSEFKWCxZQUFZLGNBREMsTUFBTTs7MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFLN0IsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0NvbXBvbmVudCwgaXNUZW1wbGF0ZVJlZiwgVmlld1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcbmltcG9ydCB7IENvbnRlbnQgfSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDcmVhdGVPcHRpb25zLCBFeHRlbmRlZFRpcHB5SW5zdGFuY2UsIFRJUFBZX0NPTkZJRywgVElQUFlfUkVGLCBUaXBweUNvbmZpZyB9IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplQ2xhc3NOYW1lLCBvbmx5VGlwcHlQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVGlwcHlGYWN0b3J5IH0gZnJvbSAnLi90aXBweS5mYWN0b3J5JztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBUaXBweVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aXBweUZhY3RvcnkgPSBpbmplY3QoVGlwcHlGYWN0b3J5KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRJUFBZX0NPTkZJRykgcHJpdmF0ZSBnbG9iYWxDb25maWc6IFRpcHB5Q29uZmlnLFxuICAgIHByaXZhdGUgdmlldzogVmlld1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIGNyZWF0ZTxUIGV4dGVuZHMgQ29udGVudD4oXG4gICAgaG9zdDogSFRNTEVsZW1lbnQsXG4gICAgY29udGVudDogVCxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPENyZWF0ZU9wdGlvbnM+ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxFeHRlbmRlZFRpcHB5SW5zdGFuY2U8VD4+IHtcbiAgICBjb25zdCB2YXJpYXRpb24gPSBvcHRpb25zLnZhcmlhdGlvbiB8fCB0aGlzLmdsb2JhbENvbmZpZy5kZWZhdWx0VmFyaWF0aW9uO1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIG9uU2hvdzogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIGhvc3Quc2V0QXR0cmlidXRlKCdkYXRhLXRpcHB5LW9wZW4nLCAnJyk7XG4gICAgICAgIGlmICghaW5zdGFuY2UuJHZpZXdPcHRpb25zKSB7XG4gICAgICAgICAgaW5zdGFuY2UuJHZpZXdPcHRpb25zID0ge307XG5cbiAgICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IFRJUFBZX1JFRixcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogaW5zdGFuY2UsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcGFyZW50OiBvcHRpb25zLmluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpbnN0YW5jZS4kdmlld09wdGlvbnMuaW5qZWN0b3IgPSBpbmplY3RvcjtcblxuICAgICAgICAgIGlmIChpc1RlbXBsYXRlUmVmKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS4kdmlld09wdGlvbnMuY29udGV4dCA9IHtcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBpbnN0YW5jZS5oaWRlLmJpbmQoaW5zdGFuY2UpLFxuICAgICAgICAgICAgICAuLi5vcHRpb25zLmNvbnRleHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNDb21wb25lbnQoY29udGVudCkpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLmNvbnRleHQgPSBvcHRpb25zLmNvbnRleHQ7XG4gICAgICAgICAgICBpbnN0YW5jZS5kYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWluc3RhbmNlLnZpZXcpIHtcbiAgICAgICAgICBpbnN0YW5jZS52aWV3ID0gdGhpcy52aWV3LmNyZWF0ZVZpZXcoY29udGVudCwgeyAuLi5vcHRpb25zLCAuLi5pbnN0YW5jZS4kdmlld09wdGlvbnMgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zdGFuY2Uuc2V0Q29udGVudChpbnN0YW5jZS52aWV3LmdldEVsZW1lbnQoKSk7XG4gICAgICAgIG9wdGlvbnM/Lm9uU2hvdz8uKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgICBvbkhpZGRlbjogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIGhvc3QucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpcHB5LW9wZW4nKTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMucHJlc2VydmVWaWV3KSB7XG4gICAgICAgICAgaW5zdGFuY2Uudmlldy5kZXN0cm95KCk7XG4gICAgICAgICAgaW5zdGFuY2UudmlldyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucz8ub25IaWRkZW4/LihpbnN0YW5jZSk7XG4gICAgICB9LFxuICAgICAgLi4ub25seVRpcHB5UHJvcHModGhpcy5nbG9iYWxDb25maWcpLFxuICAgICAgLi4udGhpcy5nbG9iYWxDb25maWcudmFyaWF0aW9uc1t2YXJpYXRpb25dLFxuICAgICAgLi4ub25seVRpcHB5UHJvcHMob3B0aW9ucyksXG4gICAgICBvbkNyZWF0ZTogKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIGluc3RhbmNlLnBvcHBlci5jbGFzc0xpc3QuYWRkKGB0aXBweS12YXJpYXRpb24tJHt2YXJpYXRpb259YCk7XG4gICAgICAgIGlmIChvcHRpb25zLmNsYXNzTmFtZSkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2xhc3Mgb2Ygbm9ybWFsaXplQ2xhc3NOYW1lKG9wdGlvbnMuY2xhc3NOYW1lKSkge1xuICAgICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmNsYXNzTGlzdC5hZGQoa2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdsb2JhbENvbmZpZy5vbkNyZWF0ZT8uKGluc3RhbmNlKTtcbiAgICAgICAgb3B0aW9ucy5vbkNyZWF0ZT8uKGluc3RhbmNlKTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLl90aXBweUZhY3RvcnkuY3JlYXRlKGhvc3QsIGNvbmZpZykgYXMgT2JzZXJ2YWJsZTxFeHRlbmRlZFRpcHB5SW5zdGFuY2U8VD4+O1xuICB9XG59XG4iXX0=
@@ -1,9 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- export const TIPPY_CONFIG = new InjectionToken('Tippy config', {
3
- providedIn: 'root',
4
- factory() {
5
- return {};
6
- }
7
- });
8
2
  export const TIPPY_REF = new InjectionToken('TIPPY_REF');
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9zcmMvbGliL3RpcHB5LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF5QjNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBdUIsY0FBYyxFQUFFO0lBQ25GLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU87UUFDTCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FDRixDQUFDLENBQUM7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQWdCLFdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5zdGFuY2UsIFByb3BzIH0gZnJvbSAndGlwcHkuanMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc29sdmVWaWV3UmVmLCBWaWV3T3B0aW9ucyB9IGZyb20gJ0BuZ25lYXQvb3ZlcnZpZXcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFRpcHB5UHJvcHM+LCBWaWV3T3B0aW9ucyB7XG4gIHZhcmlhdGlvbjogc3RyaW5nO1xuICBwcmVzZXJ2ZVZpZXc6IGJvb2xlYW47XG4gIGNsYXNzTmFtZTogc3RyaW5nIHwgc3RyaW5nW107XG4gIGRhdGE6IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgTmdDaGFuZ2VzPENvbXBvbmVudCBleHRlbmRzIG9iamVjdCwgUHJvcHMgPSBFeGNsdWRlRnVuY3Rpb25zPENvbXBvbmVudD4+ID0ge1xuICBbS2V5IGluIGtleW9mIFByb3BzXToge1xuICAgIHByZXZpb3VzVmFsdWU6IFByb3BzW0tleV07XG4gICAgY3VycmVudFZhbHVlOiBQcm9wc1tLZXldO1xuICAgIGZpcnN0Q2hhbmdlOiBib29sZWFuO1xuICAgIGlzRmlyc3RDaGFuZ2UoKTogYm9vbGVhbjtcbiAgfTtcbn07XG5cbnR5cGUgTWFya0Z1bmN0aW9uUHJvcGVydHlOYW1lczxDb21wb25lbnQ+ID0ge1xuICBbS2V5IGluIGtleW9mIENvbXBvbmVudF06IENvbXBvbmVudFtLZXldIGV4dGVuZHMgRnVuY3Rpb24gPyBuZXZlciA6IEtleTtcbn1ba2V5b2YgQ29tcG9uZW50XTtcblxudHlwZSBFeGNsdWRlRnVuY3Rpb25zPFQgZXh0ZW5kcyBvYmplY3Q+ID0gUGljazxULCBNYXJrRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFQ+PjtcblxuZXhwb3J0IGNvbnN0IFRJUFBZX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQYXJ0aWFsPFRpcHB5Q29uZmlnPj4oJ1RpcHB5IGNvbmZpZycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5KCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxufSk7XG5leHBvcnQgY29uc3QgVElQUFlfUkVGID0gbmV3IEluamVjdGlvblRva2VuPFRpcHB5SW5zdGFuY2U+KCdUSVBQWV9SRUYnKTtcblxuZXhwb3J0IGludGVyZmFjZSBUaXBweUluc3RhbmNlIGV4dGVuZHMgSW5zdGFuY2Uge1xuICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgdHlwZSBUaXBweVByb3BzID0gUHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGlwcHlDb25maWcgZXh0ZW5kcyBUaXBweVByb3BzIHtcbiAgdmFyaWF0aW9uczogUmVjb3JkPHN0cmluZywgUGFydGlhbDxUaXBweVByb3BzPj47XG4gIGRlZmF1bHRWYXJpYXRpb246IGtleW9mIFRpcHB5Q29uZmlnWyd2YXJpYXRpb25zJ107XG4gIGJlZm9yZVJlbmRlcj86ICh0ZXh0OiBzdHJpbmcpID0+IHN0cmluZztcbiAgekluZGV4R2V0dGVyPygpOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFRpcHB5RWxlbWVudCA9IEVsZW1lbnRSZWYgfCBFbGVtZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkVGlwcHlJbnN0YW5jZTxUPiBleHRlbmRzIFRpcHB5SW5zdGFuY2Uge1xuICB2aWV3OiBSZXNvbHZlVmlld1JlZjxUPjtcbiAgJHZpZXdPcHRpb25zOiBWaWV3T3B0aW9ucztcbiAgY29udGV4dD86IFZpZXdPcHRpb25zWydjb250ZXh0J107XG59XG4iXX0=
3
+ export const TIPPY_CONFIG = new InjectionToken('Tippy config');
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwcHkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9zcmMvbGliL3RpcHB5LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxjQUFjLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBK0I3RSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQWdCLFdBQVcsQ0FBQyxDQUFDO0FBMkJ4RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWMsY0FBYyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB0aXBweSBmcm9tICd0aXBweS5qcyc7XG5pbXBvcnQgdHlwZSB7IEluc3RhbmNlLCBQcm9wcyB9IGZyb20gJ3RpcHB5LmpzJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGlvblRva2VuLCB0eXBlIElucHV0U2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXNvbHZlVmlld1JlZiwgVmlld09wdGlvbnMgfSBmcm9tICdAbmduZWF0L292ZXJ2aWV3JztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxUaXBweVByb3BzPiwgVmlld09wdGlvbnMge1xuICB2YXJpYXRpb246IHN0cmluZztcbiAgcHJlc2VydmVWaWV3OiBib29sZWFuO1xuICBjbGFzc05hbWU6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBkYXRhOiBhbnk7XG59XG5cbnR5cGUgSW5mZXJJbnB1dFNpZ25hbFR5cGU8VD4gPSBUIGV4dGVuZHMgSW5wdXRTaWduYWw8aW5mZXIgUj4gPyBSIDogVDtcblxuZXhwb3J0IHR5cGUgTmdDaGFuZ2VzPENvbXBvbmVudCBleHRlbmRzIG9iamVjdCwgUHJvcHMgPSBFeGNsdWRlRnVuY3Rpb25zPENvbXBvbmVudD4+ID0ge1xuICBbS2V5IGluIGtleW9mIFByb3BzXToge1xuICAgIHByZXZpb3VzVmFsdWU6IEluZmVySW5wdXRTaWduYWxUeXBlPFByb3BzW0tleV0+O1xuICAgIGN1cnJlbnRWYWx1ZTogSW5mZXJJbnB1dFNpZ25hbFR5cGU8UHJvcHNbS2V5XT47XG4gICAgZmlyc3RDaGFuZ2U6IGJvb2xlYW47XG4gICAgaXNGaXJzdENoYW5nZSgpOiBib29sZWFuO1xuICB9O1xufTtcblxudHlwZSBNYXJrRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPENvbXBvbmVudD4gPSB7XG4gIFtLZXkgaW4ga2V5b2YgQ29tcG9uZW50XTogQ29tcG9uZW50W0tleV0gZXh0ZW5kcyBJbnB1dFNpZ25hbDxhbnk+XG4gICAgPyBLZXlcbiAgICA6IENvbXBvbmVudFtLZXldIGV4dGVuZHMgRnVuY3Rpb25cbiAgICA/IG5ldmVyXG4gICAgOiBLZXk7XG59W2tleW9mIENvbXBvbmVudF07XG5cbnR5cGUgRXhjbHVkZUZ1bmN0aW9uczxUIGV4dGVuZHMgb2JqZWN0PiA9IFBpY2s8VCwgTWFya0Z1bmN0aW9uUHJvcGVydHlOYW1lczxUPj47XG5cbmV4cG9ydCBjb25zdCBUSVBQWV9SRUYgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGlwcHlJbnN0YW5jZT4oJ1RJUFBZX1JFRicpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpcHB5SW5zdGFuY2UgZXh0ZW5kcyBJbnN0YW5jZSB7XG4gIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIFRpcHB5UHJvcHMgPSBQcm9wcztcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZFRpcHB5UHJvcHMgZXh0ZW5kcyBUaXBweVByb3BzIHtcbiAgdmFyaWF0aW9uczogUmVjb3JkPHN0cmluZywgUGFydGlhbDxUaXBweVByb3BzPj47XG4gIGRlZmF1bHRWYXJpYXRpb246IGtleW9mIEV4dGVuZGVkVGlwcHlQcm9wc1sndmFyaWF0aW9ucyddO1xuICBiZWZvcmVSZW5kZXI/OiAodGV4dDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIHpJbmRleEdldHRlcj8oKTogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBUaXBweUVsZW1lbnQgPSBFbGVtZW50UmVmIHwgRWxlbWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZFRpcHB5SW5zdGFuY2U8VD4gZXh0ZW5kcyBUaXBweUluc3RhbmNlIHtcbiAgdmlldzogUmVzb2x2ZVZpZXdSZWY8VD47XG4gICR2aWV3T3B0aW9uczogVmlld09wdGlvbnM7XG4gIGNvbnRleHQ/OiBWaWV3T3B0aW9uc1snY29udGV4dCddO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpcHB5Q29uZmlnIGV4dGVuZHMgUGFydGlhbDxFeHRlbmRlZFRpcHB5UHJvcHM+IHtcbiAgbG9hZGVyOiAoKSA9PiB0eXBlb2YgdGlwcHkgfCBQcm9taXNlPHsgZGVmYXVsdDogdHlwZW9mIHRpcHB5IH0+O1xufVxuXG5leHBvcnQgY29uc3QgVElQUFlfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFRpcHB5Q29uZmlnPignVGlwcHkgY29uZmlnJyk7XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { auditTime, map } from 'rxjs/operators';
3
3
  import { ElementRef } from '@angular/core';
4
+ import { IntersectionObserver } from './intersection-observer';
4
5
  let supportsIntersectionObserver = false;
5
6
  let supportsResizeObserver = false;
6
7
  if (typeof window !== 'undefined') {
@@ -33,7 +34,7 @@ export function inView(host, options = {
33
34
  export function isElementOverflow(host) {
34
35
  // Don't access the `offsetWidth` multiple times since it triggers layout updates.
35
36
  const hostOffsetWidth = host.offsetWidth;
36
- return hostOffsetWidth > host.parentElement.offsetWidth || hostOffsetWidth < host.scrollWidth;
37
+ return (hostOffsetWidth > host.parentElement.offsetWidth || hostOffsetWidth < host.scrollWidth);
37
38
  }
38
39
  export function overflowChanges(host) {
39
40
  const element = coerceElement(host);
@@ -123,4 +124,4 @@ export function observeVisibility(host, hiddenHandler) {
123
124
  observer.unobserve(host);
124
125
  };
125
126
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLElBQUksNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0FBQ3pDLElBQUksc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0FBRW5DLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO0lBQ2pDLDRCQUE0QixHQUFHLHNCQUFzQixJQUFJLE1BQU0sQ0FBQztJQUNoRSxzQkFBc0IsR0FBRyxnQkFBZ0IsSUFBSSxNQUFNLENBQUM7Q0FDckQ7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUNwQixJQUFrQixFQUNsQixVQUFvQztJQUNsQyxJQUFJLEVBQUUsSUFBSTtJQUNWLFNBQVMsRUFBRSxHQUFHO0NBQ2Y7SUFFRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ25DLElBQUksQ0FBQyw0QkFBNEIsRUFBRTtZQUNqQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE9BQU87U0FDUjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksb0JBQW9CLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNwRCx1RkFBdUY7WUFDdkYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUMsSUFBSSxL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QUFLLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDekIscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUUsRUFBRSxDQUFDO2FBQzVDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDL0MsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV2QixPQUFPLEdBQUcsRUFBRTtRQUNWLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhdWRpdFRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRpcHB5RWxlbWVudCB9IGZyb20gJy4vdGlwcHkudHlwZXMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5kZWNsYXJlIGNvbnN0IFJlc2l6ZU9ic2VydmVyOiBhbnk7XG5cbmxldCBzdXBwb3J0c0ludGVyc2VjdGlvbk9ic2VydmVyID0gZmFsc2U7XG5sZXQgc3VwcG9ydHNSZXNpemVPYnNlcnZlciA9IGZhbHNlO1xuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgc3VwcG9ydHNJbnRlcnNlY3Rpb25PYnNlcnZlciA9ICdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93O1xuICBzdXBwb3J0c1Jlc2l6ZU9ic2VydmVyID0gJ1Jlc2l6ZU9ic2VydmVyJyBpbiB3aW5kb3c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpblZpZXcoXG4gIGhvc3Q6IFRpcHB5RWxlbWVudCxcbiAgb3B0aW9uczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICAgIHJvb3Q6IG51bGwsXG4gICAgdGhyZXNob2xkOiAwLjMsXG4gIH1cbikge1xuICBjb25zdCBlbGVtZW50ID0gY29lcmNlRWxlbWVudChob3N0KTtcblxuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICBpZiAoIXN1cHBvcnRzSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICAvLyBTZXZlcmFsIGNoYW5nZXMgbWF5IG9jY3VyIGluIHRoZSBzYW1lIHRpY2ssIHdlIHdhbnQgdG8gY2hlY2sgdGhlIGxhdGVzdCBlbnRyeSBzdGF0ZS5cbiAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1tlbnRyaWVzLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VsZW1lbnRPdmVyZmxvdyhob3N0OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAvLyBEb24ndCBhY2Nlc3MgdGhlIGBvZmZzZXRXaWR0aGAgbXVsdGlwbGUgdGltZXMgc2luY2UgaXQgdHJpZ2dlcnMgbGF5b3V0IHVwZGF0ZXMuXG4gIGNvbnN0IGhvc3RPZmZzZXRXaWR0aCA9IGhvc3Qub2Zmc2V0V2lkdGg7XG5cbiAgcmV0dXJuIGhvc3RPZmZzZXRXaWR0aCA+IGhvc3QucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCB8fCBob3N0T2Zmc2V0V2lkdGggPCBob3N0LnNjcm9sbFdpZHRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3ZlcmZsb3dDaGFuZ2VzKGhvc3Q6IFRpcHB5RWxlbWVudCkge1xuICBjb25zdCBlbGVtZW50ID0gY29lcmNlRWxlbWVudChob3N0KTtcblxuICByZXR1cm4gZGltZW5zaW9uc0NoYW5nZXMoZWxlbWVudCkucGlwZShcbiAgICBhdWRpdFRpbWUoMTUwKSxcbiAgICBtYXAoKCkgPT4gaXNFbGVtZW50T3ZlcmZsb3coZWxlbWVudCkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaW1lbnNpb25zQ2hhbmdlcyh0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gIHJldHVybiByZXNpemVPYnNlcnZlclN0cmF0ZWd5KHRhcmdldCk7XG59XG5cbmZ1bmN0aW9uIHJlc2l6ZU9ic2VydmVyU3RyYXRlZ3kodGFyZ2V0OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICBpZiAoIXN1cHBvcnRzUmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHN1YnNjcmliZXIubmV4dCh0cnVlKSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQpO1xuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25seVRpcHB5UHJvcHMoYWxsUHJvcHM6IGFueSkge1xuICBjb25zdCB0aXBweVByb3BzID0ge307XG5cbiAgY29uc3Qgb3duUHJvcHMgPSBbXG4gICAgJ3VzZVRleHRDb250ZW50JyxcbiAgICAndmFyaWF0aW9ucycsXG4gICAgJ3VzZUhvc3RXaWR0aCcsXG4gICAgJ2RlZmF1bHRWYXJpYXRpb24nLFxuICAgICdiZWZvcmVSZW5kZXInLFxuICAgICdpc0xhenknLFxuICAgICd2YXJpYXRpb24nLFxuICAgICdpc0VuYWJsZWQnLFxuICAgICdjbGFzc05hbWUnLFxuICAgICdvbmx5VGV4dE92ZXJmbG93JyxcbiAgICAnZGF0YScsXG4gICAgJ2NvbnRlbnQnLFxuICAgICdjb250ZXh0JyxcbiAgICAnaGlkZU9uRXNjYXBlJyxcbiAgICAnY3VzdG9tSG9zdCcsXG4gICAgJ2luamVjdG9yJyxcbiAgICAncHJlc2VydmVWaWV3JyxcbiAgICAndmNyJyxcbiAgICAncG9wcGVyV2lkdGgnLFxuICAgICd6SW5kZXhHZXR0ZXInLFxuICAgICdzdGF0aWNXaWR0aEhvc3QnLFxuICBdO1xuXG4gIGNvbnN0IG92ZXJyaWRkZW5NZXRob2RzID0gWydvblNob3cnLCAnb25IaWRkZW4nLCAnb25DcmVhdGUnXTtcblxuICBPYmplY3Qua2V5cyhhbGxQcm9wcykuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgIGlmICghb3duUHJvcHMuaW5jbHVkZXMocHJvcCkgJiYgIW92ZXJyaWRkZW5NZXRob2RzLmluY2x1ZGVzKHByb3ApKSB7XG4gICAgICB0aXBweVByb3BzW3Byb3BdID0gYWxsUHJvcHNbcHJvcF07XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGlwcHlQcm9wcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBjb25zdCBjbGFzc2VzID0gaXNTdHJpbmcoY2xhc3NOYW1lKSA/IGNsYXNzTmFtZS5zcGxpdCgnICcpIDogY2xhc3NOYW1lO1xuXG4gIHJldHVybiBjbGFzc2VzLm1hcCgoa2xhc3MpID0+IGtsYXNzPy50cmltKCkpLmZpbHRlcihCb29sZWFuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUNzc1BpeGVsVmFsdWU8VD4odmFsdWU6IFQpOiBzdHJpbmcge1xuICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IGAke3ZhbHVlfXB4YDtcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gaXNOaWwodmFsdWU6IGFueSk6IHZhbHVlIGlzIHVuZGVmaW5lZCB8IG51bGwge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gY29lcmNlRWxlbWVudChlbGVtZW50OiBUaXBweUVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcbn1cblxubGV0IG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbmNvbnN0IGVsZW1lbnRIaWRkZW5IYW5kbGVycyA9IG5ldyBXZWFrTWFwPEVsZW1lbnQsICgpID0+IHZvaWQ+KCk7XG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZVZpc2liaWxpdHkoaG9zdDogRWxlbWVudCwgaGlkZGVuSGFuZGxlcjogKCkgPT4gdm9pZCkge1xuICBvYnNlcnZlciA/Pz0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzOiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICBpZiAoIWVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIGVsZW1lbnRIaWRkZW5IYW5kbGVycy5nZXQoZW50cnkudGFyZ2V0KSEoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIGVsZW1lbnRIaWRkZW5IYW5kbGVycy5zZXQoaG9zdCwgaGlkZGVuSGFuZGxlcik7XG4gIG9ic2VydmVyLm9ic2VydmUoaG9zdCk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBlbGVtZW50SGlkZGVuSGFuZGxlcnMuZGVsZXRlKGhvc3QpO1xuICAgIG9ic2VydmVyLnVub2JzZXJ2ZShob3N0KTtcbiAgfTtcbn1cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaGVsaXBvcHBlci9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSS9ELElBQUksNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0FBQ3pDLElBQUksc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0FBRW5DLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7SUFDbEMsNEJBQTRCLEdBQUcsc0JBQXNCLElBQUksTUFBTSxDQUFDO0lBQ2hFLHNCQUFzQixHQUFHLGdCQUFnQixJQUFJLE1BQU0sQ0FBQztBQUN0RCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsSUFBa0IsRUFDbEIsVUFBb0M7SUFDbEMsSUFBSSxFQUFFLElBQUk7SUFDVixTQUFTLEVBQUUsR0FBRztDQUNmO0lBRUQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXBDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUNuQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUNsQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3BELHVGQUF1RjtZQUN2RixNQUFNLEtB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LGlCQUFpQixDQUFDLElBQWEsRUFBRSxhQUF5QjtJQUN4RSxRQUFRLEtBQUssSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLE9BQW9DLEVBQUUsRUFBRTtRQUM3RSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDMUIscUJBQXFCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUUsRUFBRSxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXZCLE9BQU8sR0FBRyxFQUFFO1FBQ1YscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGF1ZGl0VGltZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGlwcHlFbGVtZW50IH0gZnJvbSAnLi90aXBweS50eXBlcyc7XG5pbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEludGVyc2VjdGlvbk9ic2VydmVyIH0gZnJvbSAnLi9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInO1xuXG5kZWNsYXJlIGNvbnN0IFJlc2l6ZU9ic2VydmVyOiBhbnk7XG5cbmxldCBzdXBwb3J0c0ludGVyc2VjdGlvbk9ic2VydmVyID0gZmFsc2U7XG5sZXQgc3VwcG9ydHNSZXNpemVPYnNlcnZlciA9IGZhbHNlO1xuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgc3VwcG9ydHNJbnRlcnNlY3Rpb25PYnNlcnZlciA9ICdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93O1xuICBzdXBwb3J0c1Jlc2l6ZU9ic2VydmVyID0gJ1Jlc2l6ZU9ic2VydmVyJyBpbiB3aW5kb3c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpblZpZXcoXG4gIGhvc3Q6IFRpcHB5RWxlbWVudCxcbiAgb3B0aW9uczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICAgIHJvb3Q6IG51bGwsXG4gICAgdGhyZXNob2xkOiAwLjMsXG4gIH1cbikge1xuICBjb25zdCBlbGVtZW50ID0gY29lcmNlRWxlbWVudChob3N0KTtcblxuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICBpZiAoIXN1cHBvcnRzSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICAvLyBTZXZlcmFsIGNoYW5nZXMgbWF5IG9jY3VyIGluIHRoZSBzYW1lIHRpY2ssIHdlIHdhbnQgdG8gY2hlY2sgdGhlIGxhdGVzdCBlbnRyeSBzdGF0ZS5cbiAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1tlbnRyaWVzLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VsZW1lbnRPdmVyZmxvdyhob3N0OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAvLyBEb24ndCBhY2Nlc3MgdGhlIGBvZmZzZXRXaWR0aGAgbXVsdGlwbGUgdGltZXMgc2luY2UgaXQgdHJpZ2dlcnMgbGF5b3V0IHVwZGF0ZXMuXG4gIGNvbnN0IGhvc3RPZmZzZXRXaWR0aCA9IGhvc3Qub2Zmc2V0V2lkdGg7XG5cbiAgcmV0dXJuIChcbiAgICBob3N0T2Zmc2V0V2lkdGggPiBob3N0LnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGggfHwgaG9zdE9mZnNldFdpZHRoIDwgaG9zdC5zY3JvbGxXaWR0aFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3ZlcmZsb3dDaGFuZ2VzKGhvc3Q6IFRpcHB5RWxlbWVudCkge1xuICBjb25zdCBlbGVtZW50ID0gY29lcmNlRWxlbWVudChob3N0KTtcblxuICByZXR1cm4gZGltZW5zaW9uc0NoYW5nZXMoZWxlbWVudCkucGlwZShcbiAgICBhdWRpdFRpbWUoMTUwKSxcbiAgICBtYXAoKCkgPT4gaXNFbGVtZW50T3ZlcmZsb3coZWxlbWVudCkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaW1lbnNpb25zQ2hhbmdlcyh0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gIHJldHVybiByZXNpemVPYnNlcnZlclN0cmF0ZWd5KHRhcmdldCk7XG59XG5cbmZ1bmN0aW9uIHJlc2l6ZU9ic2VydmVyU3RyYXRlZ3kodGFyZ2V0OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICBpZiAoIXN1cHBvcnRzUmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgIHN1YnNjcmliZXIubmV4dCgpO1xuICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHN1YnNjcmliZXIubmV4dCh0cnVlKSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQpO1xuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25seVRpcHB5UHJvcHMoYWxsUHJvcHM6IGFueSkge1xuICBjb25zdCB0aXBweVByb3BzID0ge307XG5cbiAgY29uc3Qgb3duUHJvcHMgPSBbXG4gICAgJ3VzZVRleHRDb250ZW50JyxcbiAgICAndmFyaWF0aW9ucycsXG4gICAgJ3VzZUhvc3RXaWR0aCcsXG4gICAgJ2RlZmF1bHRWYXJpYXRpb24nLFxuICAgICdiZWZvcmVSZW5kZXInLFxuICAgICdpc0xhenknLFxuICAgICd2YXJpYXRpb24nLFxuICAgICdpc0VuYWJsZWQnLFxuICAgICdjbGFzc05hbWUnLFxuICAgICdvbmx5VGV4dE92ZXJmbG93JyxcbiAgICAnZGF0YScsXG4gICAgJ2NvbnRlbnQnLFxuICAgICdjb250ZXh0JyxcbiAgICAnaGlkZU9uRXNjYXBlJyxcbiAgICAnY3VzdG9tSG9zdCcsXG4gICAgJ2luamVjdG9yJyxcbiAgICAncHJlc2VydmVWaWV3JyxcbiAgICAndmNyJyxcbiAgICAncG9wcGVyV2lkdGgnLFxuICAgICd6SW5kZXhHZXR0ZXInLFxuICAgICdzdGF0aWNXaWR0aEhvc3QnLFxuICBdO1xuXG4gIGNvbnN0IG92ZXJyaWRkZW5NZXRob2RzID0gWydvblNob3cnLCAnb25IaWRkZW4nLCAnb25DcmVhdGUnXTtcblxuICBPYmplY3Qua2V5cyhhbGxQcm9wcykuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgIGlmICghb3duUHJvcHMuaW5jbHVkZXMocHJvcCkgJiYgIW92ZXJyaWRkZW5NZXRob2RzLmluY2x1ZGVzKHByb3ApKSB7XG4gICAgICB0aXBweVByb3BzW3Byb3BdID0gYWxsUHJvcHNbcHJvcF07XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGlwcHlQcm9wcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBjb25zdCBjbGFzc2VzID0gaXNTdHJpbmcoY2xhc3NOYW1lKSA/IGNsYXNzTmFtZS5zcGxpdCgnICcpIDogY2xhc3NOYW1lO1xuXG4gIHJldHVybiBjbGFzc2VzLm1hcCgoa2xhc3MpID0+IGtsYXNzPy50cmltKCkpLmZpbHRlcihCb29sZWFuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUNzc1BpeGVsVmFsdWU8VD4odmFsdWU6IFQpOiBzdHJpbmcge1xuICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IGAke3ZhbHVlfXB4YDtcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gaXNOaWwodmFsdWU6IGFueSk6IHZhbHVlIGlzIHVuZGVmaW5lZCB8IG51bGwge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gY29lcmNlRWxlbWVudChlbGVtZW50OiBUaXBweUVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gZWxlbWVudC5uYXRpdmVFbGVtZW50IDogZWxlbWVudDtcbn1cblxubGV0IG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbmNvbnN0IGVsZW1lbnRIaWRkZW5IYW5kbGVycyA9IG5ldyBXZWFrTWFwPEVsZW1lbnQsICgpID0+IHZvaWQ+KCk7XG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZVZpc2liaWxpdHkoaG9zdDogRWxlbWVudCwgaGlkZGVuSGFuZGxlcjogKCkgPT4gdm9pZCkge1xuICBvYnNlcnZlciA/Pz0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzOiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICBpZiAoIWVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIGVsZW1lbnRIaWRkZW5IYW5kbGVycy5nZXQoZW50cnkudGFyZ2V0KSEoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIGVsZW1lbnRIaWRkZW5IYW5kbGVycy5zZXQoaG9zdCwgaGlkZGVuSGFuZGxlcik7XG4gIG9ic2VydmVyLm9ic2VydmUoaG9zdCk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBlbGVtZW50SGlkZGVuSGFuZGxlcnMuZGVsZXRlKGhvc3QpO1xuICAgIG9ic2VydmVyLnVub2JzZXJ2ZShob3N0KTtcbiAgfTtcbn1cbiJdfQ==