@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.
- package/README.md +52 -55
- package/esm2022/lib/coercion.mjs +10 -0
- package/esm2022/lib/intersection-observer.mjs +9 -0
- package/esm2022/lib/providers.mjs +2 -2
- package/esm2022/lib/tippy.directive.mjs +249 -269
- package/esm2022/lib/tippy.factory.mjs +43 -0
- package/esm2022/lib/tippy.service.mjs +23 -21
- package/esm2022/lib/tippy.types.mjs +2 -7
- package/esm2022/lib/utils.mjs +3 -2
- package/fesm2022/ngneat-helipopper.mjs +325 -294
- package/fesm2022/ngneat-helipopper.mjs.map +1 -1
- package/lib/coercion.d.ts +9 -0
- package/lib/intersection-observer.d.ts +1 -0
- package/lib/providers.d.ts +1 -1
- package/lib/tippy.directive.d.ts +43 -51
- package/lib/tippy.factory.d.ts +16 -0
- package/lib/tippy.service.d.ts +3 -1
- package/lib/tippy.types.d.ts +15 -8
- package/package.json +2 -2
|
@@ -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
|
|
71
|
+
return this._tippyFactory.create(host, config);
|
|
70
72
|
}
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
72
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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,
|
|
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
|
-
|
|
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=
|
package/esm2022/lib/utils.mjs
CHANGED
|
@@ -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==
|