@libs-ui/components-datetime-dropdown 0.2.77 → 0.2.78

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.
Files changed (29) hide show
  1. package/defines/date-dropdown.define.d.ts +40 -0
  2. package/directive/date-dropdown.directive.d.ts +11 -0
  3. package/dropdown.component.d.ts +88 -0
  4. package/esm2022/defines/date-dropdown.define.mjs +248 -0
  5. package/esm2022/directive/date-dropdown.directive.mjs +33 -0
  6. package/esm2022/dropdown.component.mjs +272 -0
  7. package/esm2022/index.mjs +2 -2
  8. package/esm2022/interfaces/date-dropdown.interface.mjs +7 -0
  9. package/esm2022/interfaces/emit-dropdown.interface.mjs +2 -0
  10. package/esm2022/interfaces/functions-control-event.interface.mjs +2 -0
  11. package/esm2022/interfaces/valid.interface.mjs +3 -0
  12. package/esm2022/item/child/child.component.mjs +124 -0
  13. package/esm2022/item/item.component.mjs +216 -0
  14. package/esm2022/pipes/build-list-by-date-type-.pipe.mjs +19 -0
  15. package/esm2022/pipes/build-width.pipe.mjs +23 -0
  16. package/fesm2022/libs-ui-components-datetime-dropdown.mjs +910 -9
  17. package/fesm2022/libs-ui-components-datetime-dropdown.mjs.map +1 -1
  18. package/index.d.ts +1 -1
  19. package/interfaces/date-dropdown.interface.d.ts +47 -0
  20. package/interfaces/emit-dropdown.interface.d.ts +11 -0
  21. package/interfaces/functions-control-event.interface.d.ts +11 -0
  22. package/interfaces/valid.interface.d.ts +10 -0
  23. package/item/child/child.component.d.ts +51 -0
  24. package/item/item.component.d.ts +59 -0
  25. package/package.json +1 -1
  26. package/pipes/build-list-by-date-type-.pipe.d.ts +15 -0
  27. package/pipes/build-width.pipe.d.ts +7 -0
  28. package/esm2022/lib/datetime-dropdown/datetime-dropdown.component.mjs +0 -12
  29. package/lib/datetime-dropdown/datetime-dropdown.component.d.ts +0 -5
@@ -0,0 +1,216 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Component, effect, input, output, signal, untracked } from "@angular/core";
3
+ import { TranslateModule } from "@ngx-translate/core";
4
+ import { LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe } from "../pipes/build-list-by-date-type-.pipe";
5
+ import { LibsUiComponentsDatetimeDropdownBuildWidthPipe } from "../pipes/build-width.pipe";
6
+ import { LibsUiComponentsDatetimeDropdownItemChildComponent } from "./child/child.component";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ngx-translate/core";
9
+ export class LibsUiComponentsDatetimeDropdownItemComponent {
10
+ /* PROPERTY */
11
+ typeListDate = signal([]);
12
+ keyMonthResetDay = signal(undefined);
13
+ selectedSingle = signal({});
14
+ isError = signal(undefined);
15
+ /* INPUT */
16
+ typeDate = input(undefined);
17
+ disableSecond = input(undefined);
18
+ selectedDate = input(undefined);
19
+ widthDropdown = input(136, { transform: (value) => value ?? 136 });
20
+ widthByElement = input(undefined);
21
+ getItemYearDisplay = input(undefined);
22
+ listHasButtonUnSelectOption = input(undefined);
23
+ readonly = input(false);
24
+ disable = input(false);
25
+ zIndex = input(1200, { transform: (value) => value ?? 1200 });
26
+ isMultiple = input(undefined);
27
+ classIncludeTextDisplayWhenNoSelect = input(undefined);
28
+ isCheckErrorWhenSelectItem = input(undefined);
29
+ maxYear = input(undefined);
30
+ minYear = input(undefined);
31
+ reverseYear = input(true, { transform: (value) => value ?? true });
32
+ listKeysDisable = input(undefined);
33
+ ignoreConvertYearSelected = input(undefined);
34
+ validRequired = input(undefined);
35
+ isEmitSelectedDropDown = input(undefined);
36
+ listMaxItemShow = input(undefined);
37
+ /* OUTPUT */
38
+ outSelectedData = output();
39
+ outFunctionControl = output();
40
+ outChangStageFlagMouse = output();
41
+ constructor() {
42
+ effect(() => {
43
+ const typeDate = this.typeDate();
44
+ if (!typeDate) {
45
+ return;
46
+ }
47
+ untracked(() => {
48
+ const data = typeDate.split('-');
49
+ const results = data.map(item => { return signal({ id: (item || 'month'), keySelected: undefined }); }) || [];
50
+ this.typeListDate.set(results);
51
+ });
52
+ });
53
+ effect(() => {
54
+ const selectedDate = this.selectedDate();
55
+ if (!selectedDate) {
56
+ return;
57
+ }
58
+ untracked(() => {
59
+ this.selectedSingle.set(selectedDate);
60
+ if (!this.typeListDate().length) {
61
+ return;
62
+ }
63
+ if (this.typeDate() === 'month-day' && selectedDate.month) {
64
+ this.keyMonthResetDay.set(selectedDate.month);
65
+ }
66
+ this.typeListDate().forEach((item, index) => {
67
+ item.update(current => {
68
+ current.keySelected = selectedDate[current.id] ?? undefined;
69
+ if ((this.disableSecond() && index !== 0 && !current.keySelected) || (!selectedDate['month'] && this.typeDate() === 'month-day' && item().id === 'day')) {
70
+ current.disable = true;
71
+ }
72
+ return current;
73
+ });
74
+ });
75
+ });
76
+ });
77
+ }
78
+ ngOnInit() {
79
+ this.outFunctionControl.emit({
80
+ checkIsValid: this.validate.bind(this),
81
+ resetDropdown: this.resetDropdown.bind(this),
82
+ resetError: this.resetError.bind(this),
83
+ setError: this.setError.bind(this)
84
+ });
85
+ }
86
+ /* FUNCTIONS */
87
+ handlerSelectedKey(event, typeDate, i) {
88
+ if (this.selectedSingle()[typeDate().id] === event && this.isEmitSelectedDropDown()) {
89
+ this.outSelectedData.emit(this.selectedSingle());
90
+ return;
91
+ }
92
+ typeDate.update(current => {
93
+ current.keySelected = event;
94
+ return current;
95
+ });
96
+ if (this.selectedSingle()) {
97
+ this.selectedSingle.update(current => {
98
+ current[typeDate().id] = event ? Number(event) : undefined;
99
+ return current;
100
+ });
101
+ }
102
+ if (this.disableSecond() || (this.typeDate() === 'month-day' && typeDate().id === 'month')) {
103
+ this.keyMonthResetDay.set(event);
104
+ this.typeListDate().forEach(item => {
105
+ item.update(current => {
106
+ current.disable = false;
107
+ return current;
108
+ });
109
+ });
110
+ }
111
+ this.typeListDate().forEach((item, index) => {
112
+ if (index === 1 && item().functionControl && i === 0) {
113
+ item().functionControl?.reset();
114
+ }
115
+ });
116
+ if (typeDate().keySelected && !this.isCheckErrorWhenSelectItem()) {
117
+ typeDate.update(current => {
118
+ current.showBorderError = false;
119
+ current.isError = false;
120
+ return current;
121
+ });
122
+ this.checkError();
123
+ }
124
+ this.outSelectedData.emit(this.selectedSingle());
125
+ }
126
+ checkError() {
127
+ if (!this.isError) {
128
+ return;
129
+ }
130
+ let isError = false;
131
+ this.typeListDate().forEach(item => {
132
+ if (item().showBorderError) {
133
+ isError = true;
134
+ }
135
+ });
136
+ if (!isError) {
137
+ this.isError.set(false);
138
+ }
139
+ }
140
+ handlerFunctionControl(event, item) {
141
+ item.update(current => {
142
+ current.functionControl = event;
143
+ return current;
144
+ });
145
+ }
146
+ async resetDropdown() {
147
+ this.typeListDate().forEach(item => {
148
+ this.selectedSingle.update(current => {
149
+ current[item().id] = undefined;
150
+ return current;
151
+ });
152
+ item.update(current => {
153
+ current.keySelected = undefined;
154
+ current.functionControl?.reset();
155
+ return current;
156
+ });
157
+ });
158
+ this.resetError();
159
+ this.outSelectedData.emit(this.selectedSingle());
160
+ }
161
+ async resetError() {
162
+ this.isError.set(false);
163
+ this.typeListDate().forEach(item => {
164
+ item.update(current => {
165
+ current.isError = false;
166
+ current.showBorderError = false;
167
+ return current;
168
+ });
169
+ });
170
+ }
171
+ async setError(error) {
172
+ this.typeListDate().forEach(item => {
173
+ item.update(current => {
174
+ current.showBorderError = error;
175
+ return current;
176
+ });
177
+ });
178
+ }
179
+ async validate() {
180
+ let valid = true;
181
+ this.isError.set(false);
182
+ this.typeListDate().forEach((item, index) => {
183
+ item.update(current => {
184
+ current.showBorderError = false;
185
+ current.isError = false;
186
+ if (this.selectedSingle() && !this.selectedSingle()[current.id] && !current.disable) {
187
+ valid = false;
188
+ current.showBorderError = true;
189
+ if (index === 0 && this.typeListDate().length === 2) {
190
+ this.isError.set(true);
191
+ }
192
+ if (index === 1 && this.typeListDate().length === 2 && !this.isError()) {
193
+ current.isError = true;
194
+ }
195
+ }
196
+ return current;
197
+ });
198
+ });
199
+ return valid;
200
+ }
201
+ handlerChangFlagMouse(flagMouse) {
202
+ this.outChangStageFlagMouse.emit(flagMouse);
203
+ }
204
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
205
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsDatetimeDropdownItemComponent, isStandalone: true, selector: "libs_ui-components-datetime-dropdown-item", inputs: { typeDate: { classPropertyName: "typeDate", publicName: "typeDate", isSignal: true, isRequired: false, transformFunction: null }, disableSecond: { classPropertyName: "disableSecond", publicName: "disableSecond", isSignal: true, isRequired: false, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: false, transformFunction: null }, widthDropdown: { classPropertyName: "widthDropdown", publicName: "widthDropdown", isSignal: true, isRequired: false, transformFunction: null }, widthByElement: { classPropertyName: "widthByElement", publicName: "widthByElement", isSignal: true, isRequired: false, transformFunction: null }, getItemYearDisplay: { classPropertyName: "getItemYearDisplay", publicName: "getItemYearDisplay", isSignal: true, isRequired: false, transformFunction: null }, listHasButtonUnSelectOption: { classPropertyName: "listHasButtonUnSelectOption", publicName: "listHasButtonUnSelectOption", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, isMultiple: { classPropertyName: "isMultiple", publicName: "isMultiple", isSignal: true, isRequired: false, transformFunction: null }, classIncludeTextDisplayWhenNoSelect: { classPropertyName: "classIncludeTextDisplayWhenNoSelect", publicName: "classIncludeTextDisplayWhenNoSelect", isSignal: true, isRequired: false, transformFunction: null }, isCheckErrorWhenSelectItem: { classPropertyName: "isCheckErrorWhenSelectItem", publicName: "isCheckErrorWhenSelectItem", isSignal: true, isRequired: false, transformFunction: null }, maxYear: { classPropertyName: "maxYear", publicName: "maxYear", isSignal: true, isRequired: false, transformFunction: null }, minYear: { classPropertyName: "minYear", publicName: "minYear", isSignal: true, isRequired: false, transformFunction: null }, reverseYear: { classPropertyName: "reverseYear", publicName: "reverseYear", isSignal: true, isRequired: false, transformFunction: null }, listKeysDisable: { classPropertyName: "listKeysDisable", publicName: "listKeysDisable", isSignal: true, isRequired: false, transformFunction: null }, ignoreConvertYearSelected: { classPropertyName: "ignoreConvertYearSelected", publicName: "ignoreConvertYearSelected", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, isEmitSelectedDropDown: { classPropertyName: "isEmitSelectedDropDown", publicName: "isEmitSelectedDropDown", isSignal: true, isRequired: false, transformFunction: null }, listMaxItemShow: { classPropertyName: "listMaxItemShow", publicName: "listMaxItemShow", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outSelectedData: "outSelectedData", outFunctionControl: "outFunctionControl", outChangStageFlagMouse: "outChangStageFlagMouse" }, ngImport: i0, template: "<div class=\"\">\n <div class=\"flex items-start\">\n @if (typeListDate(); as typeListDate) {\n @for (item of typeListDate; track item().id; let last = $last; let i =$index; let first = $first) {\n <div [style.width]=\"widthByElement() | LibsUiComponentsDatetimeDropdownBuildWidthPipe :widthDropdown():first:isMultiple()\"\n [class.mr-[8px]]=\"!last && typeListDate.length ===2\"\n [style.minWidth.px]=\"widthDropdown()\">\n <libs_ui-components-datetime-dropdown-item-child [readonly]=\"readonly()\"\n [typeDate]=\"item().id\"\n [disable]=\"item().disable ?? disable()\"\n [listKeySelected]=\"item().keySelected\"\n [widthByElement]=\"widthByElement()\"\n [first]=\"first\"\n [widthDropdown]=\"widthDropdown()\"\n [listKeysDisable]=\"listKeysDisable()?.[item().id]?.()\"\n [listMaxItemShow]=\"listMaxItemShow()?.[item().id] ?? 6\"\n [isError]=\"item().isError\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [zIndex]=\"zIndex()\"\n [showBorderError]=\"item().showBorderError && !item().disable && !disable()\"\n [listData]=\"item().id | LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe :{minYear:minYear(), maxYear:maxYear(), reverseYear:reverseYear()} :keyMonthResetDay()\"\n [classIncludeTextDisplayWhenNoSelect]=\"classIncludeTextDisplayWhenNoSelect() ?? ''\"\n (outSelectedKey)=\"handlerSelectedKey($event, item, i)\"\n (outFunctionControl)=\"handlerFunctionControl($event, item)\"\n (outChangStageFlagMouse)=\"handlerChangFlagMouse($event)\" />\n </div>\n }\n }\n </div>\n\n @if (isError()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-message-error libs-ui-font-h7r\"\n [innerHtml]=\"(validRequired()?.message || 'i18n_valid_empty_message')| translate:validRequired()?.interpolateParams\"></span>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsDatetimeDropdownItemChildComponent, selector: "libs_ui-components-datetime-dropdown-item-child", inputs: ["typeDate", "getItemYearDisplay", "listHasButtonUnSelectOption", "readonly", "disable", "listData", "showBorderError", "listMaxItemShow", "zIndex", "classIncludeTextDisplayWhenNoSelect", "listKeySelected", "widthDropdown", "first", "isError", "widthByElement", "ignoreConvertYearSelected", "listKeysDisable", "validRequired"], outputs: ["outSelectedKey", "outFunctionControl", "outChangStageFlagMouse"] }, { kind: "pipe", type: LibsUiComponentsDatetimeDropdownBuildWidthPipe, name: "LibsUiComponentsDatetimeDropdownBuildWidthPipe" }, { kind: "pipe", type: LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe, name: "LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe" }] });
206
+ }
207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownItemComponent, decorators: [{
208
+ type: Component,
209
+ args: [{ selector: 'libs_ui-components-datetime-dropdown-item', standalone: true, imports: [
210
+ TranslateModule,
211
+ LibsUiComponentsDatetimeDropdownItemChildComponent,
212
+ LibsUiComponentsDatetimeDropdownBuildWidthPipe,
213
+ LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe
214
+ ], template: "<div class=\"\">\n <div class=\"flex items-start\">\n @if (typeListDate(); as typeListDate) {\n @for (item of typeListDate; track item().id; let last = $last; let i =$index; let first = $first) {\n <div [style.width]=\"widthByElement() | LibsUiComponentsDatetimeDropdownBuildWidthPipe :widthDropdown():first:isMultiple()\"\n [class.mr-[8px]]=\"!last && typeListDate.length ===2\"\n [style.minWidth.px]=\"widthDropdown()\">\n <libs_ui-components-datetime-dropdown-item-child [readonly]=\"readonly()\"\n [typeDate]=\"item().id\"\n [disable]=\"item().disable ?? disable()\"\n [listKeySelected]=\"item().keySelected\"\n [widthByElement]=\"widthByElement()\"\n [first]=\"first\"\n [widthDropdown]=\"widthDropdown()\"\n [listKeysDisable]=\"listKeysDisable()?.[item().id]?.()\"\n [listMaxItemShow]=\"listMaxItemShow()?.[item().id] ?? 6\"\n [isError]=\"item().isError\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [zIndex]=\"zIndex()\"\n [showBorderError]=\"item().showBorderError && !item().disable && !disable()\"\n [listData]=\"item().id | LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe :{minYear:minYear(), maxYear:maxYear(), reverseYear:reverseYear()} :keyMonthResetDay()\"\n [classIncludeTextDisplayWhenNoSelect]=\"classIncludeTextDisplayWhenNoSelect() ?? ''\"\n (outSelectedKey)=\"handlerSelectedKey($event, item, i)\"\n (outFunctionControl)=\"handlerFunctionControl($event, item)\"\n (outChangStageFlagMouse)=\"handlerChangFlagMouse($event)\" />\n </div>\n }\n }\n </div>\n\n @if (isError()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-message-error libs-ui-font-h7r\"\n [innerHtml]=\"(validRequired()?.message || 'i18n_valid_empty_message')| translate:validRequired()?.interpolateParams\"></span>\n </div>\n }\n</div>\n" }]
215
+ }], ctorParameters: () => [] });
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2l0ZW0vaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2l0ZW0vaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUc1RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJdEQsT0FBTyxFQUFFLHVEQUF1RCxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakgsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtEQUFrRCxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQWU3RixNQUFNLE9BQU8sNkNBQTZDO0lBQ3hELGNBQWM7SUFDSixZQUFZLEdBQUcsTUFBTSxDQUFtQyxFQUFFLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsR0FBRyxNQUFNLENBQU0sU0FBUyxDQUFDLENBQUM7SUFDMUMsY0FBYyxHQUFHLE1BQU0sQ0FBMEIsRUFBRSxDQUFDLENBQUM7SUFDckQsT0FBTyxHQUFHLE1BQU0sQ0FBc0IsU0FBUyxDQUFDLENBQUM7SUFFM0QsV0FBVztJQUNGLFFBQVEsR0FBRyxLQUFLLENBQXdDLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLGFBQWEsR0FBRyxLQUFLLENBQXNCLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELFlBQVksR0FBRyxLQUFLLENBQXNDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JFLGFBQWEs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aW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGlucHV0LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtZHJvcGRvd25cIjtcbmltcG9ydCB7IElGbGFnTW91c2UgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgSURhdGVEcm9wZG93bkRpc2FibGUsIElUeXBlRGF0ZSwgVFlQRV9EQVRFX0RST1BET1dOX0ZPUk1BVCwgVFlQRV9EQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2RhdGUtZHJvcGRvd24uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBJRW1pdFNpbmdsZURhdGVEcm9wZG93biB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2VtaXQtZHJvcGRvd24uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBJRGF0ZURyb3Bkb3duSXRlbUZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZnVuY3Rpb25zLWNvbnRyb2wtZXZlbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkTGlzdEJ5RGF0ZVR5cGVQaXBlIH0gZnJvbSBcIi4uL3BpcGVzL2J1aWxkLWxpc3QtYnktZGF0ZS10eXBlLS5waXBlXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlIH0gZnJvbSBcIi4uL3BpcGVzL2J1aWxkLXdpZHRoLnBpcGVcIjtcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duSXRlbUNoaWxkQ29tcG9uZW50IH0gZnJvbSBcIi4vY2hpbGQvY2hpbGQuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1kcm9wZG93bi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICdpdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkl0ZW1DaGlsZENvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duQnVpbGRMaXN0QnlEYXRlVHlwZVBpcGVcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qIFBST1BFUlRZICovXG4gIHByb3RlY3RlZCB0eXBlTGlzdERhdGUgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SVR5cGVEYXRlPj4+KFtdKTtcbiAgcHJvdGVjdGVkIGtleU1vbnRoUmVzZXREYXkgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRTaW5nbGUgPSBzaWduYWw8SUVtaXRTaW5nbGVEYXRlRHJvcGRvd24+KHt9KTtcbiAgcHJvdGVjdGVkIGlzRXJyb3IgPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiBJTlBVVCAqL1xuICByZWFkb25seSB0eXBlRGF0ZSA9IGlucHV0PFRZUEVfREFURV9EUk9QRE9XTl9GT1JNQVQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRpc2FibGVTZWNvbmQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBzZWxlY3RlZERhdGUgPSBpbnB1dDxJRW1pdFNpbmdsZURhdGVEcm9wZG93biB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgd2lkdGhEcm9wZG93biA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMzYsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDEzNiB9KTtcbiAgcmVhZG9ubHkgd2lkdGhCeUVsZW1lbnQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBnZXRJdGVtWWVhckRpc3BsYXkgPSBpbnB1dDwoKHllYXI6IHN0cmluZykgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbGlzdEhhc0J1dHRvblVuU2VsZWN0T3B0aW9uID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMjAwLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAxMjAwIH0pO1xuICByZWFkb25seSBpc011bHRpcGxlID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3QgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzQ2hlY2tFcnJvcldoZW5TZWxlY3RJdGVtID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbWF4WWVhciA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbWluWWVhciA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmV2ZXJzZVllYXIgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkLCBib29sZWFuIHwgdW5kZWZpbmVkPih0cnVlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyB0cnVlIH0pO1xuICByZWFkb25seSBsaXN0S2V5c0Rpc2FibGUgPSBpbnB1dDxJRGF0ZURyb3Bkb3duRGlzYWJsZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgaWdub3JlQ29udmVydFllYXJTZWxlY3RlZCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDx7IG1lc3NhZ2U/OiBzdHJpbmc7IGludGVycG9sYXRlUGFyYW1zPzogeyBhbnk6IG9iamVjdCB9IH0gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzRW1pdFNlbGVjdGVkRHJvcERvd24gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBsaXN0TWF4SXRlbVNob3cgPSBpbnB1dDx7IHllYXI/OiBudW1iZXI7IG1vbnRoPzogbnVtYmVyOyBxdWFydGVyPzogbnVtYmVyOyBkYXk/OiBudW1iZXIgfSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiBPVVRQVVQgKi9cbiAgcmVhZG9ubHkgb3V0U2VsZWN0ZWREYXRhID0gb3V0cHV0PElFbWl0U2luZ2xlRGF0ZURyb3Bkb3duPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbkNvbnRyb2wgPSBvdXRwdXQ8SURhdGVEcm9wZG93bkl0ZW1GdW5jdGlvbkNvbnRyb2xFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0eXBlRGF0ZSA9IHRoaXMudHlwZURhdGUoKTtcbiAgICAgIGlmICghdHlwZURhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHR5cGVEYXRlLnNwbGl0KCctJykgYXMgQXJyYXk8VFlQRV9EQVRFX0ZPUk1BVD47XG5cbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGRhdGEubWFwKGl0ZW0gPT4geyByZXR1cm4gc2lnbmFsKHsgaWQ6IChpdGVtIHx8ICdtb250aCcpIGFzIFRZUEVfREFURV9GT1JNQVQsIGtleVNlbGVjdGVkOiB1bmRlZmluZWQgfSkgfSkgfHwgW107XG4gICAgICAgIHRoaXMudHlwZUxpc3REYXRlLnNldChyZXN1bHRzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZSgpO1xuXG4gICAgICBpZiAoIXNlbGVjdGVkRGF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTaW5nbGUuc2V0KHNlbGVjdGVkRGF0ZSk7XG4gICAgICAgIGlmICghdGhpcy50eXBlTGlzdERhdGUoKS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudHlwZURhdGUoKSA9PT0gJ21vbnRoLWRheScgJiYgc2VsZWN0ZWREYXRlLm1vbnRoKSB7XG4gICAgICAgICAgdGhpcy5rZXlNb250aFJlc2V0RGF5LnNldChzZWxlY3RlZERhdGUubW9udGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpdGVtLnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgICAgIGN1cnJlbnQua2V5U2VsZWN0ZWQgPSBzZWxlY3RlZERhdGVbY3VycmVudC5pZF0gPz8gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKCh0aGlzLmRpc2FibGVTZWNvbmQoKSAmJiBpbmRleCAhPT0gMCAmJiAhY3VycmVudC5rZXlTZWxlY3RlZCkgfHwgKCFzZWxlY3RlZERhdGVbJ21vbnRoJ10gJiYgdGhpcy50eXBlRGF0ZSgpID09PSAnbW9udGgtZGF5JyAmJiBpdGVtKCkuaWQgPT09ICdkYXknKSkge1xuICAgICAgICAgICAgICBjdXJyZW50LmRpc2FibGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3V0RnVuY3Rpb25Db250cm9sLmVtaXQoe1xuICAgICAgY2hlY2tJc1ZhbGlkOiB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcyksXG4gICAgICByZXNldERyb3Bkb3duOiB0aGlzLnJlc2V0RHJvcGRvd24uYmluZCh0aGlzKSxcbiAgICAgIHJlc2V0RXJyb3I6IHRoaXMucmVzZXRFcnJvci5iaW5kKHRoaXMpLFxuICAgICAgc2V0RXJyb3I6IHRoaXMuc2V0RXJyb3IuYmluZCh0aGlzKVxuICAgIH0pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBoYW5kbGVyU2VsZWN0ZWRLZXkoZXZlbnQ6IGFueSwgdHlwZURhdGU6IFdyaXRhYmxlU2lnbmFsPElUeXBlRGF0ZT4sIGk6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkU2luZ2xlKClbdHlwZURhdGUoKS5pZF0gPT09IGV2ZW50ICYmIHRoaXMuaXNFbWl0U2VsZWN0ZWREcm9wRG93bigpKSB7XG4gICAgICB0aGlzLm91dFNlbGVjdGVkRGF0YS5lbWl0KHRoaXMuc2VsZWN0ZWRTaW5nbGUoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHlwZURhdGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgY3VycmVudC5rZXlTZWxlY3RlZCA9IGV2ZW50O1xuXG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2luZ2xlKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaW5nbGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50W3R5cGVEYXRlKCkuaWRdID0gZXZlbnQgPyBOdW1iZXIoZXZlbnQpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGVTZWNvbmQoKSB8fCAodGhpcy50eXBlRGF0ZSgpID09PSAnbW9udGgtZGF5JyAmJiB0eXBlRGF0ZSgpLmlkID09PSAnbW9udGgnKSkge1xuICAgICAgdGhpcy5rZXlNb250aFJlc2V0RGF5LnNldChldmVudCk7XG4gICAgICB0aGlzLnR5cGVMaXN0RGF0ZSgpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgIGN1cnJlbnQuZGlzYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gMSAmJiBpdGVtKCkuZnVuY3Rpb25Db250cm9sICYmIGkgPT09IDApIHtcbiAgICAgICAgaXRlbSgpLmZ1bmN0aW9uQ29udHJvbD8ucmVzZXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodHlwZURhdGUoKS5rZXlTZWxlY3RlZCAmJiAhdGhpcy5pc0NoZWNrRXJyb3JXaGVuU2VsZWN0SXRlbSgpKSB7XG4gICAgICB0eXBlRGF0ZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQuc2hvd0JvcmRlckVycm9yID0gZmFsc2U7XG4gICAgICAgIGN1cnJlbnQuaXNFcnJvciA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNoZWNrRXJyb3IoKTtcbiAgICB9XG4gICAgdGhpcy5vdXRTZWxlY3RlZERhdGEuZW1pdCh0aGlzLnNlbGVjdGVkU2luZ2xlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrRXJyb3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGlzRXJyb3IgPSBmYWxzZTtcblxuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtKCkuc2hvd0JvcmRlckVycm9yKSB7XG4gICAgICAgIGlzRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFpc0Vycm9yKSB7XG4gICAgICB0aGlzLmlzRXJyb3Iuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uQ29udHJvbChldmVudDogSURyb3Bkb3duRnVuY3Rpb25Db250cm9sRXZlbnQsIGl0ZW06IFdyaXRhYmxlU2lnbmFsPElUeXBlRGF0ZT4pIHtcbiAgICBpdGVtLnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgIGN1cnJlbnQuZnVuY3Rpb25Db250cm9sID0gZXZlbnQ7XG5cbiAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldERyb3Bkb3duKCkge1xuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaW5nbGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50W2l0ZW0oKS5pZF0gPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcblxuICAgICAgaXRlbS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQua2V5U2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGN1cnJlbnQuZnVuY3Rpb25Db250cm9sPy5yZXNldCgpO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG4gICAgdGhpcy5vdXRTZWxlY3RlZERhdGEuZW1pdCh0aGlzLnNlbGVjdGVkU2luZ2xlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldEVycm9yKCkge1xuICAgIHRoaXMuaXNFcnJvci5zZXQoZmFsc2UpO1xuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LmlzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgY3VycmVudC5zaG93Qm9yZGVyRXJyb3IgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRFcnJvcihlcnJvcjogYm9vbGVhbikge1xuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnNob3dCb3JkZXJFcnJvciA9IGVycm9yO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlKCkge1xuICAgIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgICB0aGlzLmlzRXJyb3Iuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnR5cGVMaXN0RGF0ZSgpLmZvckVhY2goKGl0ZW0sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnNob3dCb3JkZXJFcnJvciA9IGZhbHNlO1xuICAgICAgICBjdXJyZW50LmlzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTaW5nbGUoKSAmJiAhdGhpcy5zZWxlY3RlZFNpbmdsZSgpW2N1cnJlbnQuaWRdICYmICFjdXJyZW50LmRpc2FibGUpIHtcbiAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgIGN1cnJlbnQuc2hvd0JvcmRlckVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IDAgJiYgdGhpcy50eXBlTGlzdERhdGUoKS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFcnJvci5zZXQodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbmRleCA9PT0gMSAmJiB0aGlzLnR5cGVMaXN0RGF0ZSgpLmxlbmd0aCA9PT0gMiAmJiAhdGhpcy5pc0Vycm9yKCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnQuaXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdGbGFnTW91c2UoZmxhZ01vdXNlOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ01vdXNlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIlwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydFwiPlxuICAgIEBpZiAodHlwZUxpc3REYXRlKCk7IGFzIHR5cGVMaXN0RGF0ZSkge1xuICAgICAgQGZvciAoaXRlbSBvZiB0eXBlTGlzdERhdGU7IHRyYWNrIGl0ZW0oKS5pZDsgbGV0IGxhc3QgPSAkbGFzdDsgbGV0IGkgPSRpbmRleDsgbGV0IGZpcnN0ID0gJGZpcnN0KSB7XG4gICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIndpZHRoQnlFbGVtZW50KCkgfCBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlIDp3aWR0aERyb3Bkb3duKCk6Zmlyc3Q6aXNNdWx0aXBsZSgpXCJcbiAgICAgICAgICBbY2xhc3MubXItWzhweF1dPVwiIWxhc3QgJiYgdHlwZUxpc3REYXRlLmxlbmd0aCA9PT0yXCJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwid2lkdGhEcm9wZG93bigpXCI+XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1kcm9wZG93bi1pdGVtLWNoaWxkIFtyZWFkb25seV09XCJyZWFkb25seSgpXCJcbiAgICAgICAgICAgIFt0eXBlRGF0ZV09XCJpdGVtKCkuaWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVdPVwiaXRlbSgpLmRpc2FibGUgPz8gZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIFtsaXN0S2V5U2VsZWN0ZWRdPVwiaXRlbSgpLmtleVNlbGVjdGVkXCJcbiAgICAgICAgICAgIFt3aWR0aEJ5RWxlbWVudF09XCJ3aWR0aEJ5RWxlbWVudCgpXCJcbiAgICAgICAgICAgIFtmaXJzdF09XCJmaXJzdFwiXG4gICAgICAgICAgICBbd2lkdGhEcm9wZG93bl09XCJ3aWR0aERyb3Bkb3duKClcIlxuICAgICAgICAgICAgW2xpc3RLZXlzRGlzYWJsZV09XCJsaXN0S2V5c0Rpc2FibGUoKT8uW2l0ZW0oKS5pZF0/LigpXCJcbiAgICAgICAgICAgIFtsaXN0TWF4SXRlbVNob3ddPVwibGlzdE1heEl0ZW1TaG93KCk/LltpdGVtKCkuaWRdID8/IDZcIlxuICAgICAgICAgICAgW2lzRXJyb3JdPVwiaXRlbSgpLmlzRXJyb3JcIlxuICAgICAgICAgICAgW2xpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbl09XCJsaXN0SGFzQnV0dG9uVW5TZWxlY3RPcHRpb24oKVwiXG4gICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgICAgIFtzaG93Qm9yZGVyRXJyb3JdPVwiaXRlbSgpLnNob3dCb3JkZXJFcnJvciAmJiAhaXRlbSgpLmRpc2FibGUgJiYgIWRpc2FibGUoKVwiXG4gICAgICAgICAgICBbbGlzdERhdGFdPVwiaXRlbSgpLmlkIHwgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lRHJvcGRvd25CdWlsZExpc3RCeURhdGVUeXBlUGlwZSA6e21pblllYXI6bWluWWVhcigpLCBtYXhZZWFyOm1heFllYXIoKSwgcmV2ZXJzZVllYXI6cmV2ZXJzZVllYXIoKX0gOmtleU1vbnRoUmVzZXREYXkoKVwiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3RdPVwiY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3QoKSA/PyAnJ1wiXG4gICAgICAgICAgICAob3V0U2VsZWN0ZWRLZXkpPVwiaGFuZGxlclNlbGVjdGVkS2V5KCRldmVudCwgaXRlbSwgaSlcIlxuICAgICAgICAgICAgKG91dEZ1bmN0aW9uQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25Db250cm9sKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nRmxhZ01vdXNlKCRldmVudClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuXG4gIEBpZiAoaXNFcnJvcigpKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LVs0cHhdXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktbWVzc2FnZS1lcnJvciBsaWJzLXVpLWZvbnQtaDdyXCJcbiAgICAgICAgW2lubmVySHRtbF09XCIodmFsaWRSZXF1aXJlZCgpPy5tZXNzYWdlIHx8ICdpMThuX3ZhbGlkX2VtcHR5X21lc3NhZ2UnKXwgdHJhbnNsYXRlOnZhbGlkUmVxdWlyZWQoKT8uaW50ZXJwb2xhdGVQYXJhbXNcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -0,0 +1,19 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Pipe } from "@angular/core";
3
+ import { buildListDataByTypeDate } from "../defines/date-dropdown.define";
4
+ import * as i0 from "@angular/core";
5
+ export class LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe {
6
+ transform(type, dataYear, keyMonth) {
7
+ return buildListDataByTypeDate(type, dataYear, keyMonth);
8
+ }
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe, isStandalone: true, name: "LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe" });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{
15
+ name: 'LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe',
16
+ standalone: true
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtbGlzdC1ieS1kYXRlLXR5cGUtLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL3BpcGVzL2J1aWxkLWxpc3QtYnktZGF0ZS10eXBlLS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFPMUUsTUFBTSxPQUFPLHVEQUF1RDtJQUNsRSxTQUFTLENBQUMsSUFBc0IsRUFBRSxRQUF1RSxFQUFFLFFBQWE7UUFDdEgsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUM7d0dBSFUsdURBQXVEO3NHQUF2RCx1REFBdUQ7OzRGQUF2RCx1REFBdUQ7a0JBTG5FLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHlEQUF5RDtvQkFDL0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUWVBFX0RBVEVfRk9STUFUIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZGF0ZS1kcm9wZG93bi5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IGJ1aWxkTGlzdERhdGFCeVR5cGVEYXRlIH0gZnJvbSBcIi4uL2RlZmluZXMvZGF0ZS1kcm9wZG93bi5kZWZpbmVcIjtcblxuQFBpcGUoe1xuICBuYW1lOiAnTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lRHJvcGRvd25CdWlsZExpc3RCeURhdGVUeXBlUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5cbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkTGlzdEJ5RGF0ZVR5cGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh0eXBlOiBUWVBFX0RBVEVfRk9STUFULCBkYXRhWWVhcjogeyBtaW5ZZWFyPzogbnVtYmVyLCBtYXhZZWFyPzogbnVtYmVyLCByZXZlcnNlWWVhcj86IGJvb2xlYW4gfSwga2V5TW9udGg6IGFueSk6IEFycmF5PHsgaWQ6IG51bWJlciwgbGFiZWw6IHN0cmluZyB9PiB7XG4gICAgcmV0dXJuIGJ1aWxkTGlzdERhdGFCeVR5cGVEYXRlKHR5cGUsIGRhdGFZZWFyLCBrZXlNb250aCk7XG4gIH1cbn0gIl19
@@ -0,0 +1,23 @@
1
+ import { Pipe } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class LibsUiComponentsDatetimeDropdownBuildWidthPipe {
4
+ transform(widthByElement, widthDropdown, first, multiDate) {
5
+ if (widthByElement) {
6
+ return first ? `${widthDropdown}px` : '100%';
7
+ }
8
+ if (multiDate) {
9
+ return first ? `${widthDropdown}px` : '100%';
10
+ }
11
+ return `${widthDropdown}px`;
12
+ }
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownBuildWidthPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
14
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownBuildWidthPipe, isStandalone: true, name: "LibsUiComponentsDatetimeDropdownBuildWidthPipe" });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimeDropdownBuildWidthPipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{
19
+ name: 'LibsUiComponentsDatetimeDropdownBuildWidthPipe',
20
+ standalone: true
21
+ }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd2lkdGgucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kYXRldGltZS9kcm9wZG93bi9zcmMvcGlwZXMvYnVpbGQtd2lkdGgucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLDhDQUE4QztJQUN6RCxTQUFTLENBQUMsY0FBbUMsRUFBRSxhQUFxQixFQUFFLEtBQWMsRUFBRSxTQUE4QjtRQUNsSCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDL0MsQ0FBQztRQUVELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQy9DLENBQUM7UUFFRCxPQUFPLEdBQUcsYUFBYSxJQUFJLENBQUM7SUFDOUIsQ0FBQzt3R0FYVSw4Q0FBOEM7c0dBQTlDLDhDQUE4Qzs7NEZBQTlDLDhDQUE4QztrQkFMMUQsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZ0RBQWdEO29CQUN0RCxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQFBpcGUoe1xuICBuYW1lOiAnTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lRHJvcGRvd25CdWlsZFdpZHRoUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5cbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh3aWR0aEJ5RWxlbWVudDogYm9vbGVhbiB8IHVuZGVmaW5lZCwgd2lkdGhEcm9wZG93bjogbnVtYmVyLCBmaXJzdDogYm9vbGVhbiwgbXVsdGlEYXRlOiBib29sZWFuIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAod2lkdGhCeUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmaXJzdCA/IGAke3dpZHRoRHJvcGRvd259cHhgIDogJzEwMCUnO1xuICAgIH1cblxuICAgIGlmIChtdWx0aURhdGUpIHtcbiAgICAgIHJldHVybiBmaXJzdCA/IGAke3dpZHRoRHJvcGRvd259cHhgIDogJzEwMCUnO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt3aWR0aERyb3Bkb3dufXB4YDtcbiAgfVxufSAiXX0=