@dereekb/dbx-web 9.6.5 → 9.7.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/esm2020/mapbox/lib/index.mjs +3 -1
- package/esm2020/mapbox/lib/mapbox.markers.component.mjs +11 -8
- package/esm2020/mapbox/lib/mapbox.mjs +1 -1
- package/esm2020/mapbox/lib/mapbox.rxjs.mjs +53 -0
- package/esm2020/mapbox/lib/mapbox.store.mjs +27 -14
- package/esm2020/mapbox/lib/mapbox.util.mjs +15 -0
- package/fesm2015/dereekb-dbx-web-mapbox.mjs +102 -23
- package/fesm2015/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-web-mapbox.mjs +102 -23
- package/fesm2020/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/mapbox/esm2020/lib/index.mjs +3 -1
- package/mapbox/esm2020/lib/mapbox.markers.component.mjs +11 -8
- package/mapbox/esm2020/lib/mapbox.mjs +1 -1
- package/mapbox/esm2020/lib/mapbox.rxjs.mjs +53 -0
- package/mapbox/esm2020/lib/mapbox.store.mjs +27 -14
- package/mapbox/esm2020/lib/mapbox.util.mjs +15 -0
- package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs +102 -23
- package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/mapbox/fesm2020/dereekb-dbx-web-mapbox.mjs +102 -23
- package/mapbox/fesm2020/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/mapbox/lib/index.d.ts +2 -0
- package/mapbox/lib/mapbox.d.ts +6 -0
- package/mapbox/lib/mapbox.markers.component.d.ts +3 -1
- package/mapbox/lib/mapbox.rxjs.d.ts +44 -0
- package/mapbox/lib/mapbox.store.d.ts +12 -1
- package/mapbox/lib/mapbox.util.d.ts +27 -0
- package/mapbox/package.json +5 -4
- package/package.json +3 -3
|
@@ -5,10 +5,12 @@ export * from './mapbox.marker';
|
|
|
5
5
|
export * from './mapbox.marker.component';
|
|
6
6
|
export * from './mapbox.markers.component';
|
|
7
7
|
export * from './mapbox.menu.component';
|
|
8
|
+
export * from './mapbox.rxjs';
|
|
8
9
|
export * from './mapbox.service';
|
|
9
10
|
export * from './mapbox.store.map.directive';
|
|
10
11
|
export * from './mapbox.store';
|
|
11
12
|
export * from './mapbox.store.provide';
|
|
12
13
|
export * from './mapbox';
|
|
14
|
+
export * from './mapbox.util';
|
|
13
15
|
export * from './options';
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL21hcGJveC9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWFwYm94Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL21hcGJveC5sYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWFwYm94LmxheW91dC5kcmF3ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWFwYm94Lm1hcmtlcic7XG5leHBvcnQgKiBmcm9tICcuL21hcGJveC5tYXJrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWFwYm94Lm1hcmtlcnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWFwYm94Lm1lbnUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWFwYm94LnJ4anMnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBib3guc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL21hcGJveC5zdG9yZS5tYXAuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwYm94LnN0b3JlJztcbmV4cG9ydCAqIGZyb20gJy4vbWFwYm94LnN0b3JlLnByb3ZpZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBib3gnO1xuZXhwb3J0ICogZnJvbSAnLi9tYXBib3gudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL29wdGlvbnMnO1xuIl19
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BehaviorSubject, combineLatest, distinctUntilChanged, map, shareReplay } from 'rxjs';
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';
|
|
3
|
+
import { tapDetectChanges } from '@dereekb/dbx-core';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/common";
|
|
5
6
|
import * as i2 from "./mapbox.marker.component";
|
|
@@ -7,7 +8,8 @@ import * as i2 from "./mapbox.marker.component";
|
|
|
7
8
|
* Component used to render a set of DbxMapboxMarker values from the input data and marker factory.
|
|
8
9
|
*/
|
|
9
10
|
export class DbxMapboxMarkersComponent {
|
|
10
|
-
constructor() {
|
|
11
|
+
constructor(cdRef) {
|
|
12
|
+
this.cdRef = cdRef;
|
|
11
13
|
this._data = new BehaviorSubject(undefined);
|
|
12
14
|
this._markerFactory = new BehaviorSubject(undefined);
|
|
13
15
|
this.markers$ = combineLatest([this._data.pipe(distinctUntilChanged()), this._markerFactory.pipe(distinctUntilChanged())]).pipe(map(([data, markerFactory]) => {
|
|
@@ -17,7 +19,7 @@ export class DbxMapboxMarkersComponent {
|
|
|
17
19
|
else {
|
|
18
20
|
return [];
|
|
19
21
|
}
|
|
20
|
-
}), shareReplay(1));
|
|
22
|
+
}), tapDetectChanges(this.cdRef), shareReplay(1));
|
|
21
23
|
}
|
|
22
24
|
get data() {
|
|
23
25
|
return this._data.value;
|
|
@@ -36,21 +38,22 @@ export class DbxMapboxMarkersComponent {
|
|
|
36
38
|
this._markerFactory.complete();
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
|
-
DbxMapboxMarkersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxMarkersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
DbxMapboxMarkersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxMarkersComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
40
42
|
DbxMapboxMarkersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: DbxMapboxMarkersComponent, selector: "dbx-mapbox-markers", inputs: { data: "data", markerFactory: "markerFactory" }, ngImport: i0, template: `
|
|
41
43
|
<dbx-mapbox-marker *ngFor="let marker of markers$ | async" [marker]="marker"></dbx-mapbox-marker>
|
|
42
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.DbxMapboxMarkerComponent, selector: "dbx-mapbox-marker", inputs: ["marker"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
|
|
44
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.DbxMapboxMarkerComponent, selector: "dbx-mapbox-marker", inputs: ["marker"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
43
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxMarkersComponent, decorators: [{
|
|
44
46
|
type: Component,
|
|
45
47
|
args: [{
|
|
46
48
|
selector: 'dbx-mapbox-markers',
|
|
47
49
|
template: `
|
|
48
50
|
<dbx-mapbox-marker *ngFor="let marker of markers$ | async" [marker]="marker"></dbx-mapbox-marker>
|
|
49
|
-
|
|
51
|
+
`,
|
|
52
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
50
53
|
}]
|
|
51
|
-
}], propDecorators: { data: [{
|
|
54
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { data: [{
|
|
52
55
|
type: Input
|
|
53
56
|
}], markerFactory: [{
|
|
54
57
|
type: Input
|
|
55
58
|
}] } });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94Lm1hcmtlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9tYXBib3gvc3JjL2xpYi9tYXBib3gubWFya2Vycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUVyRDs7R0FFRztBQVFILE1BQU0sT0FBTyx5QkFBeUI7SUFnQnBDLFlBQXFCLEtBQXdCO1FBQXhCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBZnJDLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBYSxTQUFTLENBQUMsQ0FBQztRQUNuRCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFtQyxTQUFTLENBQUMsQ0FBQztRQUVqRixhQUFRLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNqSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQzVCLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxhQUFhLEVBQUU7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNoQztpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBQzthQUNYO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUM1QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUU4QyxDQUFDO0lBRWpELElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQWdCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxhQUErQztRQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDOztzSEF2Q1UseUJBQXlCOzBHQUF6Qix5QkFBeUIsb0hBTDFCOztHQUVUOzJGQUdVLHlCQUF5QjtrQkFQckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUU7O0dBRVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEO3dHQW9CSyxJQUFJO3NCQURQLEtBQUs7Z0JBVUYsYUFBYTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4TWFwYm94TWFya2VyRmFjdG9yeSB9IGZyb20gJy4vbWFwYm94Lm1hcmtlcic7XG5pbXBvcnQgeyB0YXBEZXRlY3RDaGFuZ2VzIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuXG4vKipcbiAqIENvbXBvbmVudCB1c2VkIHRvIHJlbmRlciBhIHNldCBvZiBEYnhNYXBib3hNYXJrZXIgdmFsdWVzIGZyb20gdGhlIGlucHV0IGRhdGEgYW5kIG1hcmtlciBmYWN0b3J5LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtbWFwYm94LW1hcmtlcnMnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkYngtbWFwYm94LW1hcmtlciAqbmdGb3I9XCJsZXQgbWFya2VyIG9mIG1hcmtlcnMkIHwgYXN5bmNcIiBbbWFya2VyXT1cIm1hcmtlclwiPjwvZGJ4LW1hcGJveC1tYXJrZXI+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERieE1hcGJveE1hcmtlcnNDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9kYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxUW10+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9tYXJrZXJGYWN0b3J5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxEYnhNYXBib3hNYXJrZXJGYWN0b3J5PFQ+Pj4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBtYXJrZXJzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2RhdGEucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSwgdGhpcy5fbWFya2VyRmFjdG9yeS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXSkucGlwZShcbiAgICBtYXAoKFtkYXRhLCBtYXJrZXJGYWN0b3J5XSkgPT4ge1xuICAgICAgaWYgKGRhdGE/Lmxlbmd0aCAmJiBtYXJrZXJGYWN0b3J5KSB7XG4gICAgICAgIHJldHVybiBkYXRhLm1hcChtYXJrZXJGYWN0b3J5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICB0YXBEZXRlY3RDaGFuZ2VzKHRoaXMuY2RSZWYpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIEBJbnB1dCgpXG4gIGdldCBkYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLnZhbHVlO1xuICB9XG5cbiAgc2V0IGRhdGEoZGF0YTogTWF5YmU8VFtdPikge1xuICAgIHRoaXMuX2RhdGEubmV4dChkYXRhKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBtYXJrZXJGYWN0b3J5KCkge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXJGYWN0b3J5LnZhbHVlO1xuICB9XG5cbiAgc2V0IG1hcmtlckZhY3RvcnkobWFya2VyRmFjdG9yeTogTWF5YmU8RGJ4TWFwYm94TWFya2VyRmFjdG9yeTxUPj4pIHtcbiAgICB0aGlzLl9tYXJrZXJGYWN0b3J5Lm5leHQobWFya2VyRmFjdG9yeSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kYXRhLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fbWFya2VyRmFjdG9yeS5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -14,4 +14,4 @@ export const MAPBOX_MAX_ZOOM_LEVEL = 22;
|
|
|
14
14
|
export function mapboxZoomLevel(input) {
|
|
15
15
|
return Math.min(Math.max(input, MAPBOX_MIN_ZOOM_LEVEL), MAPBOX_MAX_ZOOM_LEVEL);
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9tYXBib3gvc3JjL2xpYi9tYXBib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXVCO0lBQ3JELEVBQUU7SUFDRixvQ0FBb0M7SUFDcEMscUNBQXFDO0lBQ3JDLGtDQUFrQztJQUNsQyxpQ0FBaUM7SUFDakMscUNBQXFDO0lBQ3JDLDhDQUE4QztJQUM5QywwQ0FBMEM7SUFDMUMsNENBQTRDO0NBQzdDLENBQUM7QUFJRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBb0IsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFvQixFQUFFLENBQUM7QUFFekQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhO0lBQzNDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhdExuZ1BvaW50SW5wdXQsIExhdExuZ0JvdW5kSW5wdXQsIFpvb21MZXZlbCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0ICogYXMgTWFwYm94R2wgZnJvbSAnbWFwYm94LWdsJztcblxuZXhwb3J0IHR5cGUgS25vd25NYXBib3hTdHlsZSA9ICdtYXBib3g6Ly9zdHlsZXMvbWFwYm94L3N0cmVldHMtdjExJyB8ICdtYXBib3g6Ly9zdHlsZXMvbWFwYm94L291dGRvb3JzLXYxMScgfCAnbWFwYm94Oi8vc3R5bGVzL21hcGJveC9saWdodC12MTAnIHwgJ21hcGJveDovL3N0eWxlcy9tYXBib3gvZGFyay12MTAnIHwgJ21hcGJveDovL3N0eWxlcy9tYXBib3gvc2F0ZWxsaXRlLXY5JyB8ICdtYXBib3g6Ly9zdHlsZXMvbWFwYm94L3NhdGVsbGl0ZS1zdHJlZXRzLXYxMScgfCAnbWFwYm94Oi8vc3R5bGVzL21hcGJveC9uYXZpZ2F0aW9uLWRheS12MScgfCAnbWFwYm94Oi8vc3R5bGVzL21hcGJveC9uYXZpZ2F0aW9uLW5pZ2h0LXYxJztcblxuZXhwb3J0IGNvbnN0IEtOT1dOX01BUEJPWF9TVFlMRVM6IEtub3duTWFwYm94U3R5bGVbXSA9IFtcbiAgLy9cbiAgJ21hcGJveDovL3N0eWxlcy9tYXBib3gvc3RyZWV0cy12MTEnLFxuICAnbWFwYm94Oi8vc3R5bGVzL21hcGJveC9vdXRkb29ycy12MTEnLFxuICAnbWFwYm94Oi8vc3R5bGVzL21hcGJveC9saWdodC12MTAnLFxuICAnbWFwYm94Oi8vc3R5bGVzL21hcGJveC9kYXJrLXYxMCcsXG4gICdtYXBib3g6Ly9zdHlsZXMvbWFwYm94L3NhdGVsbGl0ZS12OScsXG4gICdtYXBib3g6Ly9zdHlsZXMvbWFwYm94L3NhdGVsbGl0ZS1zdHJlZXRzLXYxMScsXG4gICdtYXBib3g6Ly9zdHlsZXMvbWFwYm94L25hdmlnYXRpb24tZGF5LXYxJyxcbiAgJ21hcGJveDovL3N0eWxlcy9tYXBib3gvbmF2aWdhdGlvbi1uaWdodC12MSdcbl07XG5cbmV4cG9ydCB0eXBlIE1hcGJveFpvb21MZXZlbCA9IFpvb21MZXZlbDtcblxuZXhwb3J0IGNvbnN0IE1BUEJPWF9NSU5fWk9PTV9MRVZFTDogTWFwYm94Wm9vbUxldmVsID0gMDtcbmV4cG9ydCBjb25zdCBNQVBCT1hfTUFYX1pPT01fTEVWRUw6IE1hcGJveFpvb21MZXZlbCA9IDIyO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFwYm94Wm9vbUxldmVsKGlucHV0OiBudW1iZXIpOiBNYXBib3hab29tTGV2ZWwge1xuICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoaW5wdXQsIE1BUEJPWF9NSU5fWk9PTV9MRVZFTCksIE1BUEJPWF9NQVhfWk9PTV9MRVZFTCk7XG59XG5cbmV4cG9ydCB0eXBlIE1hcGJveFBpdGNoID0gbnVtYmVyO1xuZXhwb3J0IHR5cGUgTWFwYm94QmVhcmluZyA9IG51bWJlcjtcblxuLyoqXG4gKiBTaXplIG9mIHRoZSB0aWxlcy4gVmVjdG9yLWJhc2VkIHRpbGVzIHVzZWQgYnkgdGhlIHdlYiBhcmUgZ2VuZXJhbGx5IDUxMng1MTIsIGFuZCBsZWdhY3kgb25lcyBhcmUgMjU2eDI1Ni5cbiAqXG4gKiBodHRwczovL2Jsb2cubWFwYm94LmNvbS81MTItbWFwLXRpbGVzLWNiNWJmZDZlNzJiYVxuICovXG5leHBvcnQgdHlwZSBNYXBib3hUaWxlU2l6ZSA9IDUxMiB8IDI1NjtcblxuZXhwb3J0IHR5cGUgRGJ4TWFwYm94Q2xpY2tFdmVudCA9IE1hcGJveEdsLk1hcE1vdXNlRXZlbnQgJiBNYXBib3hHbC5FdmVudERhdGE7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwYm94U3R5bGVDb25maWcge1xuICBzdHlsZTogTWFwYm94R2wuU3R5bGUgfCBzdHJpbmc7XG4gIG9wdGlvbnM/OiB7XG4gICAgZGlmZj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgbG9jYWxJZGVvZ3JhcGhGb250RmFtaWx5Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcGJveEZpdEJvdW5kcyB7XG4gIGJvdW5kczogTGF0TG5nQm91bmRJbnB1dDtcbiAgb3B0aW9ucz86IG1hcGJveGdsLkZpdEJvdW5kc09wdGlvbnM7XG4gIGV2ZW50RGF0YT86IG1hcGJveGdsLkV2ZW50RGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBib3hKdW1wVG9Qb3NpdGlvbk9wdGlvbnMgZXh0ZW5kcyBPbWl0PE1hcGJveEdsLkNhbWVyYU9wdGlvbnMsICdjZW50ZXInPiB7XG4gIGNlbnRlcjogTGF0TG5nUG9pbnRJbnB1dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBib3hKdW1wVG8ge1xuICBjZW50ZXI/OiBMYXRMbmdQb2ludElucHV0O1xuICB0bz86IE1hcGJveEp1bXBUb1Bvc2l0aW9uT3B0aW9ucztcbiAgZXZlbnREYXRhPzogbWFwYm94Z2wuRXZlbnREYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcGJveEVhc2VUb1Bvc2l0aW9uT3B0aW9ucyBleHRlbmRzIE9taXQ8TWFwYm94R2wuRWFzZVRvT3B0aW9ucywgJ2NlbnRlcic+LCBNYXBib3hKdW1wVG9Qb3NpdGlvbk9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBNYXBib3hFYXNlVG8ge1xuICBjZW50ZXI/OiBMYXRMbmdQb2ludElucHV0O1xuICB0bz86IE1hcGJveEVhc2VUb1Bvc2l0aW9uT3B0aW9ucztcbiAgZXZlbnREYXRhPzogbWFwYm94Z2wuRXZlbnREYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcGJveEZseVRvUG9zaXRpb25PcHRpb25zIGV4dGVuZHMgT21pdDxNYXBib3hHbC5GbHlUb09wdGlvbnMsICdjZW50ZXInPiwgTWFwYm94SnVtcFRvUG9zaXRpb25PcHRpb25zIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwYm94Rmx5VG8ge1xuICBjZW50ZXI/OiBMYXRMbmdQb2ludElucHV0O1xuICB0bz86IE1hcGJveEZseVRvUG9zaXRpb25PcHRpb25zO1xuICBldmVudERhdGE/OiBtYXBib3hnbC5FdmVudERhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwYm94Um90YXRlVG8ge1xuICBiZWFyaW5nOiBNYXBib3hCZWFyaW5nO1xuICBvcHRpb25zPzogbWFwYm94Z2wuQW5pbWF0aW9uT3B0aW9ucztcbiAgZXZlbnREYXRhPzogbWFwYm94Z2wuRXZlbnREYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcGJveFJlc2V0Tm9ydGgge1xuICBvcHRpb25zPzogbWFwYm94Z2wuQW5pbWF0aW9uT3B0aW9ucztcbiAgZXZlbnREYXRhPzogbWFwYm94Z2wuRXZlbnREYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcGJveFJlc2V0Tm9ydGhQaXRjaCB7XG4gIG9wdGlvbnM/OiBtYXBib3hnbC5BbmltYXRpb25PcHRpb25zO1xuICBldmVudERhdGE/OiBtYXBib3hnbC5FdmVudERhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwYm94U25hcFRvTm9ydGgge1xuICBvcHRpb25zPzogbWFwYm94Z2wuQW5pbWF0aW9uT3B0aW9ucztcbiAgZXZlbnREYXRhPzogbWFwYm94Z2wuRXZlbnREYXRhO1xufVxuIl19
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { asObservable } from '@dereekb/rxjs';
|
|
2
|
+
import { LAT_LONG_10M_PRECISION, latLngPointFunction, roundNumberToStepFunction } from '@dereekb/util';
|
|
3
|
+
import { combineLatestWith, map, switchMap, shareReplay, distinctUntilChanged } from 'rxjs';
|
|
4
|
+
/**
|
|
5
|
+
* Filters the input objects based on their center and zoom values.
|
|
6
|
+
*
|
|
7
|
+
* This function caches the bounds computations for each of the input values.
|
|
8
|
+
*
|
|
9
|
+
* @param config
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export function filterByMapboxViewportBound(config) {
|
|
13
|
+
const { boundDecisionObs: inputBoundDecisionObs, boundFunctionObs: inputBoundFunctionObs, defaultZoom: inputDefaultZoom = 17, readValue, zoomRounding, precision = LAT_LONG_10M_PRECISION } = config;
|
|
14
|
+
const _latLngPoint = latLngPointFunction({ wrap: false, validate: false, precision });
|
|
15
|
+
const _roundZoom = roundNumberToStepFunction(zoomRounding || { step: 0.5, round: 'floor' });
|
|
16
|
+
const boundDecisionObs = asObservable(inputBoundDecisionObs);
|
|
17
|
+
const boundFunctionObs = asObservable(inputBoundFunctionObs);
|
|
18
|
+
return (input) => {
|
|
19
|
+
return boundFunctionObs.pipe(distinctUntilChanged(), switchMap((viewportBoundFunction) => {
|
|
20
|
+
const cache = new Map();
|
|
21
|
+
return input.pipe(map((values) => {
|
|
22
|
+
return values.map((value) => {
|
|
23
|
+
const item = readValue(value);
|
|
24
|
+
const centerLatLng = _latLngPoint(item.center);
|
|
25
|
+
const zoomStep = _roundZoom(item.zoom || inputDefaultZoom);
|
|
26
|
+
const cacheKey = `${zoomStep}_${centerLatLng.lat}_${centerLatLng.lng}`;
|
|
27
|
+
const cachedValue = cache.get(cacheKey);
|
|
28
|
+
let bound;
|
|
29
|
+
if (!cachedValue) {
|
|
30
|
+
bound = viewportBoundFunction({ center: centerLatLng, zoom: zoomStep });
|
|
31
|
+
cache.set(cacheKey, bound);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
bound = cachedValue;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
value,
|
|
38
|
+
bound
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
}), combineLatestWith(boundDecisionObs), map(([items, boundFunction]) => {
|
|
42
|
+
let valuesInBounds = [];
|
|
43
|
+
items.forEach((item) => {
|
|
44
|
+
if (boundFunction(item.bound)) {
|
|
45
|
+
valuesInBounds.push(item.value);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return valuesInBounds;
|
|
49
|
+
}));
|
|
50
|
+
}), shareReplay(1));
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94LnJ4anMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL21hcGJveC9zcmMvbGliL21hcGJveC5yeGpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBMkQsbUJBQW1CLEVBQUUseUJBQXlCLEVBQWlGLE1BQU0sZUFBZSxDQUFDO0FBQy9PLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQWdDLFNBQVMsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFxQzFIOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUksTUFBa0M7SUFDL0UsTUFBTSxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEdBQUcsc0JBQXNCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDck0sTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN0RixNQUFNLFVBQVUsR0FBRyx5QkFBeUIsQ0FBQyxZQUFZLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRTVGLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUU3RCxPQUFPLENBQUMsS0FBc0IsRUFBRSxFQUFFO1FBQ2hDLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUMxQixvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1lBRTdDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixHQUFHLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDbEIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBUSxFQUFFLEVBQUU7b0JBQzdCLE1BQU0sSUFBSSxHQUF5QyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3BFLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQy9DLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLENBQUM7b0JBQzNELE1BQU0sUUFBUSxHQUFHLEdBQUcsUUFBUSxJQUFJLFlBQVksQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUV2RSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN4QyxJQUFJLEtBQWtCLENBQUM7b0JBRXZCLElBQUksQ0FBQyxXQUFXLEVBQUU7d0JBQ2hCLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7d0JBQ3hFLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO3FCQUM1Qjt5QkFBTTt3QkFDTCxLQUFLLEdBQUcsV0FBVyxDQUFDO3FCQUNyQjtvQkFFRCxPQUFPO3dCQUNMLEtBQUs7d0JBQ0wsS0FBSztxQkFDZ0MsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsRUFDRixpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUNuQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO2dCQUM3QixJQUFJLGNBQWMsR0FBUSxFQUFFLENBQUM7Z0JBRTdCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDckIsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUM3QixjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDakM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxjQUFjLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGVPclZhbHVlLCBhc09ic2VydmFibGUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IExBVF9MT05HXzEwTV9QUkVDSVNJT04sIExhdExuZ1BvaW50SW5wdXQsIExhdExuZ0JvdW5kLCBMYXRMbmdCb3VuZENoZWNrRnVuY3Rpb24sIGxhdExuZ1BvaW50RnVuY3Rpb24sIHJvdW5kTnVtYmVyVG9TdGVwRnVuY3Rpb24sIFJvdW5kTnVtYmVyVG9TdGVwRnVuY3Rpb25JbnB1dCwgTGF0TG5nUHJlY2lzaW9uLCBMQVRfTE9OR18xTV9QUkVDSVNJT04sIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0V2l0aCwgbWFwLCBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uLCBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWFwYm94Wm9vbUxldmVsIH0gZnJvbSAnLi9tYXBib3gnO1xuaW1wb3J0IHsgTWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uIH0gZnJvbSAnLi9tYXBib3gudXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyTWFwYm94Qm91bmRDb25maWc8VD4ge1xuICBib3VuZEZ1bmN0aW9uT2JzOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb24+O1xuICBib3VuZERlY2lzaW9uT2JzOiBPYnNlcnZhYmxlT3JWYWx1ZTxMYXRMbmdCb3VuZENoZWNrRnVuY3Rpb24+O1xuICAvKipcbiAgICogUmVhZHMgdGhlIHZhbHVlIGZyb20gdGhlIGlucHV0IGl0ZW0uXG4gICAqL1xuICByZWFkVmFsdWU6ICh2YWx1ZTogVCkgPT4gTWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uSXRlbVZhbHVlO1xuICAvKipcbiAgICogTWluaW11bSBwcmVjaXNpb24gdG8gcmV0YWluLiBEZWZhdWx0cyB0byBMQVRfTE9OR18xME1fUFJFQ0lTSU9OXG4gICAqL1xuICBwcmVjaXNpb24/OiBMYXRMbmdQcmVjaXNpb247XG4gIC8qKlxuICAgKiBBbW91bnQgb2Ygem9vbSByb3VuZGluZyB0byB1c2UuIEJ5IGRlZmF1bHQgcm91bmRzIHRvIDAuNSBzdGVwcyB1c2luZyBcImZsb29yXCIgaW4gb3JkZXIgdG8gXCJyb3VuZCB1cFwiIHNpbmNlIHpvb20gdmFsdWVzIGFyZSBpbnZlcnNlbHkgcHJvcG9ydGlvbmFsIHRvIGJvdW5kcyBhcmVhLlxuICAgKi9cbiAgem9vbVJvdW5kaW5nPzogUm91bmROdW1iZXJUb1N0ZXBGdW5jdGlvbklucHV0O1xuICAvKipcbiAgICogRGVmYXVsdCB6b29tIGxldmVsIGZvciBpdGVtIHZhbHVlcyB0aGF0IGRvIG5vdCBoYXZlIGFuIGV4cGxpY2l0IHpvb20sIG9yIGEgem9vbSBvZiAwLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byAxNywgd2hpY2ggY2FuIHByb2R1Y2UgYSB2aWV3cG9ydC9ib3VuZHMgYWJvdXQgdGhlIHNpemUgb2YgYSBwYXJrLlxuICAgKi9cbiAgZGVmYXVsdFpvb20/OiBNYXBib3hab29tTGV2ZWw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uSXRlbVZhbHVlIHtcbiAgcmVhZG9ubHkgY2VudGVyOiBMYXRMbmdQb2ludElucHV0O1xuICByZWFkb25seSB6b29tPzogTWF5YmU8TWFwYm94Wm9vbUxldmVsPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBib3hWaWV3cG9ydEJvdW5kRnVuY3Rpb25JdGVtPFQ+IHtcbiAgcmVhZG9ubHkgdmFsdWU6IFQ7XG4gIHJlYWRvbmx5IGJvdW5kOiBMYXRMbmdCb3VuZDtcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIHRoZSBpbnB1dCBvYmplY3RzIGJhc2VkIG9uIHRoZWlyIGNlbnRlciBhbmQgem9vbSB2YWx1ZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBjYWNoZXMgdGhlIGJvdW5kcyBjb21wdXRhdGlvbnMgZm9yIGVhY2ggb2YgdGhlIGlucHV0IHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnlNYXBib3hWaWV3cG9ydEJvdW5kPFQ+KGNvbmZpZzogRmlsdGVyTWFwYm94Qm91bmRDb25maWc8VD4pOiBPcGVyYXRvckZ1bmN0aW9uPFRbXSwgVFtdPiB7XG4gIGNvbnN0IHsgYm91bmREZWNpc2lvbk9iczogaW5wdXRCb3VuZERlY2lzaW9uT2JzLCBib3VuZEZ1bmN0aW9uT2JzOiBpbnB1dEJvdW5kRnVuY3Rpb25PYnMsIGRlZmF1bHRab29tOiBpbnB1dERlZmF1bHRab29tID0gMTcsIHJlYWRWYWx1ZSwgem9vbVJvdW5kaW5nLCBwcmVjaXNpb24gPSBMQVRfTE9OR18xME1fUFJFQ0lTSU9OIH0gPSBjb25maWc7XG4gIGNvbnN0IF9sYXRMbmdQb2ludCA9IGxhdExuZ1BvaW50RnVuY3Rpb24oeyB3cmFwOiBmYWxzZSwgdmFsaWRhdGU6IGZhbHNlLCBwcmVjaXNpb24gfSk7XG4gIGNvbnN0IF9yb3VuZFpvb20gPSByb3VuZE51bWJlclRvU3RlcEZ1bmN0aW9uKHpvb21Sb3VuZGluZyB8fCB7IHN0ZXA6IDAuNSwgcm91bmQ6ICdmbG9vcicgfSk7XG5cbiAgY29uc3QgYm91bmREZWNpc2lvbk9icyA9IGFzT2JzZXJ2YWJsZShpbnB1dEJvdW5kRGVjaXNpb25PYnMpO1xuICBjb25zdCBib3VuZEZ1bmN0aW9uT2JzID0gYXNPYnNlcnZhYmxlKGlucHV0Qm91bmRGdW5jdGlvbk9icyk7XG5cbiAgcmV0dXJuIChpbnB1dDogT2JzZXJ2YWJsZTxUW10+KSA9PiB7XG4gICAgcmV0dXJuIGJvdW5kRnVuY3Rpb25PYnMucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzd2l0Y2hNYXAoKHZpZXdwb3J0Qm91bmRGdW5jdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBMYXRMbmdCb3VuZD4oKTtcblxuICAgICAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgICAgICBtYXAoKHZhbHVlczogVFtdKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzLm1hcCgodmFsdWU6IFQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbTogTWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uSXRlbVZhbHVlID0gcmVhZFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgY29uc3QgY2VudGVyTGF0TG5nID0gX2xhdExuZ1BvaW50KGl0ZW0uY2VudGVyKTtcbiAgICAgICAgICAgICAgY29uc3Qgem9vbVN0ZXAgPSBfcm91bmRab29tKGl0ZW0uem9vbSB8fCBpbnB1dERlZmF1bHRab29tKTtcbiAgICAgICAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBgJHt6b29tU3RlcH1fJHtjZW50ZXJMYXRMbmcubGF0fV8ke2NlbnRlckxhdExuZy5sbmd9YDtcblxuICAgICAgICAgICAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IGNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgICAgICAgICAgIGxldCBib3VuZDogTGF0TG5nQm91bmQ7XG5cbiAgICAgICAgICAgICAgaWYgKCFjYWNoZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGJvdW5kID0gdmlld3BvcnRCb3VuZEZ1bmN0aW9uKHsgY2VudGVyOiBjZW50ZXJMYXRMbmcsIHpvb206IHpvb21TdGVwIH0pO1xuICAgICAgICAgICAgICAgIGNhY2hlLnNldChjYWNoZUtleSwgYm91bmQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJvdW5kID0gY2FjaGVkVmFsdWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGJvdW5kXG4gICAgICAgICAgICAgIH0gYXMgTWFwYm94Vmlld3BvcnRCb3VuZEZ1bmN0aW9uSXRlbTxUPjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKGJvdW5kRGVjaXNpb25PYnMpLFxuICAgICAgICAgIG1hcCgoW2l0ZW1zLCBib3VuZEZ1bmN0aW9uXSkgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlc0luQm91bmRzOiBUW10gPSBbXTtcblxuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoYm91bmRGdW5jdGlvbihpdGVtLmJvdW5kKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlc0luQm91bmRzLnB1c2goaXRlbS52YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzSW5Cb3VuZHM7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9O1xufVxuIl19
|