angular-multiselect3 10.0.0 → 11.0.4
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/esm2022/angular-multiselect3.mjs +5 -0
- package/esm2022/lib/click-outside.service.mjs +54 -0
- package/esm2022/lib/list-filter.mjs +14 -13
- package/esm2022/lib/multiselect.component.mjs +30 -24
- package/esm2022/public_api.mjs +1 -2
- package/fesm2022/{angular-multiselect.mjs → angular-multiselect3.mjs} +95 -118
- package/fesm2022/angular-multiselect3.mjs.map +1 -0
- package/index.d.ts +1 -1
- package/lib/click-outside.service.d.ts +16 -0
- package/lib/list-filter.d.ts +0 -3
- package/lib/multiselect.component.d.ts +9 -8
- package/package.json +6 -6
- package/public_api.d.ts +0 -1
- package/esm2022/angular-multiselect.mjs +0 -5
- package/esm2022/lib/clickOutside.mjs +0 -58
- package/esm2022/lib/multiselect.service.mjs +0 -28
- package/fesm2022/angular-multiselect.mjs.map +0 -1
- package/lib/clickOutside.d.ts +0 -17
- package/lib/multiselect.service.d.ts +0 -11
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public_api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1tdWx0aXNlbGVjdDMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wcm9qZWN0cy9hbmd1bGFyMi1tdWx0aXNlbGVjdC1kcm9wZG93bi1saWIvc3JjL2FuZ3VsYXItbXVsdGlzZWxlY3QzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { fromEvent, merge, Subject } from 'rxjs';
|
|
3
|
+
import { Inject, Injectable } from '@angular/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ClickOutsideService {
|
|
6
|
+
_document;
|
|
7
|
+
// tslint:disable-next-line:variable-name
|
|
8
|
+
_items = new Set();
|
|
9
|
+
// tslint:disable-next-line:variable-name
|
|
10
|
+
_click$ = new Subject();
|
|
11
|
+
// tslint:disable-next-line:variable-name
|
|
12
|
+
_docSub;
|
|
13
|
+
constructor(_document) {
|
|
14
|
+
this._document = _document;
|
|
15
|
+
}
|
|
16
|
+
register(item) {
|
|
17
|
+
this._items.add(item);
|
|
18
|
+
if (this._items.size === 1) {
|
|
19
|
+
this._subscribeToDocument();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
unregister(item) {
|
|
23
|
+
this._items.delete(item);
|
|
24
|
+
if (this._items.size === 0) {
|
|
25
|
+
this._unsubscribe();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
onClick() {
|
|
29
|
+
// return observable of document click/pointer events
|
|
30
|
+
return this._click$.asObservable();
|
|
31
|
+
}
|
|
32
|
+
_subscribeToDocument() {
|
|
33
|
+
if (this._docSub) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// listen to touchstart / pointerdown / mousedown and forward events
|
|
37
|
+
this._docSub = merge(fromEvent(this._document.defaultView, 'touchstart'), fromEvent(this._document.defaultView, 'pointerdown')).subscribe((event) => this._click$.next(event));
|
|
38
|
+
}
|
|
39
|
+
_unsubscribe() {
|
|
40
|
+
if (this._docSub) {
|
|
41
|
+
this._docSub.unsubscribe();
|
|
42
|
+
this._docSub = undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClickOutsideService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClickOutsideService });
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClickOutsideService, decorators: [{
|
|
49
|
+
type: Injectable
|
|
50
|
+
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
51
|
+
type: Inject,
|
|
52
|
+
args: [DOCUMENT]
|
|
53
|
+
}] }] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcjItbXVsdGlzZWxlY3QtZHJvcGRvd24tbGliL3NyYy9saWIvY2xpY2stb3V0c2lkZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUduRCxNQUFNLE9BQU8sbUJBQW1CO0lBWVg7SUFYbkIseUNBQXlDO0lBQ3hCLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRTVDLHlDQUF5QztJQUN4QixPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztJQUVyRCx5Q0FBeUM7SUFDakMsT0FBTyxDQUEyQjtJQUUxQyxZQUVtQixTQUFtQjtRQUFuQixjQUFTLEdBQVQsU0FBUyxDQUFVO0lBQ25DLENBQUM7SUFFSixRQUFRLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wscURBQXFEO1FBQ3JELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBRUQsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUNsQixTQUFTLENBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLEVBQy9ELFNBQVMsQ0FBYSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FDakUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7d0dBckRVLG1CQUFtQixrQkFXcEIsUUFBUTs0R0FYUCxtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQVlOLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDbGlja091dHNpZGVTZXJ2aWNlIHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSByZWFkb25seSBfaXRlbXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxuICBwcml2YXRlIHJlYWRvbmx5IF9jbGljayQgPSBuZXcgU3ViamVjdDxNb3VzZUV2ZW50PigpO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIHByaXZhdGUgX2RvY1N1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRE9DVU1FTlQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICApIHt9XG5cbiAgcmVnaXN0ZXIoaXRlbTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5faXRlbXMuYWRkKGl0ZW0pO1xuXG4gICAgaWYgKHRoaXMuX2l0ZW1zLnNpemUgPT09IDEpIHtcbiAgICAgIHRoaXMuX3N1YnNjcmliZVRvRG9jdW1lbnQoKTtcbiAgICB9XG4gIH1cblxuICB1bnJlZ2lzdGVyKGl0ZW06IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2l0ZW1zLmRlbGV0ZShpdGVtKTtcblxuICAgIGlmICh0aGlzLl9pdGVtcy5zaXplID09PSAwKSB7XG4gICAgICB0aGlzLl91bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2soKTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PiB7XG4gICAgLy8gcmV0dXJuIG9ic2VydmFibGUgb2YgZG9jdW1lbnQgY2xpY2svcG9pbnRlciBldmVudHNcbiAgICByZXR1cm4gdGhpcy5fY2xpY2skLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Eb2N1bWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZG9jU3ViKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gbGlzdGVuIHRvIHRvdWNoc3RhcnQgLyBwb2ludGVyZG93biAvIG1vdXNlZG93biBhbmQgZm9yd2FyZCBldmVudHNcbiAgICB0aGlzLl9kb2NTdWIgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLl9kb2N1bWVudC5kZWZhdWx0VmlldywgJ3RvdWNoc3RhcnQnKSxcbiAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLl9kb2N1bWVudC5kZWZhdWx0VmlldywgJ3BvaW50ZXJkb3duJyksXG4gICAgKS5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB0aGlzLl9jbGljayQubmV4dChldmVudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2RvY1N1Yikge1xuICAgICAgdGhpcy5fZG9jU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLl9kb2NTdWIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import { Pipe } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./multiselect.service";
|
|
4
3
|
export class ListFilterPipe {
|
|
5
|
-
ds;
|
|
6
4
|
filteredList = [];
|
|
7
|
-
constructor(ds) {
|
|
8
|
-
this.ds = ds;
|
|
9
|
-
}
|
|
10
5
|
transform(items, filter, searchBy) {
|
|
11
|
-
if (!items || !filter || filter ==
|
|
6
|
+
if (!items || !filter || filter == '') {
|
|
12
7
|
return items;
|
|
13
8
|
}
|
|
14
9
|
this.filteredList = items.filter((item) => this.applyFilter(item, filter, searchBy));
|
|
@@ -22,8 +17,11 @@ export class ListFilterPipe {
|
|
|
22
17
|
}
|
|
23
18
|
else {
|
|
24
19
|
for (var t = 0; t < searchBy.length; t++) {
|
|
25
|
-
if (filter && item[searchBy[t]] && item[searchBy[t]] !=
|
|
26
|
-
if (item[searchBy[t]]
|
|
20
|
+
if (filter && item[searchBy[t]] && item[searchBy[t]] != '') {
|
|
21
|
+
if (item[searchBy[t]]
|
|
22
|
+
.toString()
|
|
23
|
+
.toLowerCase()
|
|
24
|
+
.indexOf(filter.toLowerCase()) >= 0) {
|
|
27
25
|
found = true;
|
|
28
26
|
}
|
|
29
27
|
}
|
|
@@ -37,7 +35,10 @@ export class ListFilterPipe {
|
|
|
37
35
|
else {
|
|
38
36
|
for (var prop in item) {
|
|
39
37
|
if (filter && item[prop]) {
|
|
40
|
-
if (item[prop]
|
|
38
|
+
if (item[prop]
|
|
39
|
+
.toString()
|
|
40
|
+
.toLowerCase()
|
|
41
|
+
.indexOf(filter.toLowerCase()) >= 0) {
|
|
41
42
|
found = true;
|
|
42
43
|
}
|
|
43
44
|
}
|
|
@@ -46,14 +47,14 @@ export class ListFilterPipe {
|
|
|
46
47
|
}
|
|
47
48
|
return found;
|
|
48
49
|
}
|
|
49
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListFilterPipe, deps: [
|
|
50
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
50
51
|
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ListFilterPipe, name: "listFilter" });
|
|
51
52
|
}
|
|
52
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListFilterPipe, decorators: [{
|
|
53
54
|
type: Pipe,
|
|
54
55
|
args: [{
|
|
55
56
|
name: 'listFilter',
|
|
56
|
-
pure: true
|
|
57
|
+
pure: true,
|
|
57
58
|
}]
|
|
58
|
-
}]
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
}] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyMi1tdWx0aXNlbGVjdC1kcm9wZG93bi1saWIvc3JjL2xpYi9saXN0LWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLGNBQWM7SUFDbEIsWUFBWSxHQUFRLEVBQUUsQ0FBQztJQUU5QixTQUFTLENBQUMsS0FBWSxFQUFFLE1BQVcsRUFBRSxRQUFhO1FBQ2hELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FDekMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVMsRUFBRSxNQUFXLEVBQUUsUUFBYTtRQUMvQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3pDLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7d0JBQzNELElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzs2QkFDZCxRQUFRLEVBQUU7NkJBQ1YsV0FBVyxFQUFFOzZCQUNiLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQ3JDLENBQUM7NEJBQ0QsS0FBSyxHQUFHLElBQUksQ0FBQzt3QkFDZixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3RCLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3dCQUN6QixJQUNFLElBQUksQ0FBQyxJQUFJLENBQUM7NkJBQ1AsUUFBUSxFQUFFOzZCQUNWLFdBQVcsRUFBRTs2QkFDYixPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNyQyxDQUFDOzRCQUNELEtBQUssR0FBRyxJQUFJLENBQUM7d0JBQ2YsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0FwRFUsY0FBYztzR0FBZCxjQUFjOzs0RkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsSUFBSTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnbGlzdEZpbHRlcicsXG4gIHB1cmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpc3RGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHB1YmxpYyBmaWx0ZXJlZExpc3Q6IGFueSA9IFtdO1xuXG4gIHRyYW5zZm9ybShpdGVtczogYW55W10sIGZpbHRlcjogYW55LCBzZWFyY2hCeTogYW55KTogYW55W10ge1xuICAgIGlmICghaXRlbXMgfHwgIWZpbHRlciB8fCBmaWx0ZXIgPT0gJycpIHtcbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJlZExpc3QgPSBpdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoaXRlbSwgZmlsdGVyLCBzZWFyY2hCeSksXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZExpc3Q7XG4gIH1cblxuICBhcHBseUZpbHRlcihpdGVtOiBhbnksIGZpbHRlcjogYW55LCBzZWFyY2hCeTogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgaWYgKHNlYXJjaEJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChpdGVtLmdycFRpdGxlKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgc2VhcmNoQnkubGVuZ3RoOyB0KyspIHtcbiAgICAgICAgICBpZiAoZmlsdGVyICYmIGl0ZW1bc2VhcmNoQnlbdF1dICYmIGl0ZW1bc2VhcmNoQnlbdF1dICE9ICcnKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGl0ZW1bc2VhcmNoQnlbdF1dXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgIC5pbmRleE9mKGZpbHRlci50b0xvd2VyQ2FzZSgpKSA+PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXRlbS5ncnBUaXRsZSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBwcm9wIGluIGl0ZW0pIHtcbiAgICAgICAgICBpZiAoZmlsdGVyICYmIGl0ZW1bcHJvcF0pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaXRlbVtwcm9wXVxuICAgICAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAuaW5kZXhPZihmaWx0ZXIudG9Mb3dlckNhc2UoKSkgPj0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn1cbiJdfQ==
|