@wlcm/angular 17.6.0 → 17.7.1

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.
@@ -4,6 +4,8 @@ export * from './lib/utils/paginated-data-emulator.utils';
4
4
  export * from './lib/models/_index';
5
5
  // Constants
6
6
  export * from './lib/constants/_index';
7
+ // Services
8
+ export * from './lib/services/scroll-detection.api';
7
9
  // Directives
8
10
  export * from './lib/directives/_index';
9
11
  // Components
@@ -12,4 +14,4 @@ export * from './lib/components/icons/calendar-icon/calendar-icon.component';
12
14
  export * from './lib/components/icons/chevron-down-icon/chevron-down-icon.component';
13
15
  export * from './lib/components/icons/search-icon/search-icon.component';
14
16
  export * from './lib/components/loader/loader.component';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkNBQTJDLENBQUM7QUFFMUQsU0FBUztBQUNULGNBQWMscUJBQXFCLENBQUM7QUFFcEMsWUFBWTtBQUNaLGNBQWMsd0JBQXdCLENBQUM7QUFFdkMsYUFBYTtBQUNiLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsYUFBYTtBQUNiLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3N0cmVhbS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9wYWdpbmF0ZWQtZGF0YS1lbXVsYXRvci51dGlscyc7XG5cbi8vIE1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL19pbmRleCc7XG5cbi8vIENvbnN0YW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RhbnRzL19pbmRleCc7XG5cbi8vIERpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvX2luZGV4JztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pY29ucy9jbG9zZS1pY29uL2Nsb3NlLWljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaWNvbnMvY2FsZW5kYXItaWNvbi9jYWxlbmRhci1pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb25zL2NoZXZyb24tZG93bi1pY29uL2NoZXZyb24tZG93bi1pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb25zL3NlYXJjaC1pY29uL3NlYXJjaC1pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkNBQTJDLENBQUM7QUFFMUQsU0FBUztBQUNULGNBQWMscUJBQXFCLENBQUM7QUFFcEMsWUFBWTtBQUNaLGNBQWMsd0JBQXdCLENBQUM7QUFFdkMsV0FBVztBQUNYLGNBQWMscUNBQXFDLENBQUM7QUFFcEQsYUFBYTtBQUNiLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsYUFBYTtBQUNiLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3N0cmVhbS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9wYWdpbmF0ZWQtZGF0YS1lbXVsYXRvci51dGlscyc7XG5cbi8vIE1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL19pbmRleCc7XG5cbi8vIENvbnN0YW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RhbnRzL19pbmRleCc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9zY3JvbGwtZGV0ZWN0aW9uLmFwaSc7XG5cbi8vIERpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvX2luZGV4JztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pY29ucy9jbG9zZS1pY29uL2Nsb3NlLWljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvaWNvbnMvY2FsZW5kYXItaWNvbi9jYWxlbmRhci1pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb25zL2NoZXZyb24tZG93bi1pY29uL2NoZXZyb24tZG93bi1pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb25zL3NlYXJjaC1pY29uL3NlYXJjaC1pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { filter, fromEvent } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class ScrollDetectionApi {
5
+ onScrolledDown(element) {
6
+ let scrollHeight = 0;
7
+ let scrollHeightChanged = false;
8
+ return fromEvent(element, 'scroll').pipe(filter(() => {
9
+ if (scrollHeight !== element.scrollHeight) {
10
+ scrollHeight = element.scrollHeight;
11
+ scrollHeightChanged = true;
12
+ }
13
+ if (element.scrollHeight * 0.8 <= element.scrollTop + element.clientHeight && scrollHeightChanged) {
14
+ scrollHeightChanged = false;
15
+ return true;
16
+ }
17
+ return false;
18
+ }));
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ScrollDetectionApi, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
21
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ScrollDetectionApi, providedIn: 'root' }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ScrollDetectionApi, decorators: [{
24
+ type: Injectable,
25
+ args: [{ providedIn: 'root' }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWRldGVjdGlvbi5hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL3NyYy9saWIvc2VydmljZXMvc2Nyb2xsLWRldGVjdGlvbi5hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHckQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixjQUFjLENBQUMsT0FBb0I7UUFDakMsSUFBSSxZQUFZLEdBQVcsQ0FBQyxDQUFDO1FBRTdCLElBQUksbUJBQW1CLEdBQVksS0FBSyxDQUFDO1FBRXpDLE9BQU8sU0FBUyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ3RDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLFlBQVksS0FBSyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUVwQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDN0IsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLFlBQVksR0FBRyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ2xHLG1CQUFtQixHQUFHLEtBQUssQ0FBQztnQkFFNUIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs4R0F2QlUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbHRlciwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsRGV0ZWN0aW9uQXBpIHtcbiAgb25TY3JvbGxlZERvd24oZWxlbWVudDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPEV2ZW50PiB7XG4gICAgbGV0IHNjcm9sbEhlaWdodDogbnVtYmVyID0gMDtcblxuICAgIGxldCBzY3JvbGxIZWlnaHRDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByZXR1cm4gZnJvbUV2ZW50KGVsZW1lbnQsICdzY3JvbGwnKS5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgaWYgKHNjcm9sbEhlaWdodCAhPT0gZWxlbWVudC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICBzY3JvbGxIZWlnaHQgPSBlbGVtZW50LnNjcm9sbEhlaWdodDtcblxuICAgICAgICAgIHNjcm9sbEhlaWdodENoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICogMC44IDw9IGVsZW1lbnQuc2Nyb2xsVG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQgJiYgc2Nyb2xsSGVpZ2h0Q2hhbmdlZCkge1xuICAgICAgICAgIHNjcm9sbEhlaWdodENoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
- import { finalize, tap, audit, of, interval, Observable, fromEvent } from 'rxjs';
1
+ import { finalize, tap, audit, of, interval, Observable, fromEvent, filter } from 'rxjs';
2
2
  import * as moment from 'moment';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, ChangeDetectionStrategy, InjectionToken, input, output, ViewContainerRef, Directive, Inject, viewChild, effect, HostBinding } from '@angular/core';
4
+ import { Component, ChangeDetectionStrategy, InjectionToken, Injectable, input, output, ViewContainerRef, Directive, Inject, viewChild, effect, HostBinding } from '@angular/core';
5
5
  import { CommonModule } from '@angular/common';
6
6
  import { __decorate, __metadata } from 'tslib';
7
7
  import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
@@ -124,6 +124,30 @@ const WLCM_ICONS = new InjectionToken('WLCM_ICONS', {
124
124
  factory: () => DEFAULT_WLCM_ICONS,
125
125
  });
126
126
 
127
+ class ScrollDetectionApi {
128
+ onScrolledDown(element) {
129
+ let scrollHeight = 0;
130
+ let scrollHeightChanged = false;
131
+ return fromEvent(element, 'scroll').pipe(filter(() => {
132
+ if (scrollHeight !== element.scrollHeight) {
133
+ scrollHeight = element.scrollHeight;
134
+ scrollHeightChanged = true;
135
+ }
136
+ if (element.scrollHeight * 0.8 <= element.scrollTop + element.clientHeight && scrollHeightChanged) {
137
+ scrollHeightChanged = false;
138
+ return true;
139
+ }
140
+ return false;
141
+ }));
142
+ }
143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ScrollDetectionApi, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
144
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ScrollDetectionApi, providedIn: 'root' }); }
145
+ }
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ScrollDetectionApi, decorators: [{
147
+ type: Injectable,
148
+ args: [{ providedIn: 'root' }]
149
+ }] });
150
+
127
151
  let WlcmIconDirective = class WlcmIconDirective {
128
152
  constructor(icons, viewContainer) {
129
153
  this.icons = icons;
@@ -221,5 +245,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
221
245
  * Generated bundle index. Do not edit.
222
246
  */
223
247
 
224
- export { CalendarIconComponent, ChevronDownIconComponent, CloseIconComponent, DEFAULT_QUERY_PARAMS, DEFAULT_WLCM_ICONS, Order, SearchIconComponent, WLCM_ICONS, WlcmAutocompleteOption, WlcmIconDirective, WlcmIconName, WlcmLoaderComponent, WlcmOption, WlcmPaginatedDataEmulator, WlcmStreamUtils };
248
+ export { CalendarIconComponent, ChevronDownIconComponent, CloseIconComponent, DEFAULT_QUERY_PARAMS, DEFAULT_WLCM_ICONS, Order, ScrollDetectionApi, SearchIconComponent, WLCM_ICONS, WlcmAutocompleteOption, WlcmIconDirective, WlcmIconName, WlcmLoaderComponent, WlcmOption, WlcmPaginatedDataEmulator, WlcmStreamUtils };
225
249
  //# sourceMappingURL=wlcm-angular-core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"wlcm-angular-core.mjs","sources":["../../../core/src/lib/utils/stream.utils.ts","../../../core/src/lib/utils/paginated-data-emulator.utils.ts","../../../core/src/lib/models/icon.models.ts","../../../core/src/lib/models/option.models.ts","../../../core/src/lib/models/query-params.models.ts","../../../core/src/lib/constants/http.constants.ts","../../../core/src/lib/components/icons/chevron-down-icon/chevron-down-icon.component.ts","../../../core/src/lib/components/icons/chevron-down-icon/chevron-down-icon.component.html","../../../core/src/lib/components/icons/calendar-icon/calendar-icon.component.ts","../../../core/src/lib/components/icons/calendar-icon/calendar-icon.component.html","../../../core/src/lib/components/icons/search-icon/search-icon.component.ts","../../../core/src/lib/components/icons/search-icon/search-icon.component.html","../../../core/src/lib/constants/icon.contants.ts","../../../core/src/lib/directives/icon.directive.ts","../../../core/src/lib/components/icons/close-icon/close-icon.component.ts","../../../core/src/lib/components/icons/close-icon/close-icon.component.html","../../../core/src/lib/components/default-loader/default-loader.component.ts","../../../core/src/lib/components/default-loader/default-loader.component.html","../../../core/src/lib/constants/loader.constants.ts","../../../core/src/lib/components/loader/loader.component.ts","../../../core/src/lib/components/loader/loader.component.html","../../../core/src/wlcm-angular-core.ts"],"sourcesContent":["import { EventEmitter } from '@angular/core';\nimport { Subject, BehaviorSubject, Observable, finalize, audit, interval, of, tap, Subscriber } from 'rxjs';\nimport * as moment from 'moment';\n\nexport class WlcmStreamUtils {\n static loadingDetector(\n subject: Subject<boolean> | BehaviorSubject<boolean> | EventEmitter<boolean>\n ): <T>(source: Observable<T>) => Observable<T> {\n subject.next(true);\n return function <T>(source: Observable<T>): Observable<T> {\n return source.pipe(finalize(() => subject.next(false)));\n };\n }\n\n static loadingAudit(time: number = 800): (source: Observable<boolean>) => Observable<boolean> {\n let startAt: number;\n\n return (source: Observable<boolean>): Observable<boolean> => {\n return source.pipe(tap((isLoading: boolean) => isLoading && (startAt = moment().valueOf()))).pipe(\n audit((isLoading: boolean) => {\n if (isLoading) return of(null);\n\n const difference: number = time - (moment().valueOf() - startAt);\n\n return interval(difference >= 0 ? difference : 0);\n })\n );\n };\n }\n\n static get emptySource(): Observable<void> {\n return new Observable((subscriber: Subscriber<void>) => {\n subscriber.next();\n subscriber.complete();\n });\n }\n}\n","import { Observable, of } from 'rxjs';\nimport { PaginatedData } from '../models/paginated-data.models';\nimport { QueryParams } from '../models/query-params.models';\n\nexport class WlcmPaginatedDataEmulator<T> {\n private data: Array<T> = [];\n\n constructor(count: number, public handler: (index: number) => T) {\n this.populateData(count);\n }\n\n load(params: QueryParams): Observable<PaginatedData<T>> {\n return of({\n currPage: params.page,\n totalPages: Math.ceil(this.data.length / params.limit),\n totalItems: this.data.length,\n data: this.data.slice((params.page - 1) * params.limit, params.page * params.limit),\n });\n }\n\n private populateData(count: number): void {\n this.data = Array.from(new Int8Array(count).fill(0)).map((_, index) => this.handler(index));\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\n\nexport enum WlcmIconName {\n SEARCH = 'SEARCH',\n CALENDAR = 'CALENDAR',\n CHEVRON_DOWN = 'CHEVRON_DOWN',\n}\n\nexport type WlcmIcons = {\n [key in WlcmIconName]: ComponentType<unknown>;\n};\n","export class WlcmOption {\n constructor(\n public value: string | boolean,\n public viewValue: string,\n public data?: unknown,\n ) {}\n}\n\nexport class WlcmAutocompleteOption extends WlcmOption {\n constructor(\n public override value: string,\n public override viewValue: string,\n public searchValue: string,\n public override data?: unknown,\n ) {\n super(value, viewValue, data);\n }\n}\n\nexport type WlcmSelectOptionFormat = 'CompleteOption' | 'ValueOnly';\n","export enum Order {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport interface QueryFilter {\n equal?: string | boolean;\n\n not?: string | boolean;\n\n arrContains?: string[];\n\n oneOf?: string[];\n\n noneOf?: string[];\n\n from?: Date;\n\n to?: Date;\n\n exist?: boolean;\n}\n\nexport interface QueryFilters {\n [key: string]: QueryFilter;\n}\n\nexport interface QueryParams {\n query: string;\n\n page: number;\n\n limit: number;\n\n order?: Order;\n\n filters?: QueryFilters;\n\n sort?: string;\n\n searchKeys?: string[];\n}\n","import { QueryParams } from '../models/query-params.models';\n\nexport const DEFAULT_QUERY_PARAMS: QueryParams = {\n query: '',\n page: 1,\n limit: 10,\n};\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-chevron-down-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './chevron-down-icon.component.html',\n styleUrl: './chevron-down-icon.component.scss',\n})\nexport class ChevronDownIconComponent {}\n","<svg\n width=\"12px\"\n height=\"7px\"\n viewBox=\"0 0 12 7\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n <g\n id=\"4-Media-Library\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g id=\"4.1.0-Filter-by-type\" transform=\"translate(-303.000000, -73.000000)\">\n <g id=\"Group-7\" transform=\"translate(45.000000, 64.000000)\">\n <g id=\"Group\" transform=\"translate(258.000000, 6.000000)\">\n <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"12\" height=\"12\"></rect>\n <polyline\n id=\"Path\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n points=\"1 4 6 9 11 4\"\n ></polyline>\n </g>\n </g>\n </g>\n </g>\n</svg>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-calendar-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './calendar-icon.component.html',\n styleUrl: './calendar-icon.component.scss',\n})\nexport class CalendarIconComponent {}\n","<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n <g\n id=\"icon/date-grey\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n <path\n d=\"M11,0 C11.5522847,0 12,0.44771525 12,1 L14,1 C15.1045695,1 16,1.8954305 16,3 L16,14 C16,15.1045695 15.1045695,16 14,16 L2,16 C0.8954305,16 0,15.1045695 0,14 L0,3 C0,1.8954305 0.8954305,1 2,1 L4,1 C4,0.44771525 4.44771525,0 5,0 C5.55228475,0 6,0.44771525 6,1 L10,1 C10,0.44771525 10.4477153,0 11,0 Z M14,7 L2,7 L2,14 L14,14 L14,7 Z M4,3 L2,3 L2,5 L14,5 L14,3 L12,3 C12,3.55228475 11.5522847,4 11,4 C10.4477153,4 10,3.55228475 10,3 L6,3 C6,3.55228475 5.55228475,4 5,4 C4.44771525,4 4,3.55228475 4,3 Z\"\n id=\"Combined-Shape\"\n fill=\"#8E9498\"\n fill-rule=\"nonzero\"\n ></path>\n <rect\n id=\"Rectangle\"\n fill=\"#8E9498\"\n x=\"9\"\n y=\"9\"\n width=\"3\"\n height=\"3\"\n rx=\"1\"\n ></rect>\n </g>\n</svg>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-search-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './search-icon.component.html',\n styleUrls: ['./search-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchIconComponent {}\n","<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"display: block\"\n>\n <g\n id=\"icons/search\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n <path\n d=\"M7,0 C10.8659932,0 14,3.13400675 14,7 C14,8.57234957 13.4815869,10.0236173 12.6063605,11.1922034 L15.1213203,13.7071068 C15.5118446,14.0976311 15.5118446,14.7307961 15.1213203,15.1213203 C14.7307961,15.5118446 14.0976311,15.5118446 13.7071068,15.1213203 L11.1922034,12.6063605 C10.0236173,13.4815869 8.57234957,14 7,14 C3.13400675,14 0,10.8659932 0,7 C0,3.13400675 3.13400675,0 7,0 Z M7,2 C4.23857625,2 2,4.23857625 2,7 C2,9.76142375 4.23857625,12 7,12 C9.76142375,12 12,9.76142375 12,7 C12,4.23857625 9.76142375,2 7,2 Z\"\n id=\"Combined-Shape\"\n fill=\"currentColor\"\n fill-rule=\"nonzero\"\n ></path>\n </g>\n</svg>\n","import { InjectionToken } from '@angular/core';\nimport { WlcmIconName, WlcmIcons } from '../models/icon.models';\nimport { ChevronDownIconComponent } from '../components/icons/chevron-down-icon/chevron-down-icon.component';\nimport { CalendarIconComponent } from '../components/icons/calendar-icon/calendar-icon.component';\nimport { SearchIconComponent } from '../components/icons/search-icon/search-icon.component';\n\nexport const DEFAULT_WLCM_ICONS: WlcmIcons = {\n [WlcmIconName.SEARCH]: SearchIconComponent,\n [WlcmIconName.CALENDAR]: CalendarIconComponent,\n [WlcmIconName.CHEVRON_DOWN]: ChevronDownIconComponent,\n};\n\nexport const WLCM_ICONS: InjectionToken<WlcmIcons> = new InjectionToken('WLCM_ICONS', {\n providedIn: 'root',\n factory: () => DEFAULT_WLCM_ICONS,\n});\n","import {\n ComponentRef,\n Directive,\n Inject,\n InputSignal,\n OnInit,\n OutputEmitterRef,\n ViewContainerRef,\n input,\n output,\n} from '@angular/core';\nimport { WlcmIconName, WlcmIcons } from '../models/icon.models';\nimport { WLCM_ICONS } from '../constants/icon.contants';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { fromEvent } from 'rxjs';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmIcon]',\n standalone: true,\n})\nexport class WlcmIconDirective implements OnInit {\n name: InputSignal<WlcmIconName> = input.required({ alias: 'wlcmIcon' });\n\n stopPropagation: InputSignal<boolean> = input(false, { alias: 'wlcmIconStopPropagation' });\n\n clicked: OutputEmitterRef<MouseEvent> = output({ alias: 'wlcmIconClicked' });\n\n constructor(@Inject(WLCM_ICONS) private icons: WlcmIcons, private viewContainer: ViewContainerRef) {}\n\n ngOnInit(): void {\n const component: ComponentType<unknown> = this.icons[this.name()];\n\n if (component) {\n const ref: ComponentRef<unknown> = this.viewContainer.createComponent(component);\n\n this.handleClick(ref);\n }\n }\n\n private handleClick = (ref: ComponentRef<unknown>) => {\n fromEvent(ref.location.nativeElement, 'click', (event: MouseEvent) => event)\n .pipe(untilDestroyed(this))\n .subscribe((event: MouseEvent) => {\n if (this.stopPropagation()) event.stopPropagation();\n\n this.clicked.emit(event);\n });\n };\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-close-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './close-icon.component.html',\n styleUrl: './close-icon.component.scss',\n})\nexport class CloseIconComponent {}\n","<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n <g\n id=\"2-User-Management\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g\n id=\"2.0.1-Export-users-two-filters\"\n transform=\"translate(-310.000000, -54.000000)\"\n >\n <g id=\"icons/close\" transform=\"translate(310.000000, 54.000000)\">\n <rect\n id=\"Rectangle\"\n fill=\"#EDF0F3\"\n x=\"0\"\n y=\"0\"\n width=\"16\"\n height=\"16\"\n rx=\"4\"\n ></rect>\n <path\n d=\"M12,4 L4,12 M4,4 L12,12\"\n id=\"Combined-Shape\"\n stroke=\"#4A5056\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n ></path>\n </g>\n </g>\n </g>\n</svg>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-default-loader',\n host: { class: 'wlcm-default-loader' },\n standalone: true,\n imports: [CommonModule],\n templateUrl: './default-loader.component.html',\n styleUrl: './default-loader.component.scss',\n})\nexport class WlcmDefaultLoaderComponent {}\n","<div class=\"spinner center\">\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n</div>\n","import { InjectionToken, Type } from '@angular/core';\nimport { WlcmDefaultLoaderComponent } from '../components/default-loader/default-loader.component';\n\nexport const WLCM_LOADER_COMPONENT: InjectionToken<Type<unknown>> = new InjectionToken('WLCM_LOADER_COMPONENT', {\n providedIn: 'root',\n factory: () => WlcmDefaultLoaderComponent,\n});\n","import {\n Component,\n HostBinding,\n Inject,\n InputSignal,\n Signal,\n Type,\n ViewContainerRef,\n effect,\n input,\n viewChild,\n} from '@angular/core';\nimport { WLCM_LOADER_COMPONENT } from '../../constants/loader.constants';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-loader',\n host: { class: 'wlcm-loader' },\n standalone: true,\n imports: [CommonModule],\n templateUrl: './loader.component.html',\n styleUrl: './loader.component.scss',\n})\nexport class WlcmLoaderComponent {\n hidden: InputSignal<boolean> = input(false);\n\n container: Signal<ViewContainerRef | undefined> = viewChild('container', { read: ViewContainerRef });\n\n @HostBinding('class.wlcm-loader-hidden') get isHidden() {\n return this.hidden();\n }\n\n constructor(@Inject(WLCM_LOADER_COMPONENT) private loaderComponent: Type<unknown>) {\n effect(() => {\n if (!this.container()) return;\n\n this.container()!.createComponent(this.loaderComponent);\n });\n }\n}\n","<div class=\"wlcm-loader-container\">\n <ng-container #container></ng-container>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wlcm-angular-core.mjs","sources":["../../../core/src/lib/utils/stream.utils.ts","../../../core/src/lib/utils/paginated-data-emulator.utils.ts","../../../core/src/lib/models/icon.models.ts","../../../core/src/lib/models/option.models.ts","../../../core/src/lib/models/query-params.models.ts","../../../core/src/lib/constants/http.constants.ts","../../../core/src/lib/components/icons/chevron-down-icon/chevron-down-icon.component.ts","../../../core/src/lib/components/icons/chevron-down-icon/chevron-down-icon.component.html","../../../core/src/lib/components/icons/calendar-icon/calendar-icon.component.ts","../../../core/src/lib/components/icons/calendar-icon/calendar-icon.component.html","../../../core/src/lib/components/icons/search-icon/search-icon.component.ts","../../../core/src/lib/components/icons/search-icon/search-icon.component.html","../../../core/src/lib/constants/icon.contants.ts","../../../core/src/lib/services/scroll-detection.api.ts","../../../core/src/lib/directives/icon.directive.ts","../../../core/src/lib/components/icons/close-icon/close-icon.component.ts","../../../core/src/lib/components/icons/close-icon/close-icon.component.html","../../../core/src/lib/components/default-loader/default-loader.component.ts","../../../core/src/lib/components/default-loader/default-loader.component.html","../../../core/src/lib/constants/loader.constants.ts","../../../core/src/lib/components/loader/loader.component.ts","../../../core/src/lib/components/loader/loader.component.html","../../../core/src/wlcm-angular-core.ts"],"sourcesContent":["import { EventEmitter } from '@angular/core';\nimport { Subject, BehaviorSubject, Observable, finalize, audit, interval, of, tap, Subscriber } from 'rxjs';\nimport * as moment from 'moment';\n\nexport class WlcmStreamUtils {\n static loadingDetector(\n subject: Subject<boolean> | BehaviorSubject<boolean> | EventEmitter<boolean>\n ): <T>(source: Observable<T>) => Observable<T> {\n subject.next(true);\n return function <T>(source: Observable<T>): Observable<T> {\n return source.pipe(finalize(() => subject.next(false)));\n };\n }\n\n static loadingAudit(time: number = 800): (source: Observable<boolean>) => Observable<boolean> {\n let startAt: number;\n\n return (source: Observable<boolean>): Observable<boolean> => {\n return source.pipe(tap((isLoading: boolean) => isLoading && (startAt = moment().valueOf()))).pipe(\n audit((isLoading: boolean) => {\n if (isLoading) return of(null);\n\n const difference: number = time - (moment().valueOf() - startAt);\n\n return interval(difference >= 0 ? difference : 0);\n })\n );\n };\n }\n\n static get emptySource(): Observable<void> {\n return new Observable((subscriber: Subscriber<void>) => {\n subscriber.next();\n subscriber.complete();\n });\n }\n}\n","import { Observable, of } from 'rxjs';\nimport { PaginatedData } from '../models/paginated-data.models';\nimport { QueryParams } from '../models/query-params.models';\n\nexport class WlcmPaginatedDataEmulator<T> {\n private data: Array<T> = [];\n\n constructor(count: number, public handler: (index: number) => T) {\n this.populateData(count);\n }\n\n load(params: QueryParams): Observable<PaginatedData<T>> {\n return of({\n currPage: params.page,\n totalPages: Math.ceil(this.data.length / params.limit),\n totalItems: this.data.length,\n data: this.data.slice((params.page - 1) * params.limit, params.page * params.limit),\n });\n }\n\n private populateData(count: number): void {\n this.data = Array.from(new Int8Array(count).fill(0)).map((_, index) => this.handler(index));\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\n\nexport enum WlcmIconName {\n SEARCH = 'SEARCH',\n CALENDAR = 'CALENDAR',\n CHEVRON_DOWN = 'CHEVRON_DOWN',\n}\n\nexport type WlcmIcons = {\n [key in WlcmIconName]: ComponentType<unknown>;\n};\n","export class WlcmOption {\n constructor(\n public value: string | boolean,\n public viewValue: string,\n public data?: unknown,\n ) {}\n}\n\nexport class WlcmAutocompleteOption extends WlcmOption {\n constructor(\n public override value: string,\n public override viewValue: string,\n public searchValue: string,\n public override data?: unknown,\n ) {\n super(value, viewValue, data);\n }\n}\n\nexport type WlcmSelectOptionFormat = 'CompleteOption' | 'ValueOnly';\n","export enum Order {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport interface QueryFilter {\n equal?: string | boolean;\n\n not?: string | boolean;\n\n arrContains?: string[];\n\n oneOf?: string[];\n\n noneOf?: string[];\n\n from?: Date;\n\n to?: Date;\n\n exist?: boolean;\n}\n\nexport interface QueryFilters {\n [key: string]: QueryFilter;\n}\n\nexport interface QueryParams {\n query: string;\n\n page: number;\n\n limit: number;\n\n order?: Order;\n\n filters?: QueryFilters;\n\n sort?: string;\n\n searchKeys?: string[];\n}\n","import { QueryParams } from '../models/query-params.models';\n\nexport const DEFAULT_QUERY_PARAMS: QueryParams = {\n query: '',\n page: 1,\n limit: 10,\n};\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-chevron-down-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './chevron-down-icon.component.html',\n styleUrl: './chevron-down-icon.component.scss',\n})\nexport class ChevronDownIconComponent {}\n","<svg\n width=\"12px\"\n height=\"7px\"\n viewBox=\"0 0 12 7\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n <g\n id=\"4-Media-Library\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g id=\"4.1.0-Filter-by-type\" transform=\"translate(-303.000000, -73.000000)\">\n <g id=\"Group-7\" transform=\"translate(45.000000, 64.000000)\">\n <g id=\"Group\" transform=\"translate(258.000000, 6.000000)\">\n <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"12\" height=\"12\"></rect>\n <polyline\n id=\"Path\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n points=\"1 4 6 9 11 4\"\n ></polyline>\n </g>\n </g>\n </g>\n </g>\n</svg>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-calendar-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './calendar-icon.component.html',\n styleUrl: './calendar-icon.component.scss',\n})\nexport class CalendarIconComponent {}\n","<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n <g\n id=\"icon/date-grey\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n <path\n d=\"M11,0 C11.5522847,0 12,0.44771525 12,1 L14,1 C15.1045695,1 16,1.8954305 16,3 L16,14 C16,15.1045695 15.1045695,16 14,16 L2,16 C0.8954305,16 0,15.1045695 0,14 L0,3 C0,1.8954305 0.8954305,1 2,1 L4,1 C4,0.44771525 4.44771525,0 5,0 C5.55228475,0 6,0.44771525 6,1 L10,1 C10,0.44771525 10.4477153,0 11,0 Z M14,7 L2,7 L2,14 L14,14 L14,7 Z M4,3 L2,3 L2,5 L14,5 L14,3 L12,3 C12,3.55228475 11.5522847,4 11,4 C10.4477153,4 10,3.55228475 10,3 L6,3 C6,3.55228475 5.55228475,4 5,4 C4.44771525,4 4,3.55228475 4,3 Z\"\n id=\"Combined-Shape\"\n fill=\"#8E9498\"\n fill-rule=\"nonzero\"\n ></path>\n <rect\n id=\"Rectangle\"\n fill=\"#8E9498\"\n x=\"9\"\n y=\"9\"\n width=\"3\"\n height=\"3\"\n rx=\"1\"\n ></rect>\n </g>\n</svg>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-search-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './search-icon.component.html',\n styleUrls: ['./search-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchIconComponent {}\n","<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"display: block\"\n>\n <g\n id=\"icons/search\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <rect id=\"Rectangle\" x=\"0\" y=\"0\" width=\"16\" height=\"16\"></rect>\n <path\n d=\"M7,0 C10.8659932,0 14,3.13400675 14,7 C14,8.57234957 13.4815869,10.0236173 12.6063605,11.1922034 L15.1213203,13.7071068 C15.5118446,14.0976311 15.5118446,14.7307961 15.1213203,15.1213203 C14.7307961,15.5118446 14.0976311,15.5118446 13.7071068,15.1213203 L11.1922034,12.6063605 C10.0236173,13.4815869 8.57234957,14 7,14 C3.13400675,14 0,10.8659932 0,7 C0,3.13400675 3.13400675,0 7,0 Z M7,2 C4.23857625,2 2,4.23857625 2,7 C2,9.76142375 4.23857625,12 7,12 C9.76142375,12 12,9.76142375 12,7 C12,4.23857625 9.76142375,2 7,2 Z\"\n id=\"Combined-Shape\"\n fill=\"currentColor\"\n fill-rule=\"nonzero\"\n ></path>\n </g>\n</svg>\n","import { InjectionToken } from '@angular/core';\nimport { WlcmIconName, WlcmIcons } from '../models/icon.models';\nimport { ChevronDownIconComponent } from '../components/icons/chevron-down-icon/chevron-down-icon.component';\nimport { CalendarIconComponent } from '../components/icons/calendar-icon/calendar-icon.component';\nimport { SearchIconComponent } from '../components/icons/search-icon/search-icon.component';\n\nexport const DEFAULT_WLCM_ICONS: WlcmIcons = {\n [WlcmIconName.SEARCH]: SearchIconComponent,\n [WlcmIconName.CALENDAR]: CalendarIconComponent,\n [WlcmIconName.CHEVRON_DOWN]: ChevronDownIconComponent,\n};\n\nexport const WLCM_ICONS: InjectionToken<WlcmIcons> = new InjectionToken('WLCM_ICONS', {\n providedIn: 'root',\n factory: () => DEFAULT_WLCM_ICONS,\n});\n","import { Injectable } from '@angular/core';\nimport { Observable, filter, fromEvent } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollDetectionApi {\n onScrolledDown(element: HTMLElement): Observable<Event> {\n let scrollHeight: number = 0;\n\n let scrollHeightChanged: boolean = false;\n\n return fromEvent(element, 'scroll').pipe(\n filter(() => {\n if (scrollHeight !== element.scrollHeight) {\n scrollHeight = element.scrollHeight;\n\n scrollHeightChanged = true;\n }\n\n if (element.scrollHeight * 0.8 <= element.scrollTop + element.clientHeight && scrollHeightChanged) {\n scrollHeightChanged = false;\n\n return true;\n }\n\n return false;\n }),\n );\n }\n}\n","import {\n ComponentRef,\n Directive,\n Inject,\n InputSignal,\n OnInit,\n OutputEmitterRef,\n ViewContainerRef,\n input,\n output,\n} from '@angular/core';\nimport { WlcmIconName, WlcmIcons } from '../models/icon.models';\nimport { WLCM_ICONS } from '../constants/icon.contants';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { fromEvent } from 'rxjs';\n\n@UntilDestroy()\n@Directive({\n selector: '[wlcmIcon]',\n standalone: true,\n})\nexport class WlcmIconDirective implements OnInit {\n name: InputSignal<WlcmIconName> = input.required({ alias: 'wlcmIcon' });\n\n stopPropagation: InputSignal<boolean> = input(false, { alias: 'wlcmIconStopPropagation' });\n\n clicked: OutputEmitterRef<MouseEvent> = output({ alias: 'wlcmIconClicked' });\n\n constructor(@Inject(WLCM_ICONS) private icons: WlcmIcons, private viewContainer: ViewContainerRef) {}\n\n ngOnInit(): void {\n const component: ComponentType<unknown> = this.icons[this.name()];\n\n if (component) {\n const ref: ComponentRef<unknown> = this.viewContainer.createComponent(component);\n\n this.handleClick(ref);\n }\n }\n\n private handleClick = (ref: ComponentRef<unknown>) => {\n fromEvent(ref.location.nativeElement, 'click', (event: MouseEvent) => event)\n .pipe(untilDestroyed(this))\n .subscribe((event: MouseEvent) => {\n if (this.stopPropagation()) event.stopPropagation();\n\n this.clicked.emit(event);\n });\n };\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-close-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './close-icon.component.html',\n styleUrl: './close-icon.component.scss',\n})\nexport class CloseIconComponent {}\n","<svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n <g\n id=\"2-User-Management\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g\n id=\"2.0.1-Export-users-two-filters\"\n transform=\"translate(-310.000000, -54.000000)\"\n >\n <g id=\"icons/close\" transform=\"translate(310.000000, 54.000000)\">\n <rect\n id=\"Rectangle\"\n fill=\"#EDF0F3\"\n x=\"0\"\n y=\"0\"\n width=\"16\"\n height=\"16\"\n rx=\"4\"\n ></rect>\n <path\n d=\"M12,4 L4,12 M4,4 L12,12\"\n id=\"Combined-Shape\"\n stroke=\"#4A5056\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n ></path>\n </g>\n </g>\n </g>\n</svg>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-default-loader',\n host: { class: 'wlcm-default-loader' },\n standalone: true,\n imports: [CommonModule],\n templateUrl: './default-loader.component.html',\n styleUrl: './default-loader.component.scss',\n})\nexport class WlcmDefaultLoaderComponent {}\n","<div class=\"spinner center\">\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n <div class=\"spinner-blade\"></div>\n</div>\n","import { InjectionToken, Type } from '@angular/core';\nimport { WlcmDefaultLoaderComponent } from '../components/default-loader/default-loader.component';\n\nexport const WLCM_LOADER_COMPONENT: InjectionToken<Type<unknown>> = new InjectionToken('WLCM_LOADER_COMPONENT', {\n providedIn: 'root',\n factory: () => WlcmDefaultLoaderComponent,\n});\n","import {\n Component,\n HostBinding,\n Inject,\n InputSignal,\n Signal,\n Type,\n ViewContainerRef,\n effect,\n input,\n viewChild,\n} from '@angular/core';\nimport { WLCM_LOADER_COMPONENT } from '../../constants/loader.constants';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'wlcm-loader',\n host: { class: 'wlcm-loader' },\n standalone: true,\n imports: [CommonModule],\n templateUrl: './loader.component.html',\n styleUrl: './loader.component.scss',\n})\nexport class WlcmLoaderComponent {\n hidden: InputSignal<boolean> = input(false);\n\n container: Signal<ViewContainerRef | undefined> = viewChild('container', { read: ViewContainerRef });\n\n @HostBinding('class.wlcm-loader-hidden') get isHidden() {\n return this.hidden();\n }\n\n constructor(@Inject(WLCM_LOADER_COMPONENT) private loaderComponent: Type<unknown>) {\n effect(() => {\n if (!this.container()) return;\n\n this.container()!.createComponent(this.loaderComponent);\n });\n }\n}\n","<div class=\"wlcm-loader-container\">\n <ng-container #container></ng-container>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/core/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from './lib/utils/stream.utils';
2
2
  export * from './lib/utils/paginated-data-emulator.utils';
3
3
  export * from './lib/models/_index';
4
4
  export * from './lib/constants/_index';
5
+ export * from './lib/services/scroll-detection.api';
5
6
  export * from './lib/directives/_index';
6
7
  export * from './lib/components/icons/close-icon/close-icon.component';
7
8
  export * from './lib/components/icons/calendar-icon/calendar-icon.component';
@@ -0,0 +1,7 @@
1
+ import { Observable } from 'rxjs';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ScrollDetectionApi {
4
+ onScrolledDown(element: HTMLElement): Observable<Event>;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScrollDetectionApi, never>;
6
+ static ɵprov: i0.ɵɵInjectableDeclaration<ScrollDetectionApi>;
7
+ }
@@ -1,22 +1,23 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { CommonModule } from '@angular/common';
3
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Inject, Input, Optional, ViewChild, effect, forwardRef, inject, input, output, viewChildren, } from '@angular/core';
3
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Inject, Input, NgZone, Optional, ViewChild, computed, effect, forwardRef, inject, input, output, signal, viewChildren, } from '@angular/core';
4
4
  import { FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, } from '@angular/forms';
5
5
  import { MAT_SELECT_CONFIG, MatOption, MatSelect, MatSelectModule } from '@angular/material/select';
6
- import { WlcmIconDirective, WlcmIconName } from '@wlcm/angular/core';
6
+ import { DEFAULT_QUERY_PARAMS, ScrollDetectionApi, WlcmIconDirective, WlcmIconName, } from '@wlcm/angular/core';
7
7
  import { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER, WLCM_FORM_FIELD } from '../../constants';
8
8
  import { WlcmSelectInputBinderDirective } from '../../directives/select-input-binder.directive';
9
- import { BehaviorSubject, EMPTY, first, fromEvent, switchMap } from 'rxjs';
9
+ import { BehaviorSubject, EMPTY, first, switchMap } from 'rxjs';
10
10
  import { WLCM_SELECT_CONFIG } from '../../constants/select.constants';
11
11
  import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
12
12
  import { CdkOverlayOrigin } from '@angular/cdk/overlay';
13
13
  import { mergeWith } from 'lodash';
14
14
  import * as i0 from "@angular/core";
15
- import * as i1 from "../../directives/select-input-binder.directive";
16
- import * as i2 from "@angular/common";
17
- import * as i3 from "@angular/material/select";
18
- import * as i4 from "@angular/material/core";
19
- import * as i5 from "@angular/forms";
15
+ import * as i1 from "@wlcm/angular/core";
16
+ import * as i2 from "../../directives/select-input-binder.directive";
17
+ import * as i3 from "@angular/common";
18
+ import * as i4 from "@angular/material/select";
19
+ import * as i5 from "@angular/material/core";
20
+ import * as i6 from "@angular/forms";
20
21
  const PANEL_CLASS = 'wlcm-select-panel';
21
22
  const DEFAULT_CONFIG = { overlayPanelClass: [PANEL_CLASS] };
22
23
  const mergeConfig = (config) => {
@@ -30,22 +31,31 @@ let WlcmSelectComponent = class WlcmSelectComponent {
30
31
  openPanel() {
31
32
  this.matSelect.open();
32
33
  }
33
- constructor(changeDetectorRef, formField, parentFormMember) {
34
+ constructor(zone, changeDetectorRef, scrollDetectionApi, formField, parentFormMember) {
35
+ this.zone = zone;
34
36
  this.changeDetectorRef = changeDetectorRef;
37
+ this.scrollDetectionApi = scrollDetectionApi;
35
38
  this.formField = formField;
36
39
  this.parentFormMember = parentFormMember;
37
40
  this.multiple = false;
38
41
  this.placeholder = 'Not selected';
39
- this.options = input.required();
42
+ this.queryParams = DEFAULT_QUERY_PARAMS;
43
+ this.paginated = input(false);
44
+ this.options = input([]);
45
+ this.paginatedOptions = signal([]);
40
46
  this.selectOptionFormat = input('ValueOnly');
41
47
  this.optionTemplate = input(null);
42
- this.triggerTemplate = input(null);
48
+ this.triggerTemplate = input();
43
49
  this.isOptionDisabled = input(() => false);
44
50
  this.selectionChange = output();
45
51
  this.opened = output();
46
52
  this.closed = output();
47
53
  this.control = new FormControl();
48
54
  this.WlcmIconName = WlcmIconName;
55
+ this._paginatedData = null;
56
+ this.computedOptions = computed(() => {
57
+ return this.paginated() ? this.paginatedOptions() : this.options();
58
+ });
49
59
  this.matOptions = viewChildren(MatOption);
50
60
  this._focusStream$ = new BehaviorSubject(EMPTY);
51
61
  this._blurStream$ = new BehaviorSubject(EMPTY);
@@ -57,7 +67,11 @@ let WlcmSelectComponent = class WlcmSelectComponent {
57
67
  this.handleStateChange();
58
68
  }
59
69
  effect(() => {
60
- if (this.isOptionDisabled() && this.options().length > 0) {
70
+ if (this.paginated())
71
+ this.loadPaginatedOptions();
72
+ }, { allowSignalWrites: true });
73
+ effect(() => {
74
+ if (this.isOptionDisabled() && this.computedOptions().length > 0) {
61
75
  this.updateOptionsStatus();
62
76
  }
63
77
  });
@@ -77,7 +91,11 @@ let WlcmSelectComponent = class WlcmSelectComponent {
77
91
  }
78
92
  panelOpened() {
79
93
  this.opened.emit();
80
- this.handleClickOutside();
94
+ this.handleScrollDown();
95
+ }
96
+ panelClosed() {
97
+ this.closed.emit();
98
+ this._touched?.();
81
99
  }
82
100
  updateOptionsStatus() {
83
101
  this.matOptions().forEach((matOption) => {
@@ -110,27 +128,41 @@ let WlcmSelectComponent = class WlcmSelectComponent {
110
128
  get isOpen() {
111
129
  return this.matSelect?.panelOpen ?? false;
112
130
  }
131
+ loadPaginatedOptions() {
132
+ this.fetchPaginatedOptions({ ...this.queryParams, page: 1 })
133
+ .pipe(untilDestroyed(this), first())
134
+ .subscribe((paginatedData) => {
135
+ this._paginatedData = paginatedData;
136
+ this.paginatedOptions.set(paginatedData.data);
137
+ });
138
+ }
139
+ loadMorePaginatedOptions() {
140
+ if (!this._paginatedData || this._paginatedData.currPage + 1 > this._paginatedData.totalPages)
141
+ return;
142
+ this.queryParams.page++;
143
+ this.fetchPaginatedOptions({ ...this.queryParams })
144
+ .pipe(untilDestroyed(this), first())
145
+ .subscribe((paginatedData) => {
146
+ this._paginatedData = paginatedData;
147
+ this.paginatedOptions.update((options) => [...options, ...paginatedData.data]);
148
+ });
149
+ }
150
+ handleScrollDown() {
151
+ const element = document.querySelector('.mat-mdc-select-panel');
152
+ this.zone.runOutsideAngular(() => {
153
+ this.scrollDetectionApi.onScrolledDown(element).subscribe(() => {
154
+ this.zone.run(() => this.loadMorePaginatedOptions());
155
+ });
156
+ });
157
+ }
113
158
  handleStateChange() {
114
159
  this.parentFormMember.stateChanges$.pipe(untilDestroyed(this)).subscribe(() => {
115
160
  this._validatorChanged?.();
116
161
  this.changeDetectorRef.markForCheck();
117
162
  });
118
163
  }
119
- handleClickOutside() {
120
- const overlayContainer = document.querySelector(`.cdk-overlay-container:has(.${PANEL_CLASS})`);
121
- const backdrop = overlayContainer?.querySelector(`.cdk-overlay-backdrop`);
122
- if (backdrop instanceof HTMLElement) {
123
- fromEvent(backdrop, 'click')
124
- .pipe(first())
125
- .subscribe(() => {
126
- this._touched?.();
127
- this._validatorChanged?.();
128
- this.changeDetectorRef.markForCheck();
129
- });
130
- }
131
- }
132
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: WLCM_FORM_FIELD }, { token: WLCM_FORM_CONTROL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
133
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmSelectComponent, isStandalone: true, selector: "wlcm-select", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, triggerTemplate: { classPropertyName: "triggerTemplate", publicName: "triggerTemplate", isSignal: true, isRequired: false, transformFunction: null }, isOptionDisabled: { classPropertyName: "isOptionDisabled", publicName: "isOptionDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", opened: "opened", closed: "closed" }, host: { listeners: { "click": "openPanel()" } }, providers: [
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmSelectComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.ScrollDetectionApi }, { token: WLCM_FORM_FIELD }, { token: WLCM_FORM_CONTROL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmSelectComponent, isStandalone: true, selector: "wlcm-select", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", isSignal: false, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: false, isRequired: false, transformFunction: null }, paginated: { classPropertyName: "paginated", publicName: "paginated", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, triggerTemplate: { classPropertyName: "triggerTemplate", publicName: "triggerTemplate", isSignal: true, isRequired: false, transformFunction: null }, isOptionDisabled: { classPropertyName: "isOptionDisabled", publicName: "isOptionDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", opened: "opened", closed: "closed" }, host: { listeners: { "click": "openPanel()" } }, providers: [
134
166
  WLCM_FORM_CONTROL_PROVIDER,
135
167
  {
136
168
  provide: MAT_SELECT_CONFIG,
@@ -141,11 +173,13 @@ let WlcmSelectComponent = class WlcmSelectComponent {
141
173
  },
142
174
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
143
175
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
144
- ], viewQueries: [{ propertyName: "matOptions", predicate: MatOption, descendants: true, isSignal: true }, { propertyName: "matSelect", first: true, predicate: MatSelect, descendants: true }], hostDirectives: [{ directive: i1.WlcmSelectInputBinderDirective }], ngImport: i0, template: "<mat-select\n #selectComponent\n [multiple]=\"multiple\"\n [disableRipple]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n (opened)=\"panelOpened()\"\n (closed)=\"closed.emit()\"\n>\n @if (triggerTemplate()) {\n <mat-select-trigger>\n <ng-container\n *ngTemplateOutlet=\"\n triggerTemplate();\n context: $any({ $implicit: selectComponent.selected })\n \"\n ></ng-container>\n </mat-select-trigger>\n }\n\n <mat-option\n *ngFor=\"let option of options()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n @if (optionTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n optionTemplate();\n context: $any({ $implicit: option })\n \"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n</mat-select>\n\n<div class=\"wlcm-select-arrow\">\n <ng-container\n [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"\n [wlcmIconStopPropagation]=\"false\"\n ></ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: WlcmIconDirective, selector: "[wlcmIcon]", inputs: ["wlcmIcon", "wlcmIconStopPropagation"], outputs: ["wlcmIconClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
176
+ ], viewQueries: [{ propertyName: "matOptions", predicate: MatOption, descendants: true, isSignal: true }, { propertyName: "matSelect", first: true, predicate: MatSelect, descendants: true }], hostDirectives: [{ directive: i2.WlcmSelectInputBinderDirective }], ngImport: i0, template: "<mat-select\n #selectComponent\n [multiple]=\"multiple\"\n [disableRipple]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n (opened)=\"panelOpened()\"\n (closed)=\"panelClosed()\"\n>\n @if (triggerTemplate()) {\n <mat-select-trigger>\n <ng-container\n *ngTemplateOutlet=\"\n triggerTemplate()!;\n context: $any({ $implicit: selectComponent.selected })\n \"\n ></ng-container>\n </mat-select-trigger>\n }\n\n <mat-option\n *ngFor=\"let option of computedOptions()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n @if (optionTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n optionTemplate();\n context: $any({ $implicit: option })\n \"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n</mat-select>\n\n<div class=\"wlcm-select-arrow\">\n <ng-container\n [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"\n [wlcmIconStopPropagation]=\"false\"\n ></ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i4.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: WlcmIconDirective, selector: "[wlcmIcon]", inputs: ["wlcmIcon", "wlcmIconStopPropagation"], outputs: ["wlcmIconClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
145
177
  };
146
178
  WlcmSelectComponent = __decorate([
147
179
  UntilDestroy(),
148
- __metadata("design:paramtypes", [ChangeDetectorRef, Object, Object])
180
+ __metadata("design:paramtypes", [NgZone,
181
+ ChangeDetectorRef,
182
+ ScrollDetectionApi, Object, Object])
149
183
  ], WlcmSelectComponent);
150
184
  export { WlcmSelectComponent };
151
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmSelectComponent, decorators: [{
@@ -161,8 +195,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
161
195
  },
162
196
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
163
197
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
164
- ], template: "<mat-select\n #selectComponent\n [multiple]=\"multiple\"\n [disableRipple]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n (opened)=\"panelOpened()\"\n (closed)=\"closed.emit()\"\n>\n @if (triggerTemplate()) {\n <mat-select-trigger>\n <ng-container\n *ngTemplateOutlet=\"\n triggerTemplate();\n context: $any({ $implicit: selectComponent.selected })\n \"\n ></ng-container>\n </mat-select-trigger>\n }\n\n <mat-option\n *ngFor=\"let option of options()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n @if (optionTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n optionTemplate();\n context: $any({ $implicit: option })\n \"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n</mat-select>\n\n<div class=\"wlcm-select-arrow\">\n <ng-container\n [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"\n [wlcmIconStopPropagation]=\"false\"\n ></ng-container>\n</div>\n" }]
165
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
198
+ ], template: "<mat-select\n #selectComponent\n [multiple]=\"multiple\"\n [disableRipple]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n (opened)=\"panelOpened()\"\n (closed)=\"panelClosed()\"\n>\n @if (triggerTemplate()) {\n <mat-select-trigger>\n <ng-container\n *ngTemplateOutlet=\"\n triggerTemplate()!;\n context: $any({ $implicit: selectComponent.selected })\n \"\n ></ng-container>\n </mat-select-trigger>\n }\n\n <mat-option\n *ngFor=\"let option of computedOptions()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n @if (optionTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n optionTemplate();\n context: $any({ $implicit: option })\n \"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n</mat-select>\n\n<div class=\"wlcm-select-arrow\">\n <ng-container\n [wlcmIcon]=\"WlcmIconName.CHEVRON_DOWN\"\n [wlcmIconStopPropagation]=\"false\"\n ></ng-container>\n</div>\n" }]
199
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.ScrollDetectionApi }, { type: undefined, decorators: [{
166
200
  type: Inject,
167
201
  args: [WLCM_FORM_FIELD]
168
202
  }] }, { type: undefined, decorators: [{
@@ -174,6 +208,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
174
208
  type: Input
175
209
  }], placeholder: [{
176
210
  type: Input
211
+ }], fetchPaginatedOptions: [{
212
+ type: Input
213
+ }], queryParams: [{
214
+ type: Input
177
215
  }], matSelect: [{
178
216
  type: ViewChild,
179
217
  args: [MatSelect]
@@ -181,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
181
219
  type: HostListener,
182
220
  args: ['click']
183
221
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBSVIsU0FBUyxFQUNULE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsR0FHcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBbUIsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBc0MsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFaEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENB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RUcsU0FBUztzQkFBL0IsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIElucHV0U2lnbmFsLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBlZmZlY3QsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgdmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTUFUX1NFTEVDVF9DT05GSUcsIE1hdE9wdGlvbiwgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UsIE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBXbGNtSWNvbkRpcmVjdGl2ZSwgV2xjbUljb25OYW1lLCBXbGNtT3B0aW9uLCBXbGNtU2VsZWN0T3B0aW9uRm9ybWF0IH0gZnJvbSAnQHdsY20vYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdMQ01fRk9STV9DT05UUk9MLCBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUiwgV0xDTV9GT1JNX0ZJRUxEIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0LWlucHV0LWJpbmRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2xjbUZvcm1Db250cm9sLCBXbGNtRm9ybUZpZWxkLCBXbGNtRm9ybUZpZWxkSW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvX2luZGV4JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIE9ic2VydmFibGUsIGZpcnN0LCBmcm9tRXZlbnQsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSXNPcHRpb25EaXNhYmxlZEZuLCBXbGNtU2VsZWN0Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlbGVjdC5tb2RlbHMnO1xuaW1wb3J0IHsgV0xDTV9TRUxFQ1RfQ09ORklHIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3NlbGVjdC5jb25zdGFudHMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBDZGtPdmVybGF5T3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgbWVyZ2VXaXRoIH0gZnJvbSAnbG9kYXNoJztcblxudHlwZSBTZWxlY3RWYWx1ZSA9IHN0cmluZ1tdIHwgc3RyaW5nO1xuXG50eXBlIE9wdGlvblRlbXBsYXRlQ29udGV4dCA9IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBXbGNtT3B0aW9uIH0+O1xuXG5jb25zdCBQQU5FTF9DTEFTUzogc3RyaW5nID0gJ3dsY20tc2VsZWN0LXBhbmVsJztcblxuY29uc3QgREVGQVVMVF9DT05GSUc6IFdsY21TZWxlY3RDb25maWcgPSB7IG92ZXJsYXlQYW5lbENsYXNzOiBbUEFORUxfQ0xBU1NdIH07XG5cbmNvbnN0IG1lcmdlQ29uZmlnID0gKGNvbmZpZzogV2xjbVNlbGVjdENvbmZpZyk6IFdsY21TZWxlY3RDb25maWcgPT4ge1xuICBjb25zdCBjdXN0b21pemVyID0gKF9kZWZhdWx0OiBXbGNtU2VsZWN0Q29uZmlnLCBfbmV3OiBXbGNtU2VsZWN0Q29uZmlnKTogQXJyYXk8dW5rbm93bj4gfCB2b2lkID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShfZGVmYXVsdCkpIHJldHVybiBfZGVmYXVsdC5jb25jYXQoX25ldyk7XG4gIH07XG5cbiAgcmV0dXJuIG1lcmdlV2l0aCh7IC4uLkRFRkFVTFRfQ09ORklHIH0sIGNvbmZpZywgY3VzdG9taXplcik7XG59O1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tc2VsZWN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0U2VsZWN0TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBXbGNtSWNvbkRpcmVjdGl2ZSwgV2xjbVNlbGVjdElucHV0QmluZGVyRGlyZWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdERpcmVjdGl2ZXM6IFtXbGNtU2VsZWN0SW5wdXRCaW5kZXJEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtcbiAgICBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUixcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfU0VMRUNUX0NPTkZJRyxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgY29uc3Qgd2xjbUNvbmZpZzogV2xjbVNlbGVjdENvbmZpZyA9IGluamVjdChXTENNX1NFTEVDVF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8ge307XG5cbiAgICAgICAgcmV0dXJuIG1lcmdlQ29uZmlnKHdsY21Db25maWcpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbVNlbGVjdENvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbVNlbGVjdENvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdsY21TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBXbGNtRm9ybUZpZWxkSW5wdXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnTm90IHNlbGVjdGVkJztcblxuICBvcHRpb25zOiBJbnB1dFNpZ25hbDxXbGNtT3B0aW9uW10+ID0gaW5wdXQucmVxdWlyZWQoKTtcblxuICBzZWxlY3RPcHRpb25Gb3JtYXQ6IElucHV0U2lnbmFsPFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+ID0gaW5wdXQ8V2xjbVNlbGVjdE9wdGlvbkZvcm1hdD4oJ1ZhbHVlT25seScpO1xuXG4gIG9wdGlvblRlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxPcHRpb25UZW1wbGF0ZUNvbnRleHQ+IHwgbnVsbD4gPVxuICAgIGlucHV0PFRlbXBsYXRlUmVmPE9wdGlvblRlbXBsYXRlQ29udGV4dD4gfCBudWxsPihudWxsKTtcblxuICB0cmlnZ2VyVGVtcGxhdGU6IElucHV0U2lnbmFsPFRlbXBsYXRlUmVmPE1hdE9wdGlvbjxhbnk+IHwgTWF0T3B0aW9uPGFueT5bXT4gfCBudWxsPiA9IGlucHV0PFRlbXBsYXRlUmVmPFxuICAgIE1hdE9wdGlvbjxXbGNtT3B0aW9uPiB8IE1hdE9wdGlvbjxXbGNtT3B0aW9uPltdXG4gID4gfCBudWxsPihudWxsKTtcblxuICBpc09wdGlvbkRpc2FibGVkOiBJbnB1dFNpZ25hbDxJc09wdGlvbkRpc2FibGVkRm4+ID0gaW5wdXQ8SXNPcHRpb25EaXNhYmxlZEZuPigoKSA9PiBmYWxzZSk7XG5cbiAgc2VsZWN0aW9uQ2hhbmdlOiBPdXRwdXRFbWl0dGVyUmVmPE1hdFNlbGVjdENoYW5nZT4gPSBvdXRwdXQoKTtcblxuICBvcGVuZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICBjbG9zZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICByZWFkb25seSBjb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gIHJlYWRvbmx5IFdsY21JY29uTmFtZSA9IFdsY21JY29uTmFtZTtcblxuICBwcml2YXRlIF9jaGFuZ2VkPzogKHZhbHVlOiBXbGNtT3B0aW9uKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3RvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3ZhbGlkYXRvckNoYW5nZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIEBWaWV3Q2hpbGQoTWF0U2VsZWN0KSBtYXRTZWxlY3QhOiBNYXRTZWxlY3Q7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKSBvcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRTZWxlY3Qub3BlbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hdE9wdGlvbnM6IFNpZ25hbDxSZWFkb25seUFycmF5PE1hdE9wdGlvbj4+ID0gdmlld0NoaWxkcmVuKE1hdE9wdGlvbik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2JsdXJTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIGZvY3VzJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2ZvY3VzU3RyZWFtJC5waXBlKHN3aXRjaE1hcCgoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBzdHJlYW0pKTtcblxuICBibHVyJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2JsdXJTdHJlYW0kLnBpcGUoc3dpdGNoTWFwKChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4pID0+IHN0cmVhbSkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoV0xDTV9GT1JNX0ZJRUxEKSBwcml2YXRlIGZvcm1GaWVsZDogV2xjbUZvcm1GaWVsZCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFdMQ01fRk9STV9DT05UUk9MKSBwcml2YXRlIHBhcmVudEZvcm1NZW1iZXI6IFdsY21Gb3JtQ29udHJvbCxcbiAgKSB7XG4gICAgaWYgKHRoaXMucGFyZW50Rm9ybU1lbWJlcikge1xuICAgICAgdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSgpO1xuICAgIH1cblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc09wdGlvbkRpc2FibGVkKCkgJiYgdGhpcy5vcHRpb25zKCkubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnNTdGF0dXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRmllbGQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gdGhpcy5mb3JtRmllbGQuaW5wdXRDb250YWluZXI7XG5cbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm1hdFNlbGVjdC5fcHJlZmVycmVkT3ZlcmxheU9yaWdpbiA9IG5ldyBDZGtPdmVybGF5T3JpZ2luKHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyKTtcbiAgICB9XG5cbiAgICB0aGlzLl9mb2N1c1N0cmVhbSQubmV4dCh0aGlzLm1hdFNlbGVjdC5fb3BlbmVkU3RyZWFtKTtcblxuICAgIHRoaXMuX2JsdXJTdHJlYW0kLm5leHQodGhpcy5tYXRTZWxlY3QuX2Nsb3NlZFN0cmVhbSk7XG4gIH1cblxuICBmb2N1cyA9ICgpOiB2b2lkID0+IHRoaXMubWF0U2VsZWN0Lm9wZW4oKTtcblxuICBpc0ZvY3VzZWQgPSAoKTogYm9vbGVhbiA9PiB0aGlzLmlzT3BlbjtcblxuICBzZWxlY3QoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5nZWQ/LihldmVudC52YWx1ZSk7XG5cbiAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2VkPy4oKTtcblxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhbmVsT3BlbmVkKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcblxuICAgIHRoaXMuaGFuZGxlQ2xpY2tPdXRzaWRlKCk7XG4gIH1cblxuICB1cGRhdGVPcHRpb25zU3RhdHVzKCk6IHZvaWQge1xuICAgIHRoaXMubWF0T3B0aW9ucygpLmZvckVhY2goKG1hdE9wdGlvbjogTWF0T3B0aW9uKSA9PiB7XG4gICAgICBtYXRPcHRpb24uZGlzYWJsZWQgPSB0aGlzLmlzT3B0aW9uRGlzYWJsZWQoKShtYXRPcHRpb24udmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogU2VsZWN0VmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBXbGNtT3B0aW9uKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl90b3VjaGVkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udHJvbC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1hdFNlbGVjdD8ucGFuZWxPcGVuID8/IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudEZvcm1NZW1iZXIuc3RhdGVDaGFuZ2VzJC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZD8uKCk7XG5cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNsaWNrT3V0c2lkZSgpOiB2b2lkIHtcbiAgICBjb25zdCBvdmVybGF5Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuY2RrLW92ZXJsYXktY29udGFpbmVyOmhhcyguJHtQQU5FTF9DTEFTU30pYCk7XG5cbiAgICBjb25zdCBiYWNrZHJvcDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkID0gb3ZlcmxheUNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvcihgLmNkay1vdmVybGF5LWJhY2tkcm9wYCk7XG5cbiAgICBpZiAoYmFja2Ryb3AgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgZnJvbUV2ZW50KGJhY2tkcm9wLCAnY2xpY2snKVxuICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl90b3VjaGVkPy4oKTtcblxuICAgICAgICAgIHRoaXMuX3ZhbGlkYXRvckNoYW5nZWQ/LigpO1xuXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8bWF0LXNlbGVjdFxuICAjc2VsZWN0Q29tcG9uZW50XG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICBbbmdDbGFzc109XCJ7IGZvY3VzZWQ6IHNlbGVjdENvbXBvbmVudC5mb2N1c2VkIH1cIlxuICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdCgkZXZlbnQpXCJcbiAgKG9wZW5lZCk9XCJwYW5lbE9wZW5lZCgpXCJcbiAgKGNsb3NlZCk9XCJjbG9zZWQuZW1pdCgpXCJcbj5cbiAgQGlmICh0cmlnZ2VyVGVtcGxhdGUoKSkge1xuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdHJpZ2dlclRlbXBsYXRlKCk7XG4gICAgICAgICAgY29udGV4dDogJGFueSh7ICRpbXBsaWNpdDogc2VsZWN0Q29tcG9uZW50LnNlbGVjdGVkIH0pXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gIH1cblxuICA8bWF0LW9wdGlvblxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9ucygpXCJcbiAgICBbdmFsdWVdPVwic2VsZWN0T3B0aW9uRm9ybWF0KCkgPT09ICdDb21wbGV0ZU9wdGlvbicgPyBvcHRpb24gOiBvcHRpb24udmFsdWVcIlxuICA+XG4gICAgQGlmIChvcHRpb25UZW1wbGF0ZSgpKSB7XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgb3B0aW9uVGVtcGxhdGUoKTtcbiAgICAgICAgICBjb250ZXh0OiAkYW55KHsgJGltcGxpY2l0OiBvcHRpb24gfSlcbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIHt7IG9wdGlvbi52aWV3VmFsdWUgfX1cbiAgICB9XG4gIDwvbWF0LW9wdGlvbj5cbjwvbWF0LXNlbGVjdD5cblxuPGRpdiBjbGFzcz1cIndsY20tc2VsZWN0LWFycm93XCI+XG4gIDxuZy1jb250YWluZXJcbiAgICBbd2xjbUljb25dPVwiV2xjbUljb25OYW1lLkNIRVZST05fRE9XTlwiXG4gICAgW3dsY21JY29uU3RvcFByb3BhZ2F0aW9uXT1cImZhbHNlXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sUUFBUSxFQUlSLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsR0FHcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBbUIsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckgsT0FBTyxFQUNMLG9CQUFvQixFQUdwQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFlBQVksR0FHYixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUVoRyxPQUFPLEVBQUUsZUFBZSxF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LEVBQUU7Z0NBQ2YsTUFBTSxVQUFVLEdBQXFCLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQ0FFMUYsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7NEJBQ2pDLENBQUM7eUJBQ0Y7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDM0YsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUNoRzs7MEJBb0VFLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCO3lDQWxFOUIsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQXVDZ0IsU0FBUztzQkFBOUIsU0FBUzt1QkFBQyxTQUFTO2dCQUVHLFNBQVM7c0JBQS9CLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgTmdab25lLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1BVF9TRUxFQ1RfQ09ORklHLCBNYXRPcHRpb24sIE1hdFNlbGVjdCwgTWF0U2VsZWN0Q2hhbmdlLCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9RVUVSWV9QQVJBTVMsXG4gIFBhZ2luYXRlZERhdGEsXG4gIFF1ZXJ5UGFyYW1zLFxuICBTY3JvbGxEZXRlY3Rpb25BcGksXG4gIFdsY21JY29uRGlyZWN0aXZlLFxuICBXbGNtSWNvbk5hbWUsXG4gIFdsY21PcHRpb24sXG4gIFdsY21TZWxlY3RPcHRpb25Gb3JtYXQsXG59IGZyb20gJ0B3bGNtL2FuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXTENNX0ZPUk1fQ09OVFJPTCwgV0xDTV9GT1JNX0NPTlRST0xfUFJPVklERVIsIFdMQ01fRk9STV9GSUVMRCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtU2VsZWN0SW5wdXRCaW5kZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3NlbGVjdC1pbnB1dC1iaW5kZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdsY21Gb3JtQ29udHJvbCwgV2xjbUZvcm1GaWVsZCwgV2xjbUZvcm1GaWVsZElucHV0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL19pbmRleCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIEVNUFRZLCBPYnNlcnZhYmxlLCBmaXJzdCwgZnJvbUV2ZW50LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSXNPcHRpb25EaXNhYmxlZEZuLCBXbGNtU2VsZWN0Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlbGVjdC5tb2RlbHMnO1xuaW1wb3J0IHsgV0xDTV9TRUxFQ1RfQ09ORklHIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3NlbGVjdC5jb25zdGFudHMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBDZGtPdmVybGF5T3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgbWVyZ2VXaXRoIH0gZnJvbSAnbG9kYXNoJztcblxudHlwZSBTZWxlY3RWYWx1ZSA9IHN0cmluZ1tdIHwgc3RyaW5nO1xuXG50eXBlIE9wdGlvblRlbXBsYXRlQ29udGV4dCA9IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBXbGNtT3B0aW9uIH0+O1xuXG5jb25zdCBQQU5FTF9DTEFTUzogc3RyaW5nID0gJ3dsY20tc2VsZWN0LXBhbmVsJztcblxuY29uc3QgREVGQVVMVF9DT05GSUc6IFdsY21TZWxlY3RDb25maWcgPSB7IG92ZXJsYXlQYW5lbENsYXNzOiBbUEFORUxfQ0xBU1NdIH07XG5cbmNvbnN0IG1lcmdlQ29uZmlnID0gKGNvbmZpZzogV2xjbVNlbGVjdENvbmZpZyk6IFdsY21TZWxlY3RDb25maWcgPT4ge1xuICBjb25zdCBjdXN0b21pemVyID0gKF9kZWZhdWx0OiBXbGNtU2VsZWN0Q29uZmlnLCBfbmV3OiBXbGNtU2VsZWN0Q29uZmlnKTogQXJyYXk8dW5rbm93bj4gfCB2b2lkID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShfZGVmYXVsdCkpIHJldHVybiBfZGVmYXVsdC5jb25jYXQoX25ldyk7XG4gIH07XG5cbiAgcmV0dXJuIG1lcmdlV2l0aCh7IC4uLkRFRkFVTFRfQ09ORklHIH0sIGNvbmZpZywgY3VzdG9taXplcik7XG59O1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tc2VsZWN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0U2VsZWN0TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBXbGNtSWNvbkRpcmVjdGl2ZSwgV2xjbVNlbGVjdElucHV0QmluZGVyRGlyZWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdERpcmVjdGl2ZXM6IFtXbGNtU2VsZWN0SW5wdXRCaW5kZXJEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtcbiAgICBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUixcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfU0VMRUNUX0NPTkZJRyxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgY29uc3Qgd2xjbUNvbmZpZzogV2xjbVNlbGVjdENvbmZpZyA9IGluamVjdChXTENNX1NFTEVDVF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8ge307XG5cbiAgICAgICAgcmV0dXJuIG1lcmdlQ29uZmlnKHdsY21Db25maWcpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbVNlbGVjdENvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbVNlbGVjdENvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdsY21TZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBXbGNtRm9ybUZpZWxkSW5wdXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnTm90IHNlbGVjdGVkJztcblxuICBASW5wdXQoKSBmZXRjaFBhZ2luYXRlZE9wdGlvbnM/OiAocGFyYW1zOiBRdWVyeVBhcmFtcykgPT4gT2JzZXJ2YWJsZTxQYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+PjtcblxuICBASW5wdXQoKSBxdWVyeVBhcmFtczogUXVlcnlQYXJhbXMgPSBERUZBVUxUX1FVRVJZX1BBUkFNUztcblxuICBwYWdpbmF0ZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xuXG4gIG9wdGlvbnM6IElucHV0U2lnbmFsPFdsY21PcHRpb25bXT4gPSBpbnB1dDxXbGNtT3B0aW9uW10+KFtdKTtcblxuICBwYWdpbmF0ZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxXbGNtT3B0aW9uW10+ID0gc2lnbmFsKFtdKTtcblxuICBzZWxlY3RPcHRpb25Gb3JtYXQ6IElucHV0U2lnbmFsPFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+ID0gaW5wdXQ8V2xjbVNlbGVjdE9wdGlvbkZvcm1hdD4oJ1ZhbHVlT25seScpO1xuXG4gIG9wdGlvblRlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxPcHRpb25UZW1wbGF0ZUNvbnRleHQ+IHwgbnVsbD4gPVxuICAgIGlucHV0PFRlbXBsYXRlUmVmPE9wdGlvblRlbXBsYXRlQ29udGV4dD4gfCBudWxsPihudWxsKTtcblxuICB0cmlnZ2VyVGVtcGxhdGU6IElucHV0U2lnbmFsPFRlbXBsYXRlUmVmPE1hdE9wdGlvbiB8IE1hdE9wdGlvbltdPiB8IHVuZGVmaW5lZD4gPSBpbnB1dCgpO1xuXG4gIGlzT3B0aW9uRGlzYWJsZWQ6IElucHV0U2lnbmFsPElzT3B0aW9uRGlzYWJsZWRGbj4gPSBpbnB1dDxJc09wdGlvbkRpc2FibGVkRm4+KCgpID0+IGZhbHNlKTtcblxuICBzZWxlY3Rpb25DaGFuZ2U6IE91dHB1dEVtaXR0ZXJSZWY8TWF0U2VsZWN0Q2hhbmdlPiA9IG91dHB1dCgpO1xuXG4gIG9wZW5lZDogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gIGNsb3NlZDogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gIHJlYWRvbmx5IGNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgcmVhZG9ubHkgV2xjbUljb25OYW1lID0gV2xjbUljb25OYW1lO1xuXG4gIHByaXZhdGUgX2NoYW5nZWQ/OiAodmFsdWU6IFdsY21PcHRpb24pID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdG9yQ2hhbmdlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfcGFnaW5hdGVkRGF0YTogUGFnaW5hdGVkRGF0YTxXbGNtT3B0aW9uPiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbXB1dGVkT3B0aW9uczogU2lnbmFsPFdsY21PcHRpb25bXT4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGFnaW5hdGVkKCkgPyB0aGlzLnBhZ2luYXRlZE9wdGlvbnMoKSA6IHRoaXMub3B0aW9ucygpO1xuICB9KTtcblxuICBAVmlld0NoaWxkKE1hdFNlbGVjdCkgbWF0U2VsZWN0ITogTWF0U2VsZWN0O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMubWF0U2VsZWN0Lm9wZW4oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXRPcHRpb25zOiBTaWduYWw8UmVhZG9ubHlBcnJheTxNYXRPcHRpb24+PiA9IHZpZXdDaGlsZHJlbihNYXRPcHRpb24pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzU3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8dm9pZD4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChFTVBUWSBhcyBPYnNlcnZhYmxlPHZvaWQ+KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ibHVyU3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8dm9pZD4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChFTVBUWSBhcyBPYnNlcnZhYmxlPHZvaWQ+KTtcblxuICBmb2N1cyQ6IE9ic2VydmFibGU8dW5rbm93bj4gPSB0aGlzLl9mb2N1c1N0cmVhbSQucGlwZShzd2l0Y2hNYXAoKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPikgPT4gc3RyZWFtKSk7XG5cbiAgYmx1ciQ6IE9ic2VydmFibGU8dW5rbm93bj4gPSB0aGlzLl9ibHVyU3RyZWFtJC5waXBlKHN3aXRjaE1hcCgoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBzdHJlYW0pKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNjcm9sbERldGVjdGlvbkFwaTogU2Nyb2xsRGV0ZWN0aW9uQXBpLFxuICAgIEBJbmplY3QoV0xDTV9GT1JNX0ZJRUxEKSBwcml2YXRlIGZvcm1GaWVsZDogV2xjbUZvcm1GaWVsZCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFdMQ01fRk9STV9DT05UUk9MKSBwcml2YXRlIHBhcmVudEZvcm1NZW1iZXI6IFdsY21Gb3JtQ29udHJvbCxcbiAgKSB7XG4gICAgaWYgKHRoaXMucGFyZW50Rm9ybU1lbWJlcikge1xuICAgICAgdGhpcy5oYW5kbGVTdGF0ZUNoYW5nZSgpO1xuICAgIH1cblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucGFnaW5hdGVkKCkpIHRoaXMubG9hZFBhZ2luYXRlZE9wdGlvbnMoKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc09wdGlvbkRpc2FibGVkKCkgJiYgdGhpcy5jb21wdXRlZE9wdGlvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudXBkYXRlT3B0aW9uc1N0YXR1cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1GaWVsZDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gPSB0aGlzLmZvcm1GaWVsZC5pbnB1dENvbnRhaW5lcjtcblxuICAgIGlmIChmb3JtRmllbGQpIHtcbiAgICAgIHRoaXMubWF0U2VsZWN0Ll9wcmVmZXJyZWRPdmVybGF5T3JpZ2luID0gbmV3IENka092ZXJsYXlPcmlnaW4odGhpcy5mb3JtRmllbGQuaW5wdXRDb250YWluZXIpO1xuICAgIH1cblxuICAgIHRoaXMuX2ZvY3VzU3RyZWFtJC5uZXh0KHRoaXMubWF0U2VsZWN0Ll9vcGVuZWRTdHJlYW0pO1xuXG4gICAgdGhpcy5fYmx1clN0cmVhbSQubmV4dCh0aGlzLm1hdFNlbGVjdC5fY2xvc2VkU3RyZWFtKTtcbiAgfVxuXG4gIGZvY3VzID0gKCk6IHZvaWQgPT4gdGhpcy5tYXRTZWxlY3Qub3BlbigpO1xuXG4gIGlzRm9jdXNlZCA9ICgpOiBib29sZWFuID0+IHRoaXMuaXNPcGVuO1xuXG4gIHNlbGVjdChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlZD8uKGV2ZW50LnZhbHVlKTtcblxuICAgIHRoaXMuX3ZhbGlkYXRvckNoYW5nZWQ/LigpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFuZWxPcGVuZWQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xuXG4gICAgdGhpcy5oYW5kbGVTY3JvbGxEb3duKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFuZWxDbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuXG4gICAgdGhpcy5fdG91Y2hlZD8uKCk7XG4gIH1cblxuICB1cGRhdGVPcHRpb25zU3RhdHVzKCk6IHZvaWQge1xuICAgIHRoaXMubWF0T3B0aW9ucygpLmZvckVhY2goKG1hdE9wdGlvbjogTWF0T3B0aW9uKSA9PiB7XG4gICAgICBtYXRPcHRpb24uZGlzYWJsZWQgPSB0aGlzLmlzT3B0aW9uRGlzYWJsZWQoKShtYXRPcHRpb24udmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogU2VsZWN0VmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBXbGNtT3B0aW9uKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbmdlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl90b3VjaGVkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udHJvbC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1hdFNlbGVjdD8ucGFuZWxPcGVuID8/IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUGFnaW5hdGVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmZldGNoUGFnaW5hdGVkT3B0aW9ucyEoeyAuLi50aGlzLnF1ZXJ5UGFyYW1zLCBwYWdlOiAxIH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSwgZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHBhZ2luYXRlZERhdGE6IFBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGVkRGF0YSA9IHBhZ2luYXRlZERhdGE7XG5cbiAgICAgICAgdGhpcy5wYWdpbmF0ZWRPcHRpb25zLnNldChwYWdpbmF0ZWREYXRhLmRhdGEpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRNb3JlUGFnaW5hdGVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BhZ2luYXRlZERhdGEgfHwgdGhpcy5fcGFnaW5hdGVkRGF0YS5jdXJyUGFnZSArIDEgPiB0aGlzLl9wYWdpbmF0ZWREYXRhLnRvdGFsUGFnZXMpIHJldHVybjtcblxuICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZSsrO1xuXG4gICAgdGhpcy5mZXRjaFBhZ2luYXRlZE9wdGlvbnMhKHsgLi4udGhpcy5xdWVyeVBhcmFtcyB9KVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcyksIGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKChwYWdpbmF0ZWREYXRhOiBQYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+KSA9PiB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRlZERhdGEgPSBwYWdpbmF0ZWREYXRhO1xuXG4gICAgICAgIHRoaXMucGFnaW5hdGVkT3B0aW9ucy51cGRhdGUoKG9wdGlvbnM6IFdsY21PcHRpb25bXSkgPT4gWy4uLm9wdGlvbnMsIC4uLnBhZ2luYXRlZERhdGEuZGF0YV0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNjcm9sbERvd24oKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWF0LW1kYy1zZWxlY3QtcGFuZWwnKSE7XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxEZXRlY3Rpb25BcGkub25TY3JvbGxlZERvd24oZWxlbWVudCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmxvYWRNb3JlUGFnaW5hdGVkT3B0aW9ucygpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudEZvcm1NZW1iZXIuc3RhdGVDaGFuZ2VzJC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZD8uKCk7XG5cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxtYXQtc2VsZWN0XG4gICNzZWxlY3RDb21wb25lbnRcbiAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiXG4gIFtuZ0NsYXNzXT1cInsgZm9jdXNlZDogc2VsZWN0Q29tcG9uZW50LmZvY3VzZWQgfVwiXG4gIChzZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0KCRldmVudClcIlxuICAob3BlbmVkKT1cInBhbmVsT3BlbmVkKClcIlxuICAoY2xvc2VkKT1cInBhbmVsQ2xvc2VkKClcIlxuPlxuICBAaWYgKHRyaWdnZXJUZW1wbGF0ZSgpKSB7XG4gICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICB0cmlnZ2VyVGVtcGxhdGUoKSE7XG4gICAgICAgICAgY29udGV4dDogJGFueSh7ICRpbXBsaWNpdDogc2VsZWN0Q29tcG9uZW50LnNlbGVjdGVkIH0pXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XG4gIH1cblxuICA8bWF0LW9wdGlvblxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29tcHV0ZWRPcHRpb25zKClcIlxuICAgIFt2YWx1ZV09XCJzZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ0NvbXBsZXRlT3B0aW9uJyA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZVwiXG4gID5cbiAgICBAaWYgKG9wdGlvblRlbXBsYXRlKCkpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBvcHRpb25UZW1wbGF0ZSgpO1xuICAgICAgICAgIGNvbnRleHQ6ICRhbnkoeyAkaW1wbGljaXQ6IG9wdGlvbiB9KVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH0gQGVsc2Uge1xuICAgICAge3sgb3B0aW9uLnZpZXdWYWx1ZSB9fVxuICAgIH1cbiAgPC9tYXQtb3B0aW9uPlxuPC9tYXQtc2VsZWN0PlxuXG48ZGl2IGNsYXNzPVwid2xjbS1zZWxlY3QtYXJyb3dcIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIFt3bGNtSWNvbl09XCJXbGNtSWNvbk5hbWUuQ0hFVlJPTl9ET1dOXCJcbiAgICBbd2xjbUljb25TdG9wUHJvcGFnYXRpb25dPVwiZmFsc2VcIlxuICA+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==