@wlcm/angular 18.2.17 → 18.2.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/button/fesm2022/wlcm-angular-button.mjs +7 -7
- package/button/fesm2022/wlcm-angular-button.mjs.map +1 -1
- package/core/fesm2022/wlcm-angular-core.mjs +24 -24
- package/core/fesm2022/wlcm-angular-core.mjs.map +1 -1
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs +58 -58
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs.map +1 -1
- package/datepicker/lib/directives/datepicker-input.base.d.ts +1 -1
- package/datepicker/lib/directives/datepicker-trigger.base.d.ts +1 -1
- package/datepicker/lib/directives/ragne/date-range-picker-input.base.d.ts +1 -1
- package/datepicker/lib/models/range/data-range-calendar.models.d.ts +1 -1
- package/filters/fesm2022/wlcm-angular-filters.mjs +13 -13
- package/filters/fesm2022/wlcm-angular-filters.mjs.map +1 -1
- package/filters/lib/models/filters-group.models.d.ts +1 -1
- package/forms/fesm2022/wlcm-angular-forms.mjs +66 -66
- package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
- package/forms/lib/forms/models/autocomplete.models.d.ts +1 -1
- package/forms/lib/forms/services/places.api.d.ts +0 -1
- package/package.json +2 -2
- package/phone-input/fesm2022/wlcm-angular-phone-input.mjs +16 -16
- package/phone-input/fesm2022/wlcm-angular-phone-input.mjs.map +1 -1
- package/search-field/fesm2022/wlcm-angular-search-field.mjs +7 -7
- package/search-field/fesm2022/wlcm-angular-search-field.mjs.map +1 -1
- package/stepper/fesm2022/wlcm-angular-stepper.mjs +25 -25
- package/stepper/fesm2022/wlcm-angular-stepper.mjs.map +1 -1
- package/stepper/lib/models/step.models.d.ts +1 -1
- package/stepper/lib/models/stepper.models.d.ts +1 -1
- package/table/fesm2022/wlcm-angular-table.mjs +34 -34
- package/table/fesm2022/wlcm-angular-table.mjs.map +1 -1
- package/button/esm2022/index.mjs +0 -3
- package/button/esm2022/lib/button.module.mjs +0 -16
- package/button/esm2022/lib/components/button/button.component.mjs +0 -37
- package/button/esm2022/lib/models/button.models.mjs +0 -2
- package/button/esm2022/wlcm-angular-button.mjs +0 -5
- package/core/esm2022/index.mjs +0 -17
- package/core/esm2022/lib/components/default-loader/default-loader.component.mjs +0 -12
- package/core/esm2022/lib/components/icons/calendar-icon/calendar-icon.component.mjs +0 -12
- package/core/esm2022/lib/components/icons/chevron-down-icon/chevron-down-icon.component.mjs +0 -12
- package/core/esm2022/lib/components/icons/close-icon/close-icon.component.mjs +0 -12
- package/core/esm2022/lib/components/icons/search-icon/search-icon.component.mjs +0 -12
- package/core/esm2022/lib/components/loader/loader.component.mjs +0 -32
- package/core/esm2022/lib/constants/_index.mjs +0 -3
- package/core/esm2022/lib/constants/http.constants.mjs +0 -6
- package/core/esm2022/lib/constants/icon.contants.mjs +0 -15
- package/core/esm2022/lib/constants/loader.constants.mjs +0 -7
- package/core/esm2022/lib/directives/_index.mjs +0 -2
- package/core/esm2022/lib/directives/icon.directive.mjs +0 -49
- package/core/esm2022/lib/models/_index.mjs +0 -3
- package/core/esm2022/lib/models/icon.models.mjs +0 -7
- package/core/esm2022/lib/models/option.models.mjs +0 -17
- package/core/esm2022/lib/services/scroll-detection.api.mjs +0 -27
- package/core/esm2022/lib/utils/paginated-data-emulator.utils.mjs +0 -20
- package/core/esm2022/lib/utils/stream.utils.mjs +0 -16
- package/core/esm2022/wlcm-angular-core.mjs +0 -5
- package/datepicker/esm2022/index.mjs +0 -11
- package/datepicker/esm2022/lib/components/calendar-header/calendar-header.component.mjs +0 -63
- package/datepicker/esm2022/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.mjs +0 -87
- package/datepicker/esm2022/lib/components/range/date-range-picker/date-range-picker.component.mjs +0 -174
- package/datepicker/esm2022/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.mjs +0 -19
- package/datepicker/esm2022/lib/components/range/date-range-picker-input/date-range-picker-input.component.mjs +0 -124
- package/datepicker/esm2022/lib/components/single/datepicker-input-container/datepicker-input-container.component.mjs +0 -92
- package/datepicker/esm2022/lib/components/single/datepicker-panel/datepicker-panel.component.mjs +0 -33
- package/datepicker/esm2022/lib/constants/datepicker.constants.mjs +0 -23
- package/datepicker/esm2022/lib/constants/range/date-range-picker.constants.mjs +0 -3
- package/datepicker/esm2022/lib/constants/range/date-range-selection-model.constants.mjs +0 -10
- package/datepicker/esm2022/lib/constants/range/date-range-trigger-selection-model.constants.mjs +0 -10
- package/datepicker/esm2022/lib/datepicker.module.mjs +0 -33
- package/datepicker/esm2022/lib/directives/calendar.directive.mjs +0 -15
- package/datepicker/esm2022/lib/directives/datepicker-input.base.mjs +0 -103
- package/datepicker/esm2022/lib/directives/datepicker-trigger.base.mjs +0 -109
- package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input-end.directive.mjs +0 -81
- package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input-start.directive.mjs +0 -81
- package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input.base.mjs +0 -56
- package/datepicker/esm2022/lib/directives/ragne/left-calendar.directive.mjs +0 -51
- package/datepicker/esm2022/lib/directives/ragne/right-calendar.directive.mjs +0 -64
- package/datepicker/esm2022/lib/directives/single/datepicker-input.directive.mjs +0 -67
- package/datepicker/esm2022/lib/models/date-picker.models.mjs +0 -29
- package/datepicker/esm2022/lib/models/range/data-range-calendar.models.mjs +0 -61
- package/datepicker/esm2022/lib/models/range/date-range-picker.models.mjs +0 -2
- package/datepicker/esm2022/lib/models/range/date-range-validation.models.mjs +0 -5
- package/datepicker/esm2022/lib/utils/range/date-range-input.validators.mjs +0 -16
- package/datepicker/esm2022/lib/utils/range/date-range-picker-errors.mjs +0 -9
- package/datepicker/esm2022/wlcm-angular-datepicker.mjs +0 -5
- package/filters/esm2022/index.mjs +0 -6
- package/filters/esm2022/lib/components/filters-group/filters-group.component.mjs +0 -13
- package/filters/esm2022/lib/constants/filter.constants.mjs +0 -3
- package/filters/esm2022/lib/constants/index.mjs +0 -2
- package/filters/esm2022/lib/directives/filter.directive.mjs +0 -11
- package/filters/esm2022/lib/directives/index.mjs +0 -2
- package/filters/esm2022/lib/filters.module.mjs +0 -20
- package/filters/esm2022/lib/models/array-filter.models.mjs +0 -73
- package/filters/esm2022/lib/models/filter.models.mjs +0 -39
- package/filters/esm2022/lib/models/filters-group.models.mjs +0 -60
- package/filters/esm2022/lib/models/index.mjs +0 -4
- package/filters/esm2022/wlcm-angular-filters.mjs +0 -5
- package/forms/esm2022/index.mjs +0 -13
- package/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +0 -242
- package/forms/esm2022/lib/forms/components/checkbox/checkbox.component.mjs +0 -85
- package/forms/esm2022/lib/forms/components/checkbox-group/checkbox-group.component.mjs +0 -87
- package/forms/esm2022/lib/forms/components/error/error.component.mjs +0 -12
- package/forms/esm2022/lib/forms/components/form-field/form-field.component.mjs +0 -137
- package/forms/esm2022/lib/forms/components/index.mjs +0 -9
- package/forms/esm2022/lib/forms/components/label/label.component.mjs +0 -23
- package/forms/esm2022/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.mjs +0 -19
- package/forms/esm2022/lib/forms/components/partials/index.mjs +0 -2
- package/forms/esm2022/lib/forms/components/select/select.component.mjs +0 -319
- package/forms/esm2022/lib/forms/constants/form-elements.constants.mjs +0 -5
- package/forms/esm2022/lib/forms/constants/form-errors.constants.mjs +0 -7
- package/forms/esm2022/lib/forms/constants/form-field.constants.mjs +0 -2
- package/forms/esm2022/lib/forms/constants/form-state-handlers.constants.mjs +0 -13
- package/forms/esm2022/lib/forms/constants/index.mjs +0 -6
- package/forms/esm2022/lib/forms/constants/select.constants.mjs +0 -3
- package/forms/esm2022/lib/forms/directives/autocomplete.directive.mjs +0 -64
- package/forms/esm2022/lib/forms/directives/form-field-custom-container.directive.mjs +0 -17
- package/forms/esm2022/lib/forms/directives/form-field-hint.directive.mjs +0 -15
- package/forms/esm2022/lib/forms/directives/form-field-prefix.directive.mjs +0 -22
- package/forms/esm2022/lib/forms/directives/form-field-suffix.directive.mjs +0 -14
- package/forms/esm2022/lib/forms/directives/input.directive.mjs +0 -47
- package/forms/esm2022/lib/forms/directives/select-input-binder.directive.mjs +0 -33
- package/forms/esm2022/lib/forms/forms.module.mjs +0 -64
- package/forms/esm2022/lib/forms/models/_index.mjs +0 -6
- package/forms/esm2022/lib/forms/models/autocomplete.models.mjs +0 -10
- package/forms/esm2022/lib/forms/models/form-errors.models.mjs +0 -2
- package/forms/esm2022/lib/forms/models/form.models.mjs +0 -2
- package/forms/esm2022/lib/forms/models/input.models.mjs +0 -2
- package/forms/esm2022/lib/forms/models/select.models.mjs +0 -2
- package/forms/esm2022/lib/forms/pipes/errors-mapper.pipe.mjs +0 -53
- package/forms/esm2022/lib/forms/services/form-state-handler.service.mjs +0 -19
- package/forms/esm2022/lib/forms/services/index.mjs +0 -3
- package/forms/esm2022/lib/forms/services/places.api.mjs +0 -62
- package/forms/esm2022/wlcm-angular-forms.mjs +0 -5
- package/phone-input/esm2022/index.mjs +0 -5
- package/phone-input/esm2022/lib/components/country-code-select/country-code-select.component.mjs +0 -32
- package/phone-input/esm2022/lib/components/phone-input-container/phone-input-container.component.mjs +0 -107
- package/phone-input/esm2022/lib/constants/country-code-options.constants.mjs +0 -20
- package/phone-input/esm2022/lib/constants/phone-adapter.constants.mjs +0 -3
- package/phone-input/esm2022/lib/directives/phone-input.directive.mjs +0 -155
- package/phone-input/esm2022/lib/models/country-code.models.mjs +0 -10
- package/phone-input/esm2022/lib/models/phone-adapter.models.mjs +0 -3
- package/phone-input/esm2022/lib/models/phone.models.mjs +0 -5
- package/phone-input/esm2022/lib/phone-input.module.mjs +0 -20
- package/phone-input/esm2022/lib/pipes/phone-code.pipe.mjs +0 -18
- package/phone-input/esm2022/wlcm-angular-phone-input.mjs +0 -5
- package/search-field/esm2022/index.mjs +0 -3
- package/search-field/esm2022/lib/components/search-field/search-field.component.mjs +0 -39
- package/search-field/esm2022/lib/search-field.module.mjs +0 -18
- package/search-field/esm2022/wlcm-angular-search-field.mjs +0 -5
- package/stepper/esm2022/index.mjs +0 -11
- package/stepper/esm2022/lib/components/step/step.component.mjs +0 -53
- package/stepper/esm2022/lib/components/step-header/step-header.component.mjs +0 -81
- package/stepper/esm2022/lib/components/stepper/stepper.component.mjs +0 -15
- package/stepper/esm2022/lib/components/stepper-header/stepper-header.component.mjs +0 -16
- package/stepper/esm2022/lib/constants/step.constants.mjs +0 -9
- package/stepper/esm2022/lib/constants/stepper.stepper.mjs +0 -3
- package/stepper/esm2022/lib/directives/load-on-active-step.directive.mjs +0 -51
- package/stepper/esm2022/lib/models/step.models.mjs +0 -60
- package/stepper/esm2022/lib/models/stepper.models.mjs +0 -114
- package/stepper/esm2022/lib/stepper.module.mjs +0 -34
- package/stepper/esm2022/wlcm-angular-stepper.mjs +0 -5
- package/table/esm2022/index.mjs +0 -9
- package/table/esm2022/lib/components/table/table.component.mjs +0 -79
- package/table/esm2022/lib/components/table-head/table-head.component.mjs +0 -18
- package/table/esm2022/lib/components/table-head-actions/table-head-actions.component.mjs +0 -41
- package/table/esm2022/lib/components/table-head-data/table-head-data.component.mjs +0 -12
- package/table/esm2022/lib/components/table-row/table-row.component.mjs +0 -87
- package/table/esm2022/lib/components/table-row-actions/table-row-actions.component.mjs +0 -12
- package/table/esm2022/lib/components/table-row-data/table-row-data.component.mjs +0 -12
- package/table/esm2022/lib/components/table-row-spacer/table-row-spacer.component.mjs +0 -12
- package/table/esm2022/lib/constants/table-row.constants.mjs +0 -3
- package/table/esm2022/lib/constants/table.constants.mjs +0 -5
- package/table/esm2022/lib/directives/scrollable-table-container.directive.mjs +0 -46
- package/table/esm2022/lib/models/table-config-manager.models.mjs +0 -18
- package/table/esm2022/lib/models/table-row.models.mjs +0 -2
- package/table/esm2022/lib/models/table-selection-model.mjs +0 -48
- package/table/esm2022/lib/models/table.models.mjs +0 -2
- package/table/esm2022/lib/pipes/table-row-injector.pipe.mjs +0 -24
- package/table/esm2022/lib/table.module.mjs +0 -38
- package/table/esm2022/lib/utils/table-errors.utils.mjs +0 -6
- package/table/esm2022/wlcm-angular-table.mjs +0 -5
@@ -1,319 +0,0 @@
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
2
|
-
import { CommonModule } from '@angular/common';
|
3
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Inject, Input, NgZone, Optional, ViewChild, computed, forwardRef, inject, input, output, signal, viewChildren, } from '@angular/core';
|
4
|
-
import { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, } from '@angular/forms';
|
5
|
-
import { MAT_SELECT_CONFIG, MatOption, MatSelect, MatSelectModule } from '@angular/material/select';
|
6
|
-
import { DEFAULT_QUERY_PARAMS, ScrollDetectionApi, WlcmIconDirective, WlcmIconName, } from '@wlcm/angular/core';
|
7
|
-
import { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER, WLCM_FORM_FIELD } from '../../constants';
|
8
|
-
import { WlcmSelectInputBinderDirective } from '../../directives/select-input-binder.directive';
|
9
|
-
import { BehaviorSubject, EMPTY, Observable, Subject, filter, first, of, switchMap, takeUntil } from 'rxjs';
|
10
|
-
import { WLCM_SELECT_CONFIG } from '../../constants/select.constants';
|
11
|
-
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
12
|
-
import { toObservable } from '@angular/core/rxjs-interop';
|
13
|
-
import { CdkOverlayOrigin } from '@angular/cdk/overlay';
|
14
|
-
import { mergeWith } from 'lodash-es';
|
15
|
-
import * as i0 from "@angular/core";
|
16
|
-
import * as i1 from "@wlcm/angular/core";
|
17
|
-
import * as i2 from "../../directives/select-input-binder.directive";
|
18
|
-
import * as i3 from "@angular/common";
|
19
|
-
import * as i4 from "@angular/material/select";
|
20
|
-
import * as i5 from "@angular/material/core";
|
21
|
-
const PANEL_CLASS = 'wlcm-select-panel';
|
22
|
-
const DEFAULT_CONFIG = { overlayPanelClass: [PANEL_CLASS] };
|
23
|
-
const mergeConfig = (config) => {
|
24
|
-
const customizer = (_default, _new) => {
|
25
|
-
if (Array.isArray(_default))
|
26
|
-
return _default.concat(_new);
|
27
|
-
};
|
28
|
-
return mergeWith({ ...DEFAULT_CONFIG }, config, customizer);
|
29
|
-
};
|
30
|
-
let WlcmSelectComponent = class WlcmSelectComponent {
|
31
|
-
openPanel() {
|
32
|
-
this.matSelect.open();
|
33
|
-
}
|
34
|
-
constructor(zone, changeDetectorRef, scrollDetectionApi, formField, parentFormMember) {
|
35
|
-
this.zone = zone;
|
36
|
-
this.changeDetectorRef = changeDetectorRef;
|
37
|
-
this.scrollDetectionApi = scrollDetectionApi;
|
38
|
-
this.formField = formField;
|
39
|
-
this.parentFormMember = parentFormMember;
|
40
|
-
this.multiple = false;
|
41
|
-
this.placeholder = 'Not selected';
|
42
|
-
this.canSelect = (_) => true;
|
43
|
-
this.queryParams = { ...DEFAULT_QUERY_PARAMS };
|
44
|
-
this.paginated = input(false);
|
45
|
-
this.options = input([]);
|
46
|
-
this.paginatedOptions = signal([]);
|
47
|
-
this.selectOptionFormat = input('ValueOnly');
|
48
|
-
this.optionTemplate = input(null);
|
49
|
-
this.triggerTemplate = input();
|
50
|
-
this.isOptionDisabled = input(() => false);
|
51
|
-
this.selectionChange = output();
|
52
|
-
this.opened = output();
|
53
|
-
this.closed = output();
|
54
|
-
this.value = signal(null);
|
55
|
-
this.disabled = signal(false);
|
56
|
-
this.WlcmIconName = WlcmIconName;
|
57
|
-
this._paginatedData = null;
|
58
|
-
this._previousValue = null;
|
59
|
-
this._optionsCache = new Set();
|
60
|
-
this.computedOptions = computed(() => {
|
61
|
-
const options = this.paginated() ? this.paginatedOptions() : this.options();
|
62
|
-
if (this.isOptionDisabled() && options.length > 0) {
|
63
|
-
this.updateOptionsStatus();
|
64
|
-
}
|
65
|
-
return options;
|
66
|
-
});
|
67
|
-
this.prefilledOptions = signal([]);
|
68
|
-
this.matOptions = viewChildren(MatOption);
|
69
|
-
this._focusStream$ = new BehaviorSubject(EMPTY);
|
70
|
-
this._blurStream$ = new BehaviorSubject(EMPTY);
|
71
|
-
this.focus$ = this._focusStream$.pipe(switchMap((stream) => stream));
|
72
|
-
this.blur$ = this._blurStream$.pipe(switchMap((stream) => stream));
|
73
|
-
this.adjustedValue$ = new BehaviorSubject(null);
|
74
|
-
this.viewReady$ = new Subject();
|
75
|
-
this.selected$ = new Subject();
|
76
|
-
this.compareWith = (optionA, optionB) => {
|
77
|
-
return (optionA?.value || optionA) === (optionB?.value || optionB);
|
78
|
-
};
|
79
|
-
this.focus = () => this.matSelect.open();
|
80
|
-
this.isFocused = () => this.isOpen;
|
81
|
-
if (this.parentFormMember) {
|
82
|
-
this.handleStateChange();
|
83
|
-
}
|
84
|
-
this.handleAdjustedValue();
|
85
|
-
toObservable(this.paginated)
|
86
|
-
.pipe(untilDestroyed(this))
|
87
|
-
.subscribe((paginated) => {
|
88
|
-
if (paginated)
|
89
|
-
this.loadPaginatedOptions();
|
90
|
-
});
|
91
|
-
}
|
92
|
-
ngAfterViewInit() {
|
93
|
-
this.viewReady$.next();
|
94
|
-
const formField = this.formField.inputContainer;
|
95
|
-
if (formField) {
|
96
|
-
this.matSelect._preferredOverlayOrigin = new CdkOverlayOrigin(this.formField.inputContainer);
|
97
|
-
}
|
98
|
-
this._focusStream$.next(this.matSelect._openedStream);
|
99
|
-
this._blurStream$.next(this.matSelect._closedStream);
|
100
|
-
}
|
101
|
-
select(event) {
|
102
|
-
this.selected$.next();
|
103
|
-
this.matSelect.value = event.value;
|
104
|
-
this.validateSelectedOption(event.value)
|
105
|
-
.pipe(takeUntil(this.selected$))
|
106
|
-
.subscribe((canSelect) => {
|
107
|
-
if (!canSelect)
|
108
|
-
return this.revertPreviousValue();
|
109
|
-
this.updateValue(event.value);
|
110
|
-
this._changed?.(event.value);
|
111
|
-
this._validatorChanged?.();
|
112
|
-
this.selectionChange.emit(event);
|
113
|
-
});
|
114
|
-
}
|
115
|
-
revertPreviousValue() {
|
116
|
-
this.matSelect.value = this._previousValue;
|
117
|
-
}
|
118
|
-
updateValue(value) {
|
119
|
-
this.value.set(value);
|
120
|
-
this._previousValue = value;
|
121
|
-
}
|
122
|
-
validateSelectedOption(value) {
|
123
|
-
return new Observable((observer) => {
|
124
|
-
const response = this.canSelect(value);
|
125
|
-
const source = response instanceof Observable ? response.pipe(first()) : of(response);
|
126
|
-
source.subscribe((result) => {
|
127
|
-
observer.next(result);
|
128
|
-
observer.complete();
|
129
|
-
});
|
130
|
-
});
|
131
|
-
}
|
132
|
-
panelOpened() {
|
133
|
-
this.opened.emit();
|
134
|
-
this.handleScrollDown();
|
135
|
-
}
|
136
|
-
panelClosed() {
|
137
|
-
this.closed.emit();
|
138
|
-
this._touched?.();
|
139
|
-
}
|
140
|
-
updateOptionsStatus() {
|
141
|
-
this.matOptions().forEach((matOption) => {
|
142
|
-
matOption.disabled = this.isOptionDisabled()(matOption.value);
|
143
|
-
});
|
144
|
-
}
|
145
|
-
writeValue(value) {
|
146
|
-
if (this.paginated())
|
147
|
-
this.prefillOptions(value);
|
148
|
-
const formattedValue = this.prepareValueForPatch(value);
|
149
|
-
this.updateValue(formattedValue);
|
150
|
-
}
|
151
|
-
registerOnChange(callback) {
|
152
|
-
this._changed = callback;
|
153
|
-
}
|
154
|
-
registerOnTouched(callback) {
|
155
|
-
this._touched = callback;
|
156
|
-
}
|
157
|
-
registerOnValidatorChange(callback) {
|
158
|
-
this._validatorChanged = callback;
|
159
|
-
}
|
160
|
-
setDisabledState(isDisabled) {
|
161
|
-
this.disabled.set(isDisabled);
|
162
|
-
}
|
163
|
-
validate() {
|
164
|
-
return null;
|
165
|
-
}
|
166
|
-
get isOpen() {
|
167
|
-
return this.matSelect?.panelOpen ?? false;
|
168
|
-
}
|
169
|
-
prepareValueForPatch(value) {
|
170
|
-
const formatedValue = this.formatValue(value);
|
171
|
-
if (formatedValue.changed)
|
172
|
-
this.adjustedValue$.next(formatedValue.value);
|
173
|
-
return formatedValue.value;
|
174
|
-
}
|
175
|
-
formatValue(value) {
|
176
|
-
let changed = false;
|
177
|
-
const _formatOption = (value) => {
|
178
|
-
const formatedOption = this.formatOption(value);
|
179
|
-
if (formatedOption.changed)
|
180
|
-
changed = true;
|
181
|
-
return formatedOption.value;
|
182
|
-
};
|
183
|
-
if (value instanceof Array) {
|
184
|
-
const options = value.map(_formatOption);
|
185
|
-
return { changed, value: options };
|
186
|
-
}
|
187
|
-
const option = _formatOption(value);
|
188
|
-
return { changed, value: option };
|
189
|
-
}
|
190
|
-
formatOption(value) {
|
191
|
-
if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {
|
192
|
-
return { changed: true, value: value.value };
|
193
|
-
}
|
194
|
-
return { changed: false, value };
|
195
|
-
}
|
196
|
-
loadPaginatedOptions() {
|
197
|
-
this.queryParams.page = 1;
|
198
|
-
this.fetchPaginatedOptions(this.queryParams)
|
199
|
-
.pipe(untilDestroyed(this), first())
|
200
|
-
.subscribe((paginatedData) => {
|
201
|
-
this._optionsCache.clear();
|
202
|
-
this.cacheOptions(paginatedData.data);
|
203
|
-
this._paginatedData = paginatedData;
|
204
|
-
this.paginatedOptions.set(paginatedData.data);
|
205
|
-
});
|
206
|
-
}
|
207
|
-
loadMorePaginatedOptions() {
|
208
|
-
if (!this._paginatedData || this._paginatedData.currPage + 1 > this._paginatedData.totalPages)
|
209
|
-
return;
|
210
|
-
this.queryParams.page++;
|
211
|
-
this.fetchPaginatedOptions({ ...this.queryParams })
|
212
|
-
.pipe(untilDestroyed(this), first())
|
213
|
-
.subscribe((paginatedData) => {
|
214
|
-
this.cacheOptions(paginatedData.data);
|
215
|
-
this._paginatedData = paginatedData;
|
216
|
-
this.paginatedOptions.update((options) => [...options, ...paginatedData.data]);
|
217
|
-
});
|
218
|
-
}
|
219
|
-
cacheOptions(options) {
|
220
|
-
options.forEach((option) => this._optionsCache.add(option.value));
|
221
|
-
this.syncPrefilledOptions();
|
222
|
-
}
|
223
|
-
syncPrefilledOptions() {
|
224
|
-
if (this.prefilledOptions().length === 0)
|
225
|
-
return;
|
226
|
-
this.prefilledOptions.update((options) => {
|
227
|
-
return options.filter((option) => !this._optionsCache.has(option.value));
|
228
|
-
});
|
229
|
-
}
|
230
|
-
prefillOptions(value) {
|
231
|
-
let prefilledOptions = [];
|
232
|
-
if (value instanceof Array) {
|
233
|
-
prefilledOptions = value.filter((option) => option instanceof Object);
|
234
|
-
}
|
235
|
-
else if (value instanceof Object) {
|
236
|
-
prefilledOptions = [value];
|
237
|
-
}
|
238
|
-
this.prefilledOptions.set(prefilledOptions);
|
239
|
-
}
|
240
|
-
handleScrollDown() {
|
241
|
-
const element = document.querySelector('.mat-mdc-select-panel');
|
242
|
-
this.zone.runOutsideAngular(() => {
|
243
|
-
this.scrollDetectionApi.onScrolledDown(element).subscribe(() => {
|
244
|
-
this.zone.run(() => this.loadMorePaginatedOptions());
|
245
|
-
});
|
246
|
-
});
|
247
|
-
}
|
248
|
-
handleStateChange() {
|
249
|
-
this.parentFormMember.stateChanges$.pipe(untilDestroyed(this)).subscribe(() => {
|
250
|
-
this._validatorChanged?.();
|
251
|
-
this.changeDetectorRef.markForCheck();
|
252
|
-
});
|
253
|
-
}
|
254
|
-
handleAdjustedValue() {
|
255
|
-
this.viewReady$
|
256
|
-
.pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))
|
257
|
-
.subscribe((value) => this._changed?.(value));
|
258
|
-
}
|
259
|
-
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 }); }
|
260
|
-
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 }, canSelect: { classPropertyName: "canSelect", publicName: "canSelect", 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: [
|
261
|
-
WLCM_FORM_CONTROL_PROVIDER,
|
262
|
-
{
|
263
|
-
provide: MAT_SELECT_CONFIG,
|
264
|
-
useFactory: () => {
|
265
|
-
const wlcmConfig = inject(WLCM_SELECT_CONFIG, { optional: true }) ?? {};
|
266
|
-
return mergeConfig(wlcmConfig);
|
267
|
-
},
|
268
|
-
},
|
269
|
-
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
|
270
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
|
271
|
-
], 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 [value]=\"value()\"\n [disabled]=\"disabled()\"\n [multiple]=\"multiple\"\n [disableRipple]=\"true\"\n [placeholder]=\"placeholder\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n [compareWith]=\"compareWith\"\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 prefilledOptions()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n <ng-container\n [ngTemplateOutlet]=\"wlcmSelectOptionContent\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n ></ng-container>\n </mat-option>\n\n <mat-option\n *ngFor=\"let option of computedOptions()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n <ng-container\n [ngTemplateOutlet]=\"wlcmSelectOptionContent\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n ></ng-container>\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\n<ng-template #wlcmSelectOptionContent let-option>\n @if (optionTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate(); context: $any({ $implicit: option })\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n</ng-template>\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: WlcmIconDirective, selector: "[wlcmIcon]", inputs: ["wlcmIcon", "wlcmIconStopPropagation"], outputs: ["wlcmIconClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
272
|
-
};
|
273
|
-
WlcmSelectComponent = __decorate([
|
274
|
-
UntilDestroy(),
|
275
|
-
__metadata("design:paramtypes", [NgZone,
|
276
|
-
ChangeDetectorRef,
|
277
|
-
ScrollDetectionApi, Object, Object])
|
278
|
-
], WlcmSelectComponent);
|
279
|
-
export { WlcmSelectComponent };
|
280
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmSelectComponent, decorators: [{
|
281
|
-
type: Component,
|
282
|
-
args: [{ selector: 'wlcm-select', standalone: true, imports: [CommonModule, MatSelectModule, ReactiveFormsModule, WlcmIconDirective, WlcmSelectInputBinderDirective], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [WlcmSelectInputBinderDirective], providers: [
|
283
|
-
WLCM_FORM_CONTROL_PROVIDER,
|
284
|
-
{
|
285
|
-
provide: MAT_SELECT_CONFIG,
|
286
|
-
useFactory: () => {
|
287
|
-
const wlcmConfig = inject(WLCM_SELECT_CONFIG, { optional: true }) ?? {};
|
288
|
-
return mergeConfig(wlcmConfig);
|
289
|
-
},
|
290
|
-
},
|
291
|
-
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
|
292
|
-
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
|
293
|
-
], template: "<mat-select\n #selectComponent\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [multiple]=\"multiple\"\n [disableRipple]=\"true\"\n [placeholder]=\"placeholder\"\n [hideSingleSelectionIndicator]=\"true\"\n [ngClass]=\"{ focused: selectComponent.focused }\"\n (selectionChange)=\"select($event)\"\n [compareWith]=\"compareWith\"\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 prefilledOptions()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n <ng-container\n [ngTemplateOutlet]=\"wlcmSelectOptionContent\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n ></ng-container>\n </mat-option>\n\n <mat-option\n *ngFor=\"let option of computedOptions()\"\n [value]=\"selectOptionFormat() === 'CompleteOption' ? option : option.value\"\n >\n <ng-container\n [ngTemplateOutlet]=\"wlcmSelectOptionContent\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\"\n ></ng-container>\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\n<ng-template #wlcmSelectOptionContent let-option>\n @if (optionTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate(); context: $any({ $implicit: option })\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n</ng-template>\n" }]
|
294
|
-
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.ScrollDetectionApi }, { type: undefined, decorators: [{
|
295
|
-
type: Inject,
|
296
|
-
args: [WLCM_FORM_FIELD]
|
297
|
-
}] }, { type: undefined, decorators: [{
|
298
|
-
type: Optional
|
299
|
-
}, {
|
300
|
-
type: Inject,
|
301
|
-
args: [WLCM_FORM_CONTROL]
|
302
|
-
}] }], propDecorators: { multiple: [{
|
303
|
-
type: Input
|
304
|
-
}], placeholder: [{
|
305
|
-
type: Input
|
306
|
-
}], fetchPaginatedOptions: [{
|
307
|
-
type: Input
|
308
|
-
}], canSelect: [{
|
309
|
-
type: Input
|
310
|
-
}], queryParams: [{
|
311
|
-
type: Input
|
312
|
-
}], matSelect: [{
|
313
|
-
type: ViewChild,
|
314
|
-
args: [MatSelect]
|
315
|
-
}], openPanel: [{
|
316
|
-
type: HostListener,
|
317
|
-
args: ['click']
|
318
|
-
}] } });
|
319
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sUUFBUSxFQUlSLFNBQVMsRUFFVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEdBR3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQW1CLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixZQUFZLEdBR2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFaEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsVUFBVSxF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bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgTmdab25lLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1BVF9TRUxFQ1RfQ09ORklHLCBNYXRPcHRpb24sIE1hdFNlbGVjdCwgTWF0U2VsZWN0Q2hhbmdlLCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9RVUVSWV9QQVJBTVMsXG4gIFNjcm9sbERldGVjdGlvbkFwaSxcbiAgV2xjbUljb25EaXJlY3RpdmUsXG4gIFdsY21JY29uTmFtZSxcbiAgV2xjbU9wdGlvbixcbiAgV2xjbVNlbGVjdE9wdGlvbkZvcm1hdCxcbn0gZnJvbSAnQHdsY20vYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdMQ01fRk9STV9DT05UUk9MLCBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUiwgV0xDTV9GT1JNX0ZJRUxEIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0LWlucHV0LWJpbmRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2xjbUZvcm1Db250cm9sLCBXbGNtRm9ybUZpZWxkLCBXbGNtRm9ybUZpZWxkSW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvX2luZGV4JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmliZXIsIGZpbHRlciwgZmlyc3QsIG9mLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSXNPcHRpb25EaXNhYmxlZEZuLCBXbGNtQ2FuU2VsZWN0Rm4sIFdsY21TZWxlY3RDb25maWcsIFdsY21TZWxlY3RWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZWxlY3QubW9kZWxzJztcbmltcG9ydCB7IFdMQ01fU0VMRUNUX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9zZWxlY3QuY29uc3RhbnRzJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgV2xjbVF1ZXJ5UGFyYW1zLCBXbGNtUGFnaW5hdGVkRGF0YSB9IGZyb20gJ0B3bGNtL2NvbW1vbic7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDZGtPdmVybGF5T3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgbWVyZ2VXaXRoIH0gZnJvbSAnbG9kYXNoLWVzJztcblxudHlwZSBPcHRpb25UZW1wbGF0ZUNvbnRleHQgPSBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogV2xjbU9wdGlvbiB9PjtcblxuY29uc3QgUEFORUxfQ0xBU1M6IHN0cmluZyA9ICd3bGNtLXNlbGVjdC1wYW5lbCc7XG5cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBXbGNtU2VsZWN0Q29uZmlnID0geyBvdmVybGF5UGFuZWxDbGFzczogW1BBTkVMX0NMQVNTXSB9O1xuXG5jb25zdCBtZXJnZUNvbmZpZyA9IChjb25maWc6IFdsY21TZWxlY3RDb25maWcpOiBXbGNtU2VsZWN0Q29uZmlnID0+IHtcbiAgY29uc3QgY3VzdG9taXplciA9IChfZGVmYXVsdDogV2xjbVNlbGVjdENvbmZpZywgX25ldzogV2xjbVNlbGVjdENvbmZpZyk6IEFycmF5PHVua25vd24+IHwgdm9pZCA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoX2RlZmF1bHQpKSByZXR1cm4gX2RlZmF1bHQuY29uY2F0KF9uZXcpO1xuICB9O1xuXG4gIHJldHVybiBtZXJnZVdpdGgoeyAuLi5ERUZBVUxUX0NPTkZJRyB9LCBjb25maWcsIGN1c3RvbWl6ZXIpO1xufTtcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3bGNtLXNlbGVjdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgV2xjbUljb25EaXJlY3RpdmUsIFdsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3REaXJlY3RpdmVzOiBbV2xjbVNlbGVjdElucHV0QmluZGVyRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgV0xDTV9GT1JNX0NPTlRST0xfUFJPVklERVIsXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX1NFTEVDVF9DT05GSUcsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdsY21Db25maWc6IFdsY21TZWxlY3RDb25maWcgPSBpbmplY3QoV0xDTV9TRUxFQ1RfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IHt9O1xuXG4gICAgICAgIHJldHVybiBtZXJnZUNvbmZpZyh3bGNtQ29uZmlnKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21TZWxlY3RDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21TZWxlY3RDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgV2xjbUZvcm1GaWVsZElucHV0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ05vdCBzZWxlY3RlZCc7XG5cbiAgQElucHV0KCkgZmV0Y2hQYWdpbmF0ZWRPcHRpb25zPzogKHBhcmFtczogV2xjbVF1ZXJ5UGFyYW1zKSA9PiBPYnNlcnZhYmxlPFdsY21QYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+PjtcblxuICBASW5wdXQoKSBjYW5TZWxlY3Q6IFdsY21DYW5TZWxlY3RGbiA9IChfOiBXbGNtU2VsZWN0VmFsdWUpID0+IHRydWU7XG5cbiAgQElucHV0KCkgcXVlcnlQYXJhbXM6IFdsY21RdWVyeVBhcmFtcyA9IHsgLi4uREVGQVVMVF9RVUVSWV9QQVJBTVMgfTtcblxuICBwYWdpbmF0ZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xuXG4gIG9wdGlvbnM6IElucHV0U2lnbmFsPFdsY21PcHRpb25bXT4gPSBpbnB1dDxXbGNtT3B0aW9uW10+KFtdKTtcblxuICBwYWdpbmF0ZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxXbGNtT3B0aW9uW10+ID0gc2lnbmFsKFtdKTtcblxuICBzZWxlY3RPcHRpb25Gb3JtYXQ6IElucHV0U2lnbmFsPFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+ID0gaW5wdXQ8V2xjbVNlbGVjdE9wdGlvbkZvcm1hdD4oJ1ZhbHVlT25seScpO1xuXG4gIG9wdGlvblRlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxPcHRpb25UZW1wbGF0ZUNvbnRleHQ+IHwgbnVsbD4gPVxuICAgIGlucHV0PFRlbXBsYXRlUmVmPE9wdGlvblRlbXBsYXRlQ29udGV4dD4gfCBudWxsPihudWxsKTtcblxuICB0cmlnZ2VyVGVtcGxhdGU6IElucHV0U2lnbmFsPFRlbXBsYXRlUmVmPE1hdE9wdGlvbiB8IE1hdE9wdGlvbltdPiB8IHVuZGVmaW5lZD4gPSBpbnB1dCgpO1xuXG4gIGlzT3B0aW9uRGlzYWJsZWQ6IElucHV0U2lnbmFsPElzT3B0aW9uRGlzYWJsZWRGbj4gPSBpbnB1dDxJc09wdGlvbkRpc2FibGVkRm4+KCgpID0+IGZhbHNlKTtcblxuICBzZWxlY3Rpb25DaGFuZ2U6IE91dHB1dEVtaXR0ZXJSZWY8TWF0U2VsZWN0Q2hhbmdlPiA9IG91dHB1dCgpO1xuXG4gIG9wZW5lZDogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gIGNsb3NlZDogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gIHJlYWRvbmx5IHZhbHVlOiBXcml0YWJsZVNpZ25hbDxXbGNtU2VsZWN0VmFsdWUgfCBudWxsPiA9IHNpZ25hbChudWxsKTtcblxuICByZWFkb25seSBkaXNhYmxlZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IFdsY21JY29uTmFtZSA9IFdsY21JY29uTmFtZTtcblxuICBwcml2YXRlIF9jaGFuZ2VkPzogKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdG9yQ2hhbmdlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfcGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9wcmV2aW91c1ZhbHVlOiBXbGNtU2VsZWN0VmFsdWUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9vcHRpb25zQ2FjaGU6IFNldDx1bmtub3duPiA9IG5ldyBTZXQoKTtcblxuICBjb21wdXRlZE9wdGlvbnM6IFNpZ25hbDxXbGNtT3B0aW9uW10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFdsY21PcHRpb25bXSA9IHRoaXMucGFnaW5hdGVkKCkgPyB0aGlzLnBhZ2luYXRlZE9wdGlvbnMoKSA6IHRoaXMub3B0aW9ucygpO1xuXG4gICAgaWYgKHRoaXMuaXNPcHRpb25EaXNhYmxlZCgpICYmIG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51cGRhdGVPcHRpb25zU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH0pO1xuXG4gIHByZWZpbGxlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPFdsY21PcHRpb25bXT4gPSBzaWduYWwoW10pO1xuXG4gIEBWaWV3Q2hpbGQoTWF0U2VsZWN0KSBtYXRTZWxlY3QhOiBNYXRTZWxlY3Q7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKSBvcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRTZWxlY3Qub3BlbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hdE9wdGlvbnM6IFNpZ25hbDxSZWFkb25seUFycmF5PE1hdE9wdGlvbj4+ID0gdmlld0NoaWxkcmVuKE1hdE9wdGlvbik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2JsdXJTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIGZvY3VzJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2ZvY3VzU3RyZWFtJC5waXBlKHN3aXRjaE1hcCgoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBzdHJlYW0pKTtcblxuICBibHVyJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2JsdXJTdHJlYW0kLnBpcGUoc3dpdGNoTWFwKChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4pID0+IHN0cmVhbSkpO1xuXG4gIHByaXZhdGUgYWRqdXN0ZWRWYWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxXbGNtU2VsZWN0VmFsdWUgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2xjbVNlbGVjdFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSB2aWV3UmVhZHkkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHNlbGVjdGVkJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzY3JvbGxEZXRlY3Rpb25BcGk6IFNjcm9sbERldGVjdGlvbkFwaSxcbiAgICBASW5qZWN0KFdMQ01fRk9STV9GSUVMRCkgcHJpdmF0ZSBmb3JtRmllbGQ6IFdsY21Gb3JtRmllbGQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXTENNX0ZPUk1fQ09OVFJPTCkgcHJpdmF0ZSBwYXJlbnRGb3JtTWVtYmVyOiBXbGNtRm9ybUNvbnRyb2wsXG4gICkge1xuICAgIGlmICh0aGlzLnBhcmVudEZvcm1NZW1iZXIpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3RhdGVDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZUFkanVzdGVkVmFsdWUoKTtcblxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnBhZ2luYXRlZClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgocGFnaW5hdGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChwYWdpbmF0ZWQpIHRoaXMubG9hZFBhZ2luYXRlZE9wdGlvbnMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmlld1JlYWR5JC5uZXh0KCk7XG5cbiAgICBjb25zdCBmb3JtRmllbGQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gdGhpcy5mb3JtRmllbGQuaW5wdXRDb250YWluZXI7XG5cbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm1hdFNlbGVjdC5fcHJlZmVycmVkT3ZlcmxheU9yaWdpbiA9IG5ldyBDZGtPdmVybGF5T3JpZ2luKHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyKTtcbiAgICB9XG5cbiAgICB0aGlzLl9mb2N1c1N0cmVhbSQubmV4dCh0aGlzLm1hdFNlbGVjdC5fb3BlbmVkU3RyZWFtKTtcblxuICAgIHRoaXMuX2JsdXJTdHJlYW0kLm5leHQodGhpcy5tYXRTZWxlY3QuX2Nsb3NlZFN0cmVhbSk7XG4gIH1cblxuICBjb21wYXJlV2l0aCA9IChvcHRpb25BOiBXbGNtT3B0aW9uIHwgc3RyaW5nLCBvcHRpb25COiBXbGNtT3B0aW9uIHwgc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuICgob3B0aW9uQSBhcyBXbGNtT3B0aW9uKT8udmFsdWUgfHwgb3B0aW9uQSkgPT09ICgob3B0aW9uQiBhcyBXbGNtT3B0aW9uKT8udmFsdWUgfHwgb3B0aW9uQik7XG4gIH07XG5cbiAgZm9jdXMgPSAoKTogdm9pZCA9PiB0aGlzLm1hdFNlbGVjdC5vcGVuKCk7XG5cbiAgaXNGb2N1c2VkID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5pc09wZW47XG5cbiAgc2VsZWN0KGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkJC5uZXh0KCk7XG5cbiAgICB0aGlzLm1hdFNlbGVjdC52YWx1ZSA9IGV2ZW50LnZhbHVlO1xuXG4gICAgdGhpcy52YWxpZGF0ZVNlbGVjdGVkT3B0aW9uKGV2ZW50LnZhbHVlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuc2VsZWN0ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNhblNlbGVjdDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWNhblNlbGVjdCkgcmV0dXJuIHRoaXMucmV2ZXJ0UHJldmlvdXNWYWx1ZSgpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQudmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZWQ/LihldmVudC52YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZD8uKCk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmV2ZXJ0UHJldmlvdXNWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1hdFNlbGVjdC52YWx1ZSA9IHRoaXMuX3ByZXZpb3VzVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XG5cbiAgICB0aGlzLl9wcmV2aW91c1ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlU2VsZWN0ZWRPcHRpb24odmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigob2JzZXJ2ZXI6IFN1YnNjcmliZXI8Ym9vbGVhbj4pID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiA9IHRoaXMuY2FuU2VsZWN0KHZhbHVlKTtcblxuICAgICAgY29uc3Qgc291cmNlOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gcmVzcG9uc2UgaW5zdGFuY2VvZiBPYnNlcnZhYmxlID8gcmVzcG9uc2UucGlwZShmaXJzdCgpKSA6IG9mKHJlc3BvbnNlKTtcblxuICAgICAgc291cmNlLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQocmVzdWx0KTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhbmVsT3BlbmVkKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcblxuICAgIHRoaXMuaGFuZGxlU2Nyb2xsRG93bigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhbmVsQ2xvc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcblxuICAgIHRoaXMuX3RvdWNoZWQ/LigpO1xuICB9XG5cbiAgdXBkYXRlT3B0aW9uc1N0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLm1hdE9wdGlvbnMoKS5mb3JFYWNoKChtYXRPcHRpb246IE1hdE9wdGlvbikgPT4ge1xuICAgICAgbWF0T3B0aW9uLmRpc2FibGVkID0gdGhpcy5pc09wdGlvbkRpc2FibGVkKCkobWF0T3B0aW9uLnZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2luYXRlZCgpKSB0aGlzLnByZWZpbGxPcHRpb25zKHZhbHVlKTtcblxuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlOiBXbGNtU2VsZWN0VmFsdWUgPSB0aGlzLnByZXBhcmVWYWx1ZUZvclBhdGNoKHZhbHVlKTtcblxuICAgIHRoaXMudXBkYXRlVmFsdWUoZm9ybWF0dGVkVmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3RvdWNoZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcbiAgfVxuXG4gIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWF0U2VsZWN0Py5wYW5lbE9wZW4gPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVWYWx1ZUZvclBhdGNoKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpOiBXbGNtU2VsZWN0VmFsdWUge1xuICAgIGNvbnN0IGZvcm1hdGVkVmFsdWU6IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21TZWxlY3RWYWx1ZSB9ID0gdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAoZm9ybWF0ZWRWYWx1ZS5jaGFuZ2VkKSB0aGlzLmFkanVzdGVkVmFsdWUkLm5leHQoZm9ybWF0ZWRWYWx1ZS52YWx1ZSk7XG5cbiAgICByZXR1cm4gZm9ybWF0ZWRWYWx1ZS52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWUodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21TZWxlY3RWYWx1ZSB9IHtcbiAgICBsZXQgY2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3QgX2Zvcm1hdE9wdGlvbiA9ICh2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyk6IFdsY21PcHRpb24gfCBzdHJpbmcgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0ZWRPcHRpb246IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21PcHRpb24gfCBzdHJpbmcgfSA9IHRoaXMuZm9ybWF0T3B0aW9uKHZhbHVlKTtcblxuICAgICAgaWYgKGZvcm1hdGVkT3B0aW9uLmNoYW5nZWQpIGNoYW5nZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gZm9ybWF0ZWRPcHRpb24udmFsdWU7XG4gICAgfTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCBvcHRpb25zOiBXbGNtU2VsZWN0VmFsdWUgPSB2YWx1ZS5tYXAoX2Zvcm1hdE9wdGlvbikgYXMgV2xjbVNlbGVjdFZhbHVlO1xuXG4gICAgICByZXR1cm4geyBjaGFuZ2VkLCB2YWx1ZTogb3B0aW9ucyB9O1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbjogV2xjbVNlbGVjdFZhbHVlID0gX2Zvcm1hdE9wdGlvbih2YWx1ZSk7XG5cbiAgICByZXR1cm4geyBjaGFuZ2VkLCB2YWx1ZTogb3B0aW9uIH07XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE9wdGlvbih2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyk6IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21PcHRpb24gfCBzdHJpbmcgfSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmIHRoaXMuc2VsZWN0T3B0aW9uRm9ybWF0KCkgPT09ICdWYWx1ZU9ubHknKSB7XG4gICAgICByZXR1cm4geyBjaGFuZ2VkOiB0cnVlLCB2YWx1ZTogdmFsdWUudmFsdWUgYXMgc3RyaW5nIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2hhbmdlZDogZmFsc2UsIHZhbHVlIH07XG4gIH1cblxuICBwcml2YXRlIGxvYWRQYWdpbmF0ZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZSA9IDE7XG5cbiAgICB0aGlzLmZldGNoUGFnaW5hdGVkT3B0aW9ucyEodGhpcy5xdWVyeVBhcmFtcylcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpLCBmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgocGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5fb3B0aW9uc0NhY2hlLmNsZWFyKCk7XG5cbiAgICAgICAgdGhpcy5jYWNoZU9wdGlvbnMocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICB0aGlzLnBhZ2luYXRlZE9wdGlvbnMuc2V0KHBhZ2luYXRlZERhdGEuZGF0YSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE1vcmVQYWdpbmF0ZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGFnaW5hdGVkRGF0YSB8fCB0aGlzLl9wYWdpbmF0ZWREYXRhLmN1cnJQYWdlICsgMSA+IHRoaXMuX3BhZ2luYXRlZERhdGEudG90YWxQYWdlcykgcmV0dXJuO1xuXG4gICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlKys7XG5cbiAgICB0aGlzLmZldGNoUGFnaW5hdGVkT3B0aW9ucyEoeyAuLi50aGlzLnF1ZXJ5UGFyYW1zIH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSwgZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHBhZ2luYXRlZERhdGE6IFdsY21QYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+KSA9PiB7XG4gICAgICAgIHRoaXMuY2FjaGVPcHRpb25zKHBhZ2luYXRlZERhdGEuZGF0YSk7XG5cbiAgICAgICAgdGhpcy5fcGFnaW5hdGVkRGF0YSA9IHBhZ2luYXRlZERhdGE7XG5cbiAgICAgICAgdGhpcy5wYWdpbmF0ZWRPcHRpb25zLnVwZGF0ZSgob3B0aW9uczogV2xjbU9wdGlvbltdKSA9PiBbLi4ub3B0aW9ucywgLi4ucGFnaW5hdGVkRGF0YS5kYXRhXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FjaGVPcHRpb25zKG9wdGlvbnM6IFdsY21PcHRpb25bXSk6IHZvaWQge1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBXbGNtT3B0aW9uKSA9PiB0aGlzLl9vcHRpb25zQ2FjaGUuYWRkKG9wdGlvbi52YWx1ZSkpO1xuXG4gICAgdGhpcy5zeW5jUHJlZmlsbGVkT3B0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jUHJlZmlsbGVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVmaWxsZWRPcHRpb25zKCkubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICB0aGlzLnByZWZpbGxlZE9wdGlvbnMudXBkYXRlKChvcHRpb25zOiBXbGNtT3B0aW9uW10pID0+IHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZpbHRlcigob3B0aW9uOiBXbGNtT3B0aW9uKSA9PiAhdGhpcy5fb3B0aW9uc0NhY2hlLmhhcyhvcHRpb24udmFsdWUpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlZmlsbE9wdGlvbnModmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHZvaWQge1xuICAgIGxldCBwcmVmaWxsZWRPcHRpb25zOiBXbGNtT3B0aW9uW10gPSBbXTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBwcmVmaWxsZWRPcHRpb25zID0gdmFsdWUuZmlsdGVyKChvcHRpb246IFdsY21PcHRpb24gfCBzdHJpbmcpID0+IG9wdGlvbiBpbnN0YW5jZW9mIE9iamVjdCkgYXMgV2xjbU9wdGlvbltdO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHByZWZpbGxlZE9wdGlvbnMgPSBbdmFsdWVdO1xuICAgIH1cblxuICAgIHRoaXMucHJlZmlsbGVkT3B0aW9ucy5zZXQocHJlZmlsbGVkT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNjcm9sbERvd24oKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWF0LW1kYy1zZWxlY3QtcGFuZWwnKSE7XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxEZXRlY3Rpb25BcGkub25TY3JvbGxlZERvd24oZWxlbWVudCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmxvYWRNb3JlUGFnaW5hdGVkT3B0aW9ucygpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudEZvcm1NZW1iZXIuc3RhdGVDaGFuZ2VzJC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZD8uKCk7XG5cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFkanVzdGVkVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3UmVhZHkkXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hZGp1c3RlZFZhbHVlJC5waXBlKGZpbHRlcihCb29sZWFuKSkpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSkgPT4gdGhpcy5fY2hhbmdlZD8uKHZhbHVlKSk7XG4gIH1cbn1cbiIsIjxtYXQtc2VsZWN0XG4gICNzZWxlY3RDb21wb25lbnRcbiAgW3ZhbHVlXT1cInZhbHVlKClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCJcbiAgW25nQ2xhc3NdPVwieyBmb2N1c2VkOiBzZWxlY3RDb21wb25lbnQuZm9jdXNlZCB9XCJcbiAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3QoJGV2ZW50KVwiXG4gIFtjb21wYXJlV2l0aF09XCJjb21wYXJlV2l0aFwiXG4gIChvcGVuZWQpPVwicGFuZWxPcGVuZWQoKVwiXG4gIChjbG9zZWQpPVwicGFuZWxDbG9zZWQoKVwiXG4+XG4gIEBpZiAodHJpZ2dlclRlbXBsYXRlKCkpIHtcbiAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIHRyaWdnZXJUZW1wbGF0ZSgpITtcbiAgICAgICAgICBjb250ZXh0OiAkYW55KHsgJGltcGxpY2l0OiBzZWxlY3RDb21wb25lbnQuc2VsZWN0ZWQgfSlcbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgfVxuXG4gIDxtYXQtb3B0aW9uXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcmVmaWxsZWRPcHRpb25zKClcIlxuICAgIFt2YWx1ZV09XCJzZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ0NvbXBsZXRlT3B0aW9uJyA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ3bGNtU2VsZWN0T3B0aW9uQ29udGVudFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvbWF0LW9wdGlvbj5cblxuICA8bWF0LW9wdGlvblxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29tcHV0ZWRPcHRpb25zKClcIlxuICAgIFt2YWx1ZV09XCJzZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ0NvbXBsZXRlT3B0aW9uJyA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ3bGNtU2VsZWN0T3B0aW9uQ29udGVudFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvbWF0LW9wdGlvbj5cbjwvbWF0LXNlbGVjdD5cblxuPGRpdiBjbGFzcz1cIndsY20tc2VsZWN0LWFycm93XCI+XG4gIDxuZy1jb250YWluZXJcbiAgICBbd2xjbUljb25dPVwiV2xjbUljb25OYW1lLkNIRVZST05fRE9XTlwiXG4gICAgW3dsY21JY29uU3RvcFByb3BhZ2F0aW9uXT1cImZhbHNlXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjd2xjbVNlbGVjdE9wdGlvbkNvbnRlbnQgbGV0LW9wdGlvbj5cbiAgQGlmIChvcHRpb25UZW1wbGF0ZSgpKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZSgpOyBjb250ZXh0OiAkYW55KHsgJGltcGxpY2l0OiBvcHRpb24gfSlcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgfSBAZWxzZSB7XG4gICAge3sgb3B0aW9uLnZpZXdWYWx1ZSB9fVxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
|
@@ -1,5 +0,0 @@
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
2
|
-
export const WLCM_INPUT = new InjectionToken('WLCM_INPUT');
|
3
|
-
export const WLCM_INPUT_BINDER = new InjectionToken('WLCM_INPUT_BINDER');
|
4
|
-
export const WLCM_FORM_FIELD = new InjectionToken('WLCM_FORM_FIELD');
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50cy5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9saWIvZm9ybXMvY29uc3RhbnRzL2Zvcm0tZWxlbWVudHMuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFvQyxJQUFJLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU1RixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBb0MsSUFBSSxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUxRyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWtDLElBQUksY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2xjbUlucHV0QmluZGVyLCBXbGNtSW5wdXRHZXR0ZXIgfSBmcm9tICcuLi9tb2RlbHMvaW5wdXQubW9kZWxzJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGQgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgV0xDTV9JTlBVVDogSW5qZWN0aW9uVG9rZW48V2xjbUlucHV0R2V0dGVyPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignV0xDTV9JTlBVVCcpO1xuXG5leHBvcnQgY29uc3QgV0xDTV9JTlBVVF9CSU5ERVI6IEluamVjdGlvblRva2VuPFdsY21JbnB1dEJpbmRlcj4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ1dMQ01fSU5QVVRfQklOREVSJyk7XG5cbmV4cG9ydCBjb25zdCBXTENNX0ZPUk1fRklFTEQ6IEluamVjdGlvblRva2VuPFdsY21Gb3JtRmllbGQ+ID0gbmV3IEluamVjdGlvblRva2VuKCdXTENNX0ZPUk1fRklFTEQnKTtcbiJdfQ==
|
@@ -1,7 +0,0 @@
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
2
|
-
export const WLCM_ERRORS = new InjectionToken('WLCM_ERRORS');
|
3
|
-
export const WLCM_PRIORITY_ERRORS = new InjectionToken('WLCM_PRIORITY_ERRORS', {
|
4
|
-
providedIn: 'root',
|
5
|
-
factory: () => new Set(),
|
6
|
-
});
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbnN0YW50cy9mb3JtLWVycm9ycy5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQW1DLElBQUksY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRTdGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFnQyxJQUFJLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRTtJQUMxRyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUU7Q0FDekIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdsY21Gb3JtRXJyb3JzIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0tZXJyb3JzLm1vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBXTENNX0VSUk9SUzogSW5qZWN0aW9uVG9rZW48V2xjbUZvcm1FcnJvcnM+ID0gbmV3IEluamVjdGlvblRva2VuKCdXTENNX0VSUk9SUycpO1xuXG5leHBvcnQgY29uc3QgV0xDTV9QUklPUklUWV9FUlJPUlM6IEluamVjdGlvblRva2VuPFNldDxzdHJpbmc+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbignV0xDTV9QUklPUklUWV9FUlJPUlMnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gbmV3IFNldCgpLFxufSk7XG4iXX0=
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export const WLCM_FORM_FIELD_INPUT_CLASS = 'wlcm-form-field-input';
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9saWIvZm9ybXMvY29uc3RhbnRzL2Zvcm0tZmllbGQuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFXLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFdMQ01fRk9STV9GSUVMRF9JTlBVVF9DTEFTUzogc3RyaW5nID0gJ3dsY20tZm9ybS1maWVsZC1pbnB1dCc7XG4iXX0=
|
@@ -1,13 +0,0 @@
|
|
1
|
-
import { InjectionToken, inject } from '@angular/core';
|
2
|
-
import { FormStateHandlerService } from '../services';
|
3
|
-
export const WLCM_FORM = new InjectionToken('WLCM_FORM');
|
4
|
-
export const WLCM_FORM_PROVIDER = {
|
5
|
-
provide: WLCM_FORM,
|
6
|
-
useClass: FormStateHandlerService,
|
7
|
-
};
|
8
|
-
export const WLCM_FORM_CONTROL = new InjectionToken('WLCM_FORM_CONTROL');
|
9
|
-
export const WLCM_FORM_CONTROL_PROVIDER = {
|
10
|
-
provide: WLCM_FORM_CONTROL,
|
11
|
-
useFactory: () => inject(WLCM_FORM, { optional: true, skipSelf: true }),
|
12
|
-
};
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdGF0ZS1oYW5kbGVycy5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9saWIvZm9ybXMvY29uc3RhbnRzL2Zvcm0tc3RhdGUtaGFuZGxlcnMuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQTZCLElBQUksY0FBYyxDQUNuRSxXQUFXLENBQ1osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFhO0lBQzFDLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSx1QkFBdUI7Q0FDbEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUM1QixJQUFJLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFhO0lBQ2xELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztDQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdsY21Gb3JtLCBXbGNtRm9ybUNvbnRyb2wgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybVN0YXRlSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5cbmV4cG9ydCBjb25zdCBXTENNX0ZPUk06IEluamVjdGlvblRva2VuPFdsY21Gb3JtPiA9IG5ldyBJbmplY3Rpb25Ub2tlbihcbiAgJ1dMQ01fRk9STSdcbik7XG5cbmV4cG9ydCBjb25zdCBXTENNX0ZPUk1fUFJPVklERVI6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBXTENNX0ZPUk0sXG4gIHVzZUNsYXNzOiBGb3JtU3RhdGVIYW5kbGVyU2VydmljZSxcbn07XG5cbmV4cG9ydCBjb25zdCBXTENNX0ZPUk1fQ09OVFJPTDogSW5qZWN0aW9uVG9rZW48V2xjbUZvcm1Db250cm9sPiA9XG4gIG5ldyBJbmplY3Rpb25Ub2tlbignV0xDTV9GT1JNX0NPTlRST0wnKTtcblxuZXhwb3J0IGNvbnN0IFdMQ01fRk9STV9DT05UUk9MX1BST1ZJREVSOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogV0xDTV9GT1JNX0NPTlRST0wsXG4gIHVzZUZhY3Rvcnk6ICgpID0+IGluamVjdChXTENNX0ZPUk0sIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pLFxufTtcbiJdfQ==
|
@@ -1,6 +0,0 @@
|
|
1
|
-
export * from './form-errors.constants';
|
2
|
-
export * from './form-elements.constants';
|
3
|
-
export * from './form-state-handlers.constants';
|
4
|
-
export * from './select.constants';
|
5
|
-
export const WLCM_MAPS_API_ERROR = `Google Maps JavaScript API not loaded. Please ensure the following script is included in your HTML: <script src="https://maps.googleapis.com/maps/api/js?key=[apiKey]&libraries=places"></script>`;
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9saWIvZm9ybXMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQVcsbU1BQW1NLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Zvcm0tZXJyb3JzLmNvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZWxlbWVudHMuY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1zdGF0ZS1oYW5kbGVycy5jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QuY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IFdMQ01fTUFQU19BUElfRVJST1I6IHN0cmluZyA9IGBHb29nbGUgTWFwcyBKYXZhU2NyaXB0IEFQSSBub3QgbG9hZGVkLiBQbGVhc2UgZW5zdXJlIHRoZSBmb2xsb3dpbmcgc2NyaXB0IGlzIGluY2x1ZGVkIGluIHlvdXIgSFRNTDogPHNjcmlwdCBzcmM9XCJodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvanM/a2V5PVthcGlLZXldJmxpYnJhcmllcz1wbGFjZXNcIj48L3NjcmlwdD5gO1xuIl19
|
@@ -1,3 +0,0 @@
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
2
|
-
export const WLCM_SELECT_CONFIG = new InjectionToken('WLCM_SELECT_CONFIG');
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb25zdGFudHMvc2VsZWN0LmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFxQyxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdsY21TZWxlY3RDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvc2VsZWN0Lm1vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBXTENNX1NFTEVDVF9DT05GSUc6IEluamVjdGlvblRva2VuPFdsY21TZWxlY3RDb25maWc+ID0gbmV3IEluamVjdGlvblRva2VuKCdXTENNX1NFTEVDVF9DT05GSUcnKTtcbiJdfQ==
|
@@ -1,64 +0,0 @@
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
2
|
-
import { Directive, EventEmitter, Host, NgZone, Optional, Output } from '@angular/core';
|
3
|
-
import { asyncScheduler, fromEvent, observeOn, takeUntil } from 'rxjs';
|
4
|
-
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
5
|
-
import { MatAutocomplete } from '@angular/material/autocomplete';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "@angular/material/autocomplete";
|
8
|
-
let AutocompleteDirective = class AutocompleteDirective {
|
9
|
-
constructor(zone, autocomplete) {
|
10
|
-
this.zone = zone;
|
11
|
-
this.autocomplete = autocomplete;
|
12
|
-
this.panelScrolled = new EventEmitter();
|
13
|
-
this._scrollHeight = 0;
|
14
|
-
this._scrollHeightChanged = false;
|
15
|
-
this.handleOpenEvent();
|
16
|
-
}
|
17
|
-
handleOpenEvent() {
|
18
|
-
this.autocomplete.opened
|
19
|
-
.pipe(untilDestroyed(this))
|
20
|
-
.pipe(observeOn(asyncScheduler))
|
21
|
-
.subscribe(() => this.zone.runOutsideAngular(() => this.handleScrolling()));
|
22
|
-
}
|
23
|
-
handleScrolling() {
|
24
|
-
const panel = this.autocomplete.panel.nativeElement;
|
25
|
-
this.setScrollHscrollHeight(panel.scrollHeight);
|
26
|
-
fromEvent(panel, 'scroll')
|
27
|
-
.pipe(takeUntil(this.autocomplete.closed))
|
28
|
-
.subscribe(() => {
|
29
|
-
if (this._scrollHeight !== panel.scrollHeight) {
|
30
|
-
this.setScrollHscrollHeight(panel.scrollHeight);
|
31
|
-
}
|
32
|
-
if (panel.scrollHeight * 0.8 <= panel.scrollTop + panel.clientHeight && this._scrollHeightChanged) {
|
33
|
-
this.zone.run(() => this.panelScrolled.emit());
|
34
|
-
this._scrollHeightChanged = false;
|
35
|
-
}
|
36
|
-
});
|
37
|
-
}
|
38
|
-
setScrollHscrollHeight(height) {
|
39
|
-
this._scrollHeight = height;
|
40
|
-
this._scrollHeightChanged = true;
|
41
|
-
}
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AutocompleteDirective, deps: [{ token: i0.NgZone }, { token: i1.MatAutocomplete, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
43
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: AutocompleteDirective, isStandalone: true, selector: "[wlcmAutocomplete]", outputs: { panelScrolled: "panelScrolled" }, ngImport: i0 }); }
|
44
|
-
};
|
45
|
-
AutocompleteDirective = __decorate([
|
46
|
-
UntilDestroy(),
|
47
|
-
__metadata("design:paramtypes", [NgZone,
|
48
|
-
MatAutocomplete])
|
49
|
-
], AutocompleteDirective);
|
50
|
-
export { AutocompleteDirective };
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AutocompleteDirective, decorators: [{
|
52
|
-
type: Directive,
|
53
|
-
args: [{
|
54
|
-
selector: '[wlcmAutocomplete]',
|
55
|
-
standalone: true,
|
56
|
-
}]
|
57
|
-
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.MatAutocomplete, decorators: [{
|
58
|
-
type: Host
|
59
|
-
}, {
|
60
|
-
type: Optional
|
61
|
-
}] }], propDecorators: { panelScrolled: [{
|
62
|
-
type: Output
|
63
|
-
}] } });
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFPMUQsSUFBTSxxQkFBcUIsR0FBM0IsTUFBTSxxQkFBcUI7SUFPaEMsWUFDVSxJQUFZLEVBQ1EsWUFBNkI7UUFEakQsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNRLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQVJqRCxrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXpELGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQU01QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO2FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sS0FBSyxHQUFnQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFFakUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoRCxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQzthQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLFlBQVksR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNsRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBRS9DLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE1BQWM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7UUFFNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUNuQyxDQUFDOzhHQTdDVSxxQkFBcUI7a0dBQXJCLHFCQUFxQjs7QUFBckIscUJBQXFCO0lBTGpDLFlBQVksRUFBRTtxQ0FhRyxNQUFNO1FBQ3NCLGVBQWU7R0FUaEQscUJBQXFCLENBOENqQzs7MkZBOUNZLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQVVJLElBQUk7OzBCQUFJLFFBQVE7eUNBUlQsYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0LCBOZ1pvbmUsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzeW5jU2NoZWR1bGVyLCBmcm9tRXZlbnQsIG9ic2VydmVPbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3dsY21BdXRvY29tcGxldGVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlRGlyZWN0aXZlIHtcbiAgQE91dHB1dCgpIHBhbmVsU2Nyb2xsZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIF9zY3JvbGxIZWlnaHQ6IG51bWJlciA9IDA7XG5cbiAgcHJpdmF0ZSBfc2Nyb2xsSGVpZ2h0Q2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBhdXRvY29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZSxcbiAgKSB7XG4gICAgdGhpcy5oYW5kbGVPcGVuRXZlbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT3BlbkV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlLm9wZW5lZFxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAucGlwZShvYnNlcnZlT24oYXN5bmNTY2hlZHVsZXIpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5oYW5kbGVTY3JvbGxpbmcoKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTY3JvbGxpbmcoKTogdm9pZCB7XG4gICAgY29uc3QgcGFuZWw6IEhUTUxFbGVtZW50ID0gdGhpcy5hdXRvY29tcGxldGUucGFuZWwubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMuc2V0U2Nyb2xsSHNjcm9sbEhlaWdodChwYW5lbC5zY3JvbGxIZWlnaHQpO1xuXG4gICAgZnJvbUV2ZW50KHBhbmVsLCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZWQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9zY3JvbGxIZWlnaHQgIT09IHBhbmVsLnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsSHNjcm9sbEhlaWdodChwYW5lbC5zY3JvbGxIZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhbmVsLnNjcm9sbEhlaWdodCAqIDAuOCA8PSBwYW5lbC5zY3JvbGxUb3AgKyBwYW5lbC5jbGllbnRIZWlnaHQgJiYgdGhpcy5fc2Nyb2xsSGVpZ2h0Q2hhbmdlZCkge1xuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5wYW5lbFNjcm9sbGVkLmVtaXQoKSk7XG5cbiAgICAgICAgICB0aGlzLl9zY3JvbGxIZWlnaHRDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTY3JvbGxIc2Nyb2xsSGVpZ2h0KGhlaWdodDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2Nyb2xsSGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgdGhpcy5fc2Nyb2xsSGVpZ2h0Q2hhbmdlZCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import { Directive, ElementRef } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class WlcmFormFieldCustomContainerDirective {
|
4
|
-
constructor(elementRef) {
|
5
|
-
this.elementRef = elementRef;
|
6
|
-
}
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldCustomContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
8
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFormFieldCustomContainerDirective, isStandalone: true, selector: "[wlcmFormFieldCustomContainer]", ngImport: i0 }); }
|
9
|
-
}
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldCustomContainerDirective, decorators: [{
|
11
|
-
type: Directive,
|
12
|
-
args: [{
|
13
|
-
selector: '[wlcmFormFieldCustomContainer]',
|
14
|
-
standalone: true,
|
15
|
-
}]
|
16
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jdXN0b20tY29udGFpbmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9kaXJlY3RpdmVzL2Zvcm0tZmllbGQtY3VzdG9tLWNvbnRhaW5lci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTXRELE1BQU0sT0FBTyxxQ0FBcUM7SUFDaEQsWUFBbUIsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFBRyxDQUFDOzhHQUQvQyxxQ0FBcUM7a0dBQXJDLHFDQUFxQzs7MkZBQXJDLHFDQUFxQztrQkFKakQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0NBQWdDO29CQUMxQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3dsY21Gb3JtRmllbGRDdXN0b21Db250YWluZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbUZvcm1GaWVsZEN1c3RvbUNvbnRhaW5lckRpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cbn1cbiJdfQ==
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { Directive } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class WlcmFormFieldHintDirective {
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
5
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFormFieldHintDirective, isStandalone: true, selector: "[wlcmFormFieldHint]", host: { classAttribute: "wlcm-hint" }, ngImport: i0 }); }
|
6
|
-
}
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldHintDirective, decorators: [{
|
8
|
-
type: Directive,
|
9
|
-
args: [{
|
10
|
-
selector: '[wlcmFormFieldHint]',
|
11
|
-
host: { class: 'wlcm-hint' },
|
12
|
-
standalone: true,
|
13
|
-
}]
|
14
|
-
}] });
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1oaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9kaXJlY3RpdmVzL2Zvcm0tZmllbGQtaGludC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPMUMsTUFBTSxPQUFPLDBCQUEwQjs4R0FBMUIsMEJBQTBCO2tHQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBTHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3bGNtRm9ybUZpZWxkSGludF0nLFxuICBob3N0OiB7IGNsYXNzOiAnd2xjbS1oaW50JyB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtRm9ybUZpZWxkSGludERpcmVjdGl2ZSB7fVxuIl19
|
@@ -1,22 +0,0 @@
|
|
1
|
-
import { Directive, HostListener } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class WlcmFormFieldPrefixDirective {
|
4
|
-
constructor() {
|
5
|
-
this.handlerClick = (event) => {
|
6
|
-
event.stopPropagation();
|
7
|
-
};
|
8
|
-
}
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldPrefixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
10
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFormFieldPrefixDirective, isStandalone: true, selector: "[wlcmFormFieldPrefix]", host: { listeners: { "click": "handlerClick($event)" } }, ngImport: i0 }); }
|
11
|
-
}
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldPrefixDirective, decorators: [{
|
13
|
-
type: Directive,
|
14
|
-
args: [{
|
15
|
-
selector: '[wlcmFormFieldPrefix]',
|
16
|
-
standalone: true,
|
17
|
-
}]
|
18
|
-
}], propDecorators: { handlerClick: [{
|
19
|
-
type: HostListener,
|
20
|
-
args: ['click', ['$event']]
|
21
|
-
}] } });
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1wcmVmaXguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2RpcmVjdGl2ZXMvZm9ybS1maWVsZC1wcmVmaXguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU14RCxNQUFNLE9BQU8sNEJBQTRCO0lBSnpDO1FBS3FDLGlCQUFZLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDdEUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQztLQUNIOzhHQUpZLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUp4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFFb0MsWUFBWTtzQkFBOUMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbd2xjbUZvcm1GaWVsZFByZWZpeF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtRm9ybUZpZWxkUHJlZml4RGlyZWN0aXZlIHtcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKSBoYW5kbGVyQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfTtcbn1cbiJdfQ==
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { Directive } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class WlcmFormFieldSuffixDirective {
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldSuffixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
5
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: WlcmFormFieldSuffixDirective, isStandalone: true, selector: "[wlcmFormFieldSuffix]", ngImport: i0 }); }
|
6
|
-
}
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmFormFieldSuffixDirective, decorators: [{
|
8
|
-
type: Directive,
|
9
|
-
args: [{
|
10
|
-
selector: '[wlcmFormFieldSuffix]',
|
11
|
-
standalone: true,
|
12
|
-
}]
|
13
|
-
}] });
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1zdWZmaXguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2RpcmVjdGl2ZXMvZm9ybS1maWVsZC1zdWZmaXguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTFDLE1BQU0sT0FBTyw0QkFBNEI7OEdBQTVCLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUp4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbd2xjbUZvcm1GaWVsZFN1ZmZpeF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtRm9ybUZpZWxkU3VmZml4RGlyZWN0aXZlIHt9XG4iXX0=
|