@firestitch/filter 18.2.63 → 18.2.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/app/classes/actions-controller.d.ts +1 -2
  2. package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +0 -4
  3. package/app/components/filters-item/base-item/base-item.component.d.ts +2 -3
  4. package/app/components/filters-item/filter-item.component.d.ts +1 -2
  5. package/app/directives/focus-to-item.directive.d.ts +2 -8
  6. package/app/directives/heading.directive.d.ts +0 -1
  7. package/app/directives/status-bar.directive.d.ts +0 -1
  8. package/app/helpers/create-filter-item.d.ts +1 -1
  9. package/app/interfaces/config.interface.d.ts +1 -1
  10. package/app/models/filter-config.d.ts +1 -1
  11. package/app/services/persistance-controller.service.d.ts +3 -3
  12. package/app/services/query-param-controller.service.d.ts +2 -1
  13. package/esm2022/app/classes/actions-controller.mjs +6 -8
  14. package/esm2022/app/components/filter/filter.component.mjs +2 -4
  15. package/esm2022/app/components/filters-item/autocomplete/autocomplete.component.mjs +4 -11
  16. package/esm2022/app/components/filters-item/base-item/base-item.component.mjs +6 -10
  17. package/esm2022/app/components/filters-item/filter-item.component.mjs +5 -8
  18. package/esm2022/app/directives/focus-to-item.directive.mjs +13 -57
  19. package/esm2022/app/directives/heading.directive.mjs +5 -8
  20. package/esm2022/app/directives/status-bar.directive.mjs +5 -8
  21. package/esm2022/app/interfaces/config.interface.mjs +1 -1
  22. package/esm2022/app/models/filter-config.mjs +2 -2
  23. package/esm2022/app/services/filter-controller.service.mjs +5 -7
  24. package/esm2022/app/services/persistance-controller.service.mjs +16 -13
  25. package/esm2022/app/services/query-param-controller.service.mjs +14 -7
  26. package/fesm2022/firestitch-filter.mjs +80 -138
  27. package/fesm2022/firestitch-filter.mjs.map +1 -1
  28. package/package.json +1 -1
@@ -1,5 +1,7 @@
1
1
  import { DestroyRef, inject, Injectable } from '@angular/core';
2
2
  import { ActivatedRoute } from '@angular/router';
3
+ import { MatDialogRef } from '@angular/material/dialog';
4
+ import { DrawerRef } from '@firestitch/drawer';
3
5
  import { filter, merge, of, tap } from 'rxjs';
4
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
7
  import { restoreItems } from '../helpers/restore-items';
@@ -7,12 +9,16 @@ import { SortController } from './sort-controller.service';
7
9
  import * as i0 from "@angular/core";
8
10
  export class QueryParamController {
9
11
  _destroyRef = inject(DestroyRef);
10
- _enabled = false;
11
12
  _sortController = inject(SortController);
12
13
  _route = inject(ActivatedRoute);
13
14
  _filterController;
15
+ _dialogRef = inject(MatDialogRef, { optional: true });
16
+ _drawerRef = inject(DrawerRef, { optional: true });
14
17
  get enabled() {
15
- return this._enabled;
18
+ return !this._dialogRef &&
19
+ !this._drawerRef &&
20
+ !this._route.snapshot.queryParams.reset &&
21
+ this._filterController.config.queryParam;
16
22
  }
17
23
  get params() {
18
24
  if (!this.enabled) {
@@ -26,10 +32,11 @@ export class QueryParamController {
26
32
  }
27
33
  init(filterController) {
28
34
  this._filterController = filterController;
29
- this._enabled = this._filterController.config.queryParam;
30
- merge(this._filterController.change$, this._filterController.init$)
31
- .pipe(filter(() => this.enabled), tap(() => this.updateQueryParams()), takeUntilDestroyed(this._destroyRef))
32
- .subscribe();
35
+ if (this.enabled) {
36
+ merge(this._filterController.change$, this._filterController.init$)
37
+ .pipe(filter(() => this.enabled), tap(() => this.updateQueryParams()), takeUntilDestroyed(this._destroyRef))
38
+ .subscribe();
39
+ }
33
40
  return of(null);
34
41
  }
35
42
  queryParams() {
@@ -74,4 +81,4 @@ export class QueryParamController {
74
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryParamController, decorators: [{
75
82
  type: Injectable
76
83
  }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW0tY29udHJvbGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9zZXJ2aWNlcy9xdWVyeS1wYXJhbS1jb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBSTNELE1BQU0sT0FBTyxvQkFBb0I7SUFFdkIsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGVBQWUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoQyxpQkFBaUIsQ0FBbUI7SUFFNUMsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsSUFBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRztZQUNaLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7U0FDaEM7YUFDRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixPQUFPLFlBQVksQ0FDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUNoQyxLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7SUFFTSxJQUFJLENBQUMsZ0JBQWtDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBRXpELEtBQUssQ0FDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUM3QjthQUNFLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUMxQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFDbkMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVTtZQUNwQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVTtTQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixNQUFNLFdBQVcsR0FBRztZQUNsQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO2lCQUM1QixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3BCLE9BQU87b0JBQ0wsR0FBRyxHQUFHO29CQUNOLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVM7aUJBQ3ZCLENBQUM7WUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1NBQ3RCLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBSTtRQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2QsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUcsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3pDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQzt3R0F0RlUsb0JBQW9COzRHQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgZmlsdGVyLCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IHJlc3RvcmVJdGVtcyB9IGZyb20gJy4uL2hlbHBlcnMvcmVzdG9yZS1pdGVtcyc7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBGaWx0ZXJDb250cm9sbGVyIH0gZnJvbSAnLi9maWx0ZXItY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNvcnRDb250cm9sbGVyIH0gZnJvbSAnLi9zb3J0LWNvbnRyb2xsZXIuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFF1ZXJ5UGFyYW1Db250cm9sbGVyIHtcbiAgXG4gIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgX2VuYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc29ydENvbnRyb2xsZXIgPSBpbmplY3QoU29ydENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9yb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgX2ZpbHRlckNvbnRyb2xsZXI6IEZpbHRlckNvbnRyb2xsZXI7XG5cbiAgcHVibGljIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJhbXMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgaWYoIXRoaXMuZW5hYmxlZCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zID0gW1xuICAgICAgLi4udGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtcyxcbiAgICBdXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pO1xuICAgICAgXG4gICAgcmV0dXJuIHJlc3RvcmVJdGVtcyhcbiAgICAgIHRoaXMuX3JvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLFxuICAgICAgaXRlbXMsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KGZpbHRlckNvbnRyb2xsZXI6IEZpbHRlckNvbnRyb2xsZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIgPSBmaWx0ZXJDb250cm9sbGVyO1xuICAgIHRoaXMuX2VuYWJsZWQgPSB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNvbmZpZy5xdWVyeVBhcmFtO1xuXG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLl9maWx0ZXJDb250cm9sbGVyLmNoYW5nZSQsIFxuICAgICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pbml0JCxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZW5hYmxlZCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZVF1ZXJ5UGFyYW1zKCkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gb2YobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgcXVlcnlQYXJhbXMoKTogS2V5VmFsdWUge1xuICAgIGlmKCF0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5fZmlsdGVyQ29udHJvbGxlci5xdWVyeVBhcmFtLFxuICAgICAgLi4udGhpcy5fc29ydENvbnRyb2xsZXIucXVlcnlQYXJhbSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVF1ZXJ5UGFyYW1zKCkge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge1xuICAgICAgLi4udGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgICAucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2l0ZW0ubmFtZV06IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSksXG4gICAgICAuLi50aGlzLnF1ZXJ5UGFyYW1zKCksXG4gICAgfTtcblxuICAgIHRoaXMuX3JlcGxhY2VTdGF0ZShxdWVyeVBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlU3RhdGUoZGF0YSkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuXG4gICAgT2JqZWN0LmtleXMoZGF0YSlcbiAgICAgIC5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtuYW1lXTtcbiAgICAgICAgaWYodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgbnVsbCwgdXJsLnBhdGhuYW1lICsgZGVjb2RlVVJJQ29tcG9uZW50KHVybC5zZWFyY2gpKTtcbiAgfVxufVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyYW0tY29udHJvbGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9zZXJ2aWNlcy9xdWVyeS1wYXJhbS1jb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXhELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFJM0QsTUFBTSxPQUFPLG9CQUFvQjtJQUV2QixXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLGVBQWUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoQyxpQkFBaUIsQ0FBbUI7SUFDM0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RCxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXBFLElBQVcsT0FBTztRQUNoQixPQUFPLENB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QUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7d0dBM0ZVLG9CQUFvQjs0R0FBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IERyYXdlclJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL2RyYXdlcic7XG5cbmltcG9ydCB7IGZpbHRlciwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyByZXN0b3JlSXRlbXMgfSBmcm9tICcuLi9oZWxwZXJzL3Jlc3RvcmUtaXRlbXMnO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgRmlsdGVyQ29udHJvbGxlciB9IGZyb20gJy4vZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTb3J0Q29udHJvbGxlciB9IGZyb20gJy4vc29ydC1jb250cm9sbGVyLnNlcnZpY2UnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdWVyeVBhcmFtQ29udHJvbGxlciB7XG4gIFxuICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIF9zb3J0Q29udHJvbGxlciA9IGluamVjdChTb3J0Q29udHJvbGxlcik7XG4gIHByaXZhdGUgX3JvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBfZmlsdGVyQ29udHJvbGxlcjogRmlsdGVyQ29udHJvbGxlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHJhd2VyUmVmID0gaW5qZWN0KERyYXdlclJlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTsgIFxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlZCgpIHtcbiAgICByZXR1cm4gIXRoaXMuX2RpYWxvZ1JlZiAmJiBcbiAgICAgICF0aGlzLl9kcmF3ZXJSZWYgJiYgXG4gICAgICAhdGhpcy5fcm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMucmVzZXQgJiZcbiAgICAgIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY29uZmlnLnF1ZXJ5UGFyYW07XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhcmFtcygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBpZighdGhpcy5lbmFibGVkKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAuLi50aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zLFxuICAgIF1cbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICEhaXRlbSk7XG4gICAgICBcbiAgICByZXR1cm4gcmVzdG9yZUl0ZW1zKFxuICAgICAgdGhpcy5fcm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMsXG4gICAgICBpdGVtcyxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGluaXQoZmlsdGVyQ29udHJvbGxlcjogRmlsdGVyQ29udHJvbGxlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlciA9IGZpbHRlckNvbnRyb2xsZXI7XG5cbiAgICBpZiAodGhpcy5lbmFibGVkKSB7XG4gICAgICBtZXJnZShcbiAgICAgICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UkLCBcbiAgICAgICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pbml0JCxcbiAgICAgIClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZW5hYmxlZCksXG4gICAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlUXVlcnlQYXJhbXMoKSksXG4gICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgcXVlcnlQYXJhbXMoKTogS2V5VmFsdWUge1xuICAgIGlmKCF0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5fZmlsdGVyQ29udHJvbGxlci5xdWVyeVBhcmFtLFxuICAgICAgLi4udGhpcy5fc29ydENvbnRyb2xsZXIucXVlcnlQYXJhbSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVF1ZXJ5UGFyYW1zKCkge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge1xuICAgICAgLi4udGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgICAucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgW2l0ZW0ubmFtZV06IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSksXG4gICAgICAuLi50aGlzLnF1ZXJ5UGFyYW1zKCksXG4gICAgfTtcblxuICAgIHRoaXMuX3JlcGxhY2VTdGF0ZShxdWVyeVBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlU3RhdGUoZGF0YSkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuXG4gICAgT2JqZWN0LmtleXMoZGF0YSlcbiAgICAgIC5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtuYW1lXTtcbiAgICAgICAgaWYodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgbnVsbCwgdXJsLnBhdGhuYW1lICsgZGVjb2RlVVJJQ29tcG9uZW50KHVybC5zZWFyY2gpKTtcbiAgfVxufVxuIl19