@wlcm/angular 18.2.3 → 18.2.5
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/filters/esm2022/index.mjs +6 -8
- package/filters/esm2022/lib/components/filters-group/filters-group.component.mjs +13 -0
- package/filters/esm2022/lib/constants/filter.constants.mjs +3 -0
- package/filters/esm2022/lib/constants/index.mjs +2 -0
- package/filters/esm2022/lib/directives/filter.directive.mjs +11 -0
- package/filters/esm2022/lib/directives/index.mjs +2 -0
- package/filters/esm2022/lib/filters.module.mjs +20 -0
- package/filters/esm2022/lib/models/array-filter.models.mjs +73 -0
- package/filters/esm2022/lib/models/filter.models.mjs +41 -0
- package/filters/esm2022/lib/models/filters-group.models.mjs +60 -0
- package/filters/esm2022/lib/models/index.mjs +4 -0
- package/filters/fesm2022/wlcm-angular-filters.mjs +159 -420
- package/filters/fesm2022/wlcm-angular-filters.mjs.map +1 -1
- package/filters/index.d.ts +5 -7
- package/filters/lib/components/filters-group/filters-group.component.d.ts +6 -0
- package/filters/lib/constants/filter.constants.d.ts +3 -0
- package/filters/lib/constants/index.d.ts +1 -0
- package/filters/lib/directives/filter.directive.d.ts +5 -0
- package/filters/lib/directives/index.d.ts +1 -0
- package/filters/lib/filters.module.d.ts +9 -0
- package/filters/lib/models/array-filter.models.d.ts +19 -0
- package/filters/lib/models/filter.models.d.ts +19 -0
- package/filters/lib/models/filters-group.models.d.ts +22 -0
- package/filters/lib/models/index.d.ts +3 -0
- package/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +7 -5
- package/forms/fesm2022/wlcm-angular-forms.mjs +5 -3
- package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
- package/forms/lib/forms/components/autocomplete/autocomplete.component.d.ts +4 -1
- package/package.json +1 -1
- package/styles/components/forms/_select.scss +6 -0
- package/styles/core/_all-theme.scss +0 -2
- package/filters/esm2022/lib/filters/components/filters/filters.component.mjs +0 -21
- package/filters/esm2022/lib/filters/components/filters-button/filters-button.component.mjs +0 -25
- package/filters/esm2022/lib/filters/components/filters-panel/filters-panel.component.mjs +0 -86
- package/filters/esm2022/lib/filters/components/filters-unit/filters-unit.component.mjs +0 -55
- package/filters/esm2022/lib/filters/directives/filters-content.directive.mjs +0 -11
- package/filters/esm2022/lib/filters/directives/filters-trigger.directive.mjs +0 -69
- package/filters/esm2022/lib/filters/filters.module.mjs +0 -53
- package/filters/esm2022/lib/filters/models/filters-default-selection-model.mjs +0 -56
- package/filters/esm2022/lib/filters/models/filters-trigger.base.mjs +0 -56
- package/filters/esm2022/lib/filters/models/filters.models.mjs +0 -44
- package/filters/esm2022/lib/filters/pipes/is-filters-param-checked.pipe.mjs +0 -21
- package/filters/esm2022/lib/filters/pipes/total-filters-applied.pipe.mjs +0 -18
- package/filters/esm2022/lib/filters/utils/filters.utils.mjs +0 -13
- package/filters/lib/filters/components/filters/filters.component.d.ts +0 -10
- package/filters/lib/filters/components/filters-button/filters-button.component.d.ts +0 -11
- package/filters/lib/filters/components/filters-panel/filters-panel.component.d.ts +0 -25
- package/filters/lib/filters/components/filters-unit/filters-unit.component.d.ts +0 -21
- package/filters/lib/filters/directives/filters-content.directive.d.ts +0 -5
- package/filters/lib/filters/directives/filters-trigger.directive.d.ts +0 -22
- package/filters/lib/filters/filters.module.d.ts +0 -20
- package/filters/lib/filters/models/filters-default-selection-model.d.ts +0 -18
- package/filters/lib/filters/models/filters-trigger.base.d.ts +0 -15
- package/filters/lib/filters/models/filters.models.d.ts +0 -42
- package/filters/lib/filters/pipes/is-filters-param-checked.pipe.d.ts +0 -10
- package/filters/lib/filters/pipes/total-filters-applied.pipe.d.ts +0 -8
- package/filters/lib/filters/utils/filters.utils.d.ts +0 -5
- package/styles/components/filters/_filters-panel.scss +0 -44
- package/styles/components/filters/_filters-unit.scss +0 -92
- package/styles/components/filters/index.scss +0 -7
@@ -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\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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"}
|
1
|
+
{"version":3,"file":"wlcm-angular-filters.mjs","sources":["../../../../modules/filters/src/lib/models/filter.models.ts","../../../../modules/filters/src/lib/models/array-filter.models.ts","../../../../modules/filters/src/lib/constants/filter.constants.ts","../../../../modules/filters/src/lib/models/filters-group.models.ts","../../../../modules/filters/src/lib/directives/filter.directive.ts","../../../../modules/filters/src/lib/components/filters-group/filters-group.component.ts","../../../../modules/filters/src/lib/components/filters-group/filters-group.component.html","../../../../modules/filters/src/lib/filters.module.ts","../../../../modules/filters/src/wlcm-angular-filters.ts"],"sourcesContent":["import { BehaviorSubject, Observable } from 'rxjs';\n\nexport abstract class WlcmFilter<T = unknown, O = T> {\n private _cachedValue: T | null = null;\n\n private readonly _size$: BehaviorSubject<number> = new BehaviorSubject(0);\n\n readonly size$: Observable<number> = this._size$.asObservable();\n\n private readonly _value$: BehaviorSubject<T | null> = new BehaviorSubject<T | null>(this.initialValue);\n\n readonly value$: Observable<T | null> = this._value$.asObservable();\n\n abstract get key(): string;\n\n abstract computeSize(value: T): number;\n\n reset(): void {\n this.value = this.initialValue;\n }\n\n cacheValue(): void {\n this._cachedValue = this.prepareValueForCache(this.value);\n }\n\n restoreCachedValue(): void {\n this.value = this._cachedValue;\n }\n\n prepareValueForCache(value: T | null): T | null {\n return value;\n }\n\n getAppliedFilters(): O {\n return this.value as O;\n }\n\n get initialValue(): T | null {\n return null;\n }\n\n get size(): number {\n return this._size$.value;\n }\n\n get value(): T | null {\n return this._value$.value;\n }\n\n set value(data: T | null) {\n this._value$.next(data);\n\n if (data !== null) {\n this._size$.next(this.computeSize(data));\n }\n }\n}\n","import { WlcmFilter } from './filter.models';\n\ntype ArrayFilterValue<T> = Map<unknown, T>;\n\nexport abstract class WlcmArrayFilter<T, O = T[]> extends WlcmFilter<ArrayFilterValue<T>, O> {\n constructor() {\n super();\n\n this.prepareValue();\n }\n\n override get initialValue(): ArrayFilterValue<T> {\n return new Map();\n }\n\n override getAppliedFilters(): O {\n if (!this.value) return [] as O;\n\n return Array.from(this.value.values()) as O;\n }\n\n override prepareValueForCache(value: ArrayFilterValue<T> | null): ArrayFilterValue<T> | null {\n if (!value) return null;\n\n return new Map(value);\n }\n\n override computeSize(value: ArrayFilterValue<T>): number {\n return value.size;\n }\n\n selectId(value: T): unknown {\n return value;\n }\n\n contains(value: T): boolean {\n if (!this.value) return false;\n\n return this.value.has(this.selectId(value));\n }\n\n addOne(value: T): void {\n this.prepareValue();\n\n this.value = (this.value as ArrayFilterValue<T>).set(this.selectId(value), value);\n }\n\n addMany(values: T[]): void {\n this.prepareValue();\n\n const currentValue: ArrayFilterValue<T> = this.value as ArrayFilterValue<T>;\n\n values.forEach((value: T) => currentValue.set(this.selectId(value), value));\n\n this.value = currentValue;\n }\n\n setAll(values: T[]): void {\n const newValue: ArrayFilterValue<T> = new Map();\n\n values.forEach((value: T) => newValue.set(this.selectId(value), value));\n\n this.value = newValue;\n }\n\n removeOne(value: T): void {\n this.prepareValue();\n\n const currentValue: ArrayFilterValue<T> = this.value as ArrayFilterValue<T>;\n\n currentValue.delete(this.selectId(value));\n\n this.value = currentValue;\n }\n\n removeAll(): void {\n this.value = new Map();\n }\n\n toggle(value: T): void {\n this.prepareValue();\n\n const currentValue: ArrayFilterValue<T> = this.value as ArrayFilterValue<T>;\n\n const id: unknown = this.selectId(value);\n\n if (currentValue.has(id)) {\n currentValue.delete(id);\n } else {\n currentValue.set(id, value);\n }\n\n this.value = currentValue;\n }\n\n private prepareValue(): void {\n if (this.value instanceof Map) return;\n\n this.value = new Map();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { WlcmFilter } from '../models/filter.models';\n\nexport const WLCM_FILTER: InjectionToken<WlcmFilter> = new InjectionToken('WLCM_FILTER');\n","import { AfterContentInit, ContentChildren, Directive, QueryList } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map, Observable, startWith, switchMap } from 'rxjs';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { WLCM_FILTER } from '../constants/filter.constants';\nimport { WlcmFilter } from './filter.models';\n\nexport type WlcmAppliedFilters = { [key: string]: unknown };\n\n@UntilDestroy()\n@Directive()\nexport abstract class WlcmFiltersGroup implements AfterContentInit {\n private readonly _size$: BehaviorSubject<number> = new BehaviorSubject(0);\n\n readonly size$: Observable<number> = this._size$.asObservable();\n\n @ContentChildren(WLCM_FILTER) protected filters!: QueryList<WlcmFilter>;\n\n ngAfterContentInit(): void {\n this.handleFiltersListChange();\n }\n\n resetAll(): void {\n this.filters.forEach((filter: WlcmFilter) => filter.reset());\n }\n\n getAppliedFilters(): WlcmAppliedFilters {\n const appliedFilters: WlcmAppliedFilters = {};\n\n this.filters.forEach((filter: WlcmFilter) => {\n appliedFilters[filter.key] = filter.getAppliedFilters();\n });\n\n return appliedFilters;\n }\n\n cacheValues(): void {\n this.filters.forEach((filter: WlcmFilter) => filter.cacheValue());\n }\n\n restoreCachedValues(): void {\n this.filters.forEach((filter: WlcmFilter) => filter.restoreCachedValue());\n }\n\n get size(): number {\n return this._size$.value;\n }\n\n private handleFiltersListChange(): void {\n this.filters.changes\n .pipe(untilDestroyed(this))\n .pipe(startWith(this.filters))\n .pipe(switchMap((filters: QueryList<WlcmFilter>) => this.handleSizeChange(filters.toArray())))\n .subscribe();\n }\n\n private handleSizeChange(list: WlcmFilter[]): Observable<WlcmFilter[]> {\n return combineLatest(list.map((filter: WlcmFilter) => filter.size$)).pipe(\n map((sizes: number[]) => {\n this._size$.next(sizes.reduce((a, b) => a + b, 0));\n\n return list;\n }),\n );\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: '[wlcmFilter]', standalone: true })\nexport class FilterDirective {}\n","import { Component, forwardRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WlcmFiltersGroup } from '../../models/filters-group.models';\n\n@Component({\n selector: 'wlcm-filters-group',\n standalone: true,\n imports: [CommonModule],\n host: { class: 'wlcm-filters-group' },\n templateUrl: './filters-group.component.html',\n styleUrl: './filters-group.component.scss',\n providers: [{ provide: WlcmFiltersGroup, useExisting: forwardRef(() => FiltersGroupComponent) }],\n})\nexport class FiltersGroupComponent extends WlcmFiltersGroup {}\n","<ng-content select=\"[wlcmFilter]\"></ng-content>\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FiltersGroupComponent } from './components/filters-group/filters-group.component';\nimport { FilterDirective } from './directives/filter.directive';\n\nconst publicComponents: Type<unknown>[] = [FiltersGroupComponent];\n\nconst publicDirectives: Type<unknown>[] = [FilterDirective];\n\n@NgModule({\n imports: [CommonModule, ...publicComponents, ...publicDirectives],\n exports: [...publicComponents, ...publicDirectives],\n})\nexport class WlcmFiltersModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/filters/index.d.ts
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
export * from './lib/
|
2
|
-
export * from './lib/
|
3
|
-
export * from './lib/
|
4
|
-
export * from './lib/filters
|
5
|
-
export
|
6
|
-
export * from './lib/filters/components/filters-unit/filters-unit.component';
|
7
|
-
export * from './lib/filters/components/filters-button/filters-button.component';
|
1
|
+
export * from './lib/models';
|
2
|
+
export * from './lib/constants';
|
3
|
+
export * from './lib/directives';
|
4
|
+
export * from './lib/filters.module';
|
5
|
+
export { FiltersGroupComponent } from './lib/components/filters-group/filters-group.component';
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { WlcmFiltersGroup } from '../../models/filters-group.models';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class FiltersGroupComponent extends WlcmFiltersGroup {
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FiltersGroupComponent, never>;
|
5
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FiltersGroupComponent, "wlcm-filters-group", never, {}, {}, never, ["[wlcmFilter]"], true, never>;
|
6
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './filter.constants';
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './filter.directive';
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "@angular/common";
|
3
|
+
import * as i2 from "./components/filters-group/filters-group.component";
|
4
|
+
import * as i3 from "./directives/filter.directive";
|
5
|
+
export declare class WlcmFiltersModule {
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersModule, never>;
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<WlcmFiltersModule, never, [typeof i1.CommonModule, typeof i2.FiltersGroupComponent, typeof i3.FilterDirective], [typeof i2.FiltersGroupComponent, typeof i3.FilterDirective]>;
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<WlcmFiltersModule>;
|
9
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { WlcmFilter } from './filter.models';
|
2
|
+
type ArrayFilterValue<T> = Map<unknown, T>;
|
3
|
+
export declare abstract class WlcmArrayFilter<T, O = T[]> extends WlcmFilter<ArrayFilterValue<T>, O> {
|
4
|
+
constructor();
|
5
|
+
get initialValue(): ArrayFilterValue<T>;
|
6
|
+
getAppliedFilters(): O;
|
7
|
+
prepareValueForCache(value: ArrayFilterValue<T> | null): ArrayFilterValue<T> | null;
|
8
|
+
computeSize(value: ArrayFilterValue<T>): number;
|
9
|
+
selectId(value: T): unknown;
|
10
|
+
contains(value: T): boolean;
|
11
|
+
addOne(value: T): void;
|
12
|
+
addMany(values: T[]): void;
|
13
|
+
setAll(values: T[]): void;
|
14
|
+
removeOne(value: T): void;
|
15
|
+
removeAll(): void;
|
16
|
+
toggle(value: T): void;
|
17
|
+
private prepareValue;
|
18
|
+
}
|
19
|
+
export {};
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { Observable } from 'rxjs';
|
2
|
+
export declare abstract class WlcmFilter<T = unknown, O = T> {
|
3
|
+
private _cachedValue;
|
4
|
+
private readonly _size$;
|
5
|
+
readonly size$: Observable<number>;
|
6
|
+
private readonly _value$;
|
7
|
+
readonly value$: Observable<T | null>;
|
8
|
+
abstract get key(): string;
|
9
|
+
abstract computeSize(value: T): number;
|
10
|
+
reset(): void;
|
11
|
+
cacheValue(): void;
|
12
|
+
restoreCachedValue(): void;
|
13
|
+
prepareValueForCache(value: T | null): T | null;
|
14
|
+
getAppliedFilters(): O;
|
15
|
+
get initialValue(): T | null;
|
16
|
+
get size(): number;
|
17
|
+
get value(): T | null;
|
18
|
+
set value(data: T | null);
|
19
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { AfterContentInit, QueryList } from '@angular/core';
|
2
|
+
import { Observable } from 'rxjs';
|
3
|
+
import { WlcmFilter } from './filter.models';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export type WlcmAppliedFilters = {
|
6
|
+
[key: string]: unknown;
|
7
|
+
};
|
8
|
+
export declare abstract class WlcmFiltersGroup implements AfterContentInit {
|
9
|
+
private readonly _size$;
|
10
|
+
readonly size$: Observable<number>;
|
11
|
+
protected filters: QueryList<WlcmFilter>;
|
12
|
+
ngAfterContentInit(): void;
|
13
|
+
resetAll(): void;
|
14
|
+
getAppliedFilters(): WlcmAppliedFilters;
|
15
|
+
cacheValues(): void;
|
16
|
+
restoreCachedValues(): void;
|
17
|
+
get size(): number;
|
18
|
+
private handleFiltersListChange;
|
19
|
+
private handleSizeChange;
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WlcmFiltersGroup, never>;
|
21
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<WlcmFiltersGroup, never, never, {}, {}, ["filters"], never, false, never>;
|
22
|
+
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
2
|
-
import { ChangeDetectionStrategy, Component, ElementRef, Inject, Input, ViewChild, forwardRef, inject, input, output, } from '@angular/core';
|
2
|
+
import { ChangeDetectionStrategy, Component, ElementRef, Inject, Input, TemplateRef, ViewChild, forwardRef, inject, input, output, } 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';
|
@@ -152,7 +152,7 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
152
152
|
this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));
|
153
153
|
}
|
154
154
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmAutocompleteComponent, deps: [{ token: WLCM_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component }); }
|
155
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", 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 }, noResultsTemplate: { classPropertyName: "noResultsTemplate", publicName: "noResultsTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { classAttribute: "wlcm-autocomplete" }, providers: [
|
155
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", 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 }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: false, isRequired: false, transformFunction: null }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, noResultsTemplate: { classPropertyName: "noResultsTemplate", publicName: "noResultsTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { classAttribute: "wlcm-autocomplete" }, providers: [
|
156
156
|
{ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS } },
|
157
157
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
158
158
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
@@ -163,7 +163,7 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
163
163
|
return { bind: () => autocomplete };
|
164
164
|
},
|
165
165
|
},
|
166
|
-
], 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 }], exportAs: ["wlcmAutocomplete"], usesInheritance: 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
|
166
|
+
], 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 }], exportAs: ["wlcmAutocomplete"], usesInheritance: 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\n *ngFor=\"let option of options\"\n [ngClass]=\"{ 'wlcm-custom-option-content': optionTemplate }\"\n [value]=\"option\"\n >\n @if (optionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n\n <mat-option [disabled]=\"true\" *ngIf=\"options.length === 0\">\n @if (noResultsTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n noResultsTemplate()!;\n context: { $implicit: control.value }\n \"\n ></ng-container>\n } @else {\n No results found\n }\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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 }); }
|
167
167
|
};
|
168
168
|
WlcmAutocompleteComponent = __decorate([
|
169
169
|
UntilDestroy(),
|
@@ -192,7 +192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
192
192
|
return { bind: () => autocomplete };
|
193
193
|
},
|
194
194
|
},
|
195
|
-
], 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
|
195
|
+
], 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\n *ngFor=\"let option of options\"\n [ngClass]=\"{ 'wlcm-custom-option-content': optionTemplate }\"\n [value]=\"option\"\n >\n @if (optionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n\n <mat-option [disabled]=\"true\" *ngIf=\"options.length === 0\">\n @if (noResultsTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n noResultsTemplate()!;\n context: { $implicit: control.value }\n \"\n ></ng-container>\n } @else {\n No results found\n }\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n" }]
|
196
196
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
197
197
|
type: Inject,
|
198
198
|
args: [WLCM_FORM_FIELD]
|
@@ -204,6 +204,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
204
204
|
type: Input
|
205
205
|
}], placeholder: [{
|
206
206
|
type: Input
|
207
|
+
}], optionTemplate: [{
|
208
|
+
type: Input
|
207
209
|
}], inputElement: [{
|
208
210
|
type: ViewChild,
|
209
211
|
args: [WLCM_INPUT, { read: ElementRef }]
|
@@ -214,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
214
216
|
type: ViewChild,
|
215
217
|
args: [MatAutocomplete]
|
216
218
|
}] } });
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBS0wsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsV0FBVyxFQUNYLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEdBR3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDaEMsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsc0JBQXNCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUNMLGVBQWUsRUFDZixLQUFLLEVBRUwsT0FBTyxFQUNQLFNBQVMsRUFDVCxNQUFNLEVBRU4sU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBQ0wsU0FBUyxFQUNU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QkFBN0IsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQTBDOEMsWUFBWTtzQkFBL0QsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUVBLG1CQUFtQjtzQkFBN0QsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBRUcsWUFBWTtzQkFBL0MsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgSW5wdXRTaWduYWwsXG4gIE9uSW5pdCxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgV2xjbUZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2xjbUxhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vbGFiZWwvbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFdsY21JbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gIE1BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLFxuICBNYXRBdXRvY29tcGxldGUsXG4gIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgTWF0QXV0b2NvbXBsZXRlT3JpZ2luLFxuICBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBFTVBUWSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29uY2F0TWFwLFxuICBmaWx0ZXIsXG4gIGZpbmFsaXplLFxuICBmcm9tRXZlbnQsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxuICB0aW1lcixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBERUZBVUxUX1FVRVJZX1BBUkFNUyxcbiAgUGFnaW5hdGVkRGF0YSxcbiAgUXVlcnlQYXJhbXMsXG4gIFdsY21BdXRvY29tcGxldGVPcHRpb24sXG4gIFdsY21TZWxlY3RPcHRpb25Gb3JtYXQsXG59IGZyb20gJ0B3bGNtL2FuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXTENNX0ZPUk1fRklFTEQsIFdMQ01fSU5QVVQsIFdMQ01fSU5QVVRfQklOREVSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdsY21BdXRvY29tcGxldGUsIFdsY21BdXRvY29tcGxldGVWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVscy9hdXRvY29tcGxldGUubW9kZWxzJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGRJbnB1dCB9IGZyb20gJy4uLy4uL21vZGVscy9pbnB1dC5tb2RlbHMnO1xuaW1wb3J0IHsgV2xjbUZvcm1GaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLm1vZGVscyc7XG5pbXBvcnQgeyBSeExldCB9IGZyb20gJ0ByeC1hbmd1bGFyL3RlbXBsYXRlL2xldCc7XG5cbnR5cGUgT3B0aW9uID0gV2xjbUF1dG9jb21wbGV0ZU9wdGlvbjtcblxuY29uc3QgUEFORUxfQ0xBU1M6IHN0cmluZyA9ICd3bGNtLWF1dG9jb21wbGV0ZS1wYW5lbCc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2xjbS1hdXRvY29tcGxldGUnLFxuICBleHBvcnRBczogJ3dsY21BdXRvY29tcGxldGUnLFxuICBob3N0OiB7IGNsYXNzOiAnd2xjbS1hdXRvY29tcGxldGUnIH0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIEF1dG9jb21wbGV0ZURpcmVjdGl2ZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFdsY21Gb3JtRmllbGRDb21wb25lbnQsXG4gICAgV2xjbUxhYmVsQ29tcG9uZW50LFxuICAgIFdsY21JbnB1dERpcmVjdGl2ZSxcbiAgICBSeExldCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IHsgb3ZlcmxheVBhbmVsQ2xhc3M6IFBBTkVMX0NMQVNTIH0gfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtQXV0b2NvbXBsZXRlQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21BdXRvY29tcGxldGVDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFdMQ01fSU5QVVRfQklOREVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBpbmplY3QoV2xjbUF1dG9jb21wbGV0ZUNvbXBvbmVudCwgeyBzZWxmOiB0cnVlIH0pO1xuXG4gICAgICAgIHJldHVybiB7IGJpbmQ6ICgpID0+IGF1dG9jb21wbGV0ZSB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGV4dGVuZHMgV2xjbUF1dG9jb21wbGV0ZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCwgV2xjbUZvcm1GaWVsZElucHV0XG57XG4gIEBJbnB1dCgpIGZldGNoUGFnaW5hdGVkT3B0aW9ucyE6IChwYXJhbXM6IFF1ZXJ5UGFyYW1zKSA9PiBPYnNlcnZhYmxlPFBhZ2luYXRlZERhdGE8T3B0aW9uPj47XG5cbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgc2VsZWN0T3B0aW9uRm9ybWF0OiBJbnB1dFNpZ25hbDxXbGNtU2VsZWN0T3B0aW9uRm9ybWF0PiA9IGlucHV0PFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+KCdWYWx1ZU9ubHknKTtcblxuICBub1Jlc3VsdHNUZW1wbGF0ZTogSW5wdXRTaWduYWw8VGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFdsY21BdXRvY29tcGxldGVWYWx1ZSB9PiB8IHVuZGVmaW5lZD4gPSBpbnB1dCgpO1xuXG4gIHNlbGVjdGVkOiBPdXRwdXRFbWl0dGVyUmVmPFdsY21BdXRvY29tcGxldGVWYWx1ZT4gPSBvdXRwdXQoKTtcblxuICByZWFkb25seSBjb250cm9sOiBGb3JtQ29udHJvbDxXbGNtQXV0b2NvbXBsZXRlVmFsdWU+ID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkTW9yZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnMkOiBCZWhhdmlvclN1YmplY3Q8T3B0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPcHRpb25bXT4oW10pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zJDogT2JzZXJ2YWJsZTxPcHRpb25bXT4gPSB0aGlzLl9vcHRpb25zJC5hc09ic2VydmFibGUoKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xvc2VkJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2JsdXJTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBmb2N1cyQ6IE9ic2VydmFibGU8dW5rbm93bj4gPSB0aGlzLl9mb2N1c1N0cmVhbSQucGlwZShzd2l0Y2hNYXAoKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPikgPT4gc3RyZWFtKSk7XG5cbiAgYmx1ciQ6IE9ic2VydmFibGU8dW5rbm93bj4gPSB0aGlzLl9ibHVyU3RyZWFtJC5waXBlKHN3aXRjaE1hcCgoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBzdHJlYW0pKTtcblxuICBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zID0geyAuLi5ERUZBVUxUX1FVRVJZX1BBUkFNUywgbGltaXQ6IDE1IH07XG5cbiAgcHJpdmF0ZSBfY2hhbmdlZD86ICh2YWx1ZTogV2xjbUF1dG9jb21wbGV0ZU9wdGlvbiB8IHN0cmluZykgPT4gdm9pZDtcblxuICBwcml2YXRlIF90b3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9vblZhbGlkYXRvckNoYW5nZT86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfcGFnaW5hdGVkRGF0YTogUGFnaW5hdGVkRGF0YTxPcHRpb24+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfcmVsb2FkT3B0aW9ucyQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoV0xDTV9JTlBVVCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHB1YmxpYyBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikgcHJpdmF0ZSBhdXRvY29tcGxldGVUcmlnZ2VyITogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcblxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSkgcHJpdmF0ZSBhdXRvY29tcGxldGUhOiBNYXRBdXRvY29tcGxldGU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChXTENNX0ZPUk1fRklFTEQpIHByaXZhdGUgZm9ybUZpZWxkOiBXbGNtRm9ybUZpZWxkKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaGFuZGxlTG9hZE1vcmVFdmVudCgpO1xuXG4gICAgdGhpcy5oYW5kbGVDb250cm9sVmFsdWVDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRPcHRpb25zKHRoaXMucXVlcnlQYXJhbXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lcjogRWxlbWVudFJlZiA9IHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyO1xuXG4gICAgY29uc3Qgb3JpZ2luOiBNYXRBdXRvY29tcGxldGVPcmlnaW4gPSBuZXcgTWF0QXV0b2NvbXBsZXRlT3JpZ2luKGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY29ubmVjdGVkVG8gPSBvcmlnaW47XG5cbiAgICB0aGlzLmF0dGFjaEZvY3VzQmx1ckxpc3RlbmVycygpO1xuICB9XG5cbiAgZGlzcGxheVdpdGgodmFsdWU6IE9wdGlvbiB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICByZXR1cm4gdmFsdWUudmlld1ZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGlzRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgfHwgdGhpcy5hdXRvY29tcGxldGU/LmlzT3BlbjtcbiAgfVxuXG4gIGxvYWRNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xvYWRNb3JlJC5uZXh0KCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uIHwgc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl90b3VjaGVkID0gY2FsbGJhY2s7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xuICB9XG5cbiAgcmVsb2FkT3B0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2UgPSAxO1xuXG4gICAgdGhpcy5fcmVsb2FkT3B0aW9ucyQubmV4dCgpO1xuICB9XG5cbiAgYmx1cmVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hdXRvY29tcGxldGUuaXNPcGVuKSB0aGlzLl90b3VjaGVkPy4oKTtcblxuICAgIHRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlZC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl90b3VjaGVkPy4oKSk7XG4gIH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCEhdGhpcy5jb250cm9sLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5jb250cm9sLnZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIHsgLi4uY29udHJvbC5lcnJvcnMsIHVuc2VsZWN0ZWQ6IHRydWUsIHJlcXVpcmVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcHRpb25zKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2luYXRlZERhdGE8T3B0aW9uPj4ge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5mZXRjaFBhZ2luYXRlZE9wdGlvbnMoeyAuLi5wYXJhbXMsIHBhZ2U6IDEgfSkucGlwZShcbiAgICAgIHRhcCgocGFnaW5hdGVkRGF0YTogUGFnaW5hdGVkRGF0YTxPcHRpb24+KSA9PiB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRlZERhdGEgPSBwYWdpbmF0ZWREYXRhO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxvYWRNb3JlRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZE1vcmUkXG4gICAgICAucGlwZShcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fcGFnaW5hdGVkRGF0YSAmJiB0aGlzLl9wYWdpbmF0ZWREYXRhLmN1cnJQYWdlICsgMSA8PSB0aGlzLl9wYWdpbmF0ZWREYXRhLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZSsrO1xuXG4gICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFBhZ2luYXRlZE9wdGlvbnModGhpcy5xdWVyeVBhcmFtcykucGlwZShcbiAgICAgICAgICAgICAgdGFwKChwYWdpbmF0ZWREYXRhOiBQYWdpbmF0ZWREYXRhPE9wdGlvbj4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQoWy4uLnRoaXMuX29wdGlvbnMkLnZhbHVlLCAuLi5wYWdpbmF0ZWREYXRhLmRhdGFdKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29udHJvbFZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBtZXJnZSh0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLCB0aGlzLl9yZWxvYWRPcHRpb25zJC5waXBlKG1hcCgoKSA9PiB0aGlzLmNvbnRyb2wudmFsdWUpKSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWU6IFdsY21BdXRvY29tcGxldGVWYWx1ZSkgPT4ge1xuICAgICAgICAgIGxldCBfdmFsdWU6IFdsY21BdXRvY29tcGxldGVWYWx1ZSA9IHZhbHVlID8/ICcnO1xuXG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmIHRoaXMuc2VsZWN0T3B0aW9uRm9ybWF0KCkgPT09ICdWYWx1ZU9ubHknKSBfdmFsdWUgPSB2YWx1ZS52YWx1ZTtcblxuICAgICAgICAgIHRoaXMuX2NoYW5nZWQ/LihfdmFsdWUpO1xuXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KF92YWx1ZSk7XG5cbiAgICAgICAgICByZXR1cm4gISh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWU6IFdsY21BdXRvY29tcGxldGVWYWx1ZSkgPT5cbiAgICAgICAgICB0aW1lcigyMDApLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZE9wdGlvbnMoeyAuLi50aGlzLnF1ZXJ5UGFyYW1zLCBxdWVyeTogdmFsdWUgYXMgc3RyaW5nIH0pKSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaEZvY3VzQmx1ckxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCB2b2lkRm4gPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0IGlucHV0Rm9jdXM6IE9ic2VydmFibGU8RXZlbnQ+ID0gZnJvbUV2ZW50KHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdmb2N1cycpO1xuXG4gICAgY29uc3QgaW5wdXRCbHVyOiBPYnNlcnZhYmxlPEV2ZW50PiA9IGZyb21FdmVudCh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnYmx1cicpO1xuXG4gICAgY29uc3QgZm9jdXNPYnNlcnZhYmxlczogT2JzZXJ2YWJsZTx1bmtub3duPltdID0gW2lucHV0Rm9jdXMsIHRoaXMuYXV0b2NvbXBsZXRlLm9wZW5lZF07XG5cbiAgICBjb25zdCBibHVyT2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8dW5rbm93bj5bXSA9IFtpbnB1dEJsdXIsIHRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlZF07XG5cbiAgICB0aGlzLl9mb2N1c1N0cmVhbSQubmV4dChtZXJnZSguLi5mb2N1c09ic2VydmFibGVzKS5waXBlKG1hcCh2b2lkRm4pKSk7XG5cbiAgICB0aGlzLl9ibHVyU3RyZWFtJC5uZXh0KG1lcmdlKC4uLmJsdXJPYnNlcnZhYmxlcykucGlwZShtYXAoKCkgPT4gdGhpcy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCkpKSk7XG4gIH1cbn1cbiIsIjxpbnB1dFxuICB3bGNtSW5wdXRcbiAgdHlwZT1cInRleHRcIlxuICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgKGJsdXIpPVwiYmx1cmVkKClcIlxuLz5cblxuPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gIHdsY21BdXRvY29tcGxldGVcbiAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5V2l0aFwiXG4gIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICAocGFuZWxTY3JvbGxlZCk9XCJsb2FkTW9yZSgpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqcnhMZXQ9XCIkYW55KG9wdGlvbnMkIHwgYXN5bmMpOyBsZXQgb3B0aW9uc1wiPlxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgIHt7IG9wdGlvbi52aWV3VmFsdWUgfX1cbiAgICA8L21hdC1vcHRpb24+XG5cbiAgICA8bWF0LW9wdGlvbiBbZGlzYWJsZWRdPVwidHJ1ZVwiICpuZ0lmPVwib3B0aW9ucy5sZW5ndGggPT09IDBcIj5cbiAgICAgIEBpZiAobm9SZXN1bHRzVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIG5vUmVzdWx0c1RlbXBsYXRlKCkhO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbnRyb2wudmFsdWUgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBObyByZXN1bHRzIGZvdW5kXG4gICAgICB9XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cbiJdfQ==
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUdwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUN2QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsS0FBSyxFQUVMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsTUFBTSxFQUVOLFNBQVMsRUFDVCxHQUFHLEVBQ0gsS0FBSyxFQUNM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MUIscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkEwQzhDLFlBQVk7c0JBQS9ELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFQSxtQkFBbUI7c0JBQTdELFNBQVM7dUJBQUMsc0JBQXNCO2dCQUVHLFlBQVk7c0JBQS9DLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIElucHV0U2lnbmFsLFxuICBPbkluaXQsXG4gIE91dHB1dEVtaXR0ZXJSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFdsY21MYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXbGNtSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2lucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUyxcbiAgTWF0QXV0b2NvbXBsZXRlLFxuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZU9yaWdpbixcbiAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgRU1QVFksXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGNvbmNhdE1hcCxcbiAgZmlsdGVyLFxuICBmaW5hbGl6ZSxcbiAgZnJvbUV2ZW50LFxuICBtYXAsXG4gIG1lcmdlLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbiAgdGltZXIsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9RVUVSWV9QQVJBTVMsXG4gIFBhZ2luYXRlZERhdGEsXG4gIFF1ZXJ5UGFyYW1zLFxuICBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uLFxuICBXbGNtU2VsZWN0T3B0aW9uRm9ybWF0LFxufSBmcm9tICdAd2xjbS9hbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV0xDTV9GT1JNX0ZJRUxELCBXTENNX0lOUFVULCBXTENNX0lOUFVUX0JJTkRFUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtQXV0b2NvbXBsZXRlLCBXbGNtQXV0b2NvbXBsZXRlVmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXV0b2NvbXBsZXRlLm1vZGVscyc7XG5pbXBvcnQgeyBXbGNtRm9ybUZpZWxkSW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQubW9kZWxzJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS5tb2RlbHMnO1xuaW1wb3J0IHsgUnhMZXQgfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9sZXQnO1xuXG50eXBlIE9wdGlvbiA9IFdsY21BdXRvY29tcGxldGVPcHRpb247XG5cbmNvbnN0IFBBTkVMX0NMQVNTOiBzdHJpbmcgPSAnd2xjbS1hdXRvY29tcGxldGUtcGFuZWwnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tYXV0b2NvbXBsZXRlJyxcbiAgZXhwb3J0QXM6ICd3bGNtQXV0b2NvbXBsZXRlJyxcbiAgaG9zdDogeyBjbGFzczogJ3dsY20tYXV0b2NvbXBsZXRlJyB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBBdXRvY29tcGxldGVEaXJlY3RpdmUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBXbGNtRm9ybUZpZWxkQ29tcG9uZW50LFxuICAgIFdsY21MYWJlbENvbXBvbmVudCxcbiAgICBXbGNtSW5wdXREaXJlY3RpdmUsXG4gICAgUnhMZXQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IG92ZXJsYXlQYW5lbENsYXNzOiBQQU5FTF9DTEFTUyB9IH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbUF1dG9jb21wbGV0ZUNvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtQXV0b2NvbXBsZXRlQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBXTENNX0lOUFVUX0JJTkRFUixcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgY29uc3QgYXV0b2NvbXBsZXRlID0gaW5qZWN0KFdsY21BdXRvY29tcGxldGVDb21wb25lbnQsIHsgc2VsZjogdHJ1ZSB9KTtcblxuICAgICAgICByZXR1cm4geyBiaW5kOiAoKSA9PiBhdXRvY29tcGxldGUgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbUF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICBleHRlbmRzIFdsY21BdXRvY29tcGxldGVcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIEFmdGVyVmlld0luaXQsIFdsY21Gb3JtRmllbGRJbnB1dFxue1xuICBASW5wdXQoKSBmZXRjaFBhZ2luYXRlZE9wdGlvbnMhOiAocGFyYW1zOiBRdWVyeVBhcmFtcykgPT4gT2JzZXJ2YWJsZTxQYWdpbmF0ZWREYXRhPE9wdGlvbj4+O1xuXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpIG9wdGlvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFdsY21BdXRvY29tcGxldGVPcHRpb24gfT47XG5cbiAgc2VsZWN0T3B0aW9uRm9ybWF0OiBJbnB1dFNpZ25hbDxXbGNtU2VsZWN0T3B0aW9uRm9ybWF0PiA9IGlucHV0PFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+KCdWYWx1ZU9ubHknKTtcblxuICBub1Jlc3VsdHNUZW1wbGF0ZTogSW5wdXRTaWduYWw8VGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFdsY21BdXRvY29tcGxldGVWYWx1ZSB9PiB8IHVuZGVmaW5lZD4gPSBpbnB1dCgpO1xuXG4gIHNlbGVjdGVkOiBPdXRwdXRFbWl0dGVyUmVmPFdsY21BdXRvY29tcGxldGVWYWx1ZT4gPSBvdXRwdXQoKTtcblxuICByZWFkb25seSBjb250cm9sOiBGb3JtQ29udHJvbDxXbGNtQXV0b2NvbXBsZXRlVmFsdWU+ID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkTW9yZSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnMkOiBCZWhhdmlvclN1YmplY3Q8T3B0aW9uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPcHRpb25bXT4oW10pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zJDogT2JzZXJ2YWJsZTxPcHRpb25bXT4gPSB0aGlzLl9vcHRpb25zJC5hc09ic2VydmFibGUoKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xvc2VkJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2JsdXJTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBmb2N1cyQ6IE9ic2VydmFibGU8dW5rbm93bj4gPSB0aGlzLl9mb2N1c1N0cmVhbSQucGlwZShzd2l0Y2hNYXAoKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPikgPT4gc3RyZWFtKSk7XG5cbiAgYmx1ciQ6IE9ic2VydmFibGU8dW5rbm93bj4gPSB0aGlzLl9ibHVyU3RyZWFtJC5waXBlKHN3aXRjaE1hcCgoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBzdHJlYW0pKTtcblxuICBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zID0geyAuLi5ERUZBVUxUX1FVRVJZX1BBUkFNUywgbGltaXQ6IDE1IH07XG5cbiAgcHJpdmF0ZSBfY2hhbmdlZD86ICh2YWx1ZTogV2xjbUF1dG9jb21wbGV0ZU9wdGlvbiB8IHN0cmluZykgPT4gdm9pZDtcblxuICBwcml2YXRlIF90b3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9vblZhbGlkYXRvckNoYW5nZT86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfcGFnaW5hdGVkRGF0YTogUGFnaW5hdGVkRGF0YTxPcHRpb24+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfcmVsb2FkT3B0aW9ucyQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoV0xDTV9JTlBVVCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHB1YmxpYyBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikgcHJpdmF0ZSBhdXRvY29tcGxldGVUcmlnZ2VyITogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcblxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSkgcHJpdmF0ZSBhdXRvY29tcGxldGUhOiBNYXRBdXRvY29tcGxldGU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChXTENNX0ZPUk1fRklFTEQpIHByaXZhdGUgZm9ybUZpZWxkOiBXbGNtRm9ybUZpZWxkKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaGFuZGxlTG9hZE1vcmVFdmVudCgpO1xuXG4gICAgdGhpcy5oYW5kbGVDb250cm9sVmFsdWVDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRPcHRpb25zKHRoaXMucXVlcnlQYXJhbXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lcjogRWxlbWVudFJlZiA9IHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyO1xuXG4gICAgY29uc3Qgb3JpZ2luOiBNYXRBdXRvY29tcGxldGVPcmlnaW4gPSBuZXcgTWF0QXV0b2NvbXBsZXRlT3JpZ2luKGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY29ubmVjdGVkVG8gPSBvcmlnaW47XG5cbiAgICB0aGlzLmF0dGFjaEZvY3VzQmx1ckxpc3RlbmVycygpO1xuICB9XG5cbiAgZGlzcGxheVdpdGgodmFsdWU6IE9wdGlvbiB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICByZXR1cm4gdmFsdWUudmlld1ZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGlzRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgfHwgdGhpcy5hdXRvY29tcGxldGU/LmlzT3BlbjtcbiAgfVxuXG4gIGxvYWRNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xvYWRNb3JlJC5uZXh0KCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uIHwgc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl90b3VjaGVkID0gY2FsbGJhY2s7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xuICB9XG5cbiAgcmVsb2FkT3B0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2UgPSAxO1xuXG4gICAgdGhpcy5fcmVsb2FkT3B0aW9ucyQubmV4dCgpO1xuICB9XG5cbiAgYmx1cmVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hdXRvY29tcGxldGUuaXNPcGVuKSB0aGlzLl90b3VjaGVkPy4oKTtcblxuICAgIHRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlZC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl90b3VjaGVkPy4oKSk7XG4gIH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCEhdGhpcy5jb250cm9sLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5jb250cm9sLnZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIHsgLi4uY29udHJvbC5lcnJvcnMsIHVuc2VsZWN0ZWQ6IHRydWUsIHJlcXVpcmVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICBwcml2YXRlIGxvYWRPcHRpb25zKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2luYXRlZERhdGE8T3B0aW9uPj4ge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5mZXRjaFBhZ2luYXRlZE9wdGlvbnMoeyAuLi5wYXJhbXMsIHBhZ2U6IDEgfSkucGlwZShcbiAgICAgIHRhcCgocGFnaW5hdGVkRGF0YTogUGFnaW5hdGVkRGF0YTxPcHRpb24+KSA9PiB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRlZERhdGEgPSBwYWdpbmF0ZWREYXRhO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxvYWRNb3JlRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZE1vcmUkXG4gICAgICAucGlwZShcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fcGFnaW5hdGVkRGF0YSAmJiB0aGlzLl9wYWdpbmF0ZWREYXRhLmN1cnJQYWdlICsgMSA8PSB0aGlzLl9wYWdpbmF0ZWREYXRhLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZSsrO1xuXG4gICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFBhZ2luYXRlZE9wdGlvbnModGhpcy5xdWVyeVBhcmFtcykucGlwZShcbiAgICAgICAgICAgICAgdGFwKChwYWdpbmF0ZWREYXRhOiBQYWdpbmF0ZWREYXRhPE9wdGlvbj4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQoWy4uLnRoaXMuX29wdGlvbnMkLnZhbHVlLCAuLi5wYWdpbmF0ZWREYXRhLmRhdGFdKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29udHJvbFZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBtZXJnZSh0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLCB0aGlzLl9yZWxvYWRPcHRpb25zJC5waXBlKG1hcCgoKSA9PiB0aGlzLmNvbnRyb2wudmFsdWUpKSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWU6IFdsY21BdXRvY29tcGxldGVWYWx1ZSkgPT4ge1xuICAgICAgICAgIGxldCBfdmFsdWU6IFdsY21BdXRvY29tcGxldGVWYWx1ZSA9IHZhbHVlID8/ICcnO1xuXG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmIHRoaXMuc2VsZWN0T3B0aW9uRm9ybWF0KCkgPT09ICdWYWx1ZU9ubHknKSBfdmFsdWUgPSB2YWx1ZS52YWx1ZTtcblxuICAgICAgICAgIHRoaXMuX2NoYW5nZWQ/LihfdmFsdWUpO1xuXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KF92YWx1ZSk7XG5cbiAgICAgICAgICByZXR1cm4gISh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWU6IFdsY21BdXRvY29tcGxldGVWYWx1ZSkgPT5cbiAgICAgICAgICB0aW1lcigyMDApLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZE9wdGlvbnMoeyAuLi50aGlzLnF1ZXJ5UGFyYW1zLCBxdWVyeTogdmFsdWUgYXMgc3RyaW5nIH0pKSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaEZvY3VzQmx1ckxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCB2b2lkRm4gPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0IGlucHV0Rm9jdXM6IE9ic2VydmFibGU8RXZlbnQ+ID0gZnJvbUV2ZW50KHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdmb2N1cycpO1xuXG4gICAgY29uc3QgaW5wdXRCbHVyOiBPYnNlcnZhYmxlPEV2ZW50PiA9IGZyb21FdmVudCh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnYmx1cicpO1xuXG4gICAgY29uc3QgZm9jdXNPYnNlcnZhYmxlczogT2JzZXJ2YWJsZTx1bmtub3duPltdID0gW2lucHV0Rm9jdXMsIHRoaXMuYXV0b2NvbXBsZXRlLm9wZW5lZF07XG5cbiAgICBjb25zdCBibHVyT2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8dW5rbm93bj5bXSA9IFtpbnB1dEJsdXIsIHRoaXMuYXV0b2NvbXBsZXRlLmNsb3NlZF07XG5cbiAgICB0aGlzLl9mb2N1c1N0cmVhbSQubmV4dChtZXJnZSguLi5mb2N1c09ic2VydmFibGVzKS5waXBlKG1hcCh2b2lkRm4pKSk7XG5cbiAgICB0aGlzLl9ibHVyU3RyZWFtJC5uZXh0KG1lcmdlKC4uLmJsdXJPYnNlcnZhYmxlcykucGlwZShtYXAoKCkgPT4gdGhpcy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCkpKSk7XG4gIH1cbn1cbiIsIjxpbnB1dFxuICB3bGNtSW5wdXRcbiAgdHlwZT1cInRleHRcIlxuICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgKGJsdXIpPVwiYmx1cmVkKClcIlxuLz5cblxuPG1hdC1hdXRvY29tcGxldGVcbiAgI2F1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gIHdsY21BdXRvY29tcGxldGVcbiAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5V2l0aFwiXG4gIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICAocGFuZWxTY3JvbGxlZCk9XCJsb2FkTW9yZSgpXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqcnhMZXQ9XCIkYW55KG9wdGlvbnMkIHwgYXN5bmMpOyBsZXQgb3B0aW9uc1wiPlxuICAgIDxtYXQtb3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnd2xjbS1jdXN0b20tb3B0aW9uLWNvbnRlbnQnOiBvcHRpb25UZW1wbGF0ZSB9XCJcbiAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgID5cbiAgICAgIEBpZiAob3B0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBvcHRpb24gfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICB7eyBvcHRpb24udmlld1ZhbHVlIH19XG4gICAgICB9XG4gICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgPG1hdC1vcHRpb24gW2Rpc2FibGVkXT1cInRydWVcIiAqbmdJZj1cIm9wdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICBAaWYgKG5vUmVzdWx0c1RlbXBsYXRlKCkpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBub1Jlc3VsdHNUZW1wbGF0ZSgpITtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb250cm9sLnZhbHVlIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgTm8gcmVzdWx0cyBmb3VuZFxuICAgICAgfVxuICAgIDwvbWF0LW9wdGlvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L21hdC1hdXRvY29tcGxldGU+XG4iXX0=
|
@@ -607,7 +607,7 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
607
607
|
this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));
|
608
608
|
}
|
609
609
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmAutocompleteComponent, deps: [{ token: WLCM_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component }); }
|
610
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", 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 }, noResultsTemplate: { classPropertyName: "noResultsTemplate", publicName: "noResultsTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { classAttribute: "wlcm-autocomplete" }, providers: [
|
610
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", 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 }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: false, isRequired: false, transformFunction: null }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, noResultsTemplate: { classPropertyName: "noResultsTemplate", publicName: "noResultsTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { classAttribute: "wlcm-autocomplete" }, providers: [
|
611
611
|
{ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS$1 } },
|
612
612
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
613
613
|
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
|
@@ -618,7 +618,7 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
618
618
|
return { bind: () => autocomplete };
|
619
619
|
},
|
620
620
|
},
|
621
|
-
], 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 }], exportAs: ["wlcmAutocomplete"], usesInheritance: 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
|
621
|
+
], 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 }], exportAs: ["wlcmAutocomplete"], usesInheritance: 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\n *ngFor=\"let option of options\"\n [ngClass]=\"{ 'wlcm-custom-option-content': optionTemplate }\"\n [value]=\"option\"\n >\n @if (optionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n\n <mat-option [disabled]=\"true\" *ngIf=\"options.length === 0\">\n @if (noResultsTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n noResultsTemplate()!;\n context: { $implicit: control.value }\n \"\n ></ng-container>\n } @else {\n No results found\n }\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$1.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: i1$1.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 }); }
|
622
622
|
};
|
623
623
|
WlcmAutocompleteComponent = __decorate([
|
624
624
|
UntilDestroy(),
|
@@ -646,7 +646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
646
646
|
return { bind: () => autocomplete };
|
647
647
|
},
|
648
648
|
},
|
649
|
-
], 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
|
649
|
+
], 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\n *ngFor=\"let option of options\"\n [ngClass]=\"{ 'wlcm-custom-option-content': optionTemplate }\"\n [value]=\"option\"\n >\n @if (optionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n\n <mat-option [disabled]=\"true\" *ngIf=\"options.length === 0\">\n @if (noResultsTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n noResultsTemplate()!;\n context: { $implicit: control.value }\n \"\n ></ng-container>\n } @else {\n No results found\n }\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n" }]
|
650
650
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
651
651
|
type: Inject,
|
652
652
|
args: [WLCM_FORM_FIELD]
|
@@ -658,6 +658,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
658
658
|
type: Input
|
659
659
|
}], placeholder: [{
|
660
660
|
type: Input
|
661
|
+
}], optionTemplate: [{
|
662
|
+
type: Input
|
661
663
|
}], inputElement: [{
|
662
664
|
type: ViewChild,
|
663
665
|
args: [WLCM_INPUT, { read: ElementRef }]
|