@wlcm/angular 17.5.16 → 17.5.19
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/core/esm2022/lib/models/option.models.mjs +6 -4
- package/core/fesm2022/wlcm-angular-core.mjs +5 -3
- package/core/fesm2022/wlcm-angular-core.mjs.map +1 -1
- package/core/lib/models/option.models.d.ts +5 -2
- package/datepicker/esm2022/lib/components/calendar-header/calendar-header.component.mjs +3 -3
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs +2 -2
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs.map +1 -1
- package/filters/esm2022/lib/filters/components/filters-button/filters-button.component.mjs +3 -3
- package/filters/fesm2022/wlcm-angular-filters.mjs +2 -2
- package/filters/fesm2022/wlcm-angular-filters.mjs.map +1 -1
- package/forms/esm2022/index.mjs +1 -2
- package/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +54 -20
- package/forms/esm2022/lib/forms/components/form-field/form-field.component.mjs +1 -1
- package/forms/esm2022/lib/forms/components/select/select.component.mjs +6 -5
- package/forms/esm2022/lib/forms/forms.module.mjs +1 -5
- package/forms/fesm2022/wlcm-angular-forms.mjs +55 -52
- package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
- package/forms/index.d.ts +0 -1
- package/forms/lib/forms/components/autocomplete/autocomplete.component.d.ts +16 -7
- package/forms/lib/forms/components/select/select.component.d.ts +3 -2
- package/forms/lib/forms/forms.module.d.ts +3 -4
- package/package.json +1 -1
- package/phone-input/esm2022/lib/components/country-code-select/country-code-select.component.mjs +2 -2
- package/phone-input/fesm2022/wlcm-angular-phone-input.mjs +1 -1
- package/phone-input/fesm2022/wlcm-angular-phone-input.mjs.map +1 -1
- package/table/esm2022/lib/components/table/table.component.mjs +4 -3
- package/table/fesm2022/wlcm-angular-table.mjs +3 -2
- package/table/fesm2022/wlcm-angular-table.mjs.map +1 -1
- package/table/lib/components/table/table.component.d.ts +2 -1
- package/forms/esm2022/lib/forms/directives/ac-input-binder.directive.mjs +0 -33
- package/forms/lib/forms/directives/ac-input-binder.directive.d.ts +0 -5
@@ -10,11 +10,11 @@ export class WlcmFiltersButtonComponent {
|
|
10
10
|
this.filtersChange = new EventEmitter();
|
11
11
|
}
|
12
12
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmFiltersButtonComponent, selector: "wlcm-filters-button", inputs: { panel: "panel", filters: "filters" }, outputs: { filtersChange: "filtersChange" }, ngImport: i0, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmFiltersButtonComponent, selector: "wlcm-filters-button", inputs: { panel: "panel", filters: "filters" }, outputs: { filtersChange: "filtersChange" }, ngImport: i0, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters\n @if (filtersCount > 0) {\n <div class=\"wlcm-entities-count\">{{ filtersCount }}</div>\n }\n </wlcm-button>\n</ng-container>\n", styles: [":host{display:block}:host .wlcm-entities-count{margin-left:8px}\n"], dependencies: [{ kind: "directive", type: i1.RxLet, selector: "[rxLet]", inputs: ["rxLet", "rxLetStrategy", "rxLetComplete", "rxLetError", "rxLetSuspense", "rxLetContextTrigger", "rxLetCompleteTrigger", "rxLetErrorTrigger", "rxLetSuspenseTrigger", "rxLetNextTrigger", "rxLetRenderCallback", "rxLetParent", "rxLetPatchZone"], outputs: ["rendered"] }, { kind: "component", type: i2.WlcmButtonComponent, selector: "wlcm-button", inputs: ["type", "size", "isDisabled", "isLoading"], outputs: ["clicked"] }, { kind: "directive", type: i3.WlcmFiltersTriggerDirective, selector: "[wlcmFiltersTrigger]", inputs: ["wlcmFiltersTrigger"] }, { kind: "pipe", type: i4.WlcmTotalFiltersAppliedPipe, name: "totalFiltersApplied" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
14
14
|
}
|
15
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersButtonComponent, decorators: [{
|
16
16
|
type: Component,
|
17
|
-
args: [{ selector: 'wlcm-filters-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters
|
17
|
+
args: [{ selector: 'wlcm-filters-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters\n @if (filtersCount > 0) {\n <div class=\"wlcm-entities-count\">{{ filtersCount }}</div>\n }\n </wlcm-button>\n</ng-container>\n", styles: [":host{display:block}:host .wlcm-entities-count{margin-left:8px}\n"] }]
|
18
18
|
}], propDecorators: { panel: [{
|
19
19
|
type: Input
|
20
20
|
}], filters: [{
|
@@ -22,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
22
22
|
}], filtersChange: [{
|
23
23
|
type: Output
|
24
24
|
}] } });
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9maWx0ZXJzL3NyYy9saWIvZmlsdGVycy9jb21wb25lbnRzL2ZpbHRlcnMtYnV0dG9uL2ZpbHRlcnMtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZmlsdGVycy9zcmMvbGliL2ZpbHRlcnMvY29tcG9uZW50cy9maWx0ZXJzLWJ1dHRvbi9maWx0ZXJzLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFTcEUsTUFBTSxPQUFPLDBCQUEwQjtJQU52QztRQVdZLGtCQUFhLEdBQStCLElBQUksWUFBWSxFQUFFLENBQUM7S0FDMUU7OEdBTlksMEJBQTBCO2tHQUExQiwwQkFBMEIsd0pDVnZDLHFjQWFBOzsyRkRIYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2xjbUZpbHRlcnNDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50JztcbmltcG9ydCB7IFF1ZXJ5RmlsdGVycyB9IGZyb20gJ0B3bGNtL2FuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tZmlsdGVycy1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVycy1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXJzLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbUZpbHRlcnNCdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBwYW5lbCE6IFdsY21GaWx0ZXJzQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpIGZpbHRlcnMhOiBRdWVyeUZpbHRlcnM7XG5cbiAgQE91dHB1dCgpIGZpbHRlcnNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxRdWVyeUZpbHRlcnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xufVxuIiwiPG5nLWNvbnRhaW5lciAqcnhMZXQ9XCJmaWx0ZXJzIHwgdG90YWxGaWx0ZXJzQXBwbGllZCBhcyBmaWx0ZXJzQ291bnRcIj5cbiAgPHdsY20tYnV0dG9uXG4gICAgW3dsY21GaWx0ZXJzVHJpZ2dlcl09XCJwYW5lbFwiXG4gICAgW3dsY21GaWx0ZXJzVHJpZ2dlckRhdGFdPVwiZmlsdGVyc1wiXG4gICAgKHdsY21GaWx0ZXJzVHJpZ2dlckRhdGFDaGFuZ2VzKT1cImZpbHRlcnNDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICBbdHlwZV09XCJmaWx0ZXJzQ291bnQgPiAwID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICA+XG4gICAgRmlsdGVyc1xuICAgIEBpZiAoZmlsdGVyc0NvdW50ID4gMCkge1xuICAgICAgPGRpdiBjbGFzcz1cIndsY20tZW50aXRpZXMtY291bnRcIj57eyBmaWx0ZXJzQ291bnQgfX08L2Rpdj5cbiAgICB9XG4gIDwvd2xjbS1idXR0b24+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
@@ -416,11 +416,11 @@ class WlcmFiltersButtonComponent {
|
|
416
416
|
this.filtersChange = new EventEmitter();
|
417
417
|
}
|
418
418
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
419
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmFiltersButtonComponent, selector: "wlcm-filters-button", inputs: { panel: "panel", filters: "filters" }, outputs: { filtersChange: "filtersChange" }, ngImport: i0, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters
|
419
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmFiltersButtonComponent, selector: "wlcm-filters-button", inputs: { panel: "panel", filters: "filters" }, outputs: { filtersChange: "filtersChange" }, ngImport: i0, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters\n @if (filtersCount > 0) {\n <div class=\"wlcm-entities-count\">{{ filtersCount }}</div>\n }\n </wlcm-button>\n</ng-container>\n", styles: [":host{display:block}:host .wlcm-entities-count{margin-left:8px}\n"], dependencies: [{ kind: "directive", type: i2.RxLet, selector: "[rxLet]", inputs: ["rxLet", "rxLetStrategy", "rxLetComplete", "rxLetError", "rxLetSuspense", "rxLetContextTrigger", "rxLetCompleteTrigger", "rxLetErrorTrigger", "rxLetSuspenseTrigger", "rxLetNextTrigger", "rxLetRenderCallback", "rxLetParent", "rxLetPatchZone"], outputs: ["rendered"] }, { kind: "component", type: i4.WlcmButtonComponent, selector: "wlcm-button", inputs: ["type", "size", "isDisabled", "isLoading"], outputs: ["clicked"] }, { kind: "directive", type: WlcmFiltersTriggerDirective, selector: "[wlcmFiltersTrigger]", inputs: ["wlcmFiltersTrigger"] }, { kind: "pipe", type: WlcmTotalFiltersAppliedPipe, name: "totalFiltersApplied" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
420
420
|
}
|
421
421
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFiltersButtonComponent, decorators: [{
|
422
422
|
type: Component,
|
423
|
-
args: [{ selector: 'wlcm-filters-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters
|
423
|
+
args: [{ selector: 'wlcm-filters-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters\n @if (filtersCount > 0) {\n <div class=\"wlcm-entities-count\">{{ filtersCount }}</div>\n }\n </wlcm-button>\n</ng-container>\n", styles: [":host{display:block}:host .wlcm-entities-count{margin-left:8px}\n"] }]
|
424
424
|
}], propDecorators: { panel: [{
|
425
425
|
type: Input
|
426
426
|
}], filters: [{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"wlcm-angular-filters.mjs","sources":["../../../../modules/filters/src/lib/filters/directives/filters-content.directive.ts","../../../../modules/filters/src/lib/filters/models/filters.models.ts","../../../../modules/filters/src/lib/filters/utils/filters.utils.ts","../../../../modules/filters/src/lib/filters/components/filters-panel/filters-panel.component.ts","../../../../modules/filters/src/lib/filters/components/filters-panel/filters-panel.component.html","../../../../modules/filters/src/lib/filters/components/filters/filters.component.ts","../../../../modules/filters/src/lib/filters/components/filters/filters.component.html","../../../../modules/filters/src/lib/filters/models/filters-default-selection-model.ts","../../../../modules/filters/src/lib/filters/models/filters-trigger.base.ts","../../../../modules/filters/src/lib/filters/directives/filters-trigger.directive.ts","../../../../modules/filters/src/lib/filters/pipes/is-filters-param-checked.pipe.ts","../../../../modules/filters/src/lib/filters/components/filters-unit/filters-unit.component.ts","../../../../modules/filters/src/lib/filters/components/filters-unit/filters-unit.component.html","../../../../modules/filters/src/lib/filters/pipes/total-filters-applied.pipe.ts","../../../../modules/filters/src/lib/filters/components/filters-button/filters-button.component.ts","../../../../modules/filters/src/lib/filters/components/filters-button/filters-button.component.html","../../../../modules/filters/src/lib/filters/filters.module.ts","../../../../modules/filters/src/wlcm-angular-filters.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({ selector: '[wlcmFiltersContent]' })\nexport class WlcmFiltersContentDirective {}\n","import { QueryFilters } from '@wlcm/angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport class WlcmFiltersUnit {\n param: string = '';\n\n data: string[] = [];\n\n parent: WlcmFiltersSelectionModel;\n\n private readonly _dataChanges$: BehaviorSubject<string[]> = new BehaviorSubject([...this.data]);\n\n readonly dataChanges$: Observable<string[]> = this._dataChanges$.asObservable();\n\n constructor(param: string, parent: WlcmFiltersSelectionModel) {\n this.param = param;\n this.parent = parent;\n }\n\n add(value: string): void {\n this.data = [...this.data, value];\n\n this.notifyChanges();\n }\n\n setAll(value: string[], onlySelf: boolean = false): void {\n this.data = [...value];\n\n this.notifyChanges(onlySelf);\n }\n\n remove(value: string): void {\n this.data = this.data.filter((_value: string) => _value !== value);\n\n this.notifyChanges();\n }\n\n reset(onlySelf: boolean = false): void {\n this.data = [];\n\n this.notifyChanges(onlySelf);\n }\n\n clone(parent: WlcmFiltersSelectionModel): WlcmFiltersUnit {\n const unit: WlcmFiltersUnit = new WlcmFiltersUnit(this.param, parent);\n\n unit.data = [...this.data];\n\n unit.notifyChanges(true);\n\n return unit;\n }\n\n private notifyChanges(onlySelf: boolean = false): void {\n this._dataChanges$.next([...this.data]);\n\n if (!onlySelf) {\n this.parent.syncUnitChanges();\n }\n }\n}\n\nexport interface WlcmFiltersModel {\n [key: string]: WlcmFiltersUnit;\n}\n\nexport abstract class WlcmFiltersSelectionModel {\n abstract model: WlcmFiltersModel;\n\n abstract readonly modelChanges$: Observable<WlcmFiltersModel>;\n\n abstract add(param: string, unit: WlcmFiltersUnit, wlcmtChanges?: boolean): void;\n\n abstract has(param: string): boolean;\n\n abstract get(param: string): WlcmFiltersUnit;\n\n abstract createUnit(param: string): WlcmFiltersUnit;\n\n abstract updateSelection(model: WlcmFiltersModel): void;\n\n abstract syncUnitChanges(): void;\n\n abstract clone(): WlcmFiltersSelectionModel;\n\n abstract reset(): void;\n\n abstract get isEmpty(): boolean;\n}\n\nexport abstract class WlcmFiltersTriggerControl {\n abstract close(): void;\n}\n\nexport type CountResultsFn = (filters: QueryFilters) => Observable<number>;\n\nexport interface WlcmFiltersPanelControl {\n readonly loading$: Observable<boolean>;\n\n readonly totalResults$: Observable<number | null>;\n\n apply(): void;\n\n reset(): void;\n}\n","import { QueryFilter, QueryFilters } from '@wlcm/angular/core';\nimport { WlcmFiltersModel } from '../models/filters.models';\n\nexport class WlcmFiltersUtils {\n static modelToQueryFilters(model: WlcmFiltersModel): QueryFilters {\n const filters: QueryFilters = {};\n\n Object.keys(model).forEach((key: string) => {\n const data: string[] = model[key].data;\n\n if (data.length > 0) {\n filters[key] = { oneOf: data } as QueryFilter;\n }\n });\n\n return filters;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Injector,\n Input,\n OnInit,\n SkipSelf,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport {\n CountResultsFn,\n WlcmFiltersModel,\n WlcmFiltersTriggerControl,\n WlcmFiltersSelectionModel,\n} from '../../models/filters.models';\nimport { BehaviorSubject, Subject, auditTime, filter, switchMap } from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmFiltersUtils } from '../../utils/filters.utils';\nimport { QueryFilters, WlcmStreamUtils } from '@wlcm/angular/core';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-filters-panel',\n templateUrl: './filters-panel.component.html',\n styleUrls: ['./filters-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: WlcmFiltersSelectionModel,\n useFactory: () => inject(WlcmFiltersSelectionModel, { skipSelf: true }).clone(),\n },\n ],\n})\nexport class WlcmFiltersPanelComponent implements OnInit {\n @Input() countResults?: CountResultsFn;\n\n @Input() filtersContent!: TemplateRef<void>;\n\n readonly loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n readonly totalResults$: BehaviorSubject<number | null> = new BehaviorSubject<number | null>(null);\n\n private _selectionModel: WlcmFiltersSelectionModel = inject(WlcmFiltersSelectionModel);\n\n private _countResults$: Subject<WlcmFiltersModel> = new Subject();\n\n constructor(\n protected injector: Injector,\n private panelControl: WlcmFiltersTriggerControl,\n @SkipSelf() private globalSelectionModel: WlcmFiltersSelectionModel\n ) {\n this.handleCountResultsEvent();\n this.handleSelectionChanges();\n }\n\n ngOnInit(): void {\n this._countResults$.next(this._selectionModel.model);\n }\n\n apply(): void {\n this.updateGlobalModel();\n\n this.panelControl.close();\n }\n\n reset(): void {\n this._selectionModel.reset();\n }\n\n close(): void {\n this.panelControl.close();\n }\n\n private updateGlobalModel(): void {\n this.globalSelectionModel.updateSelection(this._selectionModel.model);\n }\n\n private handleSelectionChanges(): void {\n this._selectionModel.modelChanges$\n .pipe(untilDestroyed(this))\n .subscribe((model: WlcmFiltersModel) => this._countResults$.next(model));\n }\n\n private handleCountResultsEvent(): void {\n this._countResults$\n .pipe(filter(() => this.countResults instanceof Function))\n .pipe(\n switchMap((model: WlcmFiltersModel) => {\n const filters: QueryFilters = WlcmFiltersUtils.modelToQueryFilters(model);\n\n return (this.countResults as CountResultsFn)(filters).pipe(\n auditTime(300),\n WlcmStreamUtils.loadingDetector(this.loading$)\n );\n })\n )\n .subscribe((totalResults: number) => this.totalResults$.next(totalResults));\n }\n}\n","<div class=\"wlcm-filters-panel\">\n <div class=\"wlcm-filters-panel-header\">\n <h4 class=\"filters-panel__title\">Filters</h4>\n\n <wlcm-close-icon\n (click)=\"close()\"\n class=\"wlcm-cursor-pointer\"\n ></wlcm-close-icon>\n </div>\n\n <div class=\"wlcm-filters-panel-units\">\n <ng-container\n *ngTemplateOutlet=\"filtersContent; injector: injector\"\n ></ng-container>\n </div>\n\n <div class=\"wlcm-filters-panel-actions\">\n <wlcm-button type=\"borderless\" (clicked)=\"reset()\">Reset All</wlcm-button>\n\n <wlcm-button\n (clicked)=\"apply()\"\n *rxLet=\"loading$ | async as isLoading\"\n [isLoading]=\"isLoading\"\n >\n Show\n\n <ng-container *rxLet=\"totalResults$ | async as totalResults\">\n <ng-container *ngIf=\"totalResults !== null && !isLoading\">\n ({{ totalResults }})\n </ng-container>\n </ng-container>\n </wlcm-button>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, Type, ViewChild } from '@angular/core';\nimport { WlcmFiltersContentDirective } from '../../directives/filters-content.directive';\nimport { CountResultsFn } from '../../models/filters.models';\n\n@Component({\n selector: 'wlcm-filters',\n templateUrl: './filters.component.html',\n styleUrls: ['./filters.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'wlcmFilters',\n})\nexport class WlcmFiltersComponent {\n @Input() countResults?: CountResultsFn;\n\n @ViewChild('filtersPanelTemplate') public templateRef!: TemplateRef<void>;\n\n @ContentChild(WlcmFiltersContentDirective, { read: TemplateRef }) protected filtersContent!: TemplateRef<void>;\n}\n","<ng-template #filtersPanelTemplate>\n <wlcm-filters-panel\n [countResults]=\"countResults\"\n [filtersContent]=\"filtersContent\"\n >\n </wlcm-filters-panel>\n</ng-template>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { WlcmFiltersModel, WlcmFiltersSelectionModel, WlcmFiltersUnit } from './filters.models';\n\nexport class FiltersDefaultSelectionModel extends WlcmFiltersSelectionModel {\n model: WlcmFiltersModel = {};\n\n private readonly _modelChanges$: BehaviorSubject<WlcmFiltersModel> = new BehaviorSubject({ ...this.model });\n\n readonly modelChanges$: Observable<WlcmFiltersModel> = this._modelChanges$.asObservable();\n\n add(param: string, unit: WlcmFiltersUnit, wlcmtChanges: boolean = true): void {\n this.model[param] = unit;\n\n if (wlcmtChanges) {\n this.notifyChanges();\n }\n }\n\n has(param: string): boolean {\n return this.model[param] instanceof WlcmFiltersUnit;\n }\n\n get(param: string): WlcmFiltersUnit {\n return this.model[param];\n }\n\n createUnit(param: string): WlcmFiltersUnit {\n return new WlcmFiltersUnit(param, this);\n }\n\n updateSelection(model: WlcmFiltersModel): void {\n this.model = this.cloneModel(model, this);\n\n this.notifyChanges();\n }\n\n syncUnitChanges(): void {\n this.notifyChanges();\n }\n\n clone(): WlcmFiltersSelectionModel {\n const clone: WlcmFiltersSelectionModel = new FiltersDefaultSelectionModel();\n\n clone.updateSelection({ ...this.model });\n\n return clone;\n }\n\n reset(): void {\n Object.values(this.model).forEach((unit: WlcmFiltersUnit) => unit.reset(true));\n\n this.notifyChanges();\n }\n\n get isEmpty(): boolean {\n return (\n Object.keys(this.model).length == 0 ||\n Object.values(this.model).every((unit: WlcmFiltersUnit) => unit.data.length === 0)\n );\n }\n\n private cloneModel(model: WlcmFiltersModel, parent: WlcmFiltersSelectionModel): WlcmFiltersModel {\n const _model: WlcmFiltersModel = {};\n\n Object.keys(model).forEach((param: string) => {\n _model[param] = model[param].clone(parent);\n });\n\n return _model;\n }\n\n private notifyChanges(): void {\n this._modelChanges$.next({ ...this.model });\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { WlcmFiltersModel, WlcmFiltersSelectionModel, WlcmFiltersUnit } from './filters.models';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmFiltersUtils } from '../utils/filters.utils';\nimport { QueryFilters } from '@wlcm/angular/core';\nimport { skip } from 'rxjs';\n\n@UntilDestroy()\n@Directive()\nexport class FiltersTriggerBase {\n @Input('wlcmFiltersTriggerData') set filters(value: QueryFilters | undefined) {\n this._filters = value;\n\n this.updateSelectionModel();\n }\n\n @Output('wlcmFiltersTriggerDataChanges') filtersChanges: EventEmitter<QueryFilters> = new EventEmitter();\n\n private _filters: QueryFilters | undefined;\n\n constructor(protected selectionModel: WlcmFiltersSelectionModel) {}\n\n protected updateSelectionModel(): void {\n if (!this._filters || Object.values(this._filters).length === 0) {\n if (!this.selectionModel.isEmpty) {\n this.selectionModel.reset();\n }\n } else {\n const filters: QueryFilters = this._filters;\n\n Object.keys(filters).forEach((param: string) => {\n const unit: WlcmFiltersUnit = this.selectionModel.createUnit(param);\n\n unit.setAll(filters[param].oneOf as string[], true);\n\n this.selectionModel.add(param, unit, false);\n });\n }\n }\n\n protected handleModelChanges(): void {\n this.selectionModel.modelChanges$.pipe(untilDestroyed(this), skip(1)).subscribe((model: WlcmFiltersModel) => {\n const filters: QueryFilters = WlcmFiltersUtils.modelToQueryFilters(model);\n\n this.filtersChanges.next(filters);\n });\n }\n}\n","import { Directive, ElementRef, HostListener, Injector, Input, ViewContainerRef } from '@angular/core';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { FiltersDefaultSelectionModel } from '../models/filters-default-selection-model';\nimport { WlcmFiltersSelectionModel, WlcmFiltersTriggerControl } from '../models/filters.models';\nimport { WlcmFiltersComponent } from '../components/filters/filters.component';\nimport { FiltersTriggerBase } from '../models/filters-trigger.base';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Directive({\n selector: '[wlcmFiltersTrigger]',\n providers: [{ provide: WlcmFiltersSelectionModel, useClass: FiltersDefaultSelectionModel }],\n})\nexport class WlcmFiltersTriggerDirective extends FiltersTriggerBase {\n @Input('wlcmFiltersTrigger') panel!: WlcmFiltersComponent;\n\n @HostListener('click') openPanel(): void {\n if (this.overlayRef instanceof OverlayRef) return;\n\n const config: OverlayConfig = this.createOverlayConfig();\n\n const injector: Injector = this.createInjector();\n\n this.overlayRef = this.overlay.create(config);\n\n this.overlayRef.attach(new TemplatePortal(this.panel.templateRef, this.viewContainerRef, null, injector));\n }\n\n private overlayRef: OverlayRef | null = null;\n\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n protected override selectionModel: WlcmFiltersSelectionModel\n ) {\n super(selectionModel);\n\n this.handleModelChanges();\n }\n\n close(): void {\n this.overlayRef?.dispose();\n\n this.overlayRef = null;\n }\n\n private createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: WlcmFiltersSelectionModel, useValue: this.selectionModel },\n { provide: WlcmFiltersTriggerControl, useValue: { close: this.close.bind(this) } },\n ],\n parent: this.injector,\n });\n }\n\n private createOverlayConfig(): OverlayConfig {\n const strategy: FlexibleConnectedPositionStrategy = this.overlay.position().flexibleConnectedTo(this.elementRef);\n\n strategy.withPositions([{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }]);\n\n strategy.withDefaultOffsetY(5);\n\n return new OverlayConfig({\n width: '300px',\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n }\n}\n","import { Host, Pipe, PipeTransform } from '@angular/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\n\n@Pipe({ name: 'isFiltersParamChecked' })\nexport class IsFiltersParamCheckedPipe implements PipeTransform {\n transform(data: Set<string>): boolean {\n return data.has(this.checkbox.value);\n }\n\n constructor(@Host() private checkbox: MatCheckbox) {}\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { WlcmFiltersSelectionModel, WlcmFiltersUnit } from '../../models/filters.models';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { WlcmOption } from '@wlcm/angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Component({\n selector: 'wlcm-filters-unit',\n templateUrl: './filters-unit.component.html',\n styleUrls: ['./filters-unit.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmFiltersUnitComponent implements OnInit {\n @Input() label: string = '';\n\n @Input() param: string = '';\n\n @Input() options: WlcmOption[] = [];\n\n protected filtersUnit!: WlcmFiltersUnit;\n\n protected dataChanges$!: Observable<Set<string>>;\n\n constructor(private selectionModel: WlcmFiltersSelectionModel) {}\n\n ngOnInit(): void {\n this.initializeFiltersUnit();\n }\n\n reset(): void {\n this.filtersUnit.reset();\n }\n\n change(event: MatCheckboxChange): void {\n if (event.checked) {\n this.filtersUnit.add(event.source.value);\n } else {\n this.filtersUnit.remove(event.source.value);\n }\n }\n\n private initializeFiltersUnit(): void {\n if (this.selectionModel.has(this.param)) {\n this.filtersUnit = this.selectionModel.get(this.param);\n } else {\n this.filtersUnit = this.selectionModel.createUnit(this.param);\n\n this.selectionModel.add(this.param, this.filtersUnit, false);\n }\n\n this.dataChanges$ = this.filtersUnit.dataChanges$.pipe(map((data: string[]) => new Set(data)));\n }\n}\n","<mat-expansion-panel class=\"wlcm-filters-unit\" hideToggle>\n <mat-expansion-panel-header collapsedHeight=\"30px\" expandedHeight=\"30px\">\n <div class=\"wlcm-filters-unit-header\">\n <section>\n <span class=\"wlcm-filters-unit-header__label\">{{ label }}</span>\n\n <div\n class=\"wlcm-entities-count\"\n *ngIf=\"(dataChanges$ | async)!.size as size\"\n >\n {{ size }}\n </div>\n </section>\n\n <section>\n <button\n class=\"reset-btn cursor-pointer\"\n (click)=\"reset(); $event.stopPropagation()\"\n *ngIf=\"(dataChanges$ | async)!.size > 0\"\n >\n Reset\n </button>\n\n <wlcm-chevron-down-icon\n class=\"wlcm-filters-unit__chevron\"\n ></wlcm-chevron-down-icon>\n </section>\n </div>\n </mat-expansion-panel-header>\n\n <div class=\"wlcm-filters-unit-checkboxes\">\n <ng-container *ngFor=\"let option of options\">\n <mat-checkbox\n [value]=\"$any(option.value)\"\n [checked]=\"(dataChanges$ | async)! | isFiltersParamChecked\"\n (change)=\"change($event)\"\n >\n {{ option.viewValue }}\n </mat-checkbox>\n </ng-container>\n </div>\n</mat-expansion-panel>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { QueryFilter, QueryFilters } from '@wlcm/angular/core';\n\n@Pipe({ name: 'totalFiltersApplied', standalone: true })\nexport class WlcmTotalFiltersAppliedPipe implements PipeTransform {\n transform(filters: QueryFilters | undefined): number {\n if (!filters) return 0;\n\n return Object.values(filters).reduce((total: number, filter: QueryFilter) => {\n return total + (filter.oneOf?.length || 0);\n }, 0);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { WlcmFiltersComponent } from '../filters/filters.component';\nimport { QueryFilters } from '@wlcm/angular/core';\n\n@Component({\n selector: 'wlcm-filters-button',\n templateUrl: './filters-button.component.html',\n styleUrls: ['./filters-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmFiltersButtonComponent {\n @Input() panel!: WlcmFiltersComponent;\n\n @Input() filters!: QueryFilters;\n\n @Output() filtersChange: EventEmitter<QueryFilters> = new EventEmitter();\n}\n","<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters @if(filtersCount>0) {\n <div class=\"wlcm-entities-count\">{{ filtersCount }}</div>\n }\n </wlcm-button>\n</ng-container>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmFiltersComponent } from './components/filters/filters.component';\nimport { WlcmFiltersTriggerDirective } from './directives/filters-trigger.directive';\nimport { WlcmFiltersUnitComponent } from './components/filters-unit/filters-unit.component';\nimport { WlcmFiltersPanelComponent } from './components/filters-panel/filters-panel.component';\nimport { WlcmFiltersContentDirective } from './directives/filters-content.directive';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { IsFiltersParamCheckedPipe } from './pipes/is-filters-param-checked.pipe';\nimport { WlcmTotalFiltersAppliedPipe } from './pipes/total-filters-applied.pipe';\nimport { ChevronDownIconComponent, CloseIconComponent } from '@wlcm/angular/core';\nimport { WlcmButtonComponent } from '@wlcm/angular/button';\nimport { WlcmFiltersButtonComponent } from './components/filters-button/filters-button.component';\nimport { RxLet } from '@rx-angular/template/let';\n\nconst publicComponents: Type<unknown>[] = [WlcmFiltersComponent, WlcmFiltersUnitComponent, WlcmFiltersButtonComponent];\n\nconst publicDirectives: Type<unknown>[] = [WlcmFiltersTriggerDirective, WlcmFiltersContentDirective];\n\n@NgModule({\n imports: [\n RxLet,\n CommonModule,\n MatExpansionModule,\n MatCheckboxModule,\n WlcmTotalFiltersAppliedPipe,\n ChevronDownIconComponent,\n WlcmButtonComponent,\n CloseIconComponent,\n ],\n declarations: [...publicComponents, ...publicDirectives, WlcmFiltersPanelComponent, IsFiltersParamCheckedPipe],\n exports: [...publicComponents, ...publicDirectives],\n})\nexport class WlcmFiltersModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.WlcmFiltersTriggerControl","i1.WlcmFiltersSelectionModel","i1.WlcmFiltersPanelComponent","i2.WlcmFiltersSelectionModel","i1","i2","i3","i4","i6.IsFiltersParamCheckedPipe","i3.WlcmFiltersTriggerDirective","i4.WlcmTotalFiltersAppliedPipe"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAGa,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;mBAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAA;;;MCClC,eAAe,CAAA;IAW1B,WAAY,CAAA,KAAa,EAAE,MAAiC,EAAA;QAV5D,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QAEnB,IAAI,CAAA,IAAA,GAAa,EAAE,CAAC;QAIH,IAAa,CAAA,aAAA,GAA8B,IAAI,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvF,QAAA,IAAA,CAAA,YAAY,GAAyB,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;AAG9E,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;AAED,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAElC,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAED,IAAA,MAAM,CAAC,KAAe,EAAE,QAAA,GAAoB,KAAK,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAEvB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC9B;AAED,IAAA,MAAM,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAc,KAAK,MAAM,KAAK,KAAK,CAAC,CAAC;QAEnE,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,KAAK,CAAC,WAAoB,KAAK,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAEf,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC9B;AAED,IAAA,KAAK,CAAC,MAAiC,EAAA;QACrC,MAAM,IAAI,GAAoB,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAE3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAEzB,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,aAAa,CAAC,WAAoB,KAAK,EAAA;AAC7C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;SAC/B;KACF;AACF,CAAA;MAMqB,yBAAyB,CAAA;AAsB9C,CAAA;MAEqB,yBAAyB,CAAA;AAE9C;;MCzFY,gBAAgB,CAAA;IAC3B,OAAO,mBAAmB,CAAC,KAAuB,EAAA;QAChD,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;YACzC,MAAM,IAAI,GAAa,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAEvC,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAiB,CAAC;aAC/C;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,OAAO,CAAC;KAChB;AACF;;ACiBM,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB,CAAA;AAapC,IAAA,WAAA,CACY,QAAkB,EACpB,YAAuC,EAC3B,oBAA+C,EAAA;QAFzD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACpB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA2B;QAC3B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAA2B;AAX5D,QAAA,IAAA,CAAA,QAAQ,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAEhE,QAAA,IAAA,CAAA,aAAa,GAAmC,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;AAE1F,QAAA,IAAA,CAAA,eAAe,GAA8B,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAE/E,QAAA,IAAA,CAAA,cAAc,GAA8B,IAAI,OAAO,EAAE,CAAC;QAOhE,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACtD;IAED,KAAK,GAAA;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEzB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAC3B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;KAC9B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAC3B;IAEO,iBAAiB,GAAA;QACvB,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KACvE;IAEO,sBAAsB,GAAA;QAC5B,IAAI,CAAC,eAAe,CAAC,aAAa;AAC/B,aAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA,SAAS,CAAC,CAAC,KAAuB,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAC5E;IAEO,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,YAAY,QAAQ,CAAC,CAAC;AACzD,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,KAAuB,KAAI;YACpC,MAAM,OAAO,GAAiB,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAE1E,OAAQ,IAAI,CAAC,YAA+B,CAAC,OAAO,CAAC,CAAC,IAAI,CACxD,SAAS,CAAC,GAAG,CAAC,EACd,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC/C,CAAC;AACJ,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC,CAAC,YAAoB,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;KAC/E;8GAhEU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAPzB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,yBAAyB;AAClC,gBAAA,UAAU,EAAE,MAAM,MAAM,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;AAChF,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCH,k8BAkCA,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;ADAa,yBAAyB,GAAA,UAAA,CAAA;AAbrC,IAAA,YAAY,EAAE;qCA2BS,QAAQ;QACN,yBAAyB;QACL,yBAAyB,CAAA,CAAA;AAhB1D,CAAA,EAAA,yBAAyB,CAiErC,CAAA;2FAjEY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAGb,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,yBAAyB;AAClC,4BAAA,UAAU,EAAE,MAAM,MAAM,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;AAChF,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,k8BAAA,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA,CAAA;;0BAkBE,QAAQ;yCAfF,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;;;ME1BK,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAKjB,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,2BAA2B,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,6KChBhE,0LAOA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDIa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAGP,eAAA,EAAA,uBAAuB,CAAC,MAAM,YACrC,aAAa,EAAA,QAAA,EAAA,0LAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;8BAGd,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEoC,WAAW,EAAA,CAAA;sBAApD,SAAS;uBAAC,sBAAsB,CAAA;gBAE2C,cAAc,EAAA,CAAA;sBAAzF,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;AEb5D,MAAO,4BAA6B,SAAQ,yBAAyB,CAAA;AAA3E,IAAA,WAAA,GAAA;;QACE,IAAK,CAAA,KAAA,GAAqB,EAAE,CAAC;QAEZ,IAAc,CAAA,cAAA,GAAsC,IAAI,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAEnG,QAAA,IAAA,CAAA,aAAa,GAAiC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAkE3F;AAhEC,IAAA,GAAG,CAAC,KAAa,EAAE,IAAqB,EAAE,eAAwB,IAAI,EAAA;AACpE,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAEzB,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;KACF;AAED,IAAA,GAAG,CAAC,KAAa,EAAA;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,eAAe,CAAC;KACrD;AAED,IAAA,GAAG,CAAC,KAAa,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC1B;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACzC;AAED,IAAA,eAAe,CAAC,KAAuB,EAAA;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,KAAK,GAAA;AACH,QAAA,MAAM,KAAK,GAA8B,IAAI,4BAA4B,EAAE,CAAC;QAE5E,KAAK,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAEzC,QAAA,OAAO,KAAK,CAAC;KACd;IAED,KAAK,GAAA;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAqB,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/E,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,QACE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAqB,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAClF;KACH;IAEO,UAAU,CAAC,KAAuB,EAAE,MAAiC,EAAA;QAC3E,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAa,KAAI;AAC3C,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAC7C;AACF;;ACjEM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB,CAAA;IAC7B,IAAqC,OAAO,CAAC,KAA+B,EAAA;AAC1E,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAMD,IAAA,WAAA,CAAsB,cAAyC,EAAA;QAAzC,IAAc,CAAA,cAAA,GAAd,cAAc,CAA2B;AAJtB,QAAA,IAAA,CAAA,cAAc,GAA+B,IAAI,YAAY,EAAE,CAAC;KAItC;IAEzD,oBAAoB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/D,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAChC,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;aAC7B;SACF;aAAM;AACL,YAAA,MAAM,OAAO,GAAiB,IAAI,CAAC,QAAQ,CAAC;YAE5C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAa,KAAI;gBAC7C,MAAM,IAAI,GAAoB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEpE,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAiB,EAAE,IAAI,CAAC,CAAC;gBAEpD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,aAAC,CAAC,CAAC;SACJ;KACF;IAES,kBAAkB,GAAA;QAC1B,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAuB,KAAI;YAC1G,MAAM,OAAO,GAAiB,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAE1E,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;KACJ;8GArCU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAAlB,kBAAkB,GAAA,UAAA,CAAA;AAF9B,IAAA,YAAY,EAAE;qCAayB,yBAAyB,CAAA,CAAA;AAXpD,CAAA,EAAA,kBAAkB,CAsC9B,CAAA;2FAtCY,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,SAAS;2FAE6B,OAAO,EAAA,CAAA;sBAA3C,KAAK;uBAAC,wBAAwB,CAAA;gBAMU,cAAc,EAAA,CAAA;sBAAtD,MAAM;uBAAC,+BAA+B,CAAA;;;ACJnC,MAAO,2BAA4B,SAAQ,kBAAkB,CAAA;IAG1C,SAAS,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,UAAU,YAAY,UAAU;YAAE,OAAO;AAElD,QAAA,MAAM,MAAM,GAAkB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAEzD,QAAA,MAAM,QAAQ,GAAa,IAAI,CAAC,cAAc,EAAE,CAAC;QAEjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;KAC3G;IAID,WACU,CAAA,OAAgB,EAChB,QAAkB,EAClB,UAAsB,EACtB,gBAAkC,EACvB,cAAyC,EAAA;QAE5D,KAAK,CAAC,cAAc,CAAC,CAAC;QANd,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACvB,IAAc,CAAA,cAAA,GAAd,cAAc,CAA2B;QAPtD,IAAU,CAAA,UAAA,GAAsB,IAAI,CAAC;QAW3C,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAE3B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;IAEO,cAAc,GAAA;QACpB,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;AACrE,gBAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACnF,aAAA;YACD,MAAM,EAAE,IAAI,CAAC,QAAQ;AACtB,SAAA,CAAC,CAAC;KACJ;IAEO,mBAAmB,GAAA;AACzB,QAAA,MAAM,QAAQ,GAAsC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjH,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAElG,QAAA,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAE/B,OAAO,IAAI,aAAa,CAAC;AACvB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,gBAAgB,EAAE,QAAQ;YAC1B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3D,SAAA,CAAC,CAAC;KACJ;8GAzDU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAF3B,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhF,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC;AAC5F,iBAAA,CAAA;gMAE8B,KAAK,EAAA,CAAA;sBAAjC,KAAK;uBAAC,oBAAoB,CAAA;gBAEJ,SAAS,EAAA,CAAA;sBAA/B,YAAY;uBAAC,OAAO,CAAA;;;MCXV,yBAAyB,CAAA;AACpC,IAAA,SAAS,CAAC,IAAiB,EAAA;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtC;AAED,IAAA,WAAA,CAA4B,QAAqB,EAAA;QAArB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;KAAI;8GAL1C,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAzB,yBAAyB,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,IAAI;mBAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAA;;0BAMxB,IAAI;;;MCGN,wBAAwB,CAAA;AAWnC,IAAA,WAAA,CAAoB,cAAyC,EAAA;QAAzC,IAAc,CAAA,cAAA,GAAd,cAAc,CAA2B;QAVpD,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QAEnB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QAEnB,IAAO,CAAA,OAAA,GAAiB,EAAE,CAAC;KAM6B;IAEjE,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;KAC1B;AAED,IAAA,MAAM,CAAC,KAAwB,EAAA;AAC7B,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC1C;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC7C;KACF;IAEO,qBAAqB,GAAA;QAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACxD;aAAM;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE9D,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;SAC9D;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAc,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAChG;8GAvCU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,yHCZrC,+vCA0CA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,yBAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FD9Ba,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+vCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;2FAGtC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEbK,2BAA2B,CAAA;AACtC,IAAA,SAAS,CAAC,OAAiC,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,CAAC,CAAC;AAEvB,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAa,EAAE,MAAmB,KAAI;YAC1E,OAAO,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;SAC5C,EAAE,CAAC,CAAC,CAAC;KACP;8GAPU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;MCO1C,0BAA0B,CAAA;AANvC,IAAA,WAAA,GAAA;AAWY,QAAA,IAAA,CAAA,aAAa,GAA+B,IAAI,YAAY,EAAE,CAAC;AAC1E,KAAA;8GANY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,wJCVvC,2bAYA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDFa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2bAAA,EAAA,MAAA,EAAA,CAAA,mEAAA,CAAA,EAAA,CAAA;8BAGtC,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;AEET,MAAM,gBAAgB,GAAoB,CAAC,oBAAoB,EAAE,wBAAwB,EAAE,0BAA0B,CAAC,CAAC;AAEvH,MAAM,gBAAgB,GAAoB,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,CAAC;MAgBxF,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAlBa,YAAA,EAAA,CAAA,oBAAoB,EAAE,wBAAwB,EAAE,0BAA0B,EAE1E,2BAA2B,EAAE,2BAA2B,EAaxC,yBAAyB,EAAE,yBAAyB,aAT3G,KAAK;YACL,YAAY;YACZ,kBAAkB;YAClB,iBAAiB;YACjB,2BAA2B;YAC3B,wBAAwB;YACxB,mBAAmB;YACnB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAbqB,oBAAoB,EAAE,wBAAwB,EAAE,0BAA0B,EAE1E,2BAA2B,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA;AAgBtF,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAX1B,YAAY;YACZ,kBAAkB;YAClB,iBAAiB;YAEjB,wBAAwB;YACxB,mBAAmB;YACnB,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,KAAK;wBACL,YAAY;wBACZ,kBAAkB;wBAClB,iBAAiB;wBACjB,2BAA2B;wBAC3B,wBAAwB;wBACxB,mBAAmB;wBACnB,kBAAkB;AACnB,qBAAA;oBACD,YAAY,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,yBAAyB,EAAE,yBAAyB,CAAC;AAC9G,oBAAA,OAAO,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,CAAC;AACpD,iBAAA,CAAA;;;AClCD;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"wlcm-angular-filters.mjs","sources":["../../../../modules/filters/src/lib/filters/directives/filters-content.directive.ts","../../../../modules/filters/src/lib/filters/models/filters.models.ts","../../../../modules/filters/src/lib/filters/utils/filters.utils.ts","../../../../modules/filters/src/lib/filters/components/filters-panel/filters-panel.component.ts","../../../../modules/filters/src/lib/filters/components/filters-panel/filters-panel.component.html","../../../../modules/filters/src/lib/filters/components/filters/filters.component.ts","../../../../modules/filters/src/lib/filters/components/filters/filters.component.html","../../../../modules/filters/src/lib/filters/models/filters-default-selection-model.ts","../../../../modules/filters/src/lib/filters/models/filters-trigger.base.ts","../../../../modules/filters/src/lib/filters/directives/filters-trigger.directive.ts","../../../../modules/filters/src/lib/filters/pipes/is-filters-param-checked.pipe.ts","../../../../modules/filters/src/lib/filters/components/filters-unit/filters-unit.component.ts","../../../../modules/filters/src/lib/filters/components/filters-unit/filters-unit.component.html","../../../../modules/filters/src/lib/filters/pipes/total-filters-applied.pipe.ts","../../../../modules/filters/src/lib/filters/components/filters-button/filters-button.component.ts","../../../../modules/filters/src/lib/filters/components/filters-button/filters-button.component.html","../../../../modules/filters/src/lib/filters/filters.module.ts","../../../../modules/filters/src/wlcm-angular-filters.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({ selector: '[wlcmFiltersContent]' })\nexport class WlcmFiltersContentDirective {}\n","import { QueryFilters } from '@wlcm/angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport class WlcmFiltersUnit {\n param: string = '';\n\n data: string[] = [];\n\n parent: WlcmFiltersSelectionModel;\n\n private readonly _dataChanges$: BehaviorSubject<string[]> = new BehaviorSubject([...this.data]);\n\n readonly dataChanges$: Observable<string[]> = this._dataChanges$.asObservable();\n\n constructor(param: string, parent: WlcmFiltersSelectionModel) {\n this.param = param;\n this.parent = parent;\n }\n\n add(value: string): void {\n this.data = [...this.data, value];\n\n this.notifyChanges();\n }\n\n setAll(value: string[], onlySelf: boolean = false): void {\n this.data = [...value];\n\n this.notifyChanges(onlySelf);\n }\n\n remove(value: string): void {\n this.data = this.data.filter((_value: string) => _value !== value);\n\n this.notifyChanges();\n }\n\n reset(onlySelf: boolean = false): void {\n this.data = [];\n\n this.notifyChanges(onlySelf);\n }\n\n clone(parent: WlcmFiltersSelectionModel): WlcmFiltersUnit {\n const unit: WlcmFiltersUnit = new WlcmFiltersUnit(this.param, parent);\n\n unit.data = [...this.data];\n\n unit.notifyChanges(true);\n\n return unit;\n }\n\n private notifyChanges(onlySelf: boolean = false): void {\n this._dataChanges$.next([...this.data]);\n\n if (!onlySelf) {\n this.parent.syncUnitChanges();\n }\n }\n}\n\nexport interface WlcmFiltersModel {\n [key: string]: WlcmFiltersUnit;\n}\n\nexport abstract class WlcmFiltersSelectionModel {\n abstract model: WlcmFiltersModel;\n\n abstract readonly modelChanges$: Observable<WlcmFiltersModel>;\n\n abstract add(param: string, unit: WlcmFiltersUnit, wlcmtChanges?: boolean): void;\n\n abstract has(param: string): boolean;\n\n abstract get(param: string): WlcmFiltersUnit;\n\n abstract createUnit(param: string): WlcmFiltersUnit;\n\n abstract updateSelection(model: WlcmFiltersModel): void;\n\n abstract syncUnitChanges(): void;\n\n abstract clone(): WlcmFiltersSelectionModel;\n\n abstract reset(): void;\n\n abstract get isEmpty(): boolean;\n}\n\nexport abstract class WlcmFiltersTriggerControl {\n abstract close(): void;\n}\n\nexport type CountResultsFn = (filters: QueryFilters) => Observable<number>;\n\nexport interface WlcmFiltersPanelControl {\n readonly loading$: Observable<boolean>;\n\n readonly totalResults$: Observable<number | null>;\n\n apply(): void;\n\n reset(): void;\n}\n","import { QueryFilter, QueryFilters } from '@wlcm/angular/core';\nimport { WlcmFiltersModel } from '../models/filters.models';\n\nexport class WlcmFiltersUtils {\n static modelToQueryFilters(model: WlcmFiltersModel): QueryFilters {\n const filters: QueryFilters = {};\n\n Object.keys(model).forEach((key: string) => {\n const data: string[] = model[key].data;\n\n if (data.length > 0) {\n filters[key] = { oneOf: data } as QueryFilter;\n }\n });\n\n return filters;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Injector,\n Input,\n OnInit,\n SkipSelf,\n TemplateRef,\n inject,\n} from '@angular/core';\nimport {\n CountResultsFn,\n WlcmFiltersModel,\n WlcmFiltersTriggerControl,\n WlcmFiltersSelectionModel,\n} from '../../models/filters.models';\nimport { BehaviorSubject, Subject, auditTime, filter, switchMap } from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmFiltersUtils } from '../../utils/filters.utils';\nimport { QueryFilters, WlcmStreamUtils } from '@wlcm/angular/core';\n\n@UntilDestroy()\n@Component({\n selector: 'wlcm-filters-panel',\n templateUrl: './filters-panel.component.html',\n styleUrls: ['./filters-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: WlcmFiltersSelectionModel,\n useFactory: () => inject(WlcmFiltersSelectionModel, { skipSelf: true }).clone(),\n },\n ],\n})\nexport class WlcmFiltersPanelComponent implements OnInit {\n @Input() countResults?: CountResultsFn;\n\n @Input() filtersContent!: TemplateRef<void>;\n\n readonly loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n readonly totalResults$: BehaviorSubject<number | null> = new BehaviorSubject<number | null>(null);\n\n private _selectionModel: WlcmFiltersSelectionModel = inject(WlcmFiltersSelectionModel);\n\n private _countResults$: Subject<WlcmFiltersModel> = new Subject();\n\n constructor(\n protected injector: Injector,\n private panelControl: WlcmFiltersTriggerControl,\n @SkipSelf() private globalSelectionModel: WlcmFiltersSelectionModel\n ) {\n this.handleCountResultsEvent();\n this.handleSelectionChanges();\n }\n\n ngOnInit(): void {\n this._countResults$.next(this._selectionModel.model);\n }\n\n apply(): void {\n this.updateGlobalModel();\n\n this.panelControl.close();\n }\n\n reset(): void {\n this._selectionModel.reset();\n }\n\n close(): void {\n this.panelControl.close();\n }\n\n private updateGlobalModel(): void {\n this.globalSelectionModel.updateSelection(this._selectionModel.model);\n }\n\n private handleSelectionChanges(): void {\n this._selectionModel.modelChanges$\n .pipe(untilDestroyed(this))\n .subscribe((model: WlcmFiltersModel) => this._countResults$.next(model));\n }\n\n private handleCountResultsEvent(): void {\n this._countResults$\n .pipe(filter(() => this.countResults instanceof Function))\n .pipe(\n switchMap((model: WlcmFiltersModel) => {\n const filters: QueryFilters = WlcmFiltersUtils.modelToQueryFilters(model);\n\n return (this.countResults as CountResultsFn)(filters).pipe(\n auditTime(300),\n WlcmStreamUtils.loadingDetector(this.loading$)\n );\n })\n )\n .subscribe((totalResults: number) => this.totalResults$.next(totalResults));\n }\n}\n","<div class=\"wlcm-filters-panel\">\n <div class=\"wlcm-filters-panel-header\">\n <h4 class=\"filters-panel__title\">Filters</h4>\n\n <wlcm-close-icon\n (click)=\"close()\"\n class=\"wlcm-cursor-pointer\"\n ></wlcm-close-icon>\n </div>\n\n <div class=\"wlcm-filters-panel-units\">\n <ng-container\n *ngTemplateOutlet=\"filtersContent; injector: injector\"\n ></ng-container>\n </div>\n\n <div class=\"wlcm-filters-panel-actions\">\n <wlcm-button type=\"borderless\" (clicked)=\"reset()\">Reset All</wlcm-button>\n\n <wlcm-button\n (clicked)=\"apply()\"\n *rxLet=\"loading$ | async as isLoading\"\n [isLoading]=\"isLoading\"\n >\n Show\n\n <ng-container *rxLet=\"totalResults$ | async as totalResults\">\n <ng-container *ngIf=\"totalResults !== null && !isLoading\">\n ({{ totalResults }})\n </ng-container>\n </ng-container>\n </wlcm-button>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, Type, ViewChild } from '@angular/core';\nimport { WlcmFiltersContentDirective } from '../../directives/filters-content.directive';\nimport { CountResultsFn } from '../../models/filters.models';\n\n@Component({\n selector: 'wlcm-filters',\n templateUrl: './filters.component.html',\n styleUrls: ['./filters.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'wlcmFilters',\n})\nexport class WlcmFiltersComponent {\n @Input() countResults?: CountResultsFn;\n\n @ViewChild('filtersPanelTemplate') public templateRef!: TemplateRef<void>;\n\n @ContentChild(WlcmFiltersContentDirective, { read: TemplateRef }) protected filtersContent!: TemplateRef<void>;\n}\n","<ng-template #filtersPanelTemplate>\n <wlcm-filters-panel\n [countResults]=\"countResults\"\n [filtersContent]=\"filtersContent\"\n >\n </wlcm-filters-panel>\n</ng-template>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { WlcmFiltersModel, WlcmFiltersSelectionModel, WlcmFiltersUnit } from './filters.models';\n\nexport class FiltersDefaultSelectionModel extends WlcmFiltersSelectionModel {\n model: WlcmFiltersModel = {};\n\n private readonly _modelChanges$: BehaviorSubject<WlcmFiltersModel> = new BehaviorSubject({ ...this.model });\n\n readonly modelChanges$: Observable<WlcmFiltersModel> = this._modelChanges$.asObservable();\n\n add(param: string, unit: WlcmFiltersUnit, wlcmtChanges: boolean = true): void {\n this.model[param] = unit;\n\n if (wlcmtChanges) {\n this.notifyChanges();\n }\n }\n\n has(param: string): boolean {\n return this.model[param] instanceof WlcmFiltersUnit;\n }\n\n get(param: string): WlcmFiltersUnit {\n return this.model[param];\n }\n\n createUnit(param: string): WlcmFiltersUnit {\n return new WlcmFiltersUnit(param, this);\n }\n\n updateSelection(model: WlcmFiltersModel): void {\n this.model = this.cloneModel(model, this);\n\n this.notifyChanges();\n }\n\n syncUnitChanges(): void {\n this.notifyChanges();\n }\n\n clone(): WlcmFiltersSelectionModel {\n const clone: WlcmFiltersSelectionModel = new FiltersDefaultSelectionModel();\n\n clone.updateSelection({ ...this.model });\n\n return clone;\n }\n\n reset(): void {\n Object.values(this.model).forEach((unit: WlcmFiltersUnit) => unit.reset(true));\n\n this.notifyChanges();\n }\n\n get isEmpty(): boolean {\n return (\n Object.keys(this.model).length == 0 ||\n Object.values(this.model).every((unit: WlcmFiltersUnit) => unit.data.length === 0)\n );\n }\n\n private cloneModel(model: WlcmFiltersModel, parent: WlcmFiltersSelectionModel): WlcmFiltersModel {\n const _model: WlcmFiltersModel = {};\n\n Object.keys(model).forEach((param: string) => {\n _model[param] = model[param].clone(parent);\n });\n\n return _model;\n }\n\n private notifyChanges(): void {\n this._modelChanges$.next({ ...this.model });\n }\n}\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { WlcmFiltersModel, WlcmFiltersSelectionModel, WlcmFiltersUnit } from './filters.models';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WlcmFiltersUtils } from '../utils/filters.utils';\nimport { QueryFilters } from '@wlcm/angular/core';\nimport { skip } from 'rxjs';\n\n@UntilDestroy()\n@Directive()\nexport class FiltersTriggerBase {\n @Input('wlcmFiltersTriggerData') set filters(value: QueryFilters | undefined) {\n this._filters = value;\n\n this.updateSelectionModel();\n }\n\n @Output('wlcmFiltersTriggerDataChanges') filtersChanges: EventEmitter<QueryFilters> = new EventEmitter();\n\n private _filters: QueryFilters | undefined;\n\n constructor(protected selectionModel: WlcmFiltersSelectionModel) {}\n\n protected updateSelectionModel(): void {\n if (!this._filters || Object.values(this._filters).length === 0) {\n if (!this.selectionModel.isEmpty) {\n this.selectionModel.reset();\n }\n } else {\n const filters: QueryFilters = this._filters;\n\n Object.keys(filters).forEach((param: string) => {\n const unit: WlcmFiltersUnit = this.selectionModel.createUnit(param);\n\n unit.setAll(filters[param].oneOf as string[], true);\n\n this.selectionModel.add(param, unit, false);\n });\n }\n }\n\n protected handleModelChanges(): void {\n this.selectionModel.modelChanges$.pipe(untilDestroyed(this), skip(1)).subscribe((model: WlcmFiltersModel) => {\n const filters: QueryFilters = WlcmFiltersUtils.modelToQueryFilters(model);\n\n this.filtersChanges.next(filters);\n });\n }\n}\n","import { Directive, ElementRef, HostListener, Injector, Input, ViewContainerRef } from '@angular/core';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { FiltersDefaultSelectionModel } from '../models/filters-default-selection-model';\nimport { WlcmFiltersSelectionModel, WlcmFiltersTriggerControl } from '../models/filters.models';\nimport { WlcmFiltersComponent } from '../components/filters/filters.component';\nimport { FiltersTriggerBase } from '../models/filters-trigger.base';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Directive({\n selector: '[wlcmFiltersTrigger]',\n providers: [{ provide: WlcmFiltersSelectionModel, useClass: FiltersDefaultSelectionModel }],\n})\nexport class WlcmFiltersTriggerDirective extends FiltersTriggerBase {\n @Input('wlcmFiltersTrigger') panel!: WlcmFiltersComponent;\n\n @HostListener('click') openPanel(): void {\n if (this.overlayRef instanceof OverlayRef) return;\n\n const config: OverlayConfig = this.createOverlayConfig();\n\n const injector: Injector = this.createInjector();\n\n this.overlayRef = this.overlay.create(config);\n\n this.overlayRef.attach(new TemplatePortal(this.panel.templateRef, this.viewContainerRef, null, injector));\n }\n\n private overlayRef: OverlayRef | null = null;\n\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n protected override selectionModel: WlcmFiltersSelectionModel\n ) {\n super(selectionModel);\n\n this.handleModelChanges();\n }\n\n close(): void {\n this.overlayRef?.dispose();\n\n this.overlayRef = null;\n }\n\n private createInjector(): Injector {\n return Injector.create({\n providers: [\n { provide: WlcmFiltersSelectionModel, useValue: this.selectionModel },\n { provide: WlcmFiltersTriggerControl, useValue: { close: this.close.bind(this) } },\n ],\n parent: this.injector,\n });\n }\n\n private createOverlayConfig(): OverlayConfig {\n const strategy: FlexibleConnectedPositionStrategy = this.overlay.position().flexibleConnectedTo(this.elementRef);\n\n strategy.withPositions([{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }]);\n\n strategy.withDefaultOffsetY(5);\n\n return new OverlayConfig({\n width: '300px',\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n }\n}\n","import { Host, Pipe, PipeTransform } from '@angular/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\n\n@Pipe({ name: 'isFiltersParamChecked' })\nexport class IsFiltersParamCheckedPipe implements PipeTransform {\n transform(data: Set<string>): boolean {\n return data.has(this.checkbox.value);\n }\n\n constructor(@Host() private checkbox: MatCheckbox) {}\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { WlcmFiltersSelectionModel, WlcmFiltersUnit } from '../../models/filters.models';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { WlcmOption } from '@wlcm/angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Component({\n selector: 'wlcm-filters-unit',\n templateUrl: './filters-unit.component.html',\n styleUrls: ['./filters-unit.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmFiltersUnitComponent implements OnInit {\n @Input() label: string = '';\n\n @Input() param: string = '';\n\n @Input() options: WlcmOption[] = [];\n\n protected filtersUnit!: WlcmFiltersUnit;\n\n protected dataChanges$!: Observable<Set<string>>;\n\n constructor(private selectionModel: WlcmFiltersSelectionModel) {}\n\n ngOnInit(): void {\n this.initializeFiltersUnit();\n }\n\n reset(): void {\n this.filtersUnit.reset();\n }\n\n change(event: MatCheckboxChange): void {\n if (event.checked) {\n this.filtersUnit.add(event.source.value);\n } else {\n this.filtersUnit.remove(event.source.value);\n }\n }\n\n private initializeFiltersUnit(): void {\n if (this.selectionModel.has(this.param)) {\n this.filtersUnit = this.selectionModel.get(this.param);\n } else {\n this.filtersUnit = this.selectionModel.createUnit(this.param);\n\n this.selectionModel.add(this.param, this.filtersUnit, false);\n }\n\n this.dataChanges$ = this.filtersUnit.dataChanges$.pipe(map((data: string[]) => new Set(data)));\n }\n}\n","<mat-expansion-panel class=\"wlcm-filters-unit\" hideToggle>\n <mat-expansion-panel-header collapsedHeight=\"30px\" expandedHeight=\"30px\">\n <div class=\"wlcm-filters-unit-header\">\n <section>\n <span class=\"wlcm-filters-unit-header__label\">{{ label }}</span>\n\n <div\n class=\"wlcm-entities-count\"\n *ngIf=\"(dataChanges$ | async)!.size as size\"\n >\n {{ size }}\n </div>\n </section>\n\n <section>\n <button\n class=\"reset-btn cursor-pointer\"\n (click)=\"reset(); $event.stopPropagation()\"\n *ngIf=\"(dataChanges$ | async)!.size > 0\"\n >\n Reset\n </button>\n\n <wlcm-chevron-down-icon\n class=\"wlcm-filters-unit__chevron\"\n ></wlcm-chevron-down-icon>\n </section>\n </div>\n </mat-expansion-panel-header>\n\n <div class=\"wlcm-filters-unit-checkboxes\">\n <ng-container *ngFor=\"let option of options\">\n <mat-checkbox\n [value]=\"$any(option.value)\"\n [checked]=\"(dataChanges$ | async)! | isFiltersParamChecked\"\n (change)=\"change($event)\"\n >\n {{ option.viewValue }}\n </mat-checkbox>\n </ng-container>\n </div>\n</mat-expansion-panel>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { QueryFilter, QueryFilters } from '@wlcm/angular/core';\n\n@Pipe({ name: 'totalFiltersApplied', standalone: true })\nexport class WlcmTotalFiltersAppliedPipe implements PipeTransform {\n transform(filters: QueryFilters | undefined): number {\n if (!filters) return 0;\n\n return Object.values(filters).reduce((total: number, filter: QueryFilter) => {\n return total + (filter.oneOf?.length || 0);\n }, 0);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { WlcmFiltersComponent } from '../filters/filters.component';\nimport { QueryFilters } from '@wlcm/angular/core';\n\n@Component({\n selector: 'wlcm-filters-button',\n templateUrl: './filters-button.component.html',\n styleUrls: ['./filters-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WlcmFiltersButtonComponent {\n @Input() panel!: WlcmFiltersComponent;\n\n @Input() filters!: QueryFilters;\n\n @Output() filtersChange: EventEmitter<QueryFilters> = new EventEmitter();\n}\n","<ng-container *rxLet=\"filters | totalFiltersApplied as filtersCount\">\n <wlcm-button\n [wlcmFiltersTrigger]=\"panel\"\n [wlcmFiltersTriggerData]=\"filters\"\n (wlcmFiltersTriggerDataChanges)=\"filtersChange.emit($event)\"\n [type]=\"filtersCount > 0 ? 'primary' : 'secondary'\"\n >\n Filters\n @if (filtersCount > 0) {\n <div class=\"wlcm-entities-count\">{{ filtersCount }}</div>\n }\n </wlcm-button>\n</ng-container>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmFiltersComponent } from './components/filters/filters.component';\nimport { WlcmFiltersTriggerDirective } from './directives/filters-trigger.directive';\nimport { WlcmFiltersUnitComponent } from './components/filters-unit/filters-unit.component';\nimport { WlcmFiltersPanelComponent } from './components/filters-panel/filters-panel.component';\nimport { WlcmFiltersContentDirective } from './directives/filters-content.directive';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { IsFiltersParamCheckedPipe } from './pipes/is-filters-param-checked.pipe';\nimport { WlcmTotalFiltersAppliedPipe } from './pipes/total-filters-applied.pipe';\nimport { ChevronDownIconComponent, CloseIconComponent } from '@wlcm/angular/core';\nimport { WlcmButtonComponent } from '@wlcm/angular/button';\nimport { WlcmFiltersButtonComponent } from './components/filters-button/filters-button.component';\nimport { RxLet } from '@rx-angular/template/let';\n\nconst publicComponents: Type<unknown>[] = [WlcmFiltersComponent, WlcmFiltersUnitComponent, WlcmFiltersButtonComponent];\n\nconst publicDirectives: Type<unknown>[] = [WlcmFiltersTriggerDirective, WlcmFiltersContentDirective];\n\n@NgModule({\n imports: [\n RxLet,\n CommonModule,\n MatExpansionModule,\n MatCheckboxModule,\n WlcmTotalFiltersAppliedPipe,\n ChevronDownIconComponent,\n WlcmButtonComponent,\n CloseIconComponent,\n ],\n declarations: [...publicComponents, ...publicDirectives, WlcmFiltersPanelComponent, IsFiltersParamCheckedPipe],\n exports: [...publicComponents, ...publicDirectives],\n})\nexport class WlcmFiltersModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.WlcmFiltersTriggerControl","i1.WlcmFiltersSelectionModel","i1.WlcmFiltersPanelComponent","i2.WlcmFiltersSelectionModel","i1","i2","i3","i4","i6.IsFiltersParamCheckedPipe","i3.WlcmFiltersTriggerDirective","i4.WlcmTotalFiltersAppliedPipe"],"mappings":"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"}
|
package/forms/esm2022/index.mjs
CHANGED
@@ -6,8 +6,7 @@ export * from './lib/forms/directives/select-input-binder.directive';
|
|
6
6
|
export * from './lib/forms/directives/form-field-prefix.directive';
|
7
7
|
export * from './lib/forms/directives/form-field-suffix.directive';
|
8
8
|
export * from './lib/forms/directives/form-field-hint.directive';
|
9
|
-
export * from './lib/forms/directives/ac-input-binder.directive';
|
10
9
|
export * from './lib/forms/constants/form-field.constants';
|
11
10
|
export * from './lib/forms/directives/input.directive';
|
12
11
|
export * from './lib/forms/components';
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9mb3Jtcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvbW9kZWxzL19pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9jb25zdGFudHMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvZGlyZWN0aXZlcy9mb3JtLWZpZWxkLWN1c3RvbS1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zL2RpcmVjdGl2ZXMvc2VsZWN0LWlucHV0LWJpbmRlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvZGlyZWN0aXZlcy9mb3JtLWZpZWxkLXByZWZpeC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvZGlyZWN0aXZlcy9mb3JtLWZpZWxkLXN1ZmZpeC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvZGlyZWN0aXZlcy9mb3JtLWZpZWxkLWhpbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1zL2NvbnN0YW50cy9mb3JtLWZpZWxkLmNvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9kaXJlY3RpdmVzL2lucHV0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3Jtcy9jb21wb25lbnRzJztcbiJdfQ==
|
@@ -1,16 +1,16 @@
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
2
|
-
import { ChangeDetectionStrategy, Component, Inject, Input, ViewChild, forwardRef, } from '@angular/core';
|
2
|
+
import { ChangeDetectionStrategy, Component, ElementRef, Inject, Input, ViewChild, forwardRef, inject, input, } from '@angular/core';
|
3
3
|
import { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, } from '@angular/forms';
|
4
4
|
import { CommonModule } from '@angular/common';
|
5
5
|
import { WlcmFormFieldComponent } from '../form-field/form-field.component';
|
6
6
|
import { WlcmLabelComponent } from '../label/label.component';
|
7
7
|
import { WlcmInputDirective } from '../../directives/input.directive';
|
8
|
-
import { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteTrigger, } from '@angular/material/autocomplete';
|
9
|
-
import { BehaviorSubject, EMPTY,
|
8
|
+
import { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteTrigger, } from '@angular/material/autocomplete';
|
9
|
+
import { BehaviorSubject, EMPTY, Subject, concatMap, filter, fromEvent, map, merge, switchMap, take, tap, timer, } from 'rxjs';
|
10
10
|
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
11
11
|
import { AutocompleteDirective } from '../../directives/autocomplete.directive';
|
12
|
-
import { DEFAULT_QUERY_PARAMS } from '@wlcm/angular/core';
|
13
|
-
import { WLCM_FORM_FIELD, WLCM_INPUT } from '../../constants';
|
12
|
+
import { DEFAULT_QUERY_PARAMS, } from '@wlcm/angular/core';
|
13
|
+
import { WLCM_FORM_FIELD, WLCM_INPUT, WLCM_INPUT_BINDER } from '../../constants';
|
14
14
|
import { RxLet } from '@rx-angular/template/let';
|
15
15
|
import * as i0 from "@angular/core";
|
16
16
|
import * as i1 from "@angular/common";
|
@@ -23,11 +23,16 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent {
|
|
23
23
|
this.formField = formField;
|
24
24
|
this.required = false;
|
25
25
|
this.placeholder = '';
|
26
|
+
this.selectOptionFormat = input('ValueOnly');
|
26
27
|
this.control = new FormControl('');
|
27
28
|
this._loadMore$ = new Subject();
|
28
29
|
this._options$ = new BehaviorSubject([]);
|
29
30
|
this.options$ = this._options$.asObservable();
|
30
31
|
this.closed$ = new Subject();
|
32
|
+
this._focusStream$ = new BehaviorSubject(EMPTY);
|
33
|
+
this._blurStream$ = new BehaviorSubject(EMPTY);
|
34
|
+
this.focus$ = this._focusStream$.pipe(switchMap((stream) => stream));
|
35
|
+
this.blur$ = this._blurStream$.pipe(switchMap((stream) => stream));
|
31
36
|
this.queryParams = { ...DEFAULT_QUERY_PARAMS, limit: 15 };
|
32
37
|
this._paginatedData = null;
|
33
38
|
this.handleLoadMoreEvent();
|
@@ -40,6 +45,7 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent {
|
|
40
45
|
const container = this.formField.inputContainer;
|
41
46
|
const origin = new MatAutocompleteOrigin(container);
|
42
47
|
this.autocompleteTrigger.connectedTo = origin;
|
48
|
+
this.attachFocusBlurListeners();
|
43
49
|
}
|
44
50
|
displayWith(value) {
|
45
51
|
if (value instanceof Object) {
|
@@ -47,6 +53,12 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent {
|
|
47
53
|
}
|
48
54
|
return value;
|
49
55
|
}
|
56
|
+
focus() {
|
57
|
+
this.inputElement.nativeElement.focus();
|
58
|
+
}
|
59
|
+
isFocused() {
|
60
|
+
return this.inputElement?.nativeElement === document.activeElement || this.autocomplete?.isOpen;
|
61
|
+
}
|
50
62
|
loadMore() {
|
51
63
|
this._loadMore$.next();
|
52
64
|
}
|
@@ -66,11 +78,9 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent {
|
|
66
78
|
this.control.enable();
|
67
79
|
}
|
68
80
|
blured() {
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
}
|
73
|
-
closed.subscribe(() => this._touched?.());
|
81
|
+
if (!this.autocomplete.isOpen)
|
82
|
+
this._touched?.();
|
83
|
+
this.autocomplete.closed.pipe(take(1)).subscribe(() => this._touched?.());
|
74
84
|
}
|
75
85
|
validate(control) {
|
76
86
|
if (!!this.control.value) {
|
@@ -106,25 +116,39 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent {
|
|
106
116
|
}
|
107
117
|
handleControlValueChanges() {
|
108
118
|
this.control.valueChanges
|
109
|
-
.pipe(debounceTime(200))
|
110
119
|
.pipe(untilDestroyed(this))
|
111
120
|
.pipe(filter((value) => {
|
112
121
|
let _value = value ?? '';
|
113
|
-
if (value instanceof Object)
|
122
|
+
if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly')
|
114
123
|
_value = value.value;
|
115
124
|
this._changed?.(_value);
|
116
|
-
this._onValidatorChange?.();
|
117
125
|
return !(value instanceof Object);
|
118
126
|
}))
|
119
|
-
.pipe(switchMap((value) => this.loadOptions({ ...this.queryParams, query: value })))
|
127
|
+
.pipe(switchMap((value) => timer(200).pipe(switchMap(() => this.loadOptions({ ...this.queryParams, query: value })))))
|
120
128
|
.subscribe();
|
121
129
|
}
|
130
|
+
attachFocusBlurListeners() {
|
131
|
+
const voidFn = () => { };
|
132
|
+
const inputFocus = fromEvent(this.inputElement.nativeElement, 'focus');
|
133
|
+
const inputBlur = fromEvent(this.inputElement.nativeElement, 'blur');
|
134
|
+
const focusObservables = [inputFocus, this.autocomplete.opened];
|
135
|
+
const blurObservables = [inputBlur, this.autocomplete.closed];
|
136
|
+
this._focusStream$.next(merge(...focusObservables).pipe(map(voidFn)));
|
137
|
+
this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));
|
138
|
+
}
|
122
139
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmAutocompleteComponent, deps: [{ token: WLCM_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component }); }
|
123
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
140
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.5", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { pullDataMethod: { classPropertyName: "pullDataMethod", publicName: "pullDataMethod", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wlcm-autocomplete" }, providers: [
|
124
141
|
{ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS } },
|
125
142
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
126
143
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
127
|
-
|
144
|
+
{
|
145
|
+
provide: WLCM_INPUT_BINDER,
|
146
|
+
useFactory: () => {
|
147
|
+
const autocomplete = inject(WlcmAutocompleteComponent, { self: true });
|
148
|
+
return { bind: () => autocomplete };
|
149
|
+
},
|
150
|
+
},
|
151
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: WLCM_INPUT, descendants: true, read: ElementRef }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }], ngImport: i0, template: "<input\n wlcmInput\n type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"blured()\"\n/>\n\n<mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n wlcmAutocomplete\n [disableRipple]=\"true\"\n [displayWith]=\"displayWith\"\n [hideSingleSelectionIndicator]=\"true\"\n (panelScrolled)=\"loadMore()\"\n>\n <ng-container *rxLet=\"$any(options$ | async); let options\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">\n {{ option.viewValue }}\n </mat-option>\n\n <mat-option [disabled]=\"true\" *ngIf=\"options.length === 0\">\n No results found\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: AutocompleteDirective, selector: "[wlcmAutocomplete]", outputs: ["panelScrolled"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: WlcmInputDirective, selector: "[wlcmInput]" }, { kind: "directive", type: RxLet, selector: "[rxLet]", inputs: ["rxLet", "rxLetStrategy", "rxLetComplete", "rxLetError", "rxLetSuspense", "rxLetContextTrigger", "rxLetCompleteTrigger", "rxLetErrorTrigger", "rxLetSuspenseTrigger", "rxLetNextTrigger", "rxLetRenderCallback", "rxLetParent", "rxLetPatchZone"], outputs: ["rendered"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
128
152
|
};
|
129
153
|
WlcmAutocompleteComponent = __decorate([
|
130
154
|
UntilDestroy(),
|
@@ -146,7 +170,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
146
170
|
{ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS } },
|
147
171
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
148
172
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
149
|
-
|
173
|
+
{
|
174
|
+
provide: WLCM_INPUT_BINDER,
|
175
|
+
useFactory: () => {
|
176
|
+
const autocomplete = inject(WlcmAutocompleteComponent, { self: true });
|
177
|
+
return { bind: () => autocomplete };
|
178
|
+
},
|
179
|
+
},
|
180
|
+
], template: "<input\n wlcmInput\n type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"blured()\"\n/>\n\n<mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n wlcmAutocomplete\n [disableRipple]=\"true\"\n [displayWith]=\"displayWith\"\n [hideSingleSelectionIndicator]=\"true\"\n (panelScrolled)=\"loadMore()\"\n>\n <ng-container *rxLet=\"$any(options$ | async); let options\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">\n {{ option.viewValue }}\n </mat-option>\n\n <mat-option [disabled]=\"true\" *ngIf=\"options.length === 0\">\n No results found\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n" }]
|
150
181
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
151
182
|
type: Inject,
|
152
183
|
args: [WLCM_FORM_FIELD]
|
@@ -158,11 +189,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
158
189
|
type: Input
|
159
190
|
}], placeholder: [{
|
160
191
|
type: Input
|
161
|
-
}],
|
192
|
+
}], inputElement: [{
|
162
193
|
type: ViewChild,
|
163
|
-
args: [WLCM_INPUT]
|
194
|
+
args: [WLCM_INPUT, { read: ElementRef }]
|
164
195
|
}], autocompleteTrigger: [{
|
165
196
|
type: ViewChild,
|
166
197
|
args: [MatAutocompleteTrigger]
|
198
|
+
}], autocomplete: [{
|
199
|
+
type: ViewChild,
|
200
|
+
args: [MatAutocomplete]
|
167
201
|
}] } });
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsR0FHcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUN2QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsY0FBYyxFQUNkLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNk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Qjt3QkFDdEIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLEtBQUs7cUJBQ04sbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsUUFBUSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLEVBQUU7d0JBQzNGLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDckcsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDbEc7OzBCQW1DWSxNQUFNOzJCQUFDLGVBQWU7eUNBaEMxQixjQUFjO3NCQUF0QixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBc0J3QixTQUFTO3NCQUF0QyxTQUFTO3VCQUFDLFVBQVU7Z0JBRXNCLG1CQUFtQjtzQkFBN0QsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFdsY21MYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXbGNtSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2lucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUyxcbiAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICBNYXRBdXRvY29tcGxldGVPcmlnaW4sXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIEVNUFRZLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBhc3luY1NjaGVkdWxlcixcbiAgY29uY2F0TWFwLFxuICBkZWJvdW5jZVRpbWUsXG4gIGZpbHRlcixcbiAgZmlyc3QsXG4gIG9ic2VydmVPbixcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgREVGQVVMVF9RVUVSWV9QQVJBTVMsIFBhZ2luYXRlZERhdGEsIFF1ZXJ5UGFyYW1zLCBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uIH0gZnJvbSAnQHdsY20vYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdMQ01fRk9STV9GSUVMRCwgV0xDTV9JTlBVVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtSW5wdXRHZXR0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQubW9kZWxzJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS5tb2RlbHMnO1xuaW1wb3J0IHsgUnhMZXQgfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9sZXQnO1xuXG50eXBlIE9wdGlvbiA9IFdsY21BdXRvY29tcGxldGVPcHRpb247XG5cbnR5cGUgQXV0b2NvbXBsZXRlVmFsdWUgPSBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uIHwgc3RyaW5nIHwgbnVsbDtcblxuY29uc3QgUEFORUxfQ0xBU1M6IHN0cmluZyA9ICd3bGNtLWF1dG9jb21wbGV0ZS1wYW5lbCc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2xjbS1hdXRvY29tcGxldGUnLFxuICBob3N0OiB7IGNsYXNzOiAnd2xjbS1hdXRvY29tcGxldGUnIH0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIEF1dG9jb21wbGV0ZURpcmVjdGl2ZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFdsY21Gb3JtRmllbGRDb21wb25lbnQsXG4gICAgV2xjbUxhYmVsQ29tcG9uZW50LFxuICAgIFdsY21JbnB1dERpcmVjdGl2ZSxcbiAgICBSeExldCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IHsgb3ZlcmxheVBhbmVsQ2xhc3M6IFBBTkVMX0NMQVNTIH0gfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtQXV0b2NvbXBsZXRlQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21BdXRvY29tcGxldGVDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgcHVsbERhdGFNZXRob2QhOiAocGFyYW1zOiBRdWVyeVBhcmFtcykgPT4gT2JzZXJ2YWJsZTxQYWdpbmF0ZWREYXRhPE9wdGlvbj4+O1xuXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIHJlYWRvbmx5IGNvbnRyb2w6IEZvcm1Db250cm9sPEF1dG9jb21wbGV0ZVZhbHVlPiA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZE1vcmUkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zJDogQmVoYXZpb3JTdWJqZWN0PE9wdGlvbltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T3B0aW9uW10+KFtdKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyQ6IE9ic2VydmFibGU8T3B0aW9uW10+ID0gdGhpcy5fb3B0aW9ucyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsb3NlZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zID0geyAuLi5ERUZBVUxUX1FVRVJZX1BBUkFNUywgbGltaXQ6IDE1IH07XG5cbiAgcHJpdmF0ZSBfY2hhbmdlZD86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3RvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX29uVmFsaWRhdG9yQ2hhbmdlPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9wYWdpbmF0ZWREYXRhOiBQYWdpbmF0ZWREYXRhPE9wdGlvbj4gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKFdMQ01fSU5QVVQpIHB1YmxpYyB3bGNtSW5wdXQhOiBXbGNtSW5wdXRHZXR0ZXI7XG5cbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyKSBwcml2YXRlIGF1dG9jb21wbGV0ZVRyaWdnZXIhOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoV0xDTV9GT1JNX0ZJRUxEKSBwcml2YXRlIGZvcm1GaWVsZDogV2xjbUZvcm1GaWVsZCkge1xuICAgIHRoaXMuaGFuZGxlTG9hZE1vcmVFdmVudCgpO1xuXG4gICAgdGhpcy5oYW5kbGVDb250cm9sVmFsdWVDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRPcHRpb25zKHRoaXMucXVlcnlQYXJhbXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lcjogRWxlbWVudFJlZiA9IHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyO1xuXG4gICAgY29uc3Qgb3JpZ2luOiBNYXRBdXRvY29tcGxldGVPcmlnaW4gPSBuZXcgTWF0QXV0b2NvbXBsZXRlT3JpZ2luKGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY29ubmVjdGVkVG8gPSBvcmlnaW47XG4gIH1cblxuICBkaXNwbGF5V2l0aCh2YWx1ZTogT3B0aW9uIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHJldHVybiB2YWx1ZS52aWV3VmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbG9hZE1vcmUoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZE1vcmUkLm5leHQoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IEF1dG9jb21wbGV0ZVZhbHVlKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoY2FsbGJhY2s6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl90b3VjaGVkID0gY2FsbGJhY2s7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xuICB9XG5cbiAgYmx1cmVkKCk6IHZvaWQge1xuICAgIGxldCBjbG9zZWQ6IE9ic2VydmFibGU8dm9pZD4gPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IChvYnNlcnZlci5uZXh0KCksIG9ic2VydmVyLmNvbXBsZXRlKCkpKTtcblxuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIucGFuZWxPcGVuKSB7XG4gICAgICBjbG9zZWQgPSB0aGlzLmNsb3NlZCQucGlwZShmaXJzdCgpLCBvYnNlcnZlT24oYXN5bmNTY2hlZHVsZXIpKTtcbiAgICB9XG5cbiAgICBjbG9zZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3RvdWNoZWQ/LigpKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoISF0aGlzLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHJldHVybiBudWxsO1xuXG4gICAgICByZXR1cm4geyAuLi5jb250cm9sLmVycm9ycywgdW5zZWxlY3RlZDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE9wdGlvbnMocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8UGFnaW5hdGVkRGF0YTxPcHRpb24+PiB7XG4gICAgdGhpcy5fb3B0aW9ucyQubmV4dChbXSk7XG5cbiAgICByZXR1cm4gdGhpcy5wdWxsRGF0YU1ldGhvZCh7IC4uLnBhcmFtcywgcGFnZTogMSB9KS5waXBlKFxuICAgICAgdGFwKChwYWdpbmF0ZWREYXRhOiBQYWdpbmF0ZWREYXRhPE9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGVkRGF0YSA9IHBhZ2luYXRlZERhdGE7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyQubmV4dChwYWdpbmF0ZWREYXRhLmRhdGEpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMb2FkTW9yZUV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX2xvYWRNb3JlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3BhZ2luYXRlZERhdGEgJiYgdGhpcy5fcGFnaW5hdGVkRGF0YS5jdXJyUGFnZSArIDEgPD0gdGhpcy5fcGFnaW5hdGVkRGF0YS50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2UrKztcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVsbERhdGFNZXRob2QodGhpcy5xdWVyeVBhcmFtcykucGlwZShcbiAgICAgICAgICAgICAgdGFwKChwYWdpbmF0ZWREYXRhOiBQYWdpbmF0ZWREYXRhPE9wdGlvbj4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQoWy4uLnRoaXMuX29wdGlvbnMkLnZhbHVlLCAuLi5wYWdpbmF0ZWREYXRhLmRhdGFdKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250cm9sVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMDApKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh2YWx1ZTogQXV0b2NvbXBsZXRlVmFsdWUpID0+IHtcbiAgICAgICAgICBsZXQgX3ZhbHVlOiBBdXRvY29tcGxldGVWYWx1ZSA9IHZhbHVlID8/ICcnO1xuXG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSBfdmFsdWUgPSB2YWx1ZS52YWx1ZTtcblxuICAgICAgICAgIHRoaXMuX2NoYW5nZWQ/LihfdmFsdWUgYXMgc3RyaW5nKTtcblxuICAgICAgICAgIHRoaXMuX29uVmFsaWRhdG9yQ2hhbmdlPy4oKTtcblxuICAgICAgICAgIHJldHVybiAhKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgodmFsdWU6IEF1dG9jb21wbGV0ZVZhbHVlKSA9PiB0aGlzLmxvYWRPcHRpb25zKHsgLi4udGhpcy5xdWVyeVBhcmFtcywgcXVlcnk6IHZhbHVlIGFzIHN0cmluZyB9KSkpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxpbnB1dFxuICB3bGNtSW5wdXRcbiAgdHlwZT1cInRleHRcIlxuICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgKGJsdXIpPVwiYmx1cmVkKClcIlxuLz5cblxuPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gIHdsY21BdXRvY29tcGxldGVcbiAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5V2l0aFwiXG4gIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICAocGFuZWxTY3JvbGxlZCk9XCJsb2FkTW9yZSgpXCJcbiAgKGNsb3NlZCk9XCJjbG9zZWQkLm5leHQoKVwiXG4+XG4gIDxuZy1jb250YWluZXIgKnJ4TGV0PVwiJGFueShvcHRpb25zJCB8IGFzeW5jKTsgbGV0IG9wdGlvbnNcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICB7eyBvcHRpb24udmlld1ZhbHVlIH19XG4gICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgPG1hdC1vcHRpb24gW2Rpc2FibGVkXT1cInRydWVcIiAqbmdJZj1cIm9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICBObyByZXN1bHRzIGZvdW5kXG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cbiJdfQ==
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsR0FHcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixzQkFBc0IsR0FDdkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLEtBQUssRUFFTCxPQUFPLEVBQ1AsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILEtBQUssRUFDTCxTQUFTLEVBQ1QsSUFBSSxFQUNK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LE1BQU0sNEJBQTRCLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0NBRXZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7NEJBQ3RDLENBQUM7eUJBQ0Y7cUJBQ0Y7OzBCQWlEWSxNQUFNOzJCQUFDLGVBQWU7eUNBNUMxQixjQUFjO3NCQUF0QixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBZ0M4QyxZQUFZO3NCQUEvRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRUEsbUJBQW1CO3NCQUE3RCxTQUFTO3VCQUFDLHNCQUFzQjtnQkFFRyxZQUFZO3NCQUEvQyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBXbGNtRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXbGNtTGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9sYWJlbC9sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2xjbUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsXG4gIE1hdEF1dG9jb21wbGV0ZSxcbiAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICBNYXRBdXRvY29tcGxldGVPcmlnaW4sXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIEVNUFRZLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjb25jYXRNYXAsXG4gIGZpbHRlcixcbiAgZnJvbUV2ZW50LFxuICBtYXAsXG4gIG1lcmdlLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbiAgdGltZXIsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9RVUVSWV9QQVJBTVMsXG4gIFBhZ2luYXRlZERhdGEsXG4gIFF1ZXJ5UGFyYW1zLFxuICBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uLFxuICBXbGNtU2VsZWN0T3B0aW9uRm9ybWF0LFxufSBmcm9tICdAd2xjbS9hbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV0xDTV9GT1JNX0ZJRUxELCBXTENNX0lOUFVULCBXTENNX0lOUFVUX0JJTkRFUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtRm9ybUZpZWxkSW5wdXQsIFdsY21JbnB1dEdldHRlciB9IGZyb20gJy4uLy4uL21vZGVscy9pbnB1dC5tb2RlbHMnO1xuaW1wb3J0IHsgV2xjbUZvcm1GaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLm1vZGVscyc7XG5pbXBvcnQgeyBSeExldCB9IGZyb20gJ0ByeC1hbmd1bGFyL3RlbXBsYXRlL2xldCc7XG5cbnR5cGUgT3B0aW9uID0gV2xjbUF1dG9jb21wbGV0ZU9wdGlvbjtcblxudHlwZSBBdXRvY29tcGxldGVWYWx1ZSA9IFdsY21BdXRvY29tcGxldGVPcHRpb24gfCBzdHJpbmcgfCBudWxsO1xuXG5jb25zdCBQQU5FTF9DTEFTUzogc3RyaW5nID0gJ3dsY20tYXV0b2NvbXBsZXRlLXBhbmVsJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3bGNtLWF1dG9jb21wbGV0ZScsXG4gIGhvc3Q6IHsgY2xhc3M6ICd3bGNtLWF1dG9jb21wbGV0ZScgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlRGlyZWN0aXZlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgV2xjbUZvcm1GaWVsZENvbXBvbmVudCxcbiAgICBXbGNtTGFiZWxDb21wb25lbnQsXG4gICAgV2xjbUlucHV0RGlyZWN0aXZlLFxuICAgIFJ4TGV0LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLCB1c2VWYWx1ZTogeyBvdmVybGF5UGFuZWxDbGFzczogUEFORUxfQ0xBU1MgfSB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21BdXRvY29tcGxldGVDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbUF1dG9jb21wbGV0ZUNvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogV0xDTV9JTlBVVF9CSU5ERVIsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IGluamVjdChXbGNtQXV0b2NvbXBsZXRlQ29tcG9uZW50LCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgYmluZDogKCkgPT4gYXV0b2NvbXBsZXRlIH07XG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdsY21BdXRvY29tcGxldGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIEFmdGVyVmlld0luaXQsIFdsY21Gb3JtRmllbGRJbnB1dFxue1xuICBASW5wdXQoKSBwdWxsRGF0YU1ldGhvZCE6IChwYXJhbXM6IFF1ZXJ5UGFyYW1zKSA9PiBPYnNlcnZhYmxlPFBhZ2luYXRlZERhdGE8T3B0aW9uPj47XG5cbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgc2VsZWN0T3B0aW9uRm9ybWF0OiBJbnB1dFNpZ25hbDxXbGNtU2VsZWN0T3B0aW9uRm9ybWF0PiA9IGlucHV0PFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+KCdWYWx1ZU9ubHknKTtcblxuICByZWFkb25seSBjb250cm9sOiBGb3JtQ29udHJvbDxBdXRvY29tcGxldGVWYWx1ZT4gPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRNb3JlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyQ6IEJlaGF2aW9yU3ViamVjdDxPcHRpb25bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9wdGlvbltdPihbXSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMkOiBPYnNlcnZhYmxlPE9wdGlvbltdPiA9IHRoaXMuX29wdGlvbnMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mb2N1c1N0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPHZvaWQ+PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoRU1QVFkgYXMgT2JzZXJ2YWJsZTx2b2lkPik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYmx1clN0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPHZvaWQ+PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoRU1QVFkgYXMgT2JzZXJ2YWJsZTx2b2lkPik7XG5cbiAgZm9jdXMkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gdGhpcy5fZm9jdXNTdHJlYW0kLnBpcGUoc3dpdGNoTWFwKChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4pID0+IHN0cmVhbSkpO1xuXG4gIGJsdXIkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gdGhpcy5fYmx1clN0cmVhbSQucGlwZShzd2l0Y2hNYXAoKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPikgPT4gc3RyZWFtKSk7XG5cbiAgcHJpdmF0ZSBxdWVyeVBhcmFtczogUXVlcnlQYXJhbXMgPSB7IC4uLkRFRkFVTFRfUVVFUllfUEFSQU1TLCBsaW1pdDogMTUgfTtcblxuICBwcml2YXRlIF9jaGFuZ2VkPzogKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uIHwgc3RyaW5nKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3RvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX29uVmFsaWRhdG9yQ2hhbmdlPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9wYWdpbmF0ZWREYXRhOiBQYWdpbmF0ZWREYXRhPE9wdGlvbj4gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKFdMQ01fSU5QVVQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwdWJsaWMgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHByaXZhdGUgYXV0b2NvbXBsZXRlVHJpZ2dlciE6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG5cbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGUpIHByaXZhdGUgYXV0b2NvbXBsZXRlITogTWF0QXV0b2NvbXBsZXRlO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoV0xDTV9GT1JNX0ZJRUxEKSBwcml2YXRlIGZvcm1GaWVsZDogV2xjbUZvcm1GaWVsZCkge1xuICAgIHRoaXMuaGFuZGxlTG9hZE1vcmVFdmVudCgpO1xuXG4gICAgdGhpcy5oYW5kbGVDb250cm9sVmFsdWVDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRPcHRpb25zKHRoaXMucXVlcnlQYXJhbXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lcjogRWxlbWVudFJlZiA9IHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyO1xuXG4gICAgY29uc3Qgb3JpZ2luOiBNYXRBdXRvY29tcGxldGVPcmlnaW4gPSBuZXcgTWF0QXV0b2NvbXBsZXRlT3JpZ2luKGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY29ubmVjdGVkVG8gPSBvcmlnaW47XG5cbiAgICB0aGlzLmF0dGFjaEZvY3VzQmx1ckxpc3RlbmVycygpO1xuICB9XG5cbiAgZGlzcGxheVdpdGgodmFsdWU6IE9wdGlvbiB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICByZXR1cm4gdmFsdWUudmlld1ZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGlzRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgfHwgdGhpcy5hdXRvY29tcGxldGU/LmlzT3BlbjtcbiAgfVxuXG4gIGxvYWRNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xvYWRNb3JlJC5uZXh0KCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBBdXRvY29tcGxldGVWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGNhbGxiYWNrOiAodmFsdWU6IFdsY21BdXRvY29tcGxldGVPcHRpb24gfCBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3RvdWNoZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XG4gIH1cblxuICBibHVyZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZS5pc09wZW4pIHRoaXMuX3RvdWNoZWQ/LigpO1xuXG4gICAgdGhpcy5hdXRvY29tcGxldGUuY2xvc2VkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3RvdWNoZWQ/LigpKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoISF0aGlzLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHJldHVybiBudWxsO1xuXG4gICAgICByZXR1cm4geyAuLi5jb250cm9sLmVycm9ycywgdW5zZWxlY3RlZDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE9wdGlvbnMocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8UGFnaW5hdGVkRGF0YTxPcHRpb24+PiB7XG4gICAgdGhpcy5fb3B0aW9ucyQubmV4dChbXSk7XG5cbiAgICByZXR1cm4gdGhpcy5wdWxsRGF0YU1ldGhvZCh7IC4uLnBhcmFtcywgcGFnZTogMSB9KS5waXBlKFxuICAgICAgdGFwKChwYWdpbmF0ZWREYXRhOiBQYWdpbmF0ZWREYXRhPE9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGVkRGF0YSA9IHBhZ2luYXRlZERhdGE7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyQubmV4dChwYWdpbmF0ZWREYXRhLmRhdGEpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTG9hZE1vcmVFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2FkTW9yZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBjb25jYXRNYXAoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9wYWdpbmF0ZWREYXRhICYmIHRoaXMuX3BhZ2luYXRlZERhdGEuY3VyclBhZ2UgKyAxIDw9IHRoaXMuX3BhZ2luYXRlZERhdGEudG90YWxQYWdlcykge1xuICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlKys7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnB1bGxEYXRhTWV0aG9kKHRoaXMucXVlcnlQYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgocGFnaW5hdGVkRGF0YTogUGFnaW5hdGVkRGF0YTxPcHRpb24+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFnaW5hdGVkRGF0YSA9IHBhZ2luYXRlZERhdGE7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zJC5uZXh0KFsuLi50aGlzLl9vcHRpb25zJC52YWx1ZSwgLi4ucGFnaW5hdGVkRGF0YS5kYXRhXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250cm9sVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWU6IEF1dG9jb21wbGV0ZVZhbHVlKSA9PiB7XG4gICAgICAgICAgbGV0IF92YWx1ZTogQXV0b2NvbXBsZXRlVmFsdWUgPSB2YWx1ZSA/PyAnJztcblxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiB0aGlzLnNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnVmFsdWVPbmx5JykgX3ZhbHVlID0gdmFsdWUudmFsdWU7XG5cbiAgICAgICAgICB0aGlzLl9jaGFuZ2VkPy4oX3ZhbHVlKTtcblxuICAgICAgICAgIHJldHVybiAhKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZTogQXV0b2NvbXBsZXRlVmFsdWUpID0+XG4gICAgICAgICAgdGltZXIoMjAwKS5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWRPcHRpb25zKHsgLi4udGhpcy5xdWVyeVBhcmFtcywgcXVlcnk6IHZhbHVlIGFzIHN0cmluZyB9KSkpLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hGb2N1c0JsdXJMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgY29uc3Qgdm9pZEZuID0gKCkgPT4ge307XG5cbiAgICBjb25zdCBpbnB1dEZvY3VzOiBPYnNlcnZhYmxlPEV2ZW50PiA9IGZyb21FdmVudCh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZm9jdXMnKTtcblxuICAgIGNvbnN0IGlucHV0Qmx1cjogT2JzZXJ2YWJsZTxFdmVudD4gPSBmcm9tRXZlbnQodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2JsdXInKTtcblxuICAgIGNvbnN0IGZvY3VzT2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8dW5rbm93bj5bXSA9IFtpbnB1dEZvY3VzLCB0aGlzLmF1dG9jb21wbGV0ZS5vcGVuZWRdO1xuXG4gICAgY29uc3QgYmx1ck9ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W10gPSBbaW5wdXRCbHVyLCB0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZWRdO1xuXG4gICAgdGhpcy5fZm9jdXNTdHJlYW0kLm5leHQobWVyZ2UoLi4uZm9jdXNPYnNlcnZhYmxlcykucGlwZShtYXAodm9pZEZuKSkpO1xuXG4gICAgdGhpcy5fYmx1clN0cmVhbSQubmV4dChtZXJnZSguLi5ibHVyT2JzZXJ2YWJsZXMpLnBpcGUobWFwKCgpID0+IHRoaXMuY29udHJvbD8ubWFya0FzVG91Y2hlZCgpKSkpO1xuICB9XG59XG4iLCI8aW5wdXRcbiAgd2xjbUlucHV0XG4gIHR5cGU9XCJ0ZXh0XCJcbiAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gIChibHVyKT1cImJsdXJlZCgpXCJcbi8+XG5cbjxtYXQtYXV0b2NvbXBsZXRlXG4gICNhdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIlxuICB3bGNtQXV0b2NvbXBsZXRlXG4gIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVdpdGhcIlxuICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCJcbiAgKHBhbmVsU2Nyb2xsZWQpPVwibG9hZE1vcmUoKVwiXG4+XG4gIDxuZy1jb250YWluZXIgKnJ4TGV0PVwiJGFueShvcHRpb25zJCB8IGFzeW5jKTsgbGV0IG9wdGlvbnNcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICB7eyBvcHRpb24udmlld1ZhbHVlIH19XG4gICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgPG1hdC1vcHRpb24gW2Rpc2FibGVkXT1cInRydWVcIiAqbmdJZj1cIm9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICBObyByZXN1bHRzIGZvdW5kXG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cbiJdfQ==
|