mis-crystal-design-system 18.0.25 → 18.1.0-signal-test
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/action-list/action-list.component.d.ts +17 -15
- package/async-search-dropdown/async-dropdown.component.d.ts +43 -61
- package/button/button.component.d.ts +35 -13
- package/button/button.directive.d.ts +10 -8
- package/button/button.directive.scss +13 -15
- package/checkbox/checkbox.component.d.ts +15 -12
- package/chip/chip.component.d.ts +9 -11
- package/datepicker_v2/models/dp-config.model.d.ts +1 -0
- package/datepicker_v2/tz-datepicker.directive.d.ts +15 -18
- package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +42 -21
- package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +12 -14
- package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +46 -23
- package/drawer/drawer-body/drawer-body.component.d.ts +2 -2
- package/drawer/drawer.scss +1 -1
- package/dropdown/calculate-container-height.directive.d.ts +7 -8
- package/dropdown/dropdown.component.d.ts +41 -49
- package/dynamic-form/dynamic-form.component.d.ts +20 -16
- package/esm2022/action-list/action-list.component.mjs +113 -90
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +257 -327
- package/esm2022/button/button.component.mjs +56 -49
- package/esm2022/button/button.directive.mjs +36 -40
- package/esm2022/checkbox/checkbox.component.mjs +75 -70
- package/esm2022/chip/chip.component.mjs +20 -33
- package/esm2022/datepicker_v2/models/dp-config.model.mjs +1 -1
- package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +42 -71
- package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +203 -173
- package/esm2022/datepicker_v2/utils/index.mjs +2 -1
- package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +26 -51
- package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +283 -236
- package/esm2022/drawer/drawer-body/drawer-body.component.mjs +8 -7
- package/esm2022/dropdown/calculate-container-height.directive.mjs +25 -22
- package/esm2022/dropdown/dropdown.component.mjs +163 -187
- package/esm2022/dynamic-form/dynamic-form.component.mjs +119 -73
- package/esm2022/fab/fab.component.mjs +30 -34
- package/esm2022/filter/filter-panel/filter-panel.component.mjs +61 -59
- package/esm2022/input/directives/input/input.directive.mjs +22 -26
- package/esm2022/input/mis-input.component.mjs +42 -46
- package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +42 -52
- package/esm2022/loader/loader.component.mjs +8 -11
- package/esm2022/mobile-filter/mobile-filter.component.mjs +62 -62
- package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +11 -9
- package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +235 -281
- package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +250 -287
- package/esm2022/phone-input/phone-input.component.mjs +21 -43
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/radio-button/radio-button.component.mjs +15 -27
- package/esm2022/ske-loader/ske-loader.component.mjs +15 -29
- package/esm2022/slider/slider.component.mjs +23 -33
- package/esm2022/slider/slider.module.mjs +4 -11
- package/esm2022/snackbar/snackbar/snackbar.component.mjs +21 -15
- package/esm2022/snackbar/snackbar.service.mjs +3 -2
- package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +231 -344
- package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +77 -105
- package/esm2022/star-rating/star-rating.component.mjs +58 -72
- package/esm2022/switch/switch.component.mjs +34 -36
- package/esm2022/table/actions-cell/actions-cell.component.mjs +56 -55
- package/esm2022/table/custom-table-cell.directive.mjs +22 -18
- package/esm2022/table/filter/filter.component.mjs +60 -42
- package/esm2022/table/sort-icons.directive.mjs +16 -8
- package/esm2022/table/sub-table/sub-table.component.mjs +42 -45
- package/esm2022/table/table.component.mjs +182 -166
- package/esm2022/timepicker/timepicker.component.mjs +245 -160
- package/esm2022/timepicker/timepicker.directive.mjs +3 -2
- package/esm2022/timerangepicker/timerangepicker.component.mjs +200 -159
- package/esm2022/toast/toast.component.mjs +7 -8
- package/esm2022/toast/toast.data.service.mjs +15 -9
- package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +12 -12
- package/esm2022/tooltip/tooltip.directive.mjs +4 -4
- package/esm2022/virtual-scroll/virtual-scroll.component.mjs +57 -59
- package/fab/fab.component.d.ts +12 -8
- package/fesm2022/mis-crystal-design-system-action-list.mjs +112 -89
- package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +254 -325
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-button.mjs +89 -86
- package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-checkbox.mjs +74 -69
- package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-chip.mjs +19 -32
- package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +243 -241
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +306 -284
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-drawer.mjs +7 -6
- package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dropdown.mjs +184 -205
- package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +119 -73
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-fab.mjs +29 -33
- package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-filter.mjs +60 -58
- package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs +41 -51
- package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input.mjs +62 -71
- package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-loader.mjs +7 -10
- package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +61 -61
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-modal.mjs +10 -8
- package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +233 -279
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +249 -286
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-phone-input.mjs +20 -42
- package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-radio-button.mjs +14 -26
- package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs +14 -28
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-slider.mjs +25 -42
- package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-snackbar.mjs +22 -15
- package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +305 -446
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-star-rating.mjs +57 -71
- package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-switch.mjs +33 -35
- package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +368 -324
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timepicker.mjs +246 -160
- package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +199 -158
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-toast.mjs +19 -14
- package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-tooltip.mjs +14 -14
- package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +57 -59
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system.mjs.map +1 -1
- package/filter/filter-panel/filter-panel.component.d.ts +14 -14
- package/input/directives/input/input.directive.d.ts +6 -10
- package/input/mis-input.component.d.ts +12 -13
- package/input/mis-input.component.scss +18 -18
- package/input-stepper/input-stepper/input-stepper.component.d.ts +8 -7
- package/loader/loader.component.d.ts +3 -6
- package/mobile-filter/mobile-filter.component.d.ts +15 -15
- package/modal/modal.scss +1 -1
- package/modal/module-wrapper/module-wrapper.component.d.ts +2 -3
- package/multi-select-dropdown/multi-select-dropdown.component.d.ts +89 -51
- package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +99 -56
- package/package.json +17 -23
- package/phone-input/phone-input.component.d.ts +16 -18
- package/radio-button/radio-button.component.d.ts +9 -11
- package/ske-loader/ske-loader.component.d.ts +8 -11
- package/slider/slider.component.d.ts +8 -11
- package/slider/slider.module.d.ts +1 -2
- package/snackbar/snackbar/snackbar.component.d.ts +3 -3
- package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +35 -35
- package/specificdatepicker/tz-specificdatepicker.directive.d.ts +24 -28
- package/star-rating/star-rating.component.d.ts +18 -18
- package/styles/mis-color-constants.scss +0 -204
- package/styles/mis-icons.scss +56 -56
- package/styles/mis-old-icon-styles.scss +21 -21
- package/switch/switch.component.d.ts +8 -10
- package/table/actions-cell/actions-cell.component.d.ts +14 -14
- package/table/custom-table-cell.directive.d.ts +3 -3
- package/table/filter/filter.component.d.ts +9 -9
- package/table/sub-table/sub-table.component.d.ts +5 -5
- package/table/table.component.d.ts +38 -35
- package/timepicker/timepicker.component.d.ts +29 -28
- package/timerangepicker/timerangepicker.component.d.ts +36 -33
- package/toast/toast.data.service.d.ts +1 -1
- package/tooltip/tooltip-container/tooltip.component.d.ts +4 -4
- package/virtual-scroll/virtual-scroll.component.d.ts +8 -9
- package/dynamic-theme/branding.types.d.ts +0 -84
- package/dynamic-theme/dynamic-theme.module.d.ts +0 -9
- package/dynamic-theme/dynamic-theme.service.d.ts +0 -89
- package/dynamic-theme/index.d.ts +0 -1
- package/dynamic-theme/public_api.d.ts +0 -3
- package/esm2022/dynamic-theme/branding.types.mjs +0 -93
- package/esm2022/dynamic-theme/dynamic-theme.module.mjs +0 -25
- package/esm2022/dynamic-theme/dynamic-theme.service.mjs +0 -193
- package/esm2022/dynamic-theme/index.mjs +0 -2
- package/esm2022/dynamic-theme/mis-crystal-design-system-dynamic-theme.mjs +0 -5
- package/esm2022/dynamic-theme/public_api.mjs +0 -4
- package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs +0 -313
- package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, signal, computed, input, output } from '@angular/core';
|
|
2
2
|
import { slideFromRight } from '../animations/slideFromRight';
|
|
3
3
|
import { FormControl, FormGroup } from '@angular/forms';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -94,7 +94,7 @@ function FilterPanelComponent_div_0_ng_container_9_div_1_ng_container_7_Template
|
|
|
94
94
|
const filter_r4 = i0.ɵɵnextContext(2).$implicit;
|
|
95
95
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
96
96
|
i0.ɵɵadvance(2);
|
|
97
|
-
i0.ɵɵproperty("placeholder", !ctx_r1.dateRangeSelectedDates.startDate && !ctx_r1.dateRangeSelectedDates.endDate ? filter_r4.placeholder || "Select" : ctx_r1.dateRangeSelectedDates.startDate + " - " + ctx_r1.dateRangeSelectedDates.endDate)("value", !ctx_r1.dateRangeSelectedDates.startDate && !ctx_r1.dateRangeSelectedDates.endDate ? filter_r4.placeholder || "Select" : ctx_r1.dateRangeSelectedDates.startDate + " - " + ctx_r1.dateRangeSelectedDates.endDate)("positionX", "start")("positionY", "top")("selectedDates", ctx_r1.dateRangeSelectedDates)("dpConfig", filter_r4.dateRangePickerConfig);
|
|
97
|
+
i0.ɵɵproperty("placeholder", !ctx_r1.dateRangeSelectedDates().startDate && !ctx_r1.dateRangeSelectedDates().endDate ? filter_r4.placeholder || "Select" : ctx_r1.dateRangeSelectedDates().startDate + " - " + ctx_r1.dateRangeSelectedDates().endDate)("value", !ctx_r1.dateRangeSelectedDates().startDate && !ctx_r1.dateRangeSelectedDates().endDate ? filter_r4.placeholder || "Select" : ctx_r1.dateRangeSelectedDates().startDate + " - " + ctx_r1.dateRangeSelectedDates().endDate)("positionX", "start")("positionY", "top")("selectedDates", ctx_r1.dateRangeSelectedDates())("dpConfig", filter_r4.dateRangePickerConfig);
|
|
98
98
|
} }
|
|
99
99
|
function FilterPanelComponent_div_0_ng_container_9_div_1_ng_container_8_Template(rf, ctx) { if (rf & 1) {
|
|
100
100
|
i0.ɵɵelementContainerStart(0);
|
|
@@ -217,7 +217,7 @@ function FilterPanelComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
217
217
|
i0.ɵɵadvance(8);
|
|
218
218
|
i0.ɵɵproperty("formGroup", ctx_r1.filterForm);
|
|
219
219
|
i0.ɵɵadvance();
|
|
220
|
-
i0.ɵɵproperty("ngForOf", ctx_r1.config);
|
|
220
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.config());
|
|
221
221
|
i0.ɵɵadvance(2);
|
|
222
222
|
i0.ɵɵproperty("name", "Clear All")("size", "Small")("type", "Text");
|
|
223
223
|
i0.ɵɵadvance();
|
|
@@ -226,26 +226,52 @@ function FilterPanelComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
226
226
|
export class FilterPanelComponent {
|
|
227
227
|
constructor(hasValue) {
|
|
228
228
|
this.hasValue = hasValue;
|
|
229
|
-
|
|
230
|
-
this.
|
|
231
|
-
this.config =
|
|
232
|
-
this.emitFiltersAfterSettingNewValues = false;
|
|
233
|
-
|
|
234
|
-
this.
|
|
229
|
+
// Signal inputs replacing @Input()
|
|
230
|
+
this.show = input(false);
|
|
231
|
+
this.config = input.required();
|
|
232
|
+
this.emitFiltersAfterSettingNewValues = input(false);
|
|
233
|
+
// Signal outputs replacing @Output()
|
|
234
|
+
this.onClose = output();
|
|
235
|
+
this.onApply = output();
|
|
236
|
+
this.filterForm = new FormGroup({});
|
|
237
|
+
this.dateRangeSelectedDates = signal({
|
|
235
238
|
startDate: '',
|
|
236
239
|
endDate: '',
|
|
237
|
-
};
|
|
240
|
+
});
|
|
241
|
+
// Computed signal for filter count
|
|
242
|
+
this.filterCount = computed(() => {
|
|
243
|
+
let count = 0;
|
|
244
|
+
const formValue = this.filterForm.value;
|
|
245
|
+
// Access the config signal value by calling it like a function
|
|
246
|
+
this.config().forEach((filter) => {
|
|
247
|
+
const value = formValue[filter.key];
|
|
248
|
+
if (this.hasValue.transform(value)) {
|
|
249
|
+
if (filter.type === 'range') {
|
|
250
|
+
if (value.min !== null || value.max !== null) {
|
|
251
|
+
count++;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
else if (filter.type === 'multiSelect' || filter.type === 'checkbox') {
|
|
255
|
+
if (value.length > 0) {
|
|
256
|
+
count++;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
count++;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
return count;
|
|
265
|
+
});
|
|
238
266
|
}
|
|
239
267
|
ngOnInit() {
|
|
240
|
-
|
|
268
|
+
// Access the config signal value by calling it like a function
|
|
269
|
+
this.initializeFormControls(this.config());
|
|
241
270
|
}
|
|
242
|
-
ngOnChanges
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
}
|
|
247
|
-
initializeFormControls() {
|
|
248
|
-
this.config.forEach((filter) => {
|
|
271
|
+
// The ngOnChanges lifecycle hook is no longer necessary with signal inputs.
|
|
272
|
+
initializeFormControls(config) {
|
|
273
|
+
this.filterForm = new FormGroup({});
|
|
274
|
+
config.forEach((filter) => {
|
|
249
275
|
let control;
|
|
250
276
|
if (filter.type === 'range') {
|
|
251
277
|
control = new FormGroup({
|
|
@@ -284,66 +310,52 @@ export class FilterPanelComponent {
|
|
|
284
310
|
else {
|
|
285
311
|
this.clearFormValues();
|
|
286
312
|
}
|
|
313
|
+
// Emit the close event using the signal output
|
|
287
314
|
this.onClose.emit();
|
|
288
315
|
}
|
|
289
|
-
filterCount() {
|
|
290
|
-
let count = 0;
|
|
291
|
-
this.config.forEach((filter) => {
|
|
292
|
-
if (this.hasValue.transform(this.filterForm.get(filter.key).value)) {
|
|
293
|
-
if (filter.type === 'range' && this.filterForm.get(filter.key).value.min == null && this.filterForm.get(filter.key).value.max == null) {
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
count++;
|
|
297
|
-
}
|
|
298
|
-
});
|
|
299
|
-
return count;
|
|
300
|
-
}
|
|
301
316
|
applyFilters() {
|
|
302
317
|
if (this.filterForm.invalid) {
|
|
303
318
|
this.filterForm.markAllAsTouched();
|
|
304
319
|
return;
|
|
305
320
|
}
|
|
306
321
|
this.lastAppliedData = { ...this.filterForm.value };
|
|
322
|
+
// Emit the apply event with the filter data using the signal output
|
|
307
323
|
this.onApply.emit({
|
|
308
324
|
filterData: this.filterForm.value,
|
|
309
325
|
filterCount: this.filterCount()
|
|
310
326
|
});
|
|
311
|
-
this.show = false;
|
|
312
327
|
this.closePanel();
|
|
313
328
|
}
|
|
314
329
|
handleSelect(event, filterKey, filter) {
|
|
315
330
|
this.filterForm.get(filterKey).setValue(event);
|
|
316
331
|
if (filter.onChange) {
|
|
317
|
-
filter.onChange(event, this.config);
|
|
332
|
+
filter.onChange(event, this.config(), this.filterForm.value);
|
|
318
333
|
}
|
|
319
334
|
}
|
|
320
335
|
onDateChange(event, filterKey, filter) {
|
|
321
336
|
this.filterForm.get(filterKey).setValue(event);
|
|
322
337
|
if (typeof event === 'object') {
|
|
323
|
-
this.dateRangeSelectedDates
|
|
338
|
+
this.dateRangeSelectedDates.set({
|
|
324
339
|
startDate: event.startDate,
|
|
325
340
|
endDate: event.endDate,
|
|
326
|
-
};
|
|
327
|
-
}
|
|
328
|
-
else {
|
|
329
|
-
console.log(this.filterForm.get(filterKey).value);
|
|
341
|
+
});
|
|
330
342
|
}
|
|
331
343
|
}
|
|
332
344
|
handleCheckbox(event, filterKey, checkboxValue, filter) {
|
|
345
|
+
const currentValues = this.filterForm.get(filterKey).value;
|
|
333
346
|
if (event.value) {
|
|
334
|
-
this.filterForm.get(filterKey).setValue([...
|
|
347
|
+
this.filterForm.get(filterKey).setValue([...currentValues, checkboxValue]);
|
|
335
348
|
}
|
|
336
349
|
else {
|
|
337
|
-
|
|
338
|
-
this.filterForm.get(filterKey).setValue(filterValue.filter((value) => value !== checkboxValue));
|
|
350
|
+
this.filterForm.get(filterKey).setValue(currentValues.filter((value) => value !== checkboxValue));
|
|
339
351
|
}
|
|
340
352
|
if (filter.onChange) {
|
|
341
|
-
filter.onChange(event, this.config, this.filterForm.value);
|
|
353
|
+
filter.onChange(event, this.config(), this.filterForm.value);
|
|
342
354
|
}
|
|
343
355
|
}
|
|
344
356
|
clearFormValues() {
|
|
345
357
|
const resetValues = {};
|
|
346
|
-
this.config.forEach((filter) => {
|
|
358
|
+
this.config().forEach((filter) => {
|
|
347
359
|
let defaultValue = filter.defaultValue || null;
|
|
348
360
|
if (filter.type === 'multiSelect' || filter.type === 'checkbox') {
|
|
349
361
|
defaultValue = filter.defaultValue || [];
|
|
@@ -367,30 +379,20 @@ export class FilterPanelComponent {
|
|
|
367
379
|
anyValueSet = true;
|
|
368
380
|
}
|
|
369
381
|
}
|
|
370
|
-
if (anyValueSet && this.emitFiltersAfterSettingNewValues) {
|
|
382
|
+
if (anyValueSet && this.emitFiltersAfterSettingNewValues()) {
|
|
371
383
|
this.applyFilters();
|
|
372
384
|
}
|
|
373
385
|
}
|
|
374
386
|
static { this.ɵfac = function FilterPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FilterPanelComponent)(i0.ɵɵdirectiveInject(i1.HasValuePipe)); }; }
|
|
375
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FilterPanelComponent, selectors: [["mis-filter-panel"]], inputs: { show: "show", config: "config", emitFiltersAfterSettingNewValues: "emitFiltersAfterSettingNewValues" }, outputs: { onClose: "onClose", onApply: "onApply" },
|
|
387
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FilterPanelComponent, selectors: [["mis-filter-panel"]], inputs: { show: [1, "show"], config: [1, "config"], emitFiltersAfterSettingNewValues: [1, "emitFiltersAfterSettingNewValues"] }, outputs: { onClose: "onClose", onApply: "onApply" }, decls: 1, vars: 1, consts: [["class", "filter-panel-container", 4, "ngIf"], [1, "filter-panel-container"], [1, "panel-header"], ["width", "25", "height", "25", "viewBox", "0 0 25 25", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "close-icon", 3, "click"], ["id", "ic-navigation-cancel-24"], ["id", "Union", "fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.60560 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.3850 17.4550 18.3850 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.6220 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z", "fill", "#181F33"], [1, "horizontal-divider", "first"], [1, "filters", 3, "formGroup"], [4, "ngFor", "ngForOf"], [1, "actions"], [3, "click", "name", "size", "type"], [3, "click", "name", "size", "type", "disabled"], ["class", "filter", 4, "ngIf"], [1, "filter"], [1, "filter-title"], [4, "ngIf"], ["class", "horizontal-divider", 4, "ngIf"], [1, "multiselect-filter"], ["width", "100%", "height", "44px", 1, "no-padding", 3, "onChange", "label", "selectedItems", "data", "searchEnabled", "showSelectedCount", "enableSelectAll", "hideApplyButton"], ["width", "100%", "height", "44px", 3, "onChange", "data", "searchEnabled", "selectedItem"], [1, "checkbox-row"], ["class", "checkbox-container", 4, "ngFor", "ngForOf"], [1, "checkbox-container"], [3, "valueChange", "type", "checked"], [1, "checkbox-label"], ["type", "rounded"], ["misTzDp", "", "misInput", "", "type", "text", "readonly", "", 1, "mis-input", 3, "dateChange", "dpConfig", "placeholder", "value", "selectedDate", "positionX", "offsetX"], ["misTzDrp", "", "misInput", "", "type", "text", "readonly", "", 1, "mis-input", 3, "dateChange", "placeholder", "value", "positionX", "positionY", "selectedDates", "dpConfig"], ["misInput", "", "type", "text", 1, "input", 3, "placeholder", "formControlName"], ["misInput", "", "type", "number", 1, "input", 3, "placeholder", "formControlName"], [1, "range-container", 3, "formGroup"], [1, "range-inner-container"], ["misInput", "", "type", "number", "formControlName", "min", 1, "input", 3, "placeholder"], ["misInput", "", "type", "number", "formControlName", "max", 1, "input", 3, "placeholder", "min"], [1, "horizontal-divider"]], template: function FilterPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
376
388
|
i0.ɵɵtemplate(0, FilterPanelComponent_div_0_Template, 13, 10, "div", 0);
|
|
377
389
|
} if (rf & 2) {
|
|
378
|
-
i0.ɵɵproperty("ngIf", ctx.show);
|
|
379
|
-
} }, dependencies: [i2.NgForOf, i2.NgIf, i3.ButtonComponent, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.MinValidator, i4.FormGroupDirective, i4.FormControlName, i5.MultiSelectDropdownComponent, i6.DropdownComponent, i7.MisInputComponent, i7.MisInputDirective, i8.TzDatepickerDirective, i9.TzDaterangepickerDirective, i10.CheckboxComponent], styles: ["
|
|
390
|
+
i0.ɵɵproperty("ngIf", ctx.show());
|
|
391
|
+
} }, dependencies: [i2.NgForOf, i2.NgIf, i3.ButtonComponent, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.MinValidator, i4.FormGroupDirective, i4.FormControlName, i5.MultiSelectDropdownComponent, i6.DropdownComponent, i7.MisInputComponent, i7.MisInputDirective, i8.TzDatepickerDirective, i9.TzDaterangepickerDirective, i10.CheckboxComponent], styles: [".filter-panel-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:#fff;top:0;z-index:999;box-shadow:0 0 5px #000000a6;transition:all .3s ease}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-weight:700;margin:0 1rem;flex-basis:5%}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1.25rem}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]{cursor:pointer;border-radius:50%;transform:scale(1.4);padding:.3rem;transition:all .3s ease}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]:hover{background:#f5f5f5}.filter-panel-container[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]:active{background:#e0e0e0}.filter-panel-container[_ngcontent-%COMP%] .mat-divider.horizontal[_ngcontent-%COMP%]{margin:1rem}.filters[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex:1;row-gap:.5rem;overflow:auto;padding:0 1rem}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%]{display:flex;flex-direction:column}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .filter-title[_ngcontent-%COMP%]{color:#6a737d;font-size:.875rem;font-weight:700;line-height:20px;letter-spacing:.25px}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.8rem 0}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .checkbox-label[_ngcontent-%COMP%]{display:block;width:8rem}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .mat-checkbox-inner-container{width:20px;height:20px}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .checkbox-row[_ngcontent-%COMP%] .mat-checkbox-frame{border-radius:5px}.filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] .multiselect-filter[_ngcontent-%COMP%], .filters[_ngcontent-%COMP%] .filter[_ngcontent-%COMP%] mis-input[_ngcontent-%COMP%]{padding:.7rem 0}.horizontal-divider[_ngcontent-%COMP%]{display:block;width:100%;height:1px;margin:.5rem 0;background:#e0e0e0}.first[_ngcontent-%COMP%]{margin-top:0}.actions[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:end;align-items:center;gap:1rem;border-top:1px solid #E0E0E0;flex-basis:4%;padding:.5rem}.actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-weight:700;border-radius:.5rem;width:6rem}.no-padding[_ngcontent-%COMP%] .container{padding:0!important}.range-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:.8rem 0}.range-container[_ngcontent-%COMP%] .range-inner-container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.range-container[_ngcontent-%COMP%] .range-inner-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{height:2.2rem;outline:none;border-radius:.375rem;border:1px solid #e0e0e0;width:8rem;padding:0 .5rem}.range-container[_ngcontent-%COMP%] .range-inner-container[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-bottom:.2rem}input.ng-invalid.ng-touched[_ngcontent-%COMP%]{border:1px solid red;background-color:#ffe6e6}"], data: { animation: [slideFromRight] } }); }
|
|
380
392
|
}
|
|
381
393
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterPanelComponent, [{
|
|
382
394
|
type: Component,
|
|
383
|
-
args: [{ selector: 'mis-filter-panel', animations: [slideFromRight], template: "<div class=\"filter-panel-container\" *ngIf=\"show\" @slideFromRight> \n <div class=\"panel-header\">\n <span>Filters</span>\n <svg class=\"close-icon\" (click)=\"closePanel()\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"ic-navigation-cancel-24\">\n <path id=\"Union\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.6056 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.385 17.455 18.385 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.622 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z\" fill=\"#181F33\"/>\n </g>\n </svg> \n </div>\n \n <div class=\"horizontal-divider first\"></div>\n \n <div class=\"filters\" [formGroup]=\"filterForm\">\n <ng-container *ngFor=\"let filter of config; let last = last\">\n <div class=\"filter\" *ngIf=\"!filter.hidden\">\n <span class=\"filter-title\">{{filter.title}}</span>\n\n <ng-container *ngIf=\"filter.type === 'multiSelect'\">\n <div class=\"multiselect-filter\">\n <mis-multi-select-dropdown class=\"no-padding\" [label]=\"filter.placeholder || 'Select'\" [selectedItems]=\"filterForm.get(filter.key).value\" (onChange)=\"handleSelect($event, filter.key, filter)\" [data]=\"filter.options\" [searchEnabled]=\"true\"\n [showSelectedCount]=\"true\" [enableSelectAll]=\"true\"\n [hideApplyButton]=\"false\" width=\"100%\" height=\"44px\"></mis-multi-select-dropdown>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"filter.type === 'select'\">\n <div class=\"multiselect-filter\">\n <mis-dropdown [data]=\"filter.options\" [searchEnabled]=\"true\" width=\"100%\" height=\"44px\"\n (onChange)=\"handleSelect($event, filter.key, filter)\" [selectedItem]=\"filterForm.get(filter.key).value\">\n </mis-dropdown>\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"filter.type === 'checkbox'\">\n <div class=\"checkbox-row\">\n <div *ngFor=\"let option of filter.options\" class=\"checkbox-container\">\n <mis-checkbox [type]=\"'Default'\" [checked]=\"filterForm.get(filter.key).value?.includes(option.value)\" (valueChange)=\"handleCheckbox($event, filter.key, option.value, filter)\"></mis-checkbox>\n <span class=\"checkbox-label\">{{option.label}}</span>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"filter.type === 'datePicker'\">\n {{filter.placeholder}}\n <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datepickerConfig\" [placeholder]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" [value]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" (dateChange)=\"onDateChange($event, filter.key, filter)\" [selectedDate]=\"filterForm.get(filter.key).value\" [positionX]=\"'end'\" [offsetX]=\"-10\">\n </mis-input>\n </ng-container>\n\n <ng-container *ngIf=\"filter.type === 'dateRangePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDrp misInput type=\"text\" class=\"mis-input\" readonly\n [placeholder]=\"(!dateRangeSelectedDates.startDate && !dateRangeSelectedDates.endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates.startDate + ' - ' + dateRangeSelectedDates.endDate\"\n [value]=\"(!dateRangeSelectedDates.startDate && !dateRangeSelectedDates.endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates.startDate + ' - ' + dateRangeSelectedDates.endDate\" [positionX]=\"'start'\"\n [positionY]=\"'top'\" [selectedDates]=\"dateRangeSelectedDates\" (dateChange)=\"onDateChange($event, filter.key, filter)\"\n [dpConfig]=\"filter.dateRangePickerConfig\" />\n </mis-input> \n </ng-container>\n\n <ng-container *ngIf=\"filter.type === 'text'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"text\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n\n <ng-container *ngIf=\"filter.type === 'number'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"number\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n\n <ng-container *ngIf=\"filter.type === 'range'\">\n <div class=\"range-container\" [formGroup]=\"filterForm.get(filter.key)\">\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[0]?.label || 'Min' }}</span>\n <input \n misInput \n type=\"number\" \n class=\"input\" \n [placeholder]=\"filter.placeholder || 'Type here'\" \n formControlName=\"min\" \n />\n </div>\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[1]?.label || 'Max' }}</span>\n <input \n misInput \n type=\"number\" \n class=\"input\" \n [placeholder]=\"filter.placeholder || 'Type here'\" \n formControlName=\"max\"\n [min]=\"filterForm.get?.(filter.key)?.get('min')?.value || 0\"\n />\n </div>\n </div>\n </ng-container>\n \n\n <div class=\"horizontal-divider\" *ngIf=\"!last\"></div>\n </div> \n </ng-container>\n </div>\n\n <div class=\"actions\">\n <mis-button [name]=\"'Clear All'\" [size]=\"'Small'\" [type]=\"'Text'\" (click)=\"resetFilters()\"></mis-button>\n <mis-button [name]=\"'Apply'\" [size]=\"'Small'\" [type]=\"'Solid'\" (click)=\"applyFilters()\" [disabled]=\"filterForm.invalid\"></mis-button>\n </div>\n</div> \n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.filter-panel-container{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:var(--bg-primary, #FFFFFF);top:0;z-index:999;box-shadow:0 0 5px #000000a6;transition:all .3s ease}.filter-panel-container .panel-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-weight:700;margin:0 1rem;flex-basis:5%}.filter-panel-container .panel-header span{font-size:1.25rem}.filter-panel-container .panel-header .close-icon{cursor:pointer;border-radius:50%;transform:scale(1.4);padding:.3rem;transition:all .3s ease}.filter-panel-container .panel-header .close-icon:hover{background:var(--bg-tertiary, #F5F5F5)}.filter-panel-container .panel-header .close-icon:active{background:var(--border-primary, #E0E0E0)}.filter-panel-container .mat-divider.horizontal{margin:1rem}.filters{display:flex;flex-direction:column;flex:1;row-gap:.5rem;overflow:auto;padding:0 1rem}.filters .filter{display:flex;flex-direction:column}.filters .filter .filter-title{color:var(--text-secondary, #6A737D);font-size:.875rem;font-weight:700;line-height:20px;letter-spacing:.25px}.filters .filter .checkbox-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.8rem 0}.filters .filter .checkbox-row .checkbox-container{display:flex;flex-direction:row;align-items:center;gap:.5rem}.filters .filter .checkbox-row .checkbox-label{display:block;width:8rem}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-inner-container{width:20px;height:20px}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-frame{border-radius:5px}.filters .filter .multiselect-filter,.filters .filter mis-input{padding:.7rem 0}.horizontal-divider{display:block;width:100%;height:1px;margin:.5rem 0;background:var(--border-primary, #E0E0E0)}.first{margin-top:0}.actions{display:flex;flex-direction:row;justify-content:end;align-items:center;gap:1rem;border-top:1px solid var(--border-primary, #E0E0E0);flex-basis:4%;padding:.5rem}.actions button{font-weight:700;border-radius:.5rem;width:6rem}.no-padding ::ng-deep .container{padding:0!important}.range-container{display:flex;justify-content:space-between;padding:.8rem 0}.range-container .range-inner-container{display:flex;flex-direction:column}.range-container .range-inner-container input{height:2.2rem;outline:none;border-radius:.375rem;border:1px solid var(--border-primary, #E0E0E0);width:8rem;padding:0 .5rem}.range-container .range-inner-container span{margin-bottom:.2rem}input.ng-invalid.ng-touched{border:1px solid var(--brand-error, #B00020);background-color:var(--brand-error-lightest, #FDF2F2)}\n"] }]
|
|
384
|
-
}], () => [{ type: i1.HasValuePipe }],
|
|
385
|
-
type: Input
|
|
386
|
-
}], onClose: [{
|
|
387
|
-
type: Output
|
|
388
|
-
}], onApply: [{
|
|
389
|
-
type: Output
|
|
390
|
-
}], config: [{
|
|
391
|
-
type: Input
|
|
392
|
-
}], emitFiltersAfterSettingNewValues: [{
|
|
393
|
-
type: Input
|
|
394
|
-
}] }); })();
|
|
395
|
+
args: [{ selector: 'mis-filter-panel', animations: [slideFromRight], template: "<div class=\"filter-panel-container\" *ngIf=\"show()\" @slideFromRight>\n <div class=\"panel-header\">\n <span>Filters</span>\n <svg class=\"close-icon\" (click)=\"closePanel()\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"ic-navigation-cancel-24\">\n <path id=\"Union\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.60560 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.3850 17.4550 18.3850 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.6220 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z\" fill=\"#181F33\" />\n </g>\n </svg>\n </div>\n\n <div class=\"horizontal-divider first\"></div>\n\n <div class=\"filters\" [formGroup]=\"filterForm\">\n <ng-container *ngFor=\"let filter of config(); let last = last\">\n <div class=\"filter\" *ngIf=\"!filter.hidden\">\n <span class=\"filter-title\">{{filter.title}}</span>\n <ng-container *ngIf=\"filter.type === 'multiSelect'\">\n <div class=\"multiselect-filter\">\n <mis-multi-select-dropdown class=\"no-padding\" [label]=\"filter.placeholder || 'Select'\" [selectedItems]=\"filterForm.get(filter.key).value\" (onChange)=\"handleSelect($event, filter.key, filter)\" [data]=\"filter.options\" [searchEnabled]=\"true\"\n [showSelectedCount]=\"true\" [enableSelectAll]=\"true\"\n [hideApplyButton]=\"false\" width=\"100%\" height=\"44px\"></mis-multi-select-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'select'\">\n <div class=\"multiselect-filter\">\n <mis-dropdown [data]=\"filter.options\" [searchEnabled]=\"true\" width=\"100%\" height=\"44px\"\n (onChange)=\"handleSelect($event, filter.key, filter)\" [selectedItem]=\"filterForm.get(filter.key).value\">\n </mis-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'checkbox'\">\n <div class=\"checkbox-row\">\n <div *ngFor=\"let option of filter.options\" class=\"checkbox-container\">\n <mis-checkbox [type]=\"'Default'\" [checked]=\"filterForm.get(filter.key).value?.includes(option.value)\" (valueChange)=\"handleCheckbox($event, filter.key, option.value, filter)\"></mis-checkbox>\n <span class=\"checkbox-label\">{{option.label}}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'datePicker'\">\n {{filter.placeholder}}\n <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datepickerConfig\" [placeholder]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" [value]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" (dateChange)=\"onDateChange($event, filter.key, filter)\" [selectedDate]=\"filterForm.get(filter.key).value\" [positionX]=\"'end'\" [offsetX]=\"-10\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'dateRangePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDrp misInput type=\"text\" class=\"mis-input\" readonly\n [placeholder]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\"\n [value]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\" [positionX]=\"'start'\"\n [positionY]=\"'top'\" [selectedDates]=\"dateRangeSelectedDates()\" (dateChange)=\"onDateChange($event, filter.key, filter)\"\n [dpConfig]=\"filter.dateRangePickerConfig\" />\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'text'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"text\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'number'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"number\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'range'\">\n <div class=\"range-container\" [formGroup]=\"filterForm.get(filter.key)\">\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[0]?.label || 'Min' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"min\"\n />\n </div>\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[1]?.label || 'Max' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"max\"\n [min]=\"filterForm.get?.(filter.key)?.get('min')?.value || 0\"\n />\n </div>\n </div>\n </ng-container>\n <div class=\"horizontal-divider\" *ngIf=\"!last\"></div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"actions\">\n <mis-button [name]=\"'Clear All'\" [size]=\"'Small'\" [type]=\"'Text'\" (click)=\"resetFilters()\"></mis-button>\n <mis-button [name]=\"'Apply'\" [size]=\"'Small'\" [type]=\"'Solid'\" (click)=\"applyFilters()\" [disabled]=\"filterForm.invalid\"></mis-button>\n </div>\n</div>\n\n", styles: [".filter-panel-container{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:#fff;top:0;z-index:999;box-shadow:0 0 5px #000000a6;transition:all .3s ease}.filter-panel-container .panel-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-weight:700;margin:0 1rem;flex-basis:5%}.filter-panel-container .panel-header span{font-size:1.25rem}.filter-panel-container .panel-header .close-icon{cursor:pointer;border-radius:50%;transform:scale(1.4);padding:.3rem;transition:all .3s ease}.filter-panel-container .panel-header .close-icon:hover{background:#f5f5f5}.filter-panel-container .panel-header .close-icon:active{background:#e0e0e0}.filter-panel-container .mat-divider.horizontal{margin:1rem}.filters{display:flex;flex-direction:column;flex:1;row-gap:.5rem;overflow:auto;padding:0 1rem}.filters .filter{display:flex;flex-direction:column}.filters .filter .filter-title{color:#6a737d;font-size:.875rem;font-weight:700;line-height:20px;letter-spacing:.25px}.filters .filter .checkbox-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.8rem 0}.filters .filter .checkbox-row .checkbox-container{display:flex;flex-direction:row;align-items:center;gap:.5rem}.filters .filter .checkbox-row .checkbox-label{display:block;width:8rem}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-inner-container{width:20px;height:20px}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-frame{border-radius:5px}.filters .filter .multiselect-filter,.filters .filter mis-input{padding:.7rem 0}.horizontal-divider{display:block;width:100%;height:1px;margin:.5rem 0;background:#e0e0e0}.first{margin-top:0}.actions{display:flex;flex-direction:row;justify-content:end;align-items:center;gap:1rem;border-top:1px solid #E0E0E0;flex-basis:4%;padding:.5rem}.actions button{font-weight:700;border-radius:.5rem;width:6rem}.no-padding ::ng-deep .container{padding:0!important}.range-container{display:flex;justify-content:space-between;padding:.8rem 0}.range-container .range-inner-container{display:flex;flex-direction:column}.range-container .range-inner-container input{height:2.2rem;outline:none;border-radius:.375rem;border:1px solid #e0e0e0;width:8rem;padding:0 .5rem}.range-container .range-inner-container span{margin-bottom:.2rem}input.ng-invalid.ng-touched{border:1px solid red;background-color:#ffe6e6}\n"] }]
|
|
396
|
+
}], () => [{ type: i1.HasValuePipe }], null); })();
|
|
395
397
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterPanelComponent, { className: "FilterPanelComponent" }); })();
|
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNleEMsNkJBQW9EO0lBRTVDLEFBREosK0JBQWdDLG9DQUc2QjtJQUZpRixxU0FBWSxxREFBd0MsS0FBQztJQUduTSxBQUQ2RCxpQkFBNEIsRUFDbkY7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRG9OLEFBQXhCLEFBQXpHLEFBQXpDLHlEQUF3Qyw2REFBbUQsMkJBQThFLHVCQUF1QiwyQkFDaE4seUJBQXlCLDBCQUMxQjs7OztJQUlyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRW9GO0lBQXhHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7SUFIWSxlQUF1QjtJQUN5QixBQUR4QixBQUF4Qix3Q0FBdUIsdUJBQXVCLDREQUNtRDs7OztJQVEzRyxBQURKLCtCQUFzRSx1QkFDNkc7SUFBekUsZ1VBQWUsd0VBQXdELEtBQUM7SUFBQyxpQkFBZTtJQUM5TCxnQ0FBNkI7SUFBQSxZQUFnQjtJQUNqRCxBQURpRCxpQkFBTyxFQUNs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aUU7O1lBQTVCLCtCQUFVOysxUEQrQmpDLENBQUMsY0FBYyxDQUFDOztpRkFLakIsb0JBQW9CO2NBVGhDLFNBQVM7MkJBQ0Usa0JBQWtCLGNBR2hCLENBQUMsY0FBYyxDQUFDOzZDQU9uQixJQUFJO2tCQUFaLEtBQUs7WUFDSSxPQUFPO2tCQUFoQixNQUFNO1lBQ0csT0FBTztrQkFBaEIsTUFBTTtZQUNFLE1BQU07a0JBQWQsS0FBSztZQUNHLGdDQUFnQztrQkFBeEMsS0FBSzs7a0ZBTkssb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzbGlkZUZyb21SaWdodCB9IGZyb20gJy4uL2FuaW1hdGlvbnMvc2xpZGVGcm9tUmlnaHQnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElEYXRlUGlja2VyQ29uZmlnIH0gZnJvbSAnbWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kYXRlcGlja2VyX3YyJztcbmltcG9ydCB7IElSU2VsZWN0ZWREYXRlc0NvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vc3BlY2lmaWNkYXRlcGlja2VyJztcbmltcG9ydCB7IElEYXRlUGlja2VyQ29uZmlnIGFzIElEYXRlUmFuZ2VQaWNrZXJDb25maWcgfSBmcm9tIFwibWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9kYXRlcmFuZ2VwaWNrZXJfdjJcIjtcbmltcG9ydCB7IEhhc1ZhbHVlUGlwZSB9IGZyb20gJy4uL2hhcy12YWx1ZS5waXBlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclBhbmVsQ29uZmlnIHtcbiAga2V5OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHR5cGU6ICdtdWx0aVNlbGVjdCcgfCAnc2VsZWN0JyB8ICdkYXRlUGlja2VyJyB8ICdkYXRlUmFuZ2VQaWNrZXInIHwgJ2NoZWNrYm94JyB8ICdyYWRpbycgfCAndGV4dCcgfCAnbnVtYmVyJyB8ICdyYW5nZSc7XG4gIG9wdGlvbnM/OiBBcnJheTx7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGRhdGE/OiBhbnlbXTtcbiAgfT47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBkYXRlUGlja2VyQ29uZmlnPzogSURhdGVQaWNrZXJDb25maWc7XG4gIGRhdGVSYW5nZVBpY2tlckNvbmZpZz86IElEYXRlUmFuZ2VQaWNrZXJDb25maWc7XG4gIG9uQ2hhbmdlPzogKGV2ZW50OiBhbnksIGNvbmZpZz86IEZpbHRlclBhbmVsQ29uZmlnW10sIGZvcm1WYWx1ZT86IGFueSkgPT4gdm9pZDtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBzZWxlY3RlZFZhbHVlPzogYW55O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtZmlsdGVyLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlci1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbc2xpZGVGcm9tUmlnaHRdXG59KVxuXG5cblxuZXhwb3J0IGNsYXNzIEZpbHRlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhhc1ZhbHVlOiBIYXNWYWx1ZVBpcGUpe31cbiAgQElucHV0KCkgc2hvdzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIG9uQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkFwcGx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBjb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10gPSBbXTtcbiAgQElucHV0KCkgZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cChbXSk7XG4gIGxhc3RBcHBsaWVkRGF0YTogYW55O1xuXG4gIHJhbmdlTWluOiBudW1iZXI7XG4gIHJhbmdlTWF4OiBudW1iZXI7XG5cbiAgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlczogSVJTZWxlY3RlZERhdGVzQ29uZmlnID0ge1xuICAgIHN0YXJ0RGF0ZTogJycsXG4gICAgZW5kRGF0ZTogJycsXG4gIH07XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplRm9ybUNvbnRyb2xzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlcy5jb25maWcgJiYgIWNoYW5nZXMuY29uZmlnLmZpcnN0Q2hhbmdlKXtcbiAgICAgIHRoaXMuc2V0RmlsdGVyVmFsdWUodGhpcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVGb3JtQ29udHJvbHMoKSB7XG4gICAgdGhpcy5jb25maWcuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykgPT4ge1xuICAgICAgbGV0IGNvbnRyb2w6IGFueTtcbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgbWluOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgICAgbWF4OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgIH0sIHtcbiAgICAgICAgICB2YWxpZGF0b3JzOiAoZ3JvdXA6IEZvcm1Hcm91cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWluID0gZ3JvdXAuZ2V0KCdtaW4nKS52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IG1heCA9IGdyb3VwLmdldCgnbWF4JykudmFsdWU7XG4gICAgICAgICAgICBpZiAobWluICE9PSBudWxsICYmIG1heCAhPT0gbnVsbCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgcmFuZ2VFcnJvcjogJ01pbiB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG1heCB2YWx1ZScgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnIHx8IGZpbHRlci50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woW10pO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgICAgfVxuICAgICAgaWYodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0oZmlsdGVyLmRlZmF1bHRWYWx1ZSkpe1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKGZpbHRlci5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woZmlsdGVyLmtleSwgY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCl7XG4gICAgaWYodGhpcy5sYXN0QXBwbGllZERhdGEpe1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLnNldFZhbHVlKHRoaXMubGFzdEFwcGxpZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckZvcm1WYWx1ZXMoKTtcbiAgICB9XG4gICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIGZpbHRlckNvdW50KCl7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB0aGlzLmNvbmZpZy5mb3JFYWNoKChmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSA9PiB7XG4gICAgICBpZih0aGlzLmhhc1ZhbHVlLnRyYW5zZm9ybSh0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlKSl7XG4gICAgICAgIGlmKGZpbHRlci50eXBlID09PSAncmFuZ2UnICYmIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUubWluID09IG51bGwgJiYgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZS5tYXggPT0gbnVsbCl7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCl7XG4gICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgXG4gICAgdGhpcy5sYXN0QXBwbGllZERhdGEgPSB7Li4udGhpcy5maWx0ZXJGb3JtLnZhbHVlfTtcbiAgICB0aGlzLm9uQXBwbHkuZW1pdCh7XG4gICAgICBmaWx0ZXJEYXRhOiB0aGlzLmZpbHRlckZvcm0udmFsdWUsXG4gICAgICBmaWx0ZXJDb3VudDogdGhpcy5maWx0ZXJDb3VudCgpXG4gICAgfSk7XG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3QoZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpe1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYoZmlsdGVyLm9uQ2hhbmdlKXtcbiAgICAgIGZpbHRlci5vbkNoYW5nZShldmVudCwgdGhpcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyl7XG4gICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKGV2ZW50KTtcbiAgICBpZih0eXBlb2YgZXZlbnQgPT09ICdvYmplY3QnKXtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcyA9IHtcbiAgICAgICAgc3RhcnREYXRlOiBldmVudC5zdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXG4gICAgICB9O1xuICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS52YWx1ZSk7IFxuICAgfVxuICB9XG5cbiAgaGFuZGxlQ2hlY2tib3goZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGNoZWNrYm94VmFsdWU6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyl7XG4gICAgaWYoZXZlbnQudmFsdWUpe1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKFsuLi50aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkudmFsdWUsIGNoZWNrYm94VmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkudmFsdWU7XG4gICAgICB0aGlzLmZpbHRlckZvcm0uZ2V0KGZpbHRlcktleSkuc2V0VmFsdWUoZmlsdGVyVmFsdWUuZmlsdGVyKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZSAhPT0gY2hlY2tib3hWYWx1ZSkpO1xuICAgIH1cbiAgICBpZihmaWx0ZXIub25DaGFuZ2Upe1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZywgdGhpcy5maWx0ZXJGb3JtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckZvcm1WYWx1ZXMoKXtcbiAgICBjb25zdCByZXNldFZhbHVlczogYW55ID0ge307XG4gICAgdGhpcy5jb25maWcuZm9yRWFjaCgoZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykgPT4ge1xuICAgICAgbGV0IGRlZmF1bHRWYWx1ZTogYW55ID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSB8fCBudWxsO1xuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnIHx8IGZpbHRlci50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgfHwgW107XG4gICAgICB9XG4gICAgICBpZihmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJyl7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgfHwgeyBtaW46IG51bGwsIG1heDogbnVsbCB9O1xuICAgICAgfVxuICAgICAgcmVzZXRWYWx1ZXNbZmlsdGVyLmtleV0gPSBkZWZhdWx0VmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUocmVzZXRWYWx1ZXMpO1xuICB9XG5cbiAgcmVzZXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuY2xlYXJGb3JtVmFsdWVzKCk7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIHNldEZpbHRlclZhbHVlKGNvbmZpZzogRmlsdGVyUGFuZWxDb25maWdbXSl7XG4gICBsZXQgYW55VmFsdWVTZXQgPSBmYWxzZTtcbiAgIGZvcihjb25zdCBmaWx0ZXIgb2YgY29uZmlnKXtcbiAgICBpZihmaWx0ZXI/LnNlbGVjdGVkVmFsdWUpe1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS5zZXRWYWx1ZShmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICBhbnlWYWx1ZVNldCA9IHRydWU7XG4gICAgfVxuICAgfVxuICAgaWYoYW55VmFsdWVTZXQgJiYgdGhpcy5lbWl0RmlsdGVyc0FmdGVyU2V0dGluZ05ld1ZhbHVlcyl7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLXBhbmVsLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd1wiIEBzbGlkZUZyb21SaWdodD4gXG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiPlxuICAgICAgICA8c3Bhbj5GaWx0ZXJzPC9zcGFuPlxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2xvc2UtaWNvblwiIChjbGljayk9XCJjbG9zZVBhbmVsKClcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8ZyBpZD1cImljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+XG4gICAgICAgICAgICA8cGF0aCBpZD1cIlVuaW9uXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTguNjA0NjggNi42NDM1NUM4LjA5MDM2IDYuMTI5MjMgNy4yNTY0OSA2LjEyOTIzIDYuNzQyMTggNi42NDM1NUM2LjIyNzg3IDcuMTU3ODYgNi4yMjc4NyA3Ljk5MTczIDYuNzQyMTggOC41MDYwNEwxMC40OTM4IDEyLjI1NzZMNi43NDMxIDE2LjAwODNDNi4yMjg3OSAxNi41MjI2IDYuMjI4NzkgMTcuMzU2NCA2Ljc0MzEgMTcuODcwOEM3LjI1NzQyIDE4LjM4NTEgOC4wOTEyOSAxOC4zODUxIDguNjA1NiAxNy44NzA4TDEyLjM1NjIgMTQuMTIwMUwxNi4xMDY4IDE3Ljg3MDdDMTYuNjIxMSAxOC4zODUgMTcuNDU1IDE4LjM4NSAxNy45NjkzIDE3Ljg3MDdDMTguNDgzNiAxNy4zNTY0IDE4LjQ4MzYgMTYuNTIyNSAxNy45NjkzIDE2LjAwODJMMTQuMjE4NyAxMi4yNTc2TDE3Ljk3MDIgOC41MDYxM0MxOC40ODQ1IDcuOTkxODEgMTguNDg0NSA3LjE1Nzk0IDE3Ljk3MDIgNi42NDM2M0MxNy40NTU5IDYuMTI5MzIgMTYuNjIyIDYuMTI5MzIgMTYuMTA3NyA2LjY0MzYzTDEyLjM1NjIgMTAuMzk1MUw4LjYwNDY4IDYuNjQzNTVaXCIgZmlsbD1cIiMxODFGMzNcIi8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgIDwvc3ZnPiAgICAgICAgICAgIFxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXIgZmlyc3RcIj48L2Rpdj5cbiAgICBcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyc1wiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZmlnOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIiAqbmdJZj1cIiFmaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItdGl0bGVcIj57e2ZpbHRlci50aXRsZX19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtaXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duIGNsYXNzPVwibm8tcGFkZGluZ1wiIFtsYWJlbF09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCdcIiBbc2VsZWN0ZWRJdGVtc109XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiIChvbkNoYW5nZSk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW2RhdGFdPVwiZmlsdGVyLm9wdGlvbnNcIiBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtlbmFibGVTZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVBcHBseUJ1dHRvbl09XCJmYWxzZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnc2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWRyb3Bkb3duIFtkYXRhXT1cImZpbHRlci5vcHRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlU2VsZWN0KCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiIFtzZWxlY3RlZEl0ZW1dPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXIub3B0aW9uc1wiIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1pcy1jaGVja2JveCBbdHlwZV09XCInRGVmYXVsdCdcIiBbY2hlY2tlZF09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZT8uaW5jbHVkZXMob3B0aW9uLnZhbHVlKVwiICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVDaGVja2JveCgkZXZlbnQsIGZpbHRlci5rZXksIG9wdGlvbi52YWx1ZSwgZmlsdGVyKVwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj57e29wdGlvbi5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnZGF0ZVBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICAgICAge3tmaWx0ZXIucGxhY2Vob2xkZXJ9fVxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IGNsYXNzPVwibWlzLWlucHV0XCIgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlcGlja2VyQ29uZmlnXCIgW3BsYWNlaG9sZGVyXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlID8gZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgOiAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKVwiIFt2YWx1ZV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZSA/IGZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlIDogKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JylcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW3NlbGVjdGVkRGF0ZV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiIFtwb3NpdGlvblhdPVwiJ2VuZCdcIiBbb2Zmc2V0WF09XCItMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUmFuZ2VQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcnAgbWlzSW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm1pcy1pbnB1dFwiIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5lbmREYXRlKSA/IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpIDogZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMuZW5kRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5lbmREYXRlKSA/IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpIDogZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMuZW5kRGF0ZVwiIFtwb3NpdGlvblhdPVwiJ3N0YXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25ZXT1cIid0b3AnXCIgW3NlbGVjdGVkRGF0ZXNdPVwiZGF0ZVJhbmdlU2VsZWN0ZWREYXRlc1wiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUmFuZ2VQaWNrZXJDb25maWdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+ICAgIFxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAndGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdyYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXI/Lm9wdGlvbnM/LlswXT8ubGFiZWwgfHwgJ01pbicgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXI/Lm9wdGlvbnM/LlsxXT8ubGFiZWwgfHwgJ01heCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZmlsdGVyRm9ybS5nZXQ/LihmaWx0ZXIua2V5KT8uZ2V0KCdtaW4nKT8udmFsdWUgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlclwiICpuZ0lmPVwiIWxhc3RcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAgXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPG1pcy1idXR0b24gW25hbWVdPVwiJ0NsZWFyIEFsbCdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1RleHQnXCIgKGNsaWNrKT1cInJlc2V0RmlsdGVycygpXCI+PC9taXMtYnV0dG9uPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInQXBwbHknXCIgW3NpemVdPVwiJ1NtYWxsJ1wiIFt0eXBlXT1cIidTb2xpZCdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIiBbZGlzYWJsZWRdPVwiZmlsdGVyRm9ybS5pbnZhbGlkXCI+PC9taXMtYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+IFxuIl19
|
|
398
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFrQixRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNjMUMsNkJBQW9EO0lBRTVDLEFBREosK0JBQWdDLG9DQUc2QjtJQUZpRixxU0FBWSxxREFBd0MsS0FBQztJQUduTSxBQUQ2RCxpQkFBNEIsRUFDbkY7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRG9OLEFBQXhCLEFBQXpHLEFBQXpDLHlEQUF3Qyw2REFBbUQsMkJBQThFLHVCQUF1QiwyQkFDaE4seUJBQXlCLDBCQUMxQjs7OztJQUdyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRW9GO0lBQXhHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7SUFIWSxlQUF1QjtJQUN5QixBQUR4QixBQUF4Qix3Q0FBdUIsdUJBQXVCLDREQUNtRDs7OztJQU8zRyxBQURKLCtCQUFzRSx1QkFDNkc7SUFBekUsZ1VBQWUsd0VBQXdELEtBQUM7SUFBQyxpQkFBZTtJQUM5TCxnQ0FBNkI7SUFBQSxZQUFnQjtJQUNqRCxBQURpRCxp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LENBQUMsQ0FBQztnQkFDL0QsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO3FIQXhLVSxvQkFBb0I7b0VBQXBCLG9CQUFvQjtZQ2pDakMsdUVBQW1FOztZQUE5QixpQ0FBWTtnZ0lEK0JuQyxDQUFDLGNBQWMsQ0FBQzs7aUZBRWpCLG9CQUFvQjtjQU5oQyxTQUFTOzJCQUNFLGtCQUFrQixjQUdoQixDQUFDLGNBQWMsQ0FBQzs7a0ZBRWpCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsLCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2xpZGVGcm9tUmlnaHQgfSBmcm9tICcuLi9hbmltYXRpb25zL3NsaWRlRnJvbVJpZ2h0JztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXBpY2tlcl92Mic7XG5pbXBvcnQgeyBJUlNlbGVjdGVkRGF0ZXNDb25maWcgfSBmcm9tICdtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL3NwZWNpZmljZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBJRGF0ZVBpY2tlckNvbmZpZyBhcyBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXJhbmdlcGlja2VyX3YyXCI7XG5pbXBvcnQgeyBIYXNWYWx1ZVBpcGUgfSBmcm9tICcuLi9oYXMtdmFsdWUucGlwZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJQYW5lbENvbmZpZyB7XG4gIGtleTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiAnbXVsdGlTZWxlY3QnIHwgJ3NlbGVjdCcgfCAnZGF0ZVBpY2tlcicgfCAnZGF0ZVJhbmdlUGlja2VyJyB8ICdjaGVja2JveCcgfCAncmFkaW8nIHwgJ3RleHQnIHwgJ251bWJlcicgfCAncmFuZ2UnO1xuICBvcHRpb25zPzogQXJyYXk8e1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBkYXRhPzogYW55W107XG4gIH0+O1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGF0ZVBpY2tlckNvbmZpZz86IElEYXRlUGlja2VyQ29uZmlnO1xuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc/OiBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuICBvbkNoYW5nZT86IChldmVudDogYW55LCBjb25maWc/OiBGaWx0ZXJQYW5lbENvbmZpZ1tdLCBmb3JtVmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWZpbHRlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW3NsaWRlRnJvbVJpZ2h0XVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaGFzVmFsdWU6IEhhc1ZhbHVlUGlwZSkge31cblxuICAvLyBTaWduYWwgaW5wdXRzIHJlcGxhY2luZyBASW5wdXQoKVxuICBwdWJsaWMgc2hvdyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPEZpbHRlclBhbmVsQ29uZmlnW10+KCk7XG4gIHB1YmxpYyBlbWl0RmlsdGVyc0FmdGVyU2V0dGluZ05ld1ZhbHVlcyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyBTaWduYWwgb3V0cHV0cyByZXBsYWNpbmcgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkNsb3NlID0gb3V0cHV0KCk7XG4gIHB1YmxpYyBvbkFwcGx5ID0gb3V0cHV0PHsgZmlsdGVyRGF0YTogYW55LCBmaWx0ZXJDb3VudDogbnVtYmVyIH0+KCk7XG5cbiAgZmlsdGVyRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIGxhc3RBcHBsaWVkRGF0YTogYW55O1xuXG4gIHB1YmxpYyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzOiBXcml0YWJsZVNpZ25hbDxJUlNlbGVjdGVkRGF0ZXNDb25maWc+ID0gc2lnbmFsKHtcbiAgICBzdGFydERhdGU6ICcnLFxuICAgIGVuZERhdGU6ICcnLFxuICB9KTtcblxuICAvLyBDb21wdXRlZCBzaWduYWwgZm9yIGZpbHRlciBjb3VudFxuICBmaWx0ZXJDb3VudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZTtcbiAgICAvLyBBY2Nlc3MgdGhlIGNvbmZpZyBzaWduYWwgdmFsdWUgYnkgY2FsbGluZyBpdCBsaWtlIGEgZnVuY3Rpb25cbiAgICB0aGlzLmNvbmZpZygpLmZvckVhY2goKGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVZhbHVlW2ZpbHRlci5rZXldO1xuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUudHJhbnNmb3JtKHZhbHVlKSkge1xuICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICBpZiAodmFsdWUubWluICE9PSBudWxsIHx8IHZhbHVlLm1heCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb3VudDtcbiAgfSk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQWNjZXNzIHRoZSBjb25maWcgc2lnbmFsIHZhbHVlIGJ5IGNhbGxpbmcgaXQgbGlrZSBhIGZ1bmN0aW9uXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybUNvbnRyb2xzKHRoaXMuY29uZmlnKCkpO1xuICB9XG5cbiAgLy8gVGhlIG5nT25DaGFuZ2VzIGxpZmVjeWNsZSBob29rIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgd2l0aCBzaWduYWwgaW5wdXRzLlxuXG4gIGluaXRpYWxpemVGb3JtQ29udHJvbHMoY29uZmlnOiBGaWx0ZXJQYW5lbENvbmZpZ1tdKSB7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgY29uZmlnLmZvckVhY2goKGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpID0+IHtcbiAgICAgIGxldCBjb250cm9sOiBhbnk7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgIG1pbjogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgICAgIG1heDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgICB9LCB7XG4gICAgICAgICAgdmFsaWRhdG9yczogKGdyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IGdyb3VwLmdldCgnbWluJykudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBtYXggPSBncm91cC5nZXQoJ21heCcpLnZhbHVlO1xuICAgICAgICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiBtYXggIT09IG51bGwgJiYgbWluID4gbWF4KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IHJhbmdlRXJyb3I6ICdNaW4gdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBtYXggdmFsdWUnIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0JyB8fCBmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKFtdKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhhc1ZhbHVlLnRyYW5zZm9ybShmaWx0ZXIuZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKGZpbHRlci5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJGb3JtLmFkZENvbnRyb2woZmlsdGVyLmtleSwgY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZVBhbmVsKCkge1xuICAgIGlmICh0aGlzLmxhc3RBcHBsaWVkRGF0YSkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLnNldFZhbHVlKHRoaXMubGFzdEFwcGxpZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckZvcm1WYWx1ZXMoKTtcbiAgICB9XG4gICAgLy8gRW1pdCB0aGUgY2xvc2UgZXZlbnQgdXNpbmcgdGhlIHNpZ25hbCBvdXRwdXRcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCkge1xuICAgIGlmICh0aGlzLmZpbHRlckZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIFxuICAgIHRoaXMubGFzdEFwcGxpZWREYXRhID0geyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfTtcbiAgICAvLyBFbWl0IHRoZSBhcHBseSBldmVudCB3aXRoIHRoZSBmaWx0ZXIgZGF0YSB1c2luZyB0aGUgc2lnbmFsIG91dHB1dFxuICAgIHRoaXMub25BcHBseS5lbWl0KHtcbiAgICAgIGZpbHRlckRhdGE6IHRoaXMuZmlsdGVyRm9ybS52YWx1ZSxcbiAgICAgIGZpbHRlckNvdW50OiB0aGlzLmZpbHRlckNvdW50KClcbiAgICB9KTtcbiAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdChldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZykge1xuICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShldmVudCk7XG4gICAgaWYgKHR5cGVvZiBldmVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zZXQoe1xuICAgICAgICBzdGFydERhdGU6IGV2ZW50LnN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZTogZXZlbnQuZW5kRGF0ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoZWNrYm94KGV2ZW50OiBhbnksIGZpbHRlcktleTogc3RyaW5nLCBjaGVja2JveFZhbHVlOiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnZhbHVlO1xuICAgIGlmIChldmVudC52YWx1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXJLZXkpLnNldFZhbHVlKFsuLi5jdXJyZW50VmFsdWVzLCBjaGVja2JveFZhbHVlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5nZXQoZmlsdGVyS2V5KS5zZXRWYWx1ZShjdXJyZW50VmFsdWVzLmZpbHRlcigodmFsdWU6IHN0cmluZykgPT4gdmFsdWUgIT09IGNoZWNrYm94VmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybVZhbHVlcygpIHtcbiAgICBjb25zdCByZXNldFZhbHVlczogYW55ID0ge307XG4gICAgdGhpcy5jb25maWcoKS5mb3JFYWNoKChmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKSA9PiB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnkgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlIHx8IG51bGw7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSB8fCBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlIHx8IHsgbWluOiBudWxsLCBtYXg6IG51bGwgfTtcbiAgICAgIH1cbiAgICAgIHJlc2V0VmFsdWVzW2ZpbHRlci5rZXldID0gZGVmYXVsdFZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5wYXRjaFZhbHVlKHJlc2V0VmFsdWVzKTtcbiAgfVxuXG4gIHJlc2V0RmlsdGVycygpIHtcbiAgICB0aGlzLmNsZWFyRm9ybVZhbHVlcygpO1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICBzZXRGaWx0ZXJWYWx1ZShjb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10pIHtcbiAgICBsZXQgYW55VmFsdWVTZXQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBjb25maWcpIHtcbiAgICAgIGlmIChmaWx0ZXI/LnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS5zZXRWYWx1ZShmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGFueVZhbHVlU2V0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFueVZhbHVlU2V0ICYmIHRoaXMuZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMoKSkge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImZpbHRlci1wYW5lbC1jb250YWluZXJcIiAqbmdJZj1cInNob3coKVwiIEBzbGlkZUZyb21SaWdodD5cbiAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiPlxuICAgICAgPHNwYW4+RmlsdGVyczwvc3Bhbj5cbiAgICAgIDxzdmcgY2xhc3M9XCJjbG9zZS1pY29uXCIgKGNsaWNrKT1cImNsb3NlUGFuZWwoKVwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIHZpZXdCb3g9XCIwIDAgMjUgMjVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8ZyBpZD1cImljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+XG4gICAgICAgICAgICAgIDxwYXRoIGlkPVwiVW5pb25cIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNOC42MDQ2OCA2LjY0MzU1QzguMDkwMzYgNi4xMjkyMyA3LjI1NjQ5IDYuMTI5MjMgNi43NDIxOCA2LjY0MzU1QzYuMjI3ODcgNy4xNTc4NiA2LjIyNzg3IDcuOTkxNzMgNi43NDIxOCA4LjUwNjA0TDEwLjQ5MzggMTIuMjU3Nkw2Ljc0MzEgMTYuMDA4M0M2LjIyODc5IDE2LjUyMjYgNi4yMjg3OSAxNy4zNTY0IDYuNzQzMSAxNy44NzA4QzcuMjU3NDIgMTguMzg1MSA4LjA5MTI5IDE4LjM4NTEgOC42MDU2MCAxNy44NzA4TDEyLjM1NjIgMTQuMTIwMUwxNi4xMDY4IDE3Ljg3MDdDMTYuNjIxMSAxOC4zODUwIDE3LjQ1NTAgMTguMzg1MCAxNy45NjkzIDE3Ljg3MDdDMTguNDgzNiAxNy4zNTY0IDE4LjQ4MzYgMTYuNTIyNSAxNy45NjkzIDE2LjAwODJMMTQuMjE4NyAxMi4yNTc2TDE3Ljk3MDIgOC41MDYxM0MxOC40ODQ1IDcuOTkxODEgMTguNDg0NSA3LjE1Nzk0IDE3Ljk3MDIgNi42NDM2M0MxNy40NTU5IDYuMTI5MzIgMTYuNjIyMCA2LjEyOTMyIDE2LjEwNzcgNi42NDM2M0wxMi4zNTYyIDEwLjM5NTFMOC42MDQ2OCA2LjY0MzU1WlwiIGZpbGw9XCIjMTgxRjMzXCIgLz5cbiAgICAgICAgICA8L2c+XG4gICAgICA8L3N2Zz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlciBmaXJzdFwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZmlnKCk7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIiAqbmdJZj1cIiFmaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLXRpdGxlXCI+e3tmaWx0ZXIudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gY2xhc3M9XCJuby1wYWRkaW5nXCIgW2xhYmVsXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIFtzZWxlY3RlZEl0ZW1zXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlXCIgKG9uQ2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtlbmFibGVTZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQXBwbHlCdXR0b25dPVwiZmFsc2VcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1pcy1kcm9wZG93biBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW3NlbGVjdGVkSXRlbV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyLm9wdGlvbnNcIiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWNoZWNrYm94IFt0eXBlXT1cIidEZWZhdWx0J1wiIFtjaGVja2VkXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlPy5pbmNsdWRlcyhvcHRpb24udmFsdWUpXCIgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUNoZWNrYm94KCRldmVudCwgZmlsdGVyLmtleSwgb3B0aW9uLnZhbHVlLCBmaWx0ZXIpXCI+PC9taXMtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj57e29wdGlvbi5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAge3tmaWx0ZXIucGxhY2Vob2xkZXJ9fVxuICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNUekRwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgY2xhc3M9XCJtaXMtaW5wdXRcIiBbZHBDb25maWddPVwiZmlsdGVyLmRhdGVwaWNrZXJDb25maWdcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgPyBmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KS52YWx1ZSA6IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpXCIgW3ZhbHVlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlID8gZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSkudmFsdWUgOiAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKVwiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbc2VsZWN0ZWREYXRlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpLnZhbHVlXCIgW3Bvc2l0aW9uWF09XCInZW5kJ1wiIFtvZmZzZXRYXT1cIi0xMFwiPlxuICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUmFuZ2VQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc1R6RHJwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtaXMtaW5wdXRcIiByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICYmICFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZSkgPyAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKSA6IGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIighZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGUpID8gKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JykgOiBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICsgJyAtICcgKyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZVwiIFtwb3NpdGlvblhdPVwiJ3N0YXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvblldPVwiJ3RvcCdcIiBbc2VsZWN0ZWREYXRlc109XCJkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKClcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUmFuZ2VQaWNrZXJDb25maWdcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICd0ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzSW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzBdPy5sYWJlbCB8fCAnTWluJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzFdPy5sYWJlbCB8fCAnTWF4JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZmlsdGVyRm9ybS5nZXQ/LihmaWx0ZXIua2V5KT8uZ2V0KCdtaW4nKT8udmFsdWUgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXJcIiAqbmdJZj1cIiFsYXN0XCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidDbGVhciBBbGwnXCIgW3NpemVdPVwiJ1NtYWxsJ1wiIFt0eXBlXT1cIidUZXh0J1wiIChjbGljayk9XCJyZXNldEZpbHRlcnMoKVwiPjwvbWlzLWJ1dHRvbj5cbiAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidBcHBseSdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1NvbGlkJ1wiIChjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiIFtkaXNhYmxlZF09XCJmaWx0ZXJGb3JtLmludmFsaWRcIj48L21pcy1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -1,40 +1,36 @@
|
|
|
1
|
-
import { Directive,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { Directive, ElementRef, signal, inject, DestroyRef } from "@angular/core";
|
|
2
|
+
import { NgControl } from "@angular/forms";
|
|
3
|
+
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/forms";
|
|
6
5
|
export class MisInputDirective {
|
|
7
|
-
constructor(
|
|
8
|
-
|
|
9
|
-
this.
|
|
10
|
-
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
6
|
+
constructor() {
|
|
7
|
+
// Public signal to expose directive state
|
|
8
|
+
this.validity = signal(true);
|
|
9
|
+
// Dependencies injected for use with signals
|
|
10
|
+
this.el = inject(ElementRef);
|
|
11
|
+
this.control = inject(NgControl, { optional: true, self: true });
|
|
12
|
+
this.destroyRef = inject(DestroyRef); // Provides a reference for automatic cleanup
|
|
13
|
+
if (this.control?.control) {
|
|
14
|
+
this.control.control.statusChanges
|
|
15
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
16
|
+
.subscribe(() => {
|
|
17
|
+
this.validity.set(!this.control.control.invalid);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
15
20
|
}
|
|
16
21
|
ngOnInit() {
|
|
17
|
-
|
|
18
|
-
this.validityChange.next(!this.control.control?.invalid);
|
|
19
|
-
});
|
|
20
|
-
this.el.nativeElement.placeholder += " ";
|
|
22
|
+
// No need for explicit subscription in ngOnInit with the constructor logic
|
|
21
23
|
}
|
|
22
24
|
ngOnDestroy() {
|
|
23
|
-
|
|
24
|
-
this.endObs.complete();
|
|
25
|
+
// `takeUntilDestroyed` handles cleanup automatically.
|
|
25
26
|
}
|
|
26
|
-
static { this.ɵfac = function MisInputDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MisInputDirective)(
|
|
27
|
+
static { this.ɵfac = function MisInputDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MisInputDirective)(); }; }
|
|
27
28
|
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: MisInputDirective, selectors: [["input", "misInput", ""]] }); }
|
|
28
29
|
}
|
|
29
30
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MisInputDirective, [{
|
|
30
31
|
type: Directive,
|
|
31
32
|
args: [{
|
|
32
|
-
// tslint:disable-next-line
|
|
33
33
|
selector: "input[misInput]"
|
|
34
34
|
}]
|
|
35
|
-
}], () => [
|
|
36
|
-
|
|
37
|
-
}, {
|
|
38
|
-
type: Optional
|
|
39
|
-
}] }], null); })();
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvaW5wdXQvZGlyZWN0aXZlcy9pbnB1dC9pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUMsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUFtQixFQUFjLEVBQTZCLE9BQWtCO1FBQTdELE9BQUUsR0FBRixFQUFFLENBQVk7UUFBNkIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUN4RSxtQkFBYyxHQUEyQixJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxhQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5QyxXQUFNLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDdEMsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFMa0UsQ0FBQztJQU9wRixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDO2tIQWpCVSxpQkFBaUI7b0VBQWpCLGlCQUFpQjs7aUZBQWpCLGlCQUFpQjtjQUo3QixTQUFTO2VBQUM7Z0JBQ1QsMkJBQTJCO2dCQUMzQixRQUFRLEVBQUUsaUJBQWlCO2FBQzVCOztzQkFFcUMsSUFBSTs7c0JBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBTZWxmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIHNlbGVjdG9yOiBcImlucHV0W21pc0lucHV0XVwiXG59KVxuZXhwb3J0IGNsYXNzIE1pc0lucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIGNvbnRyb2w6IE5nQ29udHJvbCkge31cbiAgcHJpdmF0ZSB2YWxpZGl0eUNoYW5nZTogUmVwbGF5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICB2YWxpZGl0eSA9IHRoaXMudmFsaWRpdHlDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIGVuZE9iczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIGZvY3VzID0gZmFsc2U7XG4gIGhhc1ZhbHVlID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sPy5jb250cm9sPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5lbmRPYnMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy52YWxpZGl0eUNoYW5nZS5uZXh0KCF0aGlzLmNvbnRyb2wuY29udHJvbD8uaW52YWxpZCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBsYWNlaG9sZGVyICs9IFwiIFwiO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZW5kT2JzLm5leHQoKTtcbiAgICB0aGlzLmVuZE9icy5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
35
|
+
}], () => [], null); })();
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvaW5wdXQvZGlyZWN0aXZlcy9pbnB1dC9pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTBCLE1BQU0sRUFBcUIsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBS2hFLE1BQU0sT0FBTyxpQkFBaUI7SUFTNUI7UUFSQSwwQ0FBMEM7UUFDbkMsYUFBUSxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUV4Qyw2Q0FBNkM7UUFDdEMsT0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLDZDQUE2QztRQUdwRixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYTtpQkFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFRLENBQUMsT0FBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sMkVBQTJFO0lBQzdFLENBQUM7SUFFRCxXQUFXO1FBQ1Qsc0RBQXNEO0lBQ3hELENBQUM7a0hBekJVLGlCQUFpQjtvRUFBakIsaUJBQWlCOztpRkFBakIsaUJBQWlCO2NBSDdCLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkluaXQsIE9wdGlvbmFsLCBTZWxmLCBzaWduYWwsIGVmZmVjdCwgT25EZXN0cm95LCBpbmplY3QsIERlc3Ryb3lSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcImlucHV0W21pc0lucHV0XVwiXG59KVxuZXhwb3J0IGNsYXNzIE1pc0lucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyBQdWJsaWMgc2lnbmFsIHRvIGV4cG9zZSBkaXJlY3RpdmUgc3RhdGVcbiAgcHVibGljIHZhbGlkaXR5ID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBcbiAgLy8gRGVwZW5kZW5jaWVzIGluamVjdGVkIGZvciB1c2Ugd2l0aCBzaWduYWxzXG4gIHB1YmxpYyBlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHVibGljIGNvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7IC8vIFByb3ZpZGVzIGEgcmVmZXJlbmNlIGZvciBhdXRvbWF0aWMgY2xlYW51cFxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICh0aGlzLmNvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudmFsaWRpdHkuc2V0KCF0aGlzLmNvbnRyb2whLmNvbnRyb2whLmludmFsaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBObyBuZWVkIGZvciBleHBsaWNpdCBzdWJzY3JpcHRpb24gaW4gbmdPbkluaXQgd2l0aCB0aGUgY29uc3RydWN0b3IgbG9naWNcbiAgfVxuICBcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gYHRha2VVbnRpbERlc3Ryb3llZGAgaGFuZGxlcyBjbGVhbnVwIGF1dG9tYXRpY2FsbHkuXG4gIH1cbn1cblxuXG4iXX0=
|