@firestitch/filter 18.2.66 → 18.2.67

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 (92) hide show
  1. package/app/components/filter/filter.component.d.ts +2 -9
  2. package/app/components/filter-chips/filter-chips.component.d.ts +22 -7
  3. package/app/components/filter-item-dialog/filter-item-dialog.component.d.ts +9 -0
  4. package/app/components/filter-item-dialog/index.d.ts +1 -0
  5. package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +2 -1
  6. package/app/components/filters-item/autocomplete/index.d.ts +1 -0
  7. package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +2 -1
  8. package/app/components/filters-item/autocompletechips/index.d.ts +1 -0
  9. package/app/components/filters-item/base-item/index.d.ts +1 -0
  10. package/app/components/filters-item/checkbox/index.d.ts +1 -0
  11. package/app/components/filters-item/chips/index.d.ts +1 -0
  12. package/app/components/filters-item/date/date.component.d.ts +2 -1
  13. package/app/components/filters-item/date/index.d.ts +1 -0
  14. package/app/components/filters-item/date-range/date-range.component.d.ts +2 -1
  15. package/app/components/filters-item/date-range/index.d.ts +1 -0
  16. package/app/components/filters-item/filter-item.component.d.ts +5 -2
  17. package/app/components/filters-item/index.d.ts +12 -0
  18. package/app/components/filters-item/range/index.d.ts +1 -0
  19. package/app/components/filters-item/range/range.component.d.ts +2 -1
  20. package/app/components/filters-item/select/index.d.ts +1 -0
  21. package/app/components/filters-item/select/select.component.d.ts +2 -1
  22. package/app/components/filters-item/text/index.d.ts +1 -0
  23. package/app/components/filters-item/text/text.component.d.ts +2 -1
  24. package/app/components/filters-item/week/index.d.ts +1 -0
  25. package/app/components/filters-item/week/week.component.d.ts +2 -1
  26. package/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.d.ts +1 -2
  27. package/app/directives/focus-to-item.directive.d.ts +6 -10
  28. package/app/fs-filter.module.d.ts +5 -24
  29. package/app/helpers/create-filter-item.d.ts +1 -1
  30. package/app/injectors/index.d.ts +3 -0
  31. package/app/models/items/base-item.d.ts +2 -0
  32. package/app/services/index.d.ts +0 -1
  33. package/app/services/saved-filter-controller.service.d.ts +2 -0
  34. package/esm2022/app/components/filter/filter.component.mjs +12 -69
  35. package/esm2022/app/components/filter-chips/filter-chips.component.mjs +160 -8
  36. package/esm2022/app/components/filter-item-dialog/filter-item-dialog.component.mjs +23 -0
  37. package/esm2022/app/components/filter-item-dialog/index.mjs +2 -0
  38. package/esm2022/app/components/filters-item/autocomplete/autocomplete.component.mjs +8 -5
  39. package/esm2022/app/components/filters-item/autocomplete/index.mjs +2 -0
  40. package/esm2022/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +8 -5
  41. package/esm2022/app/components/filters-item/autocompletechips/index.mjs +2 -0
  42. package/esm2022/app/components/filters-item/base-item/index.mjs +2 -0
  43. package/esm2022/app/components/filters-item/checkbox/checkbox.component.mjs +7 -8
  44. package/esm2022/app/components/filters-item/checkbox/index.mjs +2 -0
  45. package/esm2022/app/components/filters-item/chips/chips.component.mjs +3 -3
  46. package/esm2022/app/components/filters-item/chips/index.mjs +2 -0
  47. package/esm2022/app/components/filters-item/date/date.component.mjs +8 -5
  48. package/esm2022/app/components/filters-item/date/index.mjs +2 -0
  49. package/esm2022/app/components/filters-item/date-range/date-range.component.mjs +8 -5
  50. package/esm2022/app/components/filters-item/date-range/index.mjs +2 -0
  51. package/esm2022/app/components/filters-item/filter-item.component.mjs +14 -5
  52. package/esm2022/app/components/filters-item/index.mjs +13 -0
  53. package/esm2022/app/components/filters-item/range/index.mjs +2 -0
  54. package/esm2022/app/components/filters-item/range/range.component.mjs +8 -5
  55. package/esm2022/app/components/filters-item/select/index.mjs +2 -0
  56. package/esm2022/app/components/filters-item/select/select.component.mjs +8 -5
  57. package/esm2022/app/components/filters-item/text/index.mjs +2 -0
  58. package/esm2022/app/components/filters-item/text/text.component.mjs +8 -5
  59. package/esm2022/app/components/filters-item/week/index.mjs +2 -0
  60. package/esm2022/app/components/filters-item/week/week.component.mjs +8 -5
  61. package/esm2022/app/components/keyword-input/keyword-input.component.mjs +2 -2
  62. package/esm2022/app/components/saved-filter/saved-filter-manage/components/saved-filter-chips/saved-filter-chips.component.mjs +1 -1
  63. package/esm2022/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +5 -8
  64. package/esm2022/app/directives/focus-to-item.directive.mjs +33 -69
  65. package/esm2022/app/fs-filter.module.mjs +3 -78
  66. package/esm2022/app/injectors/index.mjs +4 -0
  67. package/esm2022/app/models/items/base-date-range-item.mjs +1 -1
  68. package/esm2022/app/models/items/base-item.mjs +6 -1
  69. package/esm2022/app/models/items/checkbox-item.mjs +2 -2
  70. package/esm2022/app/services/index.mjs +1 -2
  71. package/esm2022/app/services/saved-filter-controller.service.mjs +21 -1
  72. package/fesm2022/firestitch-filter.mjs +2852 -3129
  73. package/fesm2022/firestitch-filter.mjs.map +1 -1
  74. package/package.json +1 -1
  75. package/app/components/filter-drawer/filter-drawer.component.d.ts +0 -31
  76. package/app/components/filter-drawer-actions/filter-drawer-actions.component.d.ts +0 -13
  77. package/app/components/saved-filter/index.d.ts +0 -2
  78. package/app/components/saved-filter/saved-filter-autocomplete-chips/index.d.ts +0 -1
  79. package/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.d.ts +0 -32
  80. package/app/components/saved-filter/saved-filter-manage/index.d.ts +0 -1
  81. package/app/consts/filter-icon.d.ts +0 -1
  82. package/app/consts/index.d.ts +0 -1
  83. package/app/services/filter-overlay.service.d.ts +0 -35
  84. package/esm2022/app/components/filter-drawer/filter-drawer.component.mjs +0 -98
  85. package/esm2022/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +0 -47
  86. package/esm2022/app/components/saved-filter/index.mjs +0 -3
  87. package/esm2022/app/components/saved-filter/saved-filter-autocomplete-chips/index.mjs +0 -2
  88. package/esm2022/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.mjs +0 -121
  89. package/esm2022/app/components/saved-filter/saved-filter-manage/index.mjs +0 -2
  90. package/esm2022/app/consts/filter-icon.mjs +0 -2
  91. package/esm2022/app/consts/index.mjs +0 -2
  92. package/esm2022/app/services/filter-overlay.service.mjs +0 -128
@@ -1,128 +0,0 @@
1
- import { inject, Injectable, Injector } from '@angular/core';
2
- import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
3
- import { ComponentPortal } from '@angular/cdk/portal';
4
- import { HtmlClassRenderer } from '@firestitch/html';
5
- import { Subject } from 'rxjs';
6
- import { filter, takeUntil } from 'rxjs/operators';
7
- import { FilterDrawerComponent } from '../components/filter-drawer/filter-drawer.component';
8
- import { FILTER_DRAWER_DATA } from '../injectors/filter-drawer-data';
9
- import { FILTER_DRAWER_OVERLAY } from '../injectors/filter-drawer-overlay';
10
- import { FocusControllerService } from './focus-controller.service';
11
- import { FsRootFilterOverlayService } from './root-filter-overlay.service';
12
- import * as i0 from "@angular/core";
13
- export class FsFilterOverlayService {
14
- _detach$ = new Subject();
15
- _attach$ = new Subject();
16
- _clearFn;
17
- _doneFn;
18
- _destroy$ = new Subject();
19
- _overlayRef;
20
- _injector = inject(Injector);
21
- _overlay = inject(Overlay);
22
- _focusController = inject(FocusControllerService);
23
- _htmlClassRenderer = inject(HtmlClassRenderer);
24
- _filterMeta = inject(FsRootFilterOverlayService);
25
- constructor() {
26
- this._openWhenChipClicked();
27
- }
28
- get detach$() {
29
- return this._detach$.asObservable();
30
- }
31
- get attach$() {
32
- return this._attach$.asObservable();
33
- }
34
- get isOpened() {
35
- return !!this._overlayRef;
36
- }
37
- setClearFn(fn) {
38
- this._clearFn = fn;
39
- }
40
- setDoneFn(fn) {
41
- this._doneFn = fn;
42
- }
43
- close() {
44
- if (this._overlayRef) {
45
- this._overlayRef.detach();
46
- this._removeFilterClass();
47
- }
48
- }
49
- opened() {
50
- return !!this._overlayRef;
51
- }
52
- open() {
53
- if (this._overlayRef) {
54
- return;
55
- }
56
- this._overlayRef = this._createOverlay();
57
- this._overlayRef.detachments()
58
- .pipe(takeUntil(this._destroy$))
59
- .subscribe(() => {
60
- this._detach$.next(null);
61
- this._overlayRef = null;
62
- });
63
- this._overlayRef.attachments()
64
- .pipe(takeUntil(this._destroy$))
65
- .subscribe(() => {
66
- this._attach$.next(null);
67
- });
68
- this._addFilterClass();
69
- return this._openPortalPreview();
70
- }
71
- ngOnDestroy() {
72
- this._destroy$.next(null);
73
- this._destroy$.complete();
74
- }
75
- _createOverlay() {
76
- const overlayConfig = new OverlayConfig({
77
- hasBackdrop: false,
78
- });
79
- return this._overlay.create(overlayConfig);
80
- }
81
- _openPortalPreview() {
82
- const data = {
83
- done: this._doneFn,
84
- clear: this._clearFn,
85
- };
86
- const injector = this._createInjector(this._injector, data, this._overlayRef);
87
- const containerPortal = new ComponentPortal(FilterDrawerComponent, undefined, injector);
88
- const containerRef = this._overlayRef.attach(containerPortal);
89
- return containerRef.instance;
90
- }
91
- _createInjector(parentInjector, data, overlayRef) {
92
- const providers = [
93
- { provide: FILTER_DRAWER_DATA, useValue: data },
94
- { provide: FILTER_DRAWER_OVERLAY, useValue: overlayRef },
95
- ];
96
- return Injector.create({
97
- providers,
98
- parent: parentInjector,
99
- });
100
- }
101
- _removeFilterClass() {
102
- this._filterMeta.openedFilters--;
103
- if (this._filterMeta.openedFilters === 0) {
104
- this._htmlClassRenderer.removeClass('fs-filter-open');
105
- }
106
- }
107
- _addFilterClass() {
108
- this._filterMeta.openedFilters++;
109
- if (this._filterMeta.openedFilters === 1) {
110
- this._htmlClassRenderer.addClass('fs-filter-open');
111
- }
112
- }
113
- _openWhenChipClicked() {
114
- this._focusController.focusOn$
115
- .pipe(filter((v) => !!v), takeUntil(this._destroy$))
116
- .subscribe(() => {
117
- if (!this.isOpened) {
118
- this.open();
119
- }
120
- });
121
- }
122
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
123
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterOverlayService });
124
- }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterOverlayService, decorators: [{
126
- type: Injectable
127
- }], ctorParameters: () => [] });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLW92ZXJsYXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvZmlsdGVyLW92ZXJsYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFJM0UsTUFBTSxPQUFPLHNCQUFzQjtJQUV6QixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUMvQixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUMvQixRQUFRLENBQWE7SUFDckIsT0FBTyxDQUFhO0lBRXBCLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFCLFdBQVcsQ0FBYTtJQUN4QixTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lB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Q0FDSCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEIsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0E3SVUsc0JBQXNCOzRHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIFN0YXRpY1Byb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuaW1wb3J0IHsgSHRtbENsYXNzUmVuZGVyZXIgfSBmcm9tICdAZmlyZXN0aXRjaC9odG1sJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZpbHRlckRyYXdlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsdGVyLWRyYXdlci9maWx0ZXItZHJhd2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGSUxURVJfRFJBV0VSX0RBVEEgfSBmcm9tICcuLi9pbmplY3RvcnMvZmlsdGVyLWRyYXdlci1kYXRhJztcbmltcG9ydCB7IEZJTFRFUl9EUkFXRVJfT1ZFUkxBWSB9IGZyb20gJy4uL2luamVjdG9ycy9maWx0ZXItZHJhd2VyLW92ZXJsYXknO1xuXG5pbXBvcnQgeyBGb2N1c0NvbnRyb2xsZXJTZXJ2aWNlIH0gZnJvbSAnLi9mb2N1cy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnNSb290RmlsdGVyT3ZlcmxheVNlcnZpY2UgfSBmcm9tICcuL3Jvb3QtZmlsdGVyLW92ZXJsYXkuc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZzRmlsdGVyT3ZlcmxheVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX2RldGFjaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9hdHRhY2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfY2xlYXJGbjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfZG9uZUZuOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIF9vdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICBwcml2YXRlIF9mb2N1c0NvbnRyb2xsZXIgPSBpbmplY3QoRm9jdXNDb250cm9sbGVyU2VydmljZSk7XG4gIHByaXZhdGUgX2h0bWxDbGFzc1JlbmRlcmVyID0gaW5qZWN0KEh0bWxDbGFzc1JlbmRlcmVyKTtcbiAgcHJpdmF0ZSBfZmlsdGVyTWV0YSA9IGluamVjdChGc1Jvb3RGaWx0ZXJPdmVybGF5U2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fb3BlbldoZW5DaGlwQ2xpY2tlZCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXRhY2gkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9kZXRhY2gkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRhY2gkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9hdHRhY2gkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09wZW5lZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLl9vdmVybGF5UmVmO1xuICB9XG5cbiAgcHVibGljIHNldENsZWFyRm4oZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9jbGVhckZuID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RG9uZUZuKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fZG9uZUZuID0gZm47XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICB0aGlzLl9yZW1vdmVGaWx0ZXJDbGFzcygpO1xuICAgIH0gXG4gIH1cblxuICBwdWJsaWMgb3BlbmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX292ZXJsYXlSZWY7XG4gIH1cblxuICBwdWJsaWMgb3BlbigpIHtcbiAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9jcmVhdGVPdmVybGF5KCk7XG4gICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9kZXRhY2gkLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaG1lbnRzKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2F0dGFjaCQubmV4dChudWxsKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fYWRkRmlsdGVyQ2xhc3MoKTtcblxuICAgIHJldHVybiB0aGlzLl9vcGVuUG9ydGFsUHJldmlldygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXkoKSB7XG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLl9vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgX29wZW5Qb3J0YWxQcmV2aWV3KCkge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBkb25lOiB0aGlzLl9kb25lRm4sXG4gICAgICBjbGVhcjogdGhpcy5fY2xlYXJGbixcbiAgICB9O1xuICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5fY3JlYXRlSW5qZWN0b3IodGhpcy5faW5qZWN0b3IsIGRhdGEsIHRoaXMuX292ZXJsYXlSZWYpO1xuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRmlsdGVyRHJhd2VyQ29tcG9uZW50LCB1bmRlZmluZWQsIGluamVjdG9yKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaDxGaWx0ZXJEcmF3ZXJDb21wb25lbnQ+KGNvbnRhaW5lclBvcnRhbCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVyUmVmLmluc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlSW5qZWN0b3IocGFyZW50SW5qZWN0b3I6IEluamVjdG9yLCBkYXRhOiBhbnksIG92ZXJsYXlSZWY6IGFueSk6IEluamVjdG9yIHtcbiAgICBjb25zdCBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICB7IHByb3ZpZGU6IEZJTFRFUl9EUkFXRVJfREFUQSwgdXNlVmFsdWU6IGRhdGEgfSxcbiAgICAgIHsgcHJvdmlkZTogRklMVEVSX0RSQVdFUl9PVkVSTEFZLCB1c2VWYWx1ZTogb3ZlcmxheVJlZiB9LFxuICAgIF07XG4gIFxuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzLFxuICAgICAgcGFyZW50OiBwYXJlbnRJbmplY3RvcixcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIF9yZW1vdmVGaWx0ZXJDbGFzcygpIHtcbiAgICB0aGlzLl9maWx0ZXJNZXRhLm9wZW5lZEZpbHRlcnMtLTtcblxuICAgIGlmICh0aGlzLl9maWx0ZXJNZXRhLm9wZW5lZEZpbHRlcnMgPT09IDApIHtcbiAgICAgIHRoaXMuX2h0bWxDbGFzc1JlbmRlcmVyLnJlbW92ZUNsYXNzKCdmcy1maWx0ZXItb3BlbicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FkZEZpbHRlckNsYXNzKCkge1xuICAgIHRoaXMuX2ZpbHRlck1ldGEub3BlbmVkRmlsdGVycysrO1xuXG4gICAgaWYgKHRoaXMuX2ZpbHRlck1ldGEub3BlbmVkRmlsdGVycyA9PT0gMSkge1xuICAgICAgdGhpcy5faHRtbENsYXNzUmVuZGVyZXIuYWRkQ2xhc3MoJ2ZzLWZpbHRlci1vcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3BlbldoZW5DaGlwQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c0NvbnRyb2xsZXIuZm9jdXNPbiRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHYpID0+ICEhdiksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0=