@wlcm/angular 18.2.25 → 18.2.28
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/esm2022/index.mjs +3 -0
- package/button/esm2022/lib/button.module.mjs +16 -0
- package/button/esm2022/lib/components/button/button.component.mjs +37 -0
- package/button/esm2022/lib/models/button.models.mjs +2 -0
- package/button/esm2022/wlcm-angular-button.mjs +5 -0
- package/button/fesm2022/wlcm-angular-button.mjs +7 -7
- package/button/fesm2022/wlcm-angular-button.mjs.map +1 -1
- package/core/esm2022/index.mjs +17 -0
- package/core/esm2022/lib/components/default-loader/default-loader.component.mjs +12 -0
- package/core/esm2022/lib/components/icons/calendar-icon/calendar-icon.component.mjs +12 -0
- package/core/esm2022/lib/components/icons/chevron-down-icon/chevron-down-icon.component.mjs +12 -0
- package/core/esm2022/lib/components/icons/close-icon/close-icon.component.mjs +12 -0
- package/core/esm2022/lib/components/icons/search-icon/search-icon.component.mjs +12 -0
- package/core/esm2022/lib/components/loader/loader.component.mjs +32 -0
- package/core/esm2022/lib/constants/_index.mjs +3 -0
- package/core/esm2022/lib/constants/http.constants.mjs +6 -0
- package/core/esm2022/lib/constants/icon.contants.mjs +15 -0
- package/core/esm2022/lib/constants/loader.constants.mjs +7 -0
- package/core/esm2022/lib/directives/_index.mjs +2 -0
- package/core/esm2022/lib/directives/icon.directive.mjs +49 -0
- package/core/esm2022/lib/models/_index.mjs +3 -0
- package/core/esm2022/lib/models/icon.models.mjs +7 -0
- package/core/esm2022/lib/models/option.models.mjs +17 -0
- package/core/esm2022/lib/services/scroll-detection.api.mjs +34 -0
- package/core/esm2022/lib/utils/paginated-data-emulator.utils.mjs +20 -0
- package/core/esm2022/lib/utils/stream.utils.mjs +16 -0
- package/core/esm2022/wlcm-angular-core.mjs +5 -0
- package/core/fesm2022/wlcm-angular-core.mjs +47 -40
- package/core/fesm2022/wlcm-angular-core.mjs.map +1 -1
- package/core/lib/services/scroll-detection.api.d.ts +4 -1
- package/datepicker/esm2022/index.mjs +14 -0
- package/datepicker/esm2022/lib/components/calendar-header/calendar-header.component.mjs +63 -0
- package/datepicker/esm2022/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.mjs +87 -0
- package/datepicker/esm2022/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.mjs +19 -0
- package/datepicker/esm2022/lib/components/range/date-range-picker-input/date-range-picker-input.component.mjs +126 -0
- package/datepicker/esm2022/lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component.mjs +168 -0
- package/datepicker/esm2022/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.mjs +95 -0
- package/datepicker/esm2022/lib/components/single/datepicker-input-container/datepicker-input-container.component.mjs +92 -0
- package/datepicker/esm2022/lib/components/single/datepicker-panel/datepicker-panel.component.mjs +33 -0
- package/datepicker/esm2022/lib/constants/datepicker.constants.mjs +23 -0
- package/datepicker/esm2022/lib/constants/range/date-range-picker.constants.mjs +5 -0
- package/datepicker/esm2022/lib/constants/range/date-range-selection-model.constants.mjs +10 -0
- package/datepicker/esm2022/lib/constants/range/date-range-trigger-selection-model.constants.mjs +10 -0
- package/datepicker/esm2022/lib/datepicker.module.mjs +33 -0
- package/datepicker/esm2022/lib/directives/calendar.directive.mjs +15 -0
- package/datepicker/esm2022/lib/directives/datepicker-input.base.mjs +103 -0
- package/datepicker/esm2022/lib/directives/datepicker-trigger.base.mjs +105 -0
- package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input-end.directive.mjs +81 -0
- package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input-start.directive.mjs +81 -0
- package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input.base.mjs +58 -0
- package/datepicker/esm2022/lib/directives/ragne/left-calendar.directive.mjs +51 -0
- package/datepicker/esm2022/lib/directives/ragne/right-calendar.directive.mjs +64 -0
- package/datepicker/esm2022/lib/directives/single/datepicker-input.directive.mjs +67 -0
- package/datepicker/esm2022/lib/models/date-picker.models.mjs +29 -0
- package/datepicker/esm2022/lib/models/range/data-range-calendar.models.mjs +61 -0
- package/datepicker/esm2022/lib/models/range/date-range-picker.models.mjs +27 -0
- package/datepicker/esm2022/lib/models/range/date-range-validation.models.mjs +5 -0
- package/datepicker/esm2022/lib/utils/range/date-range-input.validators.mjs +16 -0
- package/datepicker/esm2022/lib/utils/range/date-range-picker-errors.mjs +9 -0
- package/datepicker/esm2022/wlcm-angular-datepicker.mjs +5 -0
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs +62 -62
- package/datepicker/fesm2022/wlcm-angular-datepicker.mjs.map +1 -1
- package/datepicker/lib/constants/datepicker.constants.d.ts +1 -1
- package/datepicker/lib/directives/datepicker-input.base.d.ts +1 -1
- package/datepicker/lib/directives/datepicker-trigger.base.d.ts +2 -2
- 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/esm2022/index.mjs +6 -0
- package/filters/esm2022/lib/components/filters-group/filters-group.component.mjs +13 -0
- package/filters/esm2022/lib/constants/filter.constants.mjs +3 -0
- package/filters/esm2022/lib/constants/index.mjs +2 -0
- package/filters/esm2022/lib/directives/filter.directive.mjs +11 -0
- package/filters/esm2022/lib/directives/index.mjs +2 -0
- package/filters/esm2022/lib/filters.module.mjs +20 -0
- package/filters/esm2022/lib/models/array-filter.models.mjs +73 -0
- package/filters/esm2022/lib/models/filter.models.mjs +39 -0
- package/filters/esm2022/lib/models/filters-group.models.mjs +60 -0
- package/filters/esm2022/lib/models/index.mjs +4 -0
- package/filters/esm2022/wlcm-angular-filters.mjs +5 -0
- 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/esm2022/index.mjs +13 -0
- package/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +242 -0
- package/forms/esm2022/lib/forms/components/checkbox/checkbox.component.mjs +85 -0
- package/forms/esm2022/lib/forms/components/checkbox-group/checkbox-group.component.mjs +87 -0
- package/forms/esm2022/lib/forms/components/error/error.component.mjs +12 -0
- package/forms/esm2022/lib/forms/components/form-field/form-field.component.mjs +137 -0
- package/forms/esm2022/lib/forms/components/index.mjs +9 -0
- package/forms/esm2022/lib/forms/components/label/label.component.mjs +23 -0
- package/forms/esm2022/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.mjs +19 -0
- package/forms/esm2022/lib/forms/components/partials/index.mjs +2 -0
- package/forms/esm2022/lib/forms/components/select/select.component.mjs +326 -0
- package/forms/esm2022/lib/forms/constants/form-elements.constants.mjs +5 -0
- package/forms/esm2022/lib/forms/constants/form-errors.constants.mjs +7 -0
- package/forms/esm2022/lib/forms/constants/form-field.constants.mjs +2 -0
- package/forms/esm2022/lib/forms/constants/form-state-handlers.constants.mjs +13 -0
- package/forms/esm2022/lib/forms/constants/index.mjs +6 -0
- package/forms/esm2022/lib/forms/constants/select.constants.mjs +3 -0
- package/forms/esm2022/lib/forms/directives/autocomplete.directive.mjs +64 -0
- package/forms/esm2022/lib/forms/directives/form-field-custom-container.directive.mjs +17 -0
- package/forms/esm2022/lib/forms/directives/form-field-hint.directive.mjs +15 -0
- package/forms/esm2022/lib/forms/directives/form-field-prefix.directive.mjs +22 -0
- package/forms/esm2022/lib/forms/directives/form-field-suffix.directive.mjs +14 -0
- package/forms/esm2022/lib/forms/directives/input.directive.mjs +47 -0
- package/forms/esm2022/lib/forms/directives/select-input-binder.directive.mjs +33 -0
- package/forms/esm2022/lib/forms/forms.module.mjs +64 -0
- package/forms/esm2022/lib/forms/models/_index.mjs +6 -0
- package/forms/esm2022/lib/forms/models/autocomplete.models.mjs +10 -0
- package/forms/esm2022/lib/forms/models/form-errors.models.mjs +2 -0
- package/forms/esm2022/lib/forms/models/form.models.mjs +2 -0
- package/forms/esm2022/lib/forms/models/input.models.mjs +2 -0
- package/forms/esm2022/lib/forms/models/select.models.mjs +2 -0
- package/forms/esm2022/lib/forms/pipes/errors-mapper.pipe.mjs +53 -0
- package/forms/esm2022/lib/forms/services/form-state-handler.service.mjs +19 -0
- package/forms/esm2022/lib/forms/services/index.mjs +3 -0
- package/forms/esm2022/lib/forms/services/places.api.mjs +62 -0
- package/forms/esm2022/wlcm-angular-forms.mjs +5 -0
- 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/package.json +1 -1
- package/phone-input/esm2022/index.mjs +5 -0
- package/phone-input/esm2022/lib/components/country-code-select/country-code-select.component.mjs +32 -0
- package/phone-input/esm2022/lib/components/phone-input-container/phone-input-container.component.mjs +107 -0
- package/phone-input/esm2022/lib/constants/country-code-options.constants.mjs +20 -0
- package/phone-input/esm2022/lib/constants/phone-adapter.constants.mjs +3 -0
- package/phone-input/esm2022/lib/directives/phone-input.directive.mjs +155 -0
- package/phone-input/esm2022/lib/models/country-code.models.mjs +10 -0
- package/phone-input/esm2022/lib/models/phone-adapter.models.mjs +3 -0
- package/phone-input/esm2022/lib/models/phone.models.mjs +5 -0
- package/phone-input/esm2022/lib/phone-input.module.mjs +20 -0
- package/phone-input/esm2022/lib/pipes/phone-code.pipe.mjs +18 -0
- package/phone-input/esm2022/wlcm-angular-phone-input.mjs +5 -0
- 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/esm2022/index.mjs +3 -0
- package/search-field/esm2022/lib/components/search-field/search-field.component.mjs +39 -0
- package/search-field/esm2022/lib/search-field.module.mjs +18 -0
- package/search-field/esm2022/wlcm-angular-search-field.mjs +5 -0
- 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/esm2022/index.mjs +11 -0
- package/stepper/esm2022/lib/components/step/step.component.mjs +53 -0
- package/stepper/esm2022/lib/components/step-header/step-header.component.mjs +81 -0
- package/stepper/esm2022/lib/components/stepper/stepper.component.mjs +15 -0
- package/stepper/esm2022/lib/components/stepper-header/stepper-header.component.mjs +16 -0
- package/stepper/esm2022/lib/constants/step.constants.mjs +9 -0
- package/stepper/esm2022/lib/constants/stepper.stepper.mjs +3 -0
- package/stepper/esm2022/lib/directives/load-on-active-step.directive.mjs +51 -0
- package/stepper/esm2022/lib/models/step.models.mjs +60 -0
- package/stepper/esm2022/lib/models/stepper.models.mjs +114 -0
- package/stepper/esm2022/lib/stepper.module.mjs +34 -0
- package/stepper/esm2022/wlcm-angular-stepper.mjs +5 -0
- 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/esm2022/index.mjs +9 -0
- package/table/esm2022/lib/components/table/table.component.mjs +79 -0
- package/table/esm2022/lib/components/table-head/table-head.component.mjs +18 -0
- package/table/esm2022/lib/components/table-head-actions/table-head-actions.component.mjs +41 -0
- package/table/esm2022/lib/components/table-head-data/table-head-data.component.mjs +12 -0
- package/table/esm2022/lib/components/table-row/table-row.component.mjs +87 -0
- package/table/esm2022/lib/components/table-row-actions/table-row-actions.component.mjs +12 -0
- package/table/esm2022/lib/components/table-row-data/table-row-data.component.mjs +12 -0
- package/table/esm2022/lib/components/table-row-spacer/table-row-spacer.component.mjs +12 -0
- package/table/esm2022/lib/constants/table-row.constants.mjs +3 -0
- package/table/esm2022/lib/constants/table.constants.mjs +5 -0
- package/table/esm2022/lib/directives/scrollable-table-container.directive.mjs +46 -0
- package/table/esm2022/lib/models/table-config-manager.models.mjs +18 -0
- package/table/esm2022/lib/models/table-row.models.mjs +2 -0
- package/table/esm2022/lib/models/table-selection-model.mjs +48 -0
- package/table/esm2022/lib/models/table.models.mjs +2 -0
- package/table/esm2022/lib/pipes/table-row-injector.pipe.mjs +24 -0
- package/table/esm2022/lib/table.module.mjs +38 -0
- package/table/esm2022/lib/utils/table-errors.utils.mjs +6 -0
- package/table/esm2022/wlcm-angular-table.mjs +5 -0
- package/table/fesm2022/wlcm-angular-table.mjs +34 -34
- package/table/fesm2022/wlcm-angular-table.mjs.map +1 -1
|
@@ -0,0 +1,326 @@
|
|
|
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 { mergeWith } from 'lodash-es';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
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
|
+
const PANEL_CLASS = 'wlcm-select-panel';
|
|
21
|
+
const DEFAULT_CONFIG = { overlayPanelClass: [PANEL_CLASS] };
|
|
22
|
+
const mergeConfig = (config) => {
|
|
23
|
+
const customizer = (_default, _new) => {
|
|
24
|
+
if (Array.isArray(_default))
|
|
25
|
+
return _default.concat(_new);
|
|
26
|
+
};
|
|
27
|
+
return mergeWith({ ...DEFAULT_CONFIG }, config, customizer);
|
|
28
|
+
};
|
|
29
|
+
let WlcmSelectComponent = class WlcmSelectComponent {
|
|
30
|
+
openPanel() {
|
|
31
|
+
this.matSelect.open();
|
|
32
|
+
}
|
|
33
|
+
constructor(zone, changeDetectorRef, scrollDetectionApi, formField, parentFormMember) {
|
|
34
|
+
this.zone = zone;
|
|
35
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
36
|
+
this.scrollDetectionApi = scrollDetectionApi;
|
|
37
|
+
this.formField = formField;
|
|
38
|
+
this.parentFormMember = parentFormMember;
|
|
39
|
+
this.multiple = false;
|
|
40
|
+
this.placeholder = 'Not selected';
|
|
41
|
+
this.canSelect = (_) => true;
|
|
42
|
+
this.queryParams = { ...DEFAULT_QUERY_PARAMS };
|
|
43
|
+
this.paginated = input(false);
|
|
44
|
+
this.options = input([]);
|
|
45
|
+
this.paginatedOptions = signal([]);
|
|
46
|
+
this.selectOptionFormat = input('ValueOnly');
|
|
47
|
+
this.optionTemplate = input(null);
|
|
48
|
+
this.triggerTemplate = input();
|
|
49
|
+
this.isOptionDisabled = input(() => false);
|
|
50
|
+
this.selectionChange = output();
|
|
51
|
+
this.opened = output();
|
|
52
|
+
this.closed = output();
|
|
53
|
+
this.value = signal(null);
|
|
54
|
+
this.disabled = signal(false);
|
|
55
|
+
this.WlcmIconName = WlcmIconName;
|
|
56
|
+
this._paginatedData = null;
|
|
57
|
+
this._previousValue = null;
|
|
58
|
+
this._optionsCache = new Set();
|
|
59
|
+
this.computedOptions = computed(() => {
|
|
60
|
+
const options = this.paginated() ? this.paginatedOptions() : this.options();
|
|
61
|
+
if (this.isOptionDisabled() && options.length > 0) {
|
|
62
|
+
this.updateOptionsStatus();
|
|
63
|
+
}
|
|
64
|
+
return options;
|
|
65
|
+
});
|
|
66
|
+
this.prefilledOptions = signal([]);
|
|
67
|
+
this.matOptions = viewChildren(MatOption);
|
|
68
|
+
this._focusStream$ = new BehaviorSubject(EMPTY);
|
|
69
|
+
this._blurStream$ = new BehaviorSubject(EMPTY);
|
|
70
|
+
this.focus$ = this._focusStream$.pipe(switchMap((stream) => stream));
|
|
71
|
+
this.blur$ = this._blurStream$.pipe(switchMap((stream) => stream));
|
|
72
|
+
this.adjustedValue$ = new BehaviorSubject(null);
|
|
73
|
+
this.viewReady$ = new Subject();
|
|
74
|
+
this.selected$ = new Subject();
|
|
75
|
+
this.compareWith = (optionA, optionB) => {
|
|
76
|
+
if (this.areOptionsEqual(optionA, optionB)) {
|
|
77
|
+
if (this.selectOptionFormat() === 'CompleteOption' && typeof optionB !== 'object') {
|
|
78
|
+
this._changed?.(optionA);
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
};
|
|
84
|
+
this.focus = () => this.matSelect.open();
|
|
85
|
+
this.isFocused = () => this.isOpen;
|
|
86
|
+
if (this.parentFormMember) {
|
|
87
|
+
this.handleStateChange();
|
|
88
|
+
}
|
|
89
|
+
this.handleAdjustedValue();
|
|
90
|
+
toObservable(this.paginated)
|
|
91
|
+
.pipe(untilDestroyed(this))
|
|
92
|
+
.subscribe((paginated) => {
|
|
93
|
+
if (paginated)
|
|
94
|
+
this.loadPaginatedOptions();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
ngAfterViewInit() {
|
|
98
|
+
this.viewReady$.next();
|
|
99
|
+
if (this.formField) {
|
|
100
|
+
this.matSelect._preferredOverlayOrigin = this.formField.inputContainer;
|
|
101
|
+
}
|
|
102
|
+
this._focusStream$.next(this.matSelect._openedStream);
|
|
103
|
+
this._blurStream$.next(this.matSelect._closedStream);
|
|
104
|
+
}
|
|
105
|
+
select(event) {
|
|
106
|
+
this.selected$.next();
|
|
107
|
+
this.matSelect.value = event.value;
|
|
108
|
+
this.validateSelectedOption(event.value)
|
|
109
|
+
.pipe(takeUntil(this.selected$))
|
|
110
|
+
.subscribe((canSelect) => {
|
|
111
|
+
if (!canSelect)
|
|
112
|
+
return this.revertPreviousValue();
|
|
113
|
+
this.updateValue(event.value);
|
|
114
|
+
this._changed?.(event.value);
|
|
115
|
+
this._validatorChanged?.();
|
|
116
|
+
this.selectionChange.emit(event);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
areOptionsEqual(optionA, optionB) {
|
|
120
|
+
return (optionA?.value || optionA) === (optionB?.value || optionB);
|
|
121
|
+
}
|
|
122
|
+
revertPreviousValue() {
|
|
123
|
+
this.matSelect.value = this._previousValue;
|
|
124
|
+
}
|
|
125
|
+
updateValue(value) {
|
|
126
|
+
this.value.set(value);
|
|
127
|
+
this._previousValue = value;
|
|
128
|
+
}
|
|
129
|
+
validateSelectedOption(value) {
|
|
130
|
+
return new Observable((observer) => {
|
|
131
|
+
const response = this.canSelect(value);
|
|
132
|
+
const source = response instanceof Observable ? response.pipe(first()) : of(response);
|
|
133
|
+
source.subscribe((result) => {
|
|
134
|
+
observer.next(result);
|
|
135
|
+
observer.complete();
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
panelOpened() {
|
|
140
|
+
this.opened.emit();
|
|
141
|
+
this.handleScrollDown();
|
|
142
|
+
}
|
|
143
|
+
panelClosed() {
|
|
144
|
+
this.closed.emit();
|
|
145
|
+
this._touched?.();
|
|
146
|
+
}
|
|
147
|
+
updateOptionsStatus() {
|
|
148
|
+
this.matOptions().forEach((matOption) => {
|
|
149
|
+
matOption.disabled = this.isOptionDisabled()(matOption.value);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
writeValue(value) {
|
|
153
|
+
if (this.paginated())
|
|
154
|
+
this.prefillOptions(value);
|
|
155
|
+
const formattedValue = this.prepareValueForPatch(value);
|
|
156
|
+
this.updateValue(formattedValue);
|
|
157
|
+
}
|
|
158
|
+
registerOnChange(callback) {
|
|
159
|
+
this._changed = callback;
|
|
160
|
+
}
|
|
161
|
+
registerOnTouched(callback) {
|
|
162
|
+
this._touched = callback;
|
|
163
|
+
}
|
|
164
|
+
registerOnValidatorChange(callback) {
|
|
165
|
+
this._validatorChanged = callback;
|
|
166
|
+
}
|
|
167
|
+
setDisabledState(isDisabled) {
|
|
168
|
+
this.disabled.set(isDisabled);
|
|
169
|
+
}
|
|
170
|
+
validate() {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
get isOpen() {
|
|
174
|
+
return this.matSelect?.panelOpen ?? false;
|
|
175
|
+
}
|
|
176
|
+
prepareValueForPatch(value) {
|
|
177
|
+
const formatedValue = this.formatValue(value);
|
|
178
|
+
if (formatedValue.changed)
|
|
179
|
+
this.adjustedValue$.next(formatedValue.value);
|
|
180
|
+
return formatedValue.value;
|
|
181
|
+
}
|
|
182
|
+
formatValue(value) {
|
|
183
|
+
let changed = false;
|
|
184
|
+
const _formatOption = (value) => {
|
|
185
|
+
const formatedOption = this.formatOption(value);
|
|
186
|
+
if (formatedOption.changed)
|
|
187
|
+
changed = true;
|
|
188
|
+
return formatedOption.value;
|
|
189
|
+
};
|
|
190
|
+
if (value instanceof Array) {
|
|
191
|
+
const options = value.map(_formatOption);
|
|
192
|
+
return { changed, value: options };
|
|
193
|
+
}
|
|
194
|
+
const option = _formatOption(value);
|
|
195
|
+
return { changed, value: option };
|
|
196
|
+
}
|
|
197
|
+
formatOption(value) {
|
|
198
|
+
if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {
|
|
199
|
+
return { changed: true, value: value.value };
|
|
200
|
+
}
|
|
201
|
+
return { changed: false, value };
|
|
202
|
+
}
|
|
203
|
+
loadPaginatedOptions() {
|
|
204
|
+
this.queryParams.page = 1;
|
|
205
|
+
this.fetchPaginatedOptions(this.queryParams)
|
|
206
|
+
.pipe(untilDestroyed(this), first())
|
|
207
|
+
.subscribe((paginatedData) => {
|
|
208
|
+
this._optionsCache.clear();
|
|
209
|
+
this.cacheOptions(paginatedData.data);
|
|
210
|
+
this._paginatedData = paginatedData;
|
|
211
|
+
this.paginatedOptions.set(paginatedData.data);
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
loadMorePaginatedOptions() {
|
|
215
|
+
if (!this._paginatedData || this._paginatedData.currPage + 1 > this._paginatedData.totalPages)
|
|
216
|
+
return;
|
|
217
|
+
this.queryParams.page++;
|
|
218
|
+
this.fetchPaginatedOptions({ ...this.queryParams })
|
|
219
|
+
.pipe(untilDestroyed(this), first())
|
|
220
|
+
.subscribe((paginatedData) => {
|
|
221
|
+
this.cacheOptions(paginatedData.data);
|
|
222
|
+
this._paginatedData = paginatedData;
|
|
223
|
+
this.paginatedOptions.update((options) => [...options, ...paginatedData.data]);
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
cacheOptions(options) {
|
|
227
|
+
options.forEach((option) => this._optionsCache.add(option.value));
|
|
228
|
+
this.syncPrefilledOptions();
|
|
229
|
+
}
|
|
230
|
+
syncPrefilledOptions() {
|
|
231
|
+
if (this.prefilledOptions().length === 0)
|
|
232
|
+
return;
|
|
233
|
+
this.prefilledOptions.update((options) => {
|
|
234
|
+
return options.filter((option) => !this._optionsCache.has(option.value));
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
prefillOptions(value) {
|
|
238
|
+
let prefilledOptions = [];
|
|
239
|
+
if (value instanceof Array) {
|
|
240
|
+
prefilledOptions = value.filter((option) => option instanceof Object);
|
|
241
|
+
}
|
|
242
|
+
else if (value instanceof Object) {
|
|
243
|
+
prefilledOptions = [value];
|
|
244
|
+
}
|
|
245
|
+
this.prefilledOptions.set(prefilledOptions);
|
|
246
|
+
}
|
|
247
|
+
handleScrollDown() {
|
|
248
|
+
const element = document.querySelector('.mat-mdc-select-panel');
|
|
249
|
+
this.zone.runOutsideAngular(() => {
|
|
250
|
+
this.scrollDetectionApi.onScrolledDown(element).subscribe(() => {
|
|
251
|
+
this.zone.run(() => this.loadMorePaginatedOptions());
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
handleStateChange() {
|
|
256
|
+
this.parentFormMember.stateChanges$.pipe(untilDestroyed(this)).subscribe(() => {
|
|
257
|
+
this._validatorChanged?.();
|
|
258
|
+
this.changeDetectorRef.markForCheck();
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
handleAdjustedValue() {
|
|
262
|
+
this.viewReady$
|
|
263
|
+
.pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))
|
|
264
|
+
.subscribe((value) => this._changed?.(value));
|
|
265
|
+
}
|
|
266
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", 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 }); }
|
|
267
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", 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: [
|
|
268
|
+
WLCM_FORM_CONTROL_PROVIDER,
|
|
269
|
+
{
|
|
270
|
+
provide: MAT_SELECT_CONFIG,
|
|
271
|
+
useFactory: () => {
|
|
272
|
+
const wlcmConfig = inject(WLCM_SELECT_CONFIG, { optional: true }) ?? {};
|
|
273
|
+
return mergeConfig(wlcmConfig);
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
|
|
277
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
|
|
278
|
+
], 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 }); }
|
|
279
|
+
};
|
|
280
|
+
WlcmSelectComponent = __decorate([
|
|
281
|
+
UntilDestroy(),
|
|
282
|
+
__metadata("design:paramtypes", [NgZone,
|
|
283
|
+
ChangeDetectorRef,
|
|
284
|
+
ScrollDetectionApi, Object, Object])
|
|
285
|
+
], WlcmSelectComponent);
|
|
286
|
+
export { WlcmSelectComponent };
|
|
287
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmSelectComponent, decorators: [{
|
|
288
|
+
type: Component,
|
|
289
|
+
args: [{ selector: 'wlcm-select', standalone: true, imports: [CommonModule, MatSelectModule, ReactiveFormsModule, WlcmIconDirective, WlcmSelectInputBinderDirective], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [WlcmSelectInputBinderDirective], providers: [
|
|
290
|
+
WLCM_FORM_CONTROL_PROVIDER,
|
|
291
|
+
{
|
|
292
|
+
provide: MAT_SELECT_CONFIG,
|
|
293
|
+
useFactory: () => {
|
|
294
|
+
const wlcmConfig = inject(WLCM_SELECT_CONFIG, { optional: true }) ?? {};
|
|
295
|
+
return mergeConfig(wlcmConfig);
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
{ provide: NG_VALIDATORS, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
|
|
299
|
+
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmSelectComponent), multi: true },
|
|
300
|
+
], 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" }]
|
|
301
|
+
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.ScrollDetectionApi }, { type: undefined, decorators: [{
|
|
302
|
+
type: Inject,
|
|
303
|
+
args: [WLCM_FORM_FIELD]
|
|
304
|
+
}] }, { type: undefined, decorators: [{
|
|
305
|
+
type: Optional
|
|
306
|
+
}, {
|
|
307
|
+
type: Inject,
|
|
308
|
+
args: [WLCM_FORM_CONTROL]
|
|
309
|
+
}] }], propDecorators: { multiple: [{
|
|
310
|
+
type: Input
|
|
311
|
+
}], placeholder: [{
|
|
312
|
+
type: Input
|
|
313
|
+
}], fetchPaginatedOptions: [{
|
|
314
|
+
type: Input
|
|
315
|
+
}], canSelect: [{
|
|
316
|
+
type: Input
|
|
317
|
+
}], queryParams: [{
|
|
318
|
+
type: Input
|
|
319
|
+
}], matSelect: [{
|
|
320
|
+
type: ViewChild,
|
|
321
|
+
args: [MatSelect]
|
|
322
|
+
}], openPanel: [{
|
|
323
|
+
type: HostListener,
|
|
324
|
+
args: ['click']
|
|
325
|
+
}] } });
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sUUFBUSxFQUlSLFNBQVMsRUFFVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEdBR3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQW1CLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixZQUFZLEdBR2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFaEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsVUFBVSxF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QXFCO3NCQUE3QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFxRGdCLFNBQVM7c0JBQTlCLFNBQVM7dUJBQUMsU0FBUztnQkFFRyxTQUFTO3NCQUEvQixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgSW5wdXRTaWduYWwsXG4gIE5nWm9uZSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dEVtaXR0ZXJSZWYsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfU0VMRUNUX0NPTkZJRywgTWF0T3B0aW9uLCBNYXRTZWxlY3QsIE1hdFNlbGVjdENoYW5nZSwgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7XG4gIERFRkFVTFRfUVVFUllfUEFSQU1TLFxuICBTY3JvbGxEZXRlY3Rpb25BcGksXG4gIFdsY21JY29uRGlyZWN0aXZlLFxuICBXbGNtSWNvbk5hbWUsXG4gIFdsY21PcHRpb24sXG4gIFdsY21TZWxlY3RPcHRpb25Gb3JtYXQsXG59IGZyb20gJ0B3bGNtL2FuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXTENNX0ZPUk1fQ09OVFJPTCwgV0xDTV9GT1JNX0NPTlRST0xfUFJPVklERVIsIFdMQ01fRk9STV9GSUVMRCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtU2VsZWN0SW5wdXRCaW5kZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3NlbGVjdC1pbnB1dC1iaW5kZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdsY21Gb3JtQ29udHJvbCwgV2xjbUZvcm1GaWVsZCwgV2xjbUZvcm1GaWVsZElucHV0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL19pbmRleCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpYmVyLCBmaWx0ZXIsIGZpcnN0LCBvZiwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElzT3B0aW9uRGlzYWJsZWRGbiwgV2xjbUNhblNlbGVjdEZuLCBXbGNtU2VsZWN0Q29uZmlnLCBXbGNtU2VsZWN0VmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VsZWN0Lm1vZGVscyc7XG5pbXBvcnQgeyBXTENNX1NFTEVDVF9DT05GSUcgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvc2VsZWN0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IFdsY21RdWVyeVBhcmFtcywgV2xjbVBhZ2luYXRlZERhdGEgfSBmcm9tICdAd2xjbS9jb21tb24nO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbnR5cGUgT3B0aW9uVGVtcGxhdGVDb250ZXh0ID0gVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFdsY21PcHRpb24gfT47XG5cbmNvbnN0IFBBTkVMX0NMQVNTOiBzdHJpbmcgPSAnd2xjbS1zZWxlY3QtcGFuZWwnO1xuXG5jb25zdCBERUZBVUxUX0NPTkZJRzogV2xjbVNlbGVjdENvbmZpZyA9IHsgb3ZlcmxheVBhbmVsQ2xhc3M6IFtQQU5FTF9DTEFTU10gfTtcblxuY29uc3QgbWVyZ2VDb25maWcgPSAoY29uZmlnOiBXbGNtU2VsZWN0Q29uZmlnKTogV2xjbVNlbGVjdENvbmZpZyA9PiB7XG4gIGNvbnN0IGN1c3RvbWl6ZXIgPSAoX2RlZmF1bHQ6IFdsY21TZWxlY3RDb25maWcsIF9uZXc6IFdsY21TZWxlY3RDb25maWcpOiBBcnJheTx1bmtub3duPiB8IHZvaWQgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KF9kZWZhdWx0KSkgcmV0dXJuIF9kZWZhdWx0LmNvbmNhdChfbmV3KTtcbiAgfTtcblxuICByZXR1cm4gbWVyZ2VXaXRoKHsgLi4uREVGQVVMVF9DT05GSUcgfSwgY29uZmlnLCBjdXN0b21pemVyKTtcbn07XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2xjbS1zZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRTZWxlY3RNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFdsY21JY29uRGlyZWN0aXZlLCBXbGNtU2VsZWN0SW5wdXRCaW5kZXJEaXJlY3RpdmVdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0RGlyZWN0aXZlczogW1dsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIFdMQ01fRk9STV9DT05UUk9MX1BST1ZJREVSLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9TRUxFQ1RfQ09ORklHLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICBjb25zdCB3bGNtQ29uZmlnOiBXbGNtU2VsZWN0Q29uZmlnID0gaW5qZWN0KFdMQ01fU0VMRUNUX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyB7fTtcblxuICAgICAgICByZXR1cm4gbWVyZ2VDb25maWcod2xjbUNvbmZpZyk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtU2VsZWN0Q29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtU2VsZWN0Q29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIFdsY21Gb3JtRmllbGRJbnB1dCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdOb3Qgc2VsZWN0ZWQnO1xuXG4gIEBJbnB1dCgpIGZldGNoUGFnaW5hdGVkT3B0aW9ucz86IChwYXJhbXM6IFdsY21RdWVyeVBhcmFtcykgPT4gT2JzZXJ2YWJsZTxXbGNtUGFnaW5hdGVkRGF0YTxXbGNtT3B0aW9uPj47XG5cbiAgQElucHV0KCkgY2FuU2VsZWN0OiBXbGNtQ2FuU2VsZWN0Rm4gPSAoXzogV2xjbVNlbGVjdFZhbHVlKSA9PiB0cnVlO1xuXG4gIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zOiBXbGNtUXVlcnlQYXJhbXMgPSB7IC4uLkRFRkFVTFRfUVVFUllfUEFSQU1TIH07XG5cbiAgcGFnaW5hdGVkOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcblxuICBvcHRpb25zOiBJbnB1dFNpZ25hbDxXbGNtT3B0aW9uW10+ID0gaW5wdXQ8V2xjbU9wdGlvbltdPihbXSk7XG5cbiAgcGFnaW5hdGVkT3B0aW9uczogV3JpdGFibGVTaWduYWw8V2xjbU9wdGlvbltdPiA9IHNpZ25hbChbXSk7XG5cbiAgc2VsZWN0T3B0aW9uRm9ybWF0OiBJbnB1dFNpZ25hbDxXbGNtU2VsZWN0T3B0aW9uRm9ybWF0PiA9IGlucHV0PFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+KCdWYWx1ZU9ubHknKTtcblxuICBvcHRpb25UZW1wbGF0ZTogSW5wdXRTaWduYWw8VGVtcGxhdGVSZWY8T3B0aW9uVGVtcGxhdGVDb250ZXh0PiB8IG51bGw+ID1cbiAgICBpbnB1dDxUZW1wbGF0ZVJlZjxPcHRpb25UZW1wbGF0ZUNvbnRleHQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgdHJpZ2dlclRlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxNYXRPcHRpb24gfCBNYXRPcHRpb25bXT4gfCB1bmRlZmluZWQ+ID0gaW5wdXQoKTtcblxuICBpc09wdGlvbkRpc2FibGVkOiBJbnB1dFNpZ25hbDxJc09wdGlvbkRpc2FibGVkRm4+ID0gaW5wdXQ8SXNPcHRpb25EaXNhYmxlZEZuPigoKSA9PiBmYWxzZSk7XG5cbiAgc2VsZWN0aW9uQ2hhbmdlOiBPdXRwdXRFbWl0dGVyUmVmPE1hdFNlbGVjdENoYW5nZT4gPSBvdXRwdXQoKTtcblxuICBvcGVuZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICBjbG9zZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICByZWFkb25seSB2YWx1ZTogV3JpdGFibGVTaWduYWw8V2xjbVNlbGVjdFZhbHVlIHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBXbGNtSWNvbk5hbWUgPSBXbGNtSWNvbk5hbWU7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlZD86ICh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3RvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3ZhbGlkYXRvckNoYW5nZWQ/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX3BhZ2luYXRlZERhdGE6IFdsY21QYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNWYWx1ZTogV2xjbVNlbGVjdFZhbHVlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfb3B0aW9uc0NhY2hlOiBTZXQ8dW5rbm93bj4gPSBuZXcgU2V0KCk7XG5cbiAgY29tcHV0ZWRPcHRpb25zOiBTaWduYWw8V2xjbU9wdGlvbltdPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zOiBXbGNtT3B0aW9uW10gPSB0aGlzLnBhZ2luYXRlZCgpID8gdGhpcy5wYWdpbmF0ZWRPcHRpb25zKCkgOiB0aGlzLm9wdGlvbnMoKTtcblxuICAgIGlmICh0aGlzLmlzT3B0aW9uRGlzYWJsZWQoKSAmJiBvcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudXBkYXRlT3B0aW9uc1N0YXR1cygpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9KTtcblxuICBwcmVmaWxsZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxXbGNtT3B0aW9uW10+ID0gc2lnbmFsKFtdKTtcblxuICBAVmlld0NoaWxkKE1hdFNlbGVjdCkgbWF0U2VsZWN0ITogTWF0U2VsZWN0O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMubWF0U2VsZWN0Lm9wZW4oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXRPcHRpb25zOiBTaWduYWw8UmVhZG9ubHlBcnJheTxNYXRPcHRpb24+PiA9IHZpZXdDaGlsZHJlbihNYXRPcHRpb24pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzU3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8dm9pZD4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChFTVBUWSBhcyBPYnNlcnZhYmxlPHZvaWQ+KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ibHVyU3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8dm9pZD4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChFTVBUWSBhcyBPYnNlcnZhYmxlPHZvaWQ+KTtcblxuICBmb2N1cyQ6IE9ic2VydmFibGU8dW5rbm93bj4gPSB0aGlzLl9mb2N1c1N0cmVhbSQucGlwZShzd2l0Y2hNYXAoKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPikgPT4gc3RyZWFtKSk7XG5cbiAgYmx1ciQ6IE9ic2VydmFibGU8dW5rbm93bj4gPSB0aGlzLl9ibHVyU3RyZWFtJC5waXBlKHN3aXRjaE1hcCgoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBzdHJlYW0pKTtcblxuICBwcml2YXRlIGFkanVzdGVkVmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8V2xjbVNlbGVjdFZhbHVlIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdsY21TZWxlY3RWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgdmlld1JlYWR5JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgX3ByZWZlcnJlZE92ZXJsYXlPcmlnaW4hOiBDZGtPdmVybGF5T3JpZ2luO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc2Nyb2xsRGV0ZWN0aW9uQXBpOiBTY3JvbGxEZXRlY3Rpb25BcGksXG4gICAgQEluamVjdChXTENNX0ZPUk1fRklFTEQpIHByaXZhdGUgZm9ybUZpZWxkOiBXbGNtRm9ybUZpZWxkLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoV0xDTV9GT1JNX0NPTlRST0wpIHByaXZhdGUgcGFyZW50Rm9ybU1lbWJlcjogV2xjbUZvcm1Db250cm9sLFxuICApIHtcbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtTWVtYmVyKSB7XG4gICAgICB0aGlzLmhhbmRsZVN0YXRlQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVBZGp1c3RlZFZhbHVlKCk7XG5cbiAgICB0b09ic2VydmFibGUodGhpcy5wYWdpbmF0ZWQpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKHBhZ2luYXRlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAocGFnaW5hdGVkKSB0aGlzLmxvYWRQYWdpbmF0ZWRPcHRpb25zKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdSZWFkeSQubmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm1hdFNlbGVjdC5fcHJlZmVycmVkT3ZlcmxheU9yaWdpbiA9IHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyO1xuICAgIH1cblxuICAgIHRoaXMuX2ZvY3VzU3RyZWFtJC5uZXh0KHRoaXMubWF0U2VsZWN0Ll9vcGVuZWRTdHJlYW0pO1xuXG4gICAgdGhpcy5fYmx1clN0cmVhbSQubmV4dCh0aGlzLm1hdFNlbGVjdC5fY2xvc2VkU3RyZWFtKTtcbiAgfVxuXG4gIGNvbXBhcmVXaXRoID0gKG9wdGlvbkE6IFdsY21PcHRpb24gfCBzdHJpbmcsIG9wdGlvbkI6IFdsY21PcHRpb24gfCBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBpZiAodGhpcy5hcmVPcHRpb25zRXF1YWwob3B0aW9uQSwgb3B0aW9uQikpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnQ29tcGxldGVPcHRpb24nICYmIHR5cGVvZiBvcHRpb25CICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0aGlzLl9jaGFuZ2VkPy4ob3B0aW9uQSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBmb2N1cyA9ICgpOiB2b2lkID0+IHRoaXMubWF0U2VsZWN0Lm9wZW4oKTtcblxuICBpc0ZvY3VzZWQgPSAoKTogYm9vbGVhbiA9PiB0aGlzLmlzT3BlbjtcblxuICBzZWxlY3QoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQkLm5leHQoKTtcblxuICAgIHRoaXMubWF0U2VsZWN0LnZhbHVlID0gZXZlbnQudmFsdWU7XG5cbiAgICB0aGlzLnZhbGlkYXRlU2VsZWN0ZWRPcHRpb24oZXZlbnQudmFsdWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5zZWxlY3RlZCQpKVxuICAgICAgLnN1YnNjcmliZSgoY2FuU2VsZWN0OiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghY2FuU2VsZWN0KSByZXR1cm4gdGhpcy5yZXZlcnRQcmV2aW91c1ZhbHVlKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShldmVudC52YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlZD8uKGV2ZW50LnZhbHVlKTtcblxuICAgICAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2VkPy4oKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhcmVPcHRpb25zRXF1YWwob3B0aW9uQTogV2xjbU9wdGlvbiB8IHN0cmluZywgb3B0aW9uQjogV2xjbU9wdGlvbiB8IHN0cmluZykge1xuICAgIHJldHVybiAoKG9wdGlvbkEgYXMgV2xjbU9wdGlvbik/LnZhbHVlIHx8IG9wdGlvbkEpID09PSAoKG9wdGlvbkIgYXMgV2xjbU9wdGlvbik/LnZhbHVlIHx8IG9wdGlvbkIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXZlcnRQcmV2aW91c1ZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMubWF0U2VsZWN0LnZhbHVlID0gdGhpcy5fcHJldmlvdXNWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcblxuICAgIHRoaXMuX3ByZXZpb3VzVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTZWxlY3RlZE9wdGlvbih2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KChvYnNlcnZlcjogU3Vic2NyaWJlcjxib29sZWFuPikgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBib29sZWFuID0gdGhpcy5jYW5TZWxlY3QodmFsdWUpO1xuXG4gICAgICBjb25zdCBzb3VyY2U6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSByZXNwb25zZSBpbnN0YW5jZW9mIE9ic2VydmFibGUgPyByZXNwb25zZS5waXBlKGZpcnN0KCkpIDogb2YocmVzcG9uc2UpO1xuXG4gICAgICBzb3VyY2Uuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXN1bHQpO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFuZWxPcGVuZWQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xuXG4gICAgdGhpcy5oYW5kbGVTY3JvbGxEb3duKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFuZWxDbG9zZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuXG4gICAgdGhpcy5fdG91Y2hlZD8uKCk7XG4gIH1cblxuICB1cGRhdGVPcHRpb25zU3RhdHVzKCk6IHZvaWQge1xuICAgIHRoaXMubWF0T3B0aW9ucygpLmZvckVhY2goKG1hdE9wdGlvbjogTWF0T3B0aW9uKSA9PiB7XG4gICAgICBtYXRPcHRpb24uZGlzYWJsZWQgPSB0aGlzLmlzT3B0aW9uRGlzYWJsZWQoKShtYXRPcHRpb24udmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnaW5hdGVkKCkpIHRoaXMucHJlZmlsbE9wdGlvbnModmFsdWUpO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWU6IFdsY21TZWxlY3RWYWx1ZSA9IHRoaXMucHJlcGFyZVZhbHVlRm9yUGF0Y2godmFsdWUpO1xuXG4gICAgdGhpcy51cGRhdGVWYWx1ZShmb3JtYXR0ZWRWYWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGNhbGxiYWNrOiAodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5nZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fdG91Y2hlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbGlkYXRvckNoYW5nZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYXRTZWxlY3Q/LnBhbmVsT3BlbiA/PyBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZVZhbHVlRm9yUGF0Y2godmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IFdsY21TZWxlY3RWYWx1ZSB7XG4gICAgY29uc3QgZm9ybWF0ZWRWYWx1ZTogeyBjaGFuZ2VkOiBib29sZWFuOyB2YWx1ZTogV2xjbVNlbGVjdFZhbHVlIH0gPSB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChmb3JtYXRlZFZhbHVlLmNoYW5nZWQpIHRoaXMuYWRqdXN0ZWRWYWx1ZSQubmV4dChmb3JtYXRlZFZhbHVlLnZhbHVlKTtcblxuICAgIHJldHVybiBmb3JtYXRlZFZhbHVlLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRWYWx1ZSh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogeyBjaGFuZ2VkOiBib29sZWFuOyB2YWx1ZTogV2xjbVNlbGVjdFZhbHVlIH0ge1xuICAgIGxldCBjaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdCBfZm9ybWF0T3B0aW9uID0gKHZhbHVlOiBXbGNtT3B0aW9uIHwgc3RyaW5nKTogV2xjbU9wdGlvbiB8IHN0cmluZyA9PiB7XG4gICAgICBjb25zdCBmb3JtYXRlZE9wdGlvbjogeyBjaGFuZ2VkOiBib29sZWFuOyB2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyB9ID0gdGhpcy5mb3JtYXRPcHRpb24odmFsdWUpO1xuXG4gICAgICBpZiAoZm9ybWF0ZWRPcHRpb24uY2hhbmdlZCkgY2hhbmdlZCA9IHRydWU7XG5cbiAgICAgIHJldHVybiBmb3JtYXRlZE9wdGlvbi52YWx1ZTtcbiAgICB9O1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IFdsY21TZWxlY3RWYWx1ZSA9IHZhbHVlLm1hcChfZm9ybWF0T3B0aW9uKSBhcyBXbGNtU2VsZWN0VmFsdWU7XG5cbiAgICAgIHJldHVybiB7IGNoYW5nZWQsIHZhbHVlOiBvcHRpb25zIH07XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uOiBXbGNtU2VsZWN0VmFsdWUgPSBfZm9ybWF0T3B0aW9uKHZhbHVlKTtcblxuICAgIHJldHVybiB7IGNoYW5nZWQsIHZhbHVlOiBvcHRpb24gfTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0T3B0aW9uKHZhbHVlOiBXbGNtT3B0aW9uIHwgc3RyaW5nKTogeyBjaGFuZ2VkOiBib29sZWFuOyB2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyB9IHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgdGhpcy5zZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ1ZhbHVlT25seScpIHtcbiAgICAgIHJldHVybiB7IGNoYW5nZWQ6IHRydWUsIHZhbHVlOiB2YWx1ZS52YWx1ZSBhcyBzdHJpbmcgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjaGFuZ2VkOiBmYWxzZSwgdmFsdWUgfTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFBhZ2luYXRlZE9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlID0gMTtcblxuICAgIHRoaXMuZmV0Y2hQYWdpbmF0ZWRPcHRpb25zISh0aGlzLnF1ZXJ5UGFyYW1zKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcyksIGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKChwYWdpbmF0ZWREYXRhOiBXbGNtUGFnaW5hdGVkRGF0YTxXbGNtT3B0aW9uPikgPT4ge1xuICAgICAgICB0aGlzLl9vcHRpb25zQ2FjaGUuY2xlYXIoKTtcblxuICAgICAgICB0aGlzLmNhY2hlT3B0aW9ucyhwYWdpbmF0ZWREYXRhLmRhdGEpO1xuXG4gICAgICAgIHRoaXMuX3BhZ2luYXRlZERhdGEgPSBwYWdpbmF0ZWREYXRhO1xuXG4gICAgICAgIHRoaXMucGFnaW5hdGVkT3B0aW9ucy5zZXQocGFnaW5hdGVkRGF0YS5kYXRhKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9yZVBhZ2luYXRlZE9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wYWdpbmF0ZWREYXRhIHx8IHRoaXMuX3BhZ2luYXRlZERhdGEuY3VyclBhZ2UgKyAxID4gdGhpcy5fcGFnaW5hdGVkRGF0YS50b3RhbFBhZ2VzKSByZXR1cm47XG5cbiAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2UrKztcblxuICAgIHRoaXMuZmV0Y2hQYWdpbmF0ZWRPcHRpb25zISh7IC4uLnRoaXMucXVlcnlQYXJhbXMgfSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpLCBmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgocGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5jYWNoZU9wdGlvbnMocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICB0aGlzLnBhZ2luYXRlZE9wdGlvbnMudXBkYXRlKChvcHRpb25zOiBXbGNtT3B0aW9uW10pID0+IFsuLi5vcHRpb25zLCAuLi5wYWdpbmF0ZWREYXRhLmRhdGFdKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWNoZU9wdGlvbnMob3B0aW9uczogV2xjbU9wdGlvbltdKTogdm9pZCB7XG4gICAgb3B0aW9ucy5mb3JFYWNoKChvcHRpb246IFdsY21PcHRpb24pID0+IHRoaXMuX29wdGlvbnNDYWNoZS5hZGQob3B0aW9uLnZhbHVlKSk7XG5cbiAgICB0aGlzLnN5bmNQcmVmaWxsZWRPcHRpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNQcmVmaWxsZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZWZpbGxlZE9wdGlvbnMoKS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIHRoaXMucHJlZmlsbGVkT3B0aW9ucy51cGRhdGUoKG9wdGlvbnM6IFdsY21PcHRpb25bXSkgPT4ge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKChvcHRpb246IFdsY21PcHRpb24pID0+ICF0aGlzLl9vcHRpb25zQ2FjaGUuaGFzKG9wdGlvbi52YWx1ZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVmaWxsT3B0aW9ucyh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogdm9pZCB7XG4gICAgbGV0IHByZWZpbGxlZE9wdGlvbnM6IFdsY21PcHRpb25bXSA9IFtdO1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHByZWZpbGxlZE9wdGlvbnMgPSB2YWx1ZS5maWx0ZXIoKG9wdGlvbjogV2xjbU9wdGlvbiB8IHN0cmluZykgPT4gb3B0aW9uIGluc3RhbmNlb2YgT2JqZWN0KSBhcyBXbGNtT3B0aW9uW107XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgcHJlZmlsbGVkT3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5wcmVmaWxsZWRPcHRpb25zLnNldChwcmVmaWxsZWRPcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2Nyb2xsRG93bigpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXQtbWRjLXNlbGVjdC1wYW5lbCcpITtcblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbERldGVjdGlvbkFwaS5vblNjcm9sbGVkRG93bihlbGVtZW50KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMubG9hZE1vcmVQYWdpbmF0ZWRPcHRpb25zKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMucGFyZW50Rm9ybU1lbWJlci5zdGF0ZUNoYW5nZXMkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2VkPy4oKTtcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWRqdXN0ZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdSZWFkeSRcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFkanVzdGVkVmFsdWUkLnBpcGUoZmlsdGVyKEJvb2xlYW4pKSkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKSA9PiB0aGlzLl9jaGFuZ2VkPy4odmFsdWUpKTtcbiAgfVxufVxuIiwiPG1hdC1zZWxlY3RcbiAgI3NlbGVjdENvbXBvbmVudFxuICBbdmFsdWVdPVwidmFsdWUoKVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICBbbmdDbGFzc109XCJ7IGZvY3VzZWQ6IHNlbGVjdENvbXBvbmVudC5mb2N1c2VkIH1cIlxuICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdCgkZXZlbnQpXCJcbiAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVXaXRoXCJcbiAgKG9wZW5lZCk9XCJwYW5lbE9wZW5lZCgpXCJcbiAgKGNsb3NlZCk9XCJwYW5lbENsb3NlZCgpXCJcbj5cbiAgQGlmICh0cmlnZ2VyVGVtcGxhdGUoKSkge1xuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdHJpZ2dlclRlbXBsYXRlKCkhO1xuICAgICAgICAgIGNvbnRleHQ6ICRhbnkoeyAkaW1wbGljaXQ6IHNlbGVjdENvbXBvbmVudC5zZWxlY3RlZCB9KVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICB9XG5cbiAgPG1hdC1vcHRpb25cbiAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByZWZpbGxlZE9wdGlvbnMoKVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnQ29tcGxldGVPcHRpb24nID8gb3B0aW9uIDogb3B0aW9uLnZhbHVlXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndsY21TZWxlY3RPcHRpb25Db250ZW50XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtb3B0aW9uPlxuXG4gIDxtYXQtb3B0aW9uXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBjb21wdXRlZE9wdGlvbnMoKVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnQ29tcGxldGVPcHRpb24nID8gb3B0aW9uIDogb3B0aW9uLnZhbHVlXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndsY21TZWxlY3RPcHRpb25Db250ZW50XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtb3B0aW9uPlxuPC9tYXQtc2VsZWN0PlxuXG48ZGl2IGNsYXNzPVwid2xjbS1zZWxlY3QtYXJyb3dcIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIFt3bGNtSWNvbl09XCJXbGNtSWNvbk5hbWUuQ0hFVlJPTl9ET1dOXCJcbiAgICBbd2xjbUljb25TdG9wUHJvcGFnYXRpb25dPVwiZmFsc2VcIlxuICA+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN3bGNtU2VsZWN0T3B0aW9uQ29udGVudCBsZXQtb3B0aW9uPlxuICBAaWYgKG9wdGlvblRlbXBsYXRlKCkpIHtcbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm9wdGlvblRlbXBsYXRlKCk7IGNvbnRleHQ6ICRhbnkoeyAkaW1wbGljaXQ6IG9wdGlvbiB9KVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICB9IEBlbHNlIHtcbiAgICB7eyBvcHRpb24udmlld1ZhbHVlIH19XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
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==
|
|
@@ -0,0 +1,7 @@
|
|
|
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=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const WLCM_FORM_FIELD_INPUT_CLASS = 'wlcm-form-field-input';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2Zvcm1zL3NyYy9saWIvZm9ybXMvY29uc3RhbnRzL2Zvcm0tZmllbGQuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFXLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFdMQ01fRk9STV9GSUVMRF9JTlBVVF9DTEFTUzogc3RyaW5nID0gJ3dsY20tZm9ybS1maWVsZC1pbnB1dCc7XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
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==
|
|
@@ -0,0 +1,6 @@
|
|
|
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
|
|
@@ -0,0 +1,3 @@
|
|
|
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==
|
|
@@ -0,0 +1,64 @@
|
|
|
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: "18.2.6", 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: "18.2.6", 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: "18.2.6", 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==
|
|
@@ -0,0 +1,17 @@
|
|
|
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: "18.2.6", ngImport: i0, type: WlcmFormFieldCustomContainerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: WlcmFormFieldCustomContainerDirective, isStandalone: true, selector: "[wlcmFormFieldCustomContainer]", ngImport: i0 }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", 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==
|
|
@@ -0,0 +1,15 @@
|
|
|
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: "18.2.6", ngImport: i0, type: WlcmFormFieldHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: WlcmFormFieldHintDirective, isStandalone: true, selector: "[wlcmFormFieldHint]", host: { classAttribute: "wlcm-hint" }, ngImport: i0 }); }
|
|
6
|
+
}
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", 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
|
|
@@ -0,0 +1,22 @@
|
|
|
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: "18.2.6", ngImport: i0, type: WlcmFormFieldPrefixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: WlcmFormFieldPrefixDirective, isStandalone: true, selector: "[wlcmFormFieldPrefix]", host: { listeners: { "click": "handlerClick($event)" } }, ngImport: i0 }); }
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", 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==
|
|
@@ -0,0 +1,14 @@
|
|
|
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: "18.2.6", ngImport: i0, type: WlcmFormFieldSuffixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: WlcmFormFieldSuffixDirective, isStandalone: true, selector: "[wlcmFormFieldSuffix]", ngImport: i0 }); }
|
|
6
|
+
}
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", 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=
|