mis-crystal-design-system 18.1.11 → 18.1.13

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.
@@ -222,7 +222,7 @@ function FilterPanelComponent_div_0_Template(rf, ctx) { if (rf & 1) {
222
222
  i0.ɵɵadvance();
223
223
  i0.ɵɵproperty("ngForOf", ctx_r1.config());
224
224
  i0.ɵɵadvance(2);
225
- i0.ɵɵproperty("name", "Clear All")("size", "Small")("type", "Text");
225
+ i0.ɵɵproperty("name", "Reset")("size", "Small")("type", "Text");
226
226
  i0.ɵɵadvance();
227
227
  i0.ɵɵproperty("name", "Apply")("size", "Small")("type", "Solid")("disabled", ctx_r1.filterForm.invalid);
228
228
  } }
@@ -410,8 +410,7 @@ export class FilterPanelComponent {
410
410
  cfg.forEach(filter => {
411
411
  const value = cleanData[filter.key];
412
412
  if (filter.type === 'multiSelect' && Array.isArray(value)) {
413
- // Convert [{value: 'X', ...}] back to ['X']
414
- cleanData[filter.key] = value.map((v) => v?.value || v);
413
+ cleanData[filter.key] = value;
415
414
  }
416
415
  });
417
416
  return cleanData;
@@ -513,7 +512,7 @@ export class FilterPanelComponent {
513
512
  }
514
513
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterPanelComponent, [{
515
514
  type: Component,
516
- 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 <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datePickerConfig\" [placeholder]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" [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>", 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"] }]
515
+ 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 <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datePickerConfig\" [placeholder]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" [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]=\"'Reset'\" [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>", 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"] }]
517
516
  }], () => [{ type: i1.HasValuePipe }], null); })();
518
517
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterPanelComponent, { className: "FilterPanelComponent" }); })();
519
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBa0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQ0c5Qyw2QkFBb0Q7SUFFNUMsQUFESiwrQkFBZ0Msb0NBRzZCO0lBRndGLHFTQUFZLHFEQUF3QyxLQUFDO0lBRzFNLEFBRDZELGlCQUE0QixFQUNuRjs7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRDJOLEFBQXhCLEFBQWhILEFBQXpDLHlEQUF3QyxrSUFBMEQsMkJBQThFLHVCQUF1QiwyQkFDdk4seUJBQXlCLDBCQUMxQjs7OztJQUdyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRXFGO0lBQXpHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7O0lBSFksZUFBdUI7SUFDeUIsQUFEeEIsQUFBeEIsd0NBQXVCLHVCQUF1QixpR0FDb0Q7Ozs7SUFPNUcsQUFESiwrQkFBc0UsdUJBQzhHO0lBQXpFLGdVQUFlLHdFQUF3RCxLQUFDO0lBQUMsaUJBQWU7SUFDL0wsZ0NBQTZCO0lBQUEsWUFBZ0I7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QyxDQUFDLGNBQWMsQ0FBQzs7aUZBRWpCLG9CQUFvQjtjQU5oQyxTQUFTOzJCQUNFLGtCQUFrQixjQUdoQixDQUFDLGNBQWMsQ0FBQzs7a0ZBRWpCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgV3JpdGFibGVTaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzbGlkZUZyb21SaWdodCB9IGZyb20gJy4uL2FuaW1hdGlvbnMvc2xpZGVGcm9tUmlnaHQnO1xuaW1wb3J0IHsgSURhdGVQaWNrZXJDb25maWcgfSBmcm9tICdtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL2RhdGVwaWNrZXJfdjInO1xuaW1wb3J0IHsgSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSAnbWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9zcGVjaWZpY2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgSURhdGVQaWNrZXJDb25maWcgYXMgSURhdGVSYW5nZVBpY2tlckNvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXJhbmdlcGlja2VyX3YyJztcbmltcG9ydCB7IEhhc1ZhbHVlUGlwZSB9IGZyb20gJy4uL2hhcy12YWx1ZS5waXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkYXRhPzogYW55W107XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlclR5cGUgPVxuICB8ICdtdWx0aVNlbGVjdCdcbiAgfCAnc2VsZWN0J1xuICB8ICdkYXRlUGlja2VyJ1xuICB8ICdkYXRlUmFuZ2VQaWNrZXInXG4gIHwgJ2NoZWNrYm94J1xuICB8ICdyYWRpbydcbiAgfCAndGV4dCdcbiAgfCAnbnVtYmVyJ1xuICB8ICdyYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyUGFuZWxDb25maWcge1xuICBrZXk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZTogRmlsdGVyVHlwZTtcbiAgb3B0aW9ucz86IEZpbHRlck9wdGlvbltdO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGF0ZVBpY2tlckNvbmZpZz86IElEYXRlUGlja2VyQ29uZmlnO1xuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc/OiBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuICBvbkNoYW5nZT86IChldmVudDogYW55LCBjb25maWc/OiBGaWx0ZXJQYW5lbENvbmZpZ1tdLCBmb3JtVmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWZpbHRlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW3NsaWRlRnJvbVJpZ2h0XVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBoYXNWYWx1ZTogSGFzVmFsdWVQaXBlKSB7XG4gICAgLy8gRWZmZWN0IHRvIHJlYWN0IHRvIGNvbmZpZyBjaGFuZ2VzIC0gbXVzdCBhbGxvdyBzaWduYWwgd3JpdGVzIHNpbmNlIHdlIHVwZGF0ZSBpbnRlcm5hbCBzaWduYWxzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNmZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGlmIChjZmcgJiYgQXJyYXkuaXNBcnJheShjZmcpICYmIGNmZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gT25seSBpbml0aWFsaXplIGZvcm0gaWYgbm90IGFscmVhZHkgZG9uZSwgb3IgaWYgY29uZmlnIHN0cnVjdHVyZSBjaGFuZ2VkXG4gICAgICAgICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQgfHwgdGhpcy5oYXNDb25maWdDaGFuZ2VkKGNmZykpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1Db250cm9scyhjZmcpO1xuICAgICAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQWx3YXlzIGNoZWNrIGZvciBzZWxlY3RlZFZhbHVlIGNoYW5nZXNcbiAgICAgICAgICB0aGlzLnNldEZpbHRlclZhbHVlKGNmZyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRmlsdGVyUGFuZWw6IEVycm9yIGluIGNvbmZpZyBlZmZlY3QnLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qIC0tLSBzaWduYWwtYmFzZWQgSW5wdXRzIC8gT3V0cHV0cyAtLS0gKi9cbiAgcHVibGljIHNob3cgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxGaWx0ZXJQYW5lbENvbmZpZ1tdPigpO1xuICBwdWJsaWMgZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIG9uQ2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcHVibGljIG9uQXBwbHkgPSBvdXRwdXQ8eyBmaWx0ZXJEYXRhOiBhbnk7IGZpbHRlckNvdW50OiBudW1iZXIgfT4oKTtcblxuICAvKiAtLS0gZm9ybSArIGludGVybmFsIHN0YXRlIC0tLSAqL1xuICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgcHJpdmF0ZSBmb3JtU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8vIGtlZXAgYSBzaWduYWwgc25hcHNob3Qgb2YgZm9ybSB2YWx1ZSBzbyBjb21wdXRlZCBjYW4gcmVhY3RcbiAgcHJpdmF0ZSBfZm9ybVZhbHVlU2lnbmFsOiBXcml0YWJsZVNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IHNpZ25hbCh7fSk7XG5cbiAgLy8gbGFzdCBhcHBsaWVkIHNuYXBzaG90IChzaWduYWwgc28gdGVtcGxhdGUvbG9naWMgY2FuIHJlYWQgcmVsaWFibHkpXG4gIHB1YmxpYyBsYXN0QXBwbGllZERhdGE6IFdyaXRhYmxlU2lnbmFsPFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsPiA9IHNpZ25hbChudWxsKTtcblxuICAvLyBkYXRlIHJhbmdlIHJlYWRhYmxlIGZvciB0ZW1wbGF0ZVxuICBwdWJsaWMgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlczogV3JpdGFibGVTaWduYWw8SVJTZWxlY3RlZERhdGVzQ29uZmlnPiA9IHNpZ25hbCh7XG4gICAgc3RhcnREYXRlOiAnJyxcbiAgICBlbmREYXRlOiAnJ1xuICB9KTtcblxuICAvKiBjb21wdXRlZCBmaWx0ZXJDb3VudCAqL1xuICBwdWJsaWMgZmlsdGVyQ291bnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5fZm9ybVZhbHVlU2lnbmFsKCk7XG4gICAgY29uc3QgY2ZnID0gdGhpcy5jb25maWcoKTtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgY2ZnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZvcm1WYWx1ZVtmaWx0ZXIua2V5XTtcblxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiAodmFsdWUubWluICE9PSBudWxsIHx8IHZhbHVlLm1heCAhPT0gbnVsbCkpIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0odmFsdWUpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9KTtcblxuICAvKiAtLS0gTGlmZWN5Y2xlIC0tLSAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBzdWJzY3JpYmUgZm9ybSBjaGFuZ2VzIHNvIGNvbXB1dGVkL2ZpbHRlckNvdW50IHVwZGF0ZVxuICAgIHRoaXMuc3Vic2NyaWJlRm9ybUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qIC0tLSBGb3JtIGluaXQgJiBoZWxwZXJzIC0tLSAqL1xuICBpbml0aWFsaXplRm9ybUNvbnRyb2xzKGNvbmZpZzogRmlsdGVyUGFuZWxDb25maWdbXSk6IHZvaWQge1xuICAgIC8vIGJ1aWxkIGEgZnJlc2ggZm9ybSB0byBtYXRjaCBjb25maWdcbiAgICBjb25zdCBuZXdGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgICBjb25zdCByYW5nZVZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoZ3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IG1pbiA9IChncm91cC5nZXQoJ21pbicpIGFzIEZvcm1Db250cm9sKT8udmFsdWU7XG4gICAgICBjb25zdCBtYXggPSAoZ3JvdXAuZ2V0KCdtYXgnKSBhcyBGb3JtQ29udHJvbCk/LnZhbHVlO1xuICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiBtYXggIT09IG51bGwgJiYgbWluID4gbWF4KSB7XG4gICAgICAgIHJldHVybiB7IHJhbmdlRXJyb3I6ICdNaW4gdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBtYXggdmFsdWUnIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgY29uZmlnKSB7XG4gICAgICBsZXQgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXG4gICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Hcm91cChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWluOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICAgIG1heDogbmV3IEZvcm1Db250cm9sKG51bGwpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyB2YWxpZGF0b3JzOiByYW5nZVZhbGlkYXRvciB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtdWx0aVNlbGVjdCc6XG4gICAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKEFycmF5LmlzQXJyYXkoZmlsdGVyLmRlZmF1bHRWYWx1ZSkgPyBmaWx0ZXIuZGVmYXVsdFZhbHVlIDogW10pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmaWx0ZXIuZGVmYXVsdFZhbHVlID8/ICcnKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZmlsdGVyLmRlZmF1bHRWYWx1ZSA/PyBudWxsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUudHJhbnNmb3JtKGZpbHRlci5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmlsdGVyLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIG5ld0Zvcm0uYWRkQ29udHJvbChmaWx0ZXIua2V5LCBjb250cm9sKTtcbiAgICB9XG5cbiAgICAvLyByZXBsYWNlIGZvcm0gc2FmZWx5XG4gICAgLy8gcHJlc2VydmUgc3Vic2NyaXB0aW9uIHNvIHZhbHVlQ2hhbmdlcyBjb250aW51ZXMgdG8gdXBkYXRlIF9mb3JtVmFsdWVTaWduYWxcbiAgICB0aGlzLmZpbHRlckZvcm0gPSBuZXdGb3JtO1xuICAgIC8vIHVwZGF0ZSBzaWduYWwgc25hcHNob3QgaW1tZWRpYXRlbHlcbiAgICB0aGlzLl9mb3JtVmFsdWVTaWduYWwuc2V0KHsgLi4udGhpcy5maWx0ZXJGb3JtLnZhbHVlIH0pO1xuXG4gICAgLy8gcmUtc3Vic2NyaWJlIHRvIG5ldyBmb3JtJ3MgdmFsdWVDaGFuZ2VzXG4gICAgdGhpcy5zdWJzY3JpYmVGb3JtQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVGb3JtQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAvLyB1bnN1YnNjcmliZSBwcmV2aW91cyBzdWJzY3JpcHRpb24gaWYgYW55XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgLy8gc3Vic2NyaWJlIHRvIHZhbHVlQ2hhbmdlczsgc2V0IHNuYXBzaG90IHNpZ25hbFxuICAgIHRoaXMuZm9ybVN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuX2Zvcm1WYWx1ZVNpZ25hbC5zZXQoeyAuLi52YWx1ZSB9KTtcbiAgICB9KTtcblxuICAgIC8vIGFsc28gc2V0IGluaXRpYWwgc25hcHNob3QgaW4gY2FzZSB2YWx1ZUNoYW5nZXMgZG9lc24ndCBlbWl0IGltbWVkaWF0ZWx5XG4gICAgdGhpcy5fZm9ybVZhbHVlU2lnbmFsLnNldCh7IC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udHJvbChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckZvcm0uZ2V0KGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY29uZmlnIHN0cnVjdHVyZSBoYXMgY2hhbmdlZCAobmV3IGtleXMgb3IgcmVtb3ZlZCBrZXlzKVxuICAgKiBVc2VkIHRvIGRldGVybWluZSBpZiBmb3JtIG5lZWRzIHRvIGJlIHJlYnVpbHRcbiAgICovXG4gIHByaXZhdGUgaGFzQ29uZmlnQ2hhbmdlZChuZXdDb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50S2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyRm9ybS5jb250cm9scykuc29ydCgpO1xuICAgIGNvbnN0IG5ld0tleXMgPSBuZXdDb25maWcubWFwKGYgPT4gZi5rZXkpLnNvcnQoKTtcbiAgICBcbiAgICBpZiAoY3VycmVudEtleXMubGVuZ3RoICE9PSBuZXdLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBjdXJyZW50S2V5cy5zb21lKChrZXksIGluZGV4KSA9PiBrZXkgIT09IG5ld0tleXNbaW5kZXhdKTtcbiAgfVxuXG4gIC8qIC0tLSBBY3Rpb25zIC8gVUkgaGFuZGxlcnMgLS0tICovXG4gIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgY29uc3QgbGFzdCA9IHRoaXMubGFzdEFwcGxpZWREYXRhKCk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIHByZWZlciBzZXRWYWx1ZSAoZW5zdXJlcyBzaGFwZSBtYXRjaGVzKTsgZmFsbGJhY2sgdG8gcGF0Y2hWYWx1ZVxuICAgICAgICB0aGlzLmZpbHRlckZvcm0uc2V0VmFsdWUobGFzdCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUobGFzdCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJGb3JtVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgLy8gZW1pdCBjbG9zZSBldmVudFxuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICBhcHBseUZpbHRlcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgXG4gICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgZm9ybSB2YWx1ZVxuICAgIGNvbnN0IHNuYXBzaG90ID0geyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfTtcbiAgXG4gICAgLy8gT1BUSU9OQUw6IE1hcCBvYmplY3RzIGJhY2sgdG8gdmFsdWVzIGZvciB0aGUgT3V0cHV0IGVtaXNzaW9uIFxuICAgIC8vIHNvIHRoZSBwYXJlbnQgcmVjZWl2ZXMgY2xlYW4gZGF0YSAoWydMT0dJTiddIGluc3RlYWQgb2YgW3tsYWJlbDouLi4sIHZhbHVlOiAnTE9HSU4nfV0pXG4gICAgY29uc3QgY2xlYW5TbmFwc2hvdCA9IHRoaXMubWFwVmFsdWVzRm9yRW1pc3Npb24oc25hcHNob3QpO1xuICBcbiAgICB0aGlzLmxhc3RBcHBsaWVkRGF0YS5zZXQoc25hcHNob3QpOyAvLyBLZWVwIG9iamVjdHMgZm9yIFVJIHN0YXRlXG4gIFxuICAgIHRoaXMub25BcHBseS5lbWl0KHtcbiAgICAgIGZpbHRlckRhdGE6IGNsZWFuU25hcHNob3QsIC8vIEVtaXQgdmFsdWVzXG4gICAgICBmaWx0ZXJDb3VudDogdGhpcy5maWx0ZXJDb3VudCgpXG4gICAgfSk7XG4gIFxuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICB9XG4gIFxuICAvLyBIZWxwZXIgdG8gY2xlYW4gdXAgZGF0YSBiZWZvcmUgZW1pdHRpbmdcbiAgcHJpdmF0ZSBtYXBWYWx1ZXNGb3JFbWlzc2lvbihmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgY29uc3QgY2xlYW5EYXRhID0geyAuLi5mb3JtVmFsdWUgfTtcbiAgICBjb25zdCBjZmcgPSB0aGlzLmNvbmZpZygpO1xuICBcbiAgICBjZmcuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBjbGVhbkRhdGFbZmlsdGVyLmtleV07XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgLy8gQ29udmVydCBbe3ZhbHVlOiAnWCcsIC4uLn1dIGJhY2sgdG8gWydYJ11cbiAgICAgICAgY2xlYW5EYXRhW2ZpbHRlci5rZXldID0gdmFsdWUubWFwKCh2OiBhbnkpID0+IHY/LnZhbHVlIHx8IHYpO1xuICAgICAgfVxuICAgIH0pO1xuICBcbiAgICByZXR1cm4gY2xlYW5EYXRhO1xuICB9XG4gIFxuICBcblxuICByZXNldEZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckZvcm1WYWx1ZXMoKTtcbiAgICAvLyBjYWxsIGFwcGx5RmlsdGVycyB0byBtYWludGFpbiBwcmV2aW91cyBiZWhhdmlvciAodmFsaWRhdGlvbiArIGVtaXQpXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIC8qIC0tLSBWYWx1ZSBzZXR0ZXJzIC0tLSAqL1xuLy8gZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50c1xuXG5oYW5kbGVTZWxlY3QoZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpOiB2b2lkIHtcbiAgY29uc3QgY3RybCA9IHRoaXMuZ2V0Q29udHJvbChmaWx0ZXJLZXkpO1xuICBcbiAgLy8gRklYOiBEbyBub3Qgc3RyaXAgdGhlIHZhbHVlIGhlcmUuIFN0b3JlIHRoZSBmdWxsIG9iamVjdCBzbyB0aGUgVUkgXG4gIC8vIGNhbiBtYXRjaCBpdCBhZ2FpbnN0IHRoZSBkYXRhIGxpc3Qgd2hlbiByZS1yZW5kZXJpbmcuXG4gIGxldCB2YWx1ZVRvU2V0ID0gZXZlbnQ7XG5cbiAgLyogLy8gQ09NTUVOVEVEIE9VVCBPUiBSRU1PVkVEIFRISVMgQkxPQ0tcbiAgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnICYmIEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgaWYgKGV2ZW50Lmxlbmd0aCA+IDAgJiYgdHlwZW9mIGV2ZW50WzBdID09PSAnb2JqZWN0JyAmJiAndmFsdWUnIGluIGV2ZW50WzBdKSB7XG4gICAgICB2YWx1ZVRvU2V0ID0gZXZlbnQubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0udmFsdWUgfHwgaXRlbSk7XG4gICAgfVxuICB9XG4gICovXG4gIFxuICBjdHJsPy5zZXRWYWx1ZSh2YWx1ZVRvU2V0KTtcblxuICBpZiAoZmlsdGVyLm9uQ2hhbmdlKSB7XG4gICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICB9XG59XG5cblxuXG4gIGhhbmRsZUNoZWNrYm94KGV2ZW50OiBhbnksIGZpbHRlcktleTogc3RyaW5nLCBjaGVja2JveFZhbHVlOiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5nZXRDb250cm9sKGZpbHRlcktleSk7XG4gICAgY29uc3QgY3VycmVudCA9IEFycmF5LmlzQXJyYXkoY3RybD8udmFsdWUpID8gWy4uLmN0cmwudmFsdWVdIDogW107XG4gICAgaWYgKGV2ZW50Py52YWx1ZSkge1xuICAgICAgY3RybD8uc2V0VmFsdWUoWy4uLmN1cnJlbnQsIGNoZWNrYm94VmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3RybD8uc2V0VmFsdWUoY3VycmVudC5maWx0ZXIoKHYpID0+IHYgIT09IGNoZWNrYm94VmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyLm9uQ2hhbmdlKSB7XG4gICAgICBmaWx0ZXIub25DaGFuZ2UoZXZlbnQsIHRoaXMuY29uZmlnKCksIHRoaXMuZmlsdGVyRm9ybS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGV2ZW50OiBhbnksIGZpbHRlcktleTogc3RyaW5nLCBmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuZ2V0Q29udHJvbChmaWx0ZXJLZXkpO1xuICAgIGN0cmw/LnNldFZhbHVlKGV2ZW50KTtcblxuICAgIGlmIChldmVudCAmJiB0eXBlb2YgZXZlbnQgPT09ICdvYmplY3QnICYmICdzdGFydERhdGUnIGluIGV2ZW50ICYmICdlbmREYXRlJyBpbiBldmVudCkge1xuICAgICAgdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZERhdGVzLnNldCh7XG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlOiBldmVudC5lbmREYXRlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiAtLS0gQ2xlYXIgLyBTZXQgdmFsdWVzIGhlbHBlcnMgLS0tICovXG4gIGNsZWFyRm9ybVZhbHVlcygpOiB2b2lkIHtcbiAgICBjb25zdCByZXNldHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIHRoaXMuY29uZmlnKCkpIHtcbiAgICAgIGxldCBkZWZhdWx0VmFsdWU6IGFueSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgPz8gbnVsbDtcbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0JyB8fCBmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlID8/IFtdO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgPz8geyBtaW46IG51bGwsIG1heDogbnVsbCB9O1xuICAgICAgfVxuICAgICAgcmVzZXRzW2ZpbHRlci5rZXldID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIC8vIHBhdGNoIHRvIGF2b2lkIHNoYXBlIG1pc21hdGNoIGVycm9yc1xuICAgIHRoaXMuZmlsdGVyRm9ybS5wYXRjaFZhbHVlKHJlc2V0cyk7XG4gICAgdGhpcy5fZm9ybVZhbHVlU2lnbmFsLnNldCh7IC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGZpbHRlci5zZWxlY3RlZFZhbHVlIHdoZW4gcGFyZW50IHByb3ZpZGVzIHNlbGVjdGVkVmFsdWUuXG4gICAqIENhbGxlZCBieSB0aGUgY29uZmlnIGVmZmVjdCAoc28gcnVucyBvbiBpbml0aWFsIGxvYWQgYW5kIG9uIGNvbmZpZyBjaGFuZ2VzKS5cbiAgICovXG4gIHNldEZpbHRlclZhbHVlKGNvbmZpZzogRmlsdGVyUGFuZWxDb25maWdbXSk6IHZvaWQge1xuICAgIGxldCBhbnlWYWx1ZVNldCA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgY29uZmlnKSB7XG4gICAgICBpZiAodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0oZmlsdGVyPy5zZWxlY3RlZFZhbHVlKSkge1xuICAgICAgICBjb25zdCBjdHJsID0gdGhpcy5nZXRDb250cm9sKGZpbHRlci5rZXkpO1xuICAgICAgICBpZiAoY3RybCkge1xuICAgICAgICAgIGN0cmwuc2V0VmFsdWUoZmlsdGVyLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgIGFueVZhbHVlU2V0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhbnlWYWx1ZVNldCAmJiB0aGlzLmVtaXRGaWx0ZXJzQWZ0ZXJTZXR0aW5nTmV3VmFsdWVzKCkpIHtcbiAgICAgIC8vIHJlc3BlY3QgdGhlIHBhcmVudCBmbGFnIOKAlCBhcHBseSBhbmQgZW1pdFxuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbWFrZSBzdXJlIG91ciBzbmFwc2hvdCBzaWduYWwgaXMgZnJlc2hcbiAgICAgIHRoaXMuX2Zvcm1WYWx1ZVNpZ25hbC5zZXQoeyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfSk7XG4gICAgfVxuICB9XG59IiwiPGRpdiBjbGFzcz1cImZpbHRlci1wYW5lbC1jb250YWluZXJcIiAqbmdJZj1cInNob3coKVwiIEBzbGlkZUZyb21SaWdodD5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGVyXCI+XG4gICAgICAgIDxzcGFuPkZpbHRlcnM8L3NwYW4+XG4gICAgICAgIDxzdmcgY2xhc3M9XCJjbG9zZS1pY29uXCIgKGNsaWNrKT1cImNsb3NlUGFuZWwoKVwiIHdpZHRoPVwiMjVcIiBoZWlnaHQ9XCIyNVwiIHZpZXdCb3g9XCIwIDAgMjUgMjVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxnIGlkPVwiaWMtbmF2aWdhdGlvbi1jYW5jZWwtMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlVuaW9uXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTguNjA0NjggNi42NDM1NUM4LjA5MDM2IDYuMTI5MjMgNy4yNTY0OSA2LjEyOTIzIDYuNzQyMTggNi42NDM1NUM2LjIyNzg3IDcuMTU3ODYgNi4yMjc4NyA3Ljk5MTczIDYuNzQyMTggOC41MDYwNEwxMC40OTM4IDEyLjI1NzZMNi43NDMxIDE2LjAwODNDNi4yMjg3OSAxNi41MjI2IDYuMjI4NzkgMTcuMzU2NCA2Ljc0MzEgMTcuODcwOEM3LjI1NzQyIDE4LjM4NTEgOC4wOTEyOSAxOC4zODUxIDguNjA1NjAgMTcuODcwOEwxMi4zNTYyIDE0LjEyMDFMMTYuMTA2OCAxNy44NzA3QzE2LjYyMTEgMTguMzg1MCAxNy40NTUwIDE4LjM4NTAgMTcuOTY5MyAxNy44NzA3QzE4LjQ4MzYgMTcuMzU2NCAxOC40ODM2IDE2LjUyMjUgMTcuOTY5MyAxNi4wMDgyTDE0LjIxODcgMTIuMjU3NkwxNy45NzAyIDguNTA2MTNDMTguNDg0NSA3Ljk5MTgxIDE4LjQ4NDUgNy4xNTc5NCAxNy45NzAyIDYuNjQzNjNDMTcuNDU1OSA2LjEyOTMyIDE2LjYyMjAgNi4xMjkzMiAxNi4xMDc3IDYuNjQzNjNMMTIuMzU2MiAxMC4zOTUxTDguNjA0NjggNi42NDM1NVpcIiBmaWxsPVwiIzE4MUYzM1wiIC8+XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICBcbiAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1kaXZpZGVyIGZpcnN0XCI+PC9kaXY+XG4gIFxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBjb25maWcoKTsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyXCIgKm5nSWY9XCIhZmlsdGVyLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLXRpdGxlXCI+e3tmaWx0ZXIudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpc2VsZWN0LWZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gY2xhc3M9XCJuby1wYWRkaW5nXCIgW2xhYmVsXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIFtzZWxlY3RlZEl0ZW1zXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy52YWx1ZSB8fCBbXVwiIChvbkNoYW5nZSk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW2RhdGFdPVwiZmlsdGVyLm9wdGlvbnNcIiBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtlbmFibGVTZWxlY3RBbGxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVBcHBseUJ1dHRvbl09XCJmYWxzZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpc2VsZWN0LWZpbHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1pcy1kcm9wZG93biBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbc2VsZWN0ZWRJdGVtXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9taXMtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyLm9wdGlvbnNcIiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtaXMtY2hlY2tib3ggW3R5cGVdPVwiJ0RlZmF1bHQnXCIgW2NoZWNrZWRdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LnZhbHVlPy5pbmNsdWRlcyhvcHRpb24udmFsdWUpXCIgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZUNoZWNrYm94KCRldmVudCwgZmlsdGVyLmtleSwgb3B0aW9uLnZhbHVlLCBmaWx0ZXIpXCI+PC9taXMtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiPnt7b3B0aW9uLmxhYmVsfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnZGF0ZVBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc1R6RHAgbWlzSW5wdXQgdHlwZT1cInRleHRcIiByZWFkb25seSBjbGFzcz1cIm1pcy1pbnB1dFwiIFtkcENvbmZpZ109XCJmaWx0ZXIuZGF0ZVBpY2tlckNvbmZpZ1wiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KT8udmFsdWUgfHwgZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnXCIgW3ZhbHVlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy52YWx1ZSB8fCBmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCdcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW3NlbGVjdGVkRGF0ZV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KT8udmFsdWVcIiBbcG9zaXRpb25YXT1cIidlbmQnXCIgW29mZnNldFhdPVwiLTEwXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWlzLWlucHV0PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ2RhdGVSYW5nZVBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc1R6RHJwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtaXMtaW5wdXRcIiByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIoIWRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgJiYgIWRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlKSA/IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpIDogZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSArICcgLSAnICsgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCIoIWRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgJiYgIWRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlKSA/IChmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCcpIDogZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSArICcgLSAnICsgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGVcIiBbcG9zaXRpb25YXT1cIidzdGFydCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvblldPVwiJ3RvcCdcIiBbc2VsZWN0ZWREYXRlc109XCJkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKClcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHBDb25maWddPVwiZmlsdGVyLmRhdGVSYW5nZVBpY2tlckNvbmZpZ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWlzLWlucHV0PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3RleHQnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWlzLWlucHV0PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc0lucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImlucHV0XCIgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmlsdGVyLmtleVwiPlxuICAgICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdyYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1pbm5lci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXI/Lm9wdGlvbnM/LlswXT8ubGFiZWwgfHwgJ01pbicgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWlubmVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzFdPy5sYWJlbCB8fCAnTWF4JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KT8uZ2V0KCdtaW4nKT8udmFsdWUgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1kaXZpZGVyXCIgKm5nSWY9XCIhbGFzdFwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBcbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInQ2xlYXIgQWxsJ1wiIFtzaXplXT1cIidTbWFsbCdcIiBbdHlwZV09XCInVGV4dCdcIiAoY2xpY2spPVwicmVzZXRGaWx0ZXJzKClcIj48L21pcy1idXR0b24+XG4gICAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidBcHBseSdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1NvbGlkJ1wiIChjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiIFtkaXNhYmxlZF09XCJmaWx0ZXJGb3JtLmludmFsaWRcIj48L21pcy1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PiJdfQ==
518
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBa0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQ0c5Qyw2QkFBb0Q7SUFFNUMsQUFESiwrQkFBZ0Msb0NBRzZCO0lBRndGLHFTQUFZLHFEQUF3QyxLQUFDO0lBRzFNLEFBRDZELGlCQUE0QixFQUNuRjs7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRDJOLEFBQXhCLEFBQWhILEFBQXpDLHlEQUF3QyxrSUFBMEQsMkJBQThFLHVCQUF1QiwyQkFDdk4seUJBQXlCLDBCQUMxQjs7OztJQUdyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRXFGO0lBQXpHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7O0lBSFksZUFBdUI7SUFDeUIsQUFEeEIsQUFBeEIsd0NBQXVCLHVCQUF1QixpR0FDb0Q7Ozs7SUFPNUcsQUFESiwrQkFBc0UsdUJBQzhHO0lBQXpFLGdVQUFlLHdFQUF3RCxLQUFDO0lBQUMsaUJBQWU7SUFDL0wsZ0NBQTZCO0lBQUEsWUFBZ0I7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LG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgV3JpdGFibGVTaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzbGlkZUZyb21SaWdodCB9IGZyb20gJy4uL2FuaW1hdGlvbnMvc2xpZGVGcm9tUmlnaHQnO1xuaW1wb3J0IHsgSURhdGVQaWNrZXJDb25maWcgfSBmcm9tICdtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL2RhdGVwaWNrZXJfdjInO1xuaW1wb3J0IHsgSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSAnbWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9zcGVjaWZpY2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgSURhdGVQaWNrZXJDb25maWcgYXMgSURhdGVSYW5nZVBpY2tlckNvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXJhbmdlcGlja2VyX3YyJztcbmltcG9ydCB7IEhhc1ZhbHVlUGlwZSB9IGZyb20gJy4uL2hhcy12YWx1ZS5waXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkYXRhPzogYW55W107XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlclR5cGUgPVxuICB8ICdtdWx0aVNlbGVjdCdcbiAgfCAnc2VsZWN0J1xuICB8ICdkYXRlUGlja2VyJ1xuICB8ICdkYXRlUmFuZ2VQaWNrZXInXG4gIHwgJ2NoZWNrYm94J1xuICB8ICdyYWRpbydcbiAgfCAndGV4dCdcbiAgfCAnbnVtYmVyJ1xuICB8ICdyYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyUGFuZWxDb25maWcge1xuICBrZXk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZTogRmlsdGVyVHlwZTtcbiAgb3B0aW9ucz86IEZpbHRlck9wdGlvbltdO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGF0ZVBpY2tlckNvbmZpZz86IElEYXRlUGlja2VyQ29uZmlnO1xuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc/OiBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuICBvbkNoYW5nZT86IChldmVudDogYW55LCBjb25maWc/OiBGaWx0ZXJQYW5lbENvbmZpZ1tdLCBmb3JtVmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWZpbHRlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW3NsaWRlRnJvbVJpZ2h0XVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBoYXNWYWx1ZTogSGFzVmFsdWVQaXBlKSB7XG4gICAgLy8gRWZmZWN0IHRvIHJlYWN0IHRvIGNvbmZpZyBjaGFuZ2VzIC0gbXVzdCBhbGxvdyBzaWduYWwgd3JpdGVzIHNpbmNlIHdlIHVwZGF0ZSBpbnRlcm5hbCBzaWduYWxzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNmZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGlmIChjZmcgJiYgQXJyYXkuaXNBcnJheShjZmcpICYmIGNmZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gT25seSBpbml0aWFsaXplIGZvcm0gaWYgbm90IGFscmVhZHkgZG9uZSwgb3IgaWYgY29uZmlnIHN0cnVjdHVyZSBjaGFuZ2VkXG4gICAgICAgICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQgfHwgdGhpcy5oYXNDb25maWdDaGFuZ2VkKGNmZykpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1Db250cm9scyhjZmcpO1xuICAgICAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQWx3YXlzIGNoZWNrIGZvciBzZWxlY3RlZFZhbHVlIGNoYW5nZXNcbiAgICAgICAgICB0aGlzLnNldEZpbHRlclZhbHVlKGNmZyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRmlsdGVyUGFuZWw6IEVycm9yIGluIGNvbmZpZyBlZmZlY3QnLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qIC0tLSBzaWduYWwtYmFzZWQgSW5wdXRzIC8gT3V0cHV0cyAtLS0gKi9cbiAgcHVibGljIHNob3cgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxGaWx0ZXJQYW5lbENvbmZpZ1tdPigpO1xuICBwdWJsaWMgZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIG9uQ2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcHVibGljIG9uQXBwbHkgPSBvdXRwdXQ8eyBmaWx0ZXJEYXRhOiBhbnk7IGZpbHRlckNvdW50OiBudW1iZXIgfT4oKTtcblxuICAvKiAtLS0gZm9ybSArIGludGVybmFsIHN0YXRlIC0tLSAqL1xuICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgcHJpdmF0ZSBmb3JtU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8vIGtlZXAgYSBzaWduYWwgc25hcHNob3Qgb2YgZm9ybSB2YWx1ZSBzbyBjb21wdXRlZCBjYW4gcmVhY3RcbiAgcHJpdmF0ZSBfZm9ybVZhbHVlU2lnbmFsOiBXcml0YWJsZVNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IHNpZ25hbCh7fSk7XG5cbiAgLy8gbGFzdCBhcHBsaWVkIHNuYXBzaG90IChzaWduYWwgc28gdGVtcGxhdGUvbG9naWMgY2FuIHJlYWQgcmVsaWFibHkpXG4gIHB1YmxpYyBsYXN0QXBwbGllZERhdGE6IFdyaXRhYmxlU2lnbmFsPFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsPiA9IHNpZ25hbChudWxsKTtcblxuICAvLyBkYXRlIHJhbmdlIHJlYWRhYmxlIGZvciB0ZW1wbGF0ZVxuICBwdWJsaWMgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlczogV3JpdGFibGVTaWduYWw8SVJTZWxlY3RlZERhdGVzQ29uZmlnPiA9IHNpZ25hbCh7XG4gICAgc3RhcnREYXRlOiAnJyxcbiAgICBlbmREYXRlOiAnJ1xuICB9KTtcblxuICAvKiBjb21wdXRlZCBmaWx0ZXJDb3VudCAqL1xuICBwdWJsaWMgZmlsdGVyQ291bnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5fZm9ybVZhbHVlU2lnbmFsKCk7XG4gICAgY29uc3QgY2ZnID0gdGhpcy5jb25maWcoKTtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgY2ZnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZvcm1WYWx1ZVtmaWx0ZXIua2V5XTtcblxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiAodmFsdWUubWluICE9PSBudWxsIHx8IHZhbHVlLm1heCAhPT0gbnVsbCkpIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0odmFsdWUpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9KTtcblxuICAvKiAtLS0gTGlmZWN5Y2xlIC0tLSAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBzdWJzY3JpYmUgZm9ybSBjaGFuZ2VzIHNvIGNvbXB1dGVkL2ZpbHRlckNvdW50IHVwZGF0ZVxuICAgIHRoaXMuc3Vic2NyaWJlRm9ybUNoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qIC0tLSBGb3JtIGluaXQgJiBoZWxwZXJzIC0tLSAqL1xuICBpbml0aWFsaXplRm9ybUNvbnRyb2xzKGNvbmZpZzogRmlsdGVyUGFuZWxDb25maWdbXSk6IHZvaWQge1xuICAgIC8vIGJ1aWxkIGEgZnJlc2ggZm9ybSB0byBtYXRjaCBjb25maWdcbiAgICBjb25zdCBuZXdGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgICBjb25zdCByYW5nZVZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoZ3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IG1pbiA9IChncm91cC5nZXQoJ21pbicpIGFzIEZvcm1Db250cm9sKT8udmFsdWU7XG4gICAgICBjb25zdCBtYXggPSAoZ3JvdXAuZ2V0KCdtYXgnKSBhcyBGb3JtQ29udHJvbCk/LnZhbHVlO1xuICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiBtYXggIT09IG51bGwgJiYgbWluID4gbWF4KSB7XG4gICAgICAgIHJldHVybiB7IHJhbmdlRXJyb3I6ICdNaW4gdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBtYXggdmFsdWUnIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgY29uZmlnKSB7XG4gICAgICBsZXQgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXG4gICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Hcm91cChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWluOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICAgIG1heDogbmV3IEZvcm1Db250cm9sKG51bGwpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyB2YWxpZGF0b3JzOiByYW5nZVZhbGlkYXRvciB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtdWx0aVNlbGVjdCc6XG4gICAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKEFycmF5LmlzQXJyYXkoZmlsdGVyLmRlZmF1bHRWYWx1ZSkgPyBmaWx0ZXIuZGVmYXVsdFZhbHVlIDogW10pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmaWx0ZXIuZGVmYXVsdFZhbHVlID8/ICcnKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZmlsdGVyLmRlZmF1bHRWYWx1ZSA/PyBudWxsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUudHJhbnNmb3JtKGZpbHRlci5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmlsdGVyLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIG5ld0Zvcm0uYWRkQ29udHJvbChmaWx0ZXIua2V5LCBjb250cm9sKTtcbiAgICB9XG5cbiAgICAvLyByZXBsYWNlIGZvcm0gc2FmZWx5XG4gICAgLy8gcHJlc2VydmUgc3Vic2NyaXB0aW9uIHNvIHZhbHVlQ2hhbmdlcyBjb250aW51ZXMgdG8gdXBkYXRlIF9mb3JtVmFsdWVTaWduYWxcbiAgICB0aGlzLmZpbHRlckZvcm0gPSBuZXdGb3JtO1xuICAgIC8vIHVwZGF0ZSBzaWduYWwgc25hcHNob3QgaW1tZWRpYXRlbHlcbiAgICB0aGlzLl9mb3JtVmFsdWVTaWduYWwuc2V0KHsgLi4udGhpcy5maWx0ZXJGb3JtLnZhbHVlIH0pO1xuXG4gICAgLy8gcmUtc3Vic2NyaWJlIHRvIG5ldyBmb3JtJ3MgdmFsdWVDaGFuZ2VzXG4gICAgdGhpcy5zdWJzY3JpYmVGb3JtQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVGb3JtQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAvLyB1bnN1YnNjcmliZSBwcmV2aW91cyBzdWJzY3JpcHRpb24gaWYgYW55XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgLy8gc3Vic2NyaWJlIHRvIHZhbHVlQ2hhbmdlczsgc2V0IHNuYXBzaG90IHNpZ25hbFxuICAgIHRoaXMuZm9ybVN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuX2Zvcm1WYWx1ZVNpZ25hbC5zZXQoeyAuLi52YWx1ZSB9KTtcbiAgICB9KTtcblxuICAgIC8vIGFsc28gc2V0IGluaXRpYWwgc25hcHNob3QgaW4gY2FzZSB2YWx1ZUNoYW5nZXMgZG9lc24ndCBlbWl0IGltbWVkaWF0ZWx5XG4gICAgdGhpcy5fZm9ybVZhbHVlU2lnbmFsLnNldCh7IC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udHJvbChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckZvcm0uZ2V0KGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY29uZmlnIHN0cnVjdHVyZSBoYXMgY2hhbmdlZCAobmV3IGtleXMgb3IgcmVtb3ZlZCBrZXlzKVxuICAgKiBVc2VkIHRvIGRldGVybWluZSBpZiBmb3JtIG5lZWRzIHRvIGJlIHJlYnVpbHRcbiAgICovXG4gIHByaXZhdGUgaGFzQ29uZmlnQ2hhbmdlZChuZXdDb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50S2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyRm9ybS5jb250cm9scykuc29ydCgpO1xuICAgIGNvbnN0IG5ld0tleXMgPSBuZXdDb25maWcubWFwKGYgPT4gZi5rZXkpLnNvcnQoKTtcbiAgICBcbiAgICBpZiAoY3VycmVudEtleXMubGVuZ3RoICE9PSBuZXdLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBjdXJyZW50S2V5cy5zb21lKChrZXksIGluZGV4KSA9PiBrZXkgIT09IG5ld0tleXNbaW5kZXhdKTtcbiAgfVxuXG4gIC8qIC0tLSBBY3Rpb25zIC8gVUkgaGFuZGxlcnMgLS0tICovXG4gIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgY29uc3QgbGFzdCA9IHRoaXMubGFzdEFwcGxpZWREYXRhKCk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIHByZWZlciBzZXRWYWx1ZSAoZW5zdXJlcyBzaGFwZSBtYXRjaGVzKTsgZmFsbGJhY2sgdG8gcGF0Y2hWYWx1ZVxuICAgICAgICB0aGlzLmZpbHRlckZvcm0uc2V0VmFsdWUobGFzdCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUobGFzdCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJGb3JtVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgLy8gZW1pdCBjbG9zZSBldmVudFxuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICBhcHBseUZpbHRlcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgXG4gICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgZm9ybSB2YWx1ZVxuICAgIGNvbnN0IHNuYXBzaG90ID0geyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfTtcbiAgXG4gICAgLy8gT1BUSU9OQUw6IE1hcCBvYmplY3RzIGJhY2sgdG8gdmFsdWVzIGZvciB0aGUgT3V0cHV0IGVtaXNzaW9uIFxuICAgIC8vIHNvIHRoZSBwYXJlbnQgcmVjZWl2ZXMgY2xlYW4gZGF0YSAoWydMT0dJTiddIGluc3RlYWQgb2YgW3tsYWJlbDouLi4sIHZhbHVlOiAnTE9HSU4nfV0pXG4gICAgY29uc3QgY2xlYW5TbmFwc2hvdCA9IHRoaXMubWFwVmFsdWVzRm9yRW1pc3Npb24oc25hcHNob3QpO1xuICBcbiAgICB0aGlzLmxhc3RBcHBsaWVkRGF0YS5zZXQoc25hcHNob3QpOyAvLyBLZWVwIG9iamVjdHMgZm9yIFVJIHN0YXRlXG4gIFxuICAgIHRoaXMub25BcHBseS5lbWl0KHtcbiAgICAgIGZpbHRlckRhdGE6IGNsZWFuU25hcHNob3QsIC8vIEVtaXQgdmFsdWVzXG4gICAgICBmaWx0ZXJDb3VudDogdGhpcy5maWx0ZXJDb3VudCgpXG4gICAgfSk7XG4gIFxuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICB9XG4gIFxuICAvLyBIZWxwZXIgdG8gY2xlYW4gdXAgZGF0YSBiZWZvcmUgZW1pdHRpbmdcbiAgcHJpdmF0ZSBtYXBWYWx1ZXNGb3JFbWlzc2lvbihmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgY29uc3QgY2xlYW5EYXRhID0geyAuLi5mb3JtVmFsdWUgfTtcbiAgICBjb25zdCBjZmcgPSB0aGlzLmNvbmZpZygpO1xuICBcbiAgICBjZmcuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBjbGVhbkRhdGFbZmlsdGVyLmtleV07XG4gIFxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNsZWFuRGF0YVtmaWx0ZXIua2V5XSA9IHZhbHVlOyBcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgcmV0dXJuIGNsZWFuRGF0YTtcbiAgfVxuICBcbiAgXG4gIFxuXG4gIHJlc2V0RmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyRm9ybVZhbHVlcygpO1xuICAgIC8vIGNhbGwgYXBwbHlGaWx0ZXJzIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yICh2YWxpZGF0aW9uICsgZW1pdClcbiAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICB9XG5cbiAgLyogLS0tIFZhbHVlIHNldHRlcnMgLS0tICovXG4vLyBmaWx0ZXItcGFuZWwuY29tcG9uZW50LnRzXG5cbmhhbmRsZVNlbGVjdChldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBjdHJsID0gdGhpcy5nZXRDb250cm9sKGZpbHRlcktleSk7XG4gIFxuICAvLyBGSVg6IERvIG5vdCBzdHJpcCB0aGUgdmFsdWUgaGVyZS4gU3RvcmUgdGhlIGZ1bGwgb2JqZWN0IHNvIHRoZSBVSSBcbiAgLy8gY2FuIG1hdGNoIGl0IGFnYWluc3QgdGhlIGRhdGEgbGlzdCB3aGVuIHJlLXJlbmRlcmluZy5cbiAgbGV0IHZhbHVlVG9TZXQgPSBldmVudDtcblxuICAvKiAvLyBDT01NRU5URUQgT1VUIE9SIFJFTU9WRUQgVEhJUyBCTE9DS1xuICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICBpZiAoZXZlbnQubGVuZ3RoID4gMCAmJiB0eXBlb2YgZXZlbnRbMF0gPT09ICdvYmplY3QnICYmICd2YWx1ZScgaW4gZXZlbnRbMF0pIHtcbiAgICAgIHZhbHVlVG9TZXQgPSBldmVudC5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS52YWx1ZSB8fCBpdGVtKTtcbiAgICB9XG4gIH1cbiAgKi9cbiAgXG4gIGN0cmw/LnNldFZhbHVlKHZhbHVlVG9TZXQpO1xuXG4gIGlmIChmaWx0ZXIub25DaGFuZ2UpIHtcbiAgICBmaWx0ZXIub25DaGFuZ2UoZXZlbnQsIHRoaXMuY29uZmlnKCksIHRoaXMuZmlsdGVyRm9ybS52YWx1ZSk7XG4gIH1cbn1cblxuXG5cbiAgaGFuZGxlQ2hlY2tib3goZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGNoZWNrYm94VmFsdWU6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmdldENvbnRyb2woZmlsdGVyS2V5KTtcbiAgICBjb25zdCBjdXJyZW50ID0gQXJyYXkuaXNBcnJheShjdHJsPy52YWx1ZSkgPyBbLi4uY3RybC52YWx1ZV0gOiBbXTtcbiAgICBpZiAoZXZlbnQ/LnZhbHVlKSB7XG4gICAgICBjdHJsPy5zZXRWYWx1ZShbLi4uY3VycmVudCwgY2hlY2tib3hWYWx1ZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdHJsPy5zZXRWYWx1ZShjdXJyZW50LmZpbHRlcigodikgPT4gdiAhPT0gY2hlY2tib3hWYWx1ZSkpO1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXIub25DaGFuZ2UpIHtcbiAgICAgIGZpbHRlci5vbkNoYW5nZShldmVudCwgdGhpcy5jb25maWcoKSwgdGhpcy5maWx0ZXJGb3JtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvbkRhdGVDaGFuZ2UoZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5nZXRDb250cm9sKGZpbHRlcktleSk7XG4gICAgY3RybD8uc2V0VmFsdWUoZXZlbnQpO1xuXG4gICAgaWYgKGV2ZW50ICYmIHR5cGVvZiBldmVudCA9PT0gJ29iamVjdCcgJiYgJ3N0YXJ0RGF0ZScgaW4gZXZlbnQgJiYgJ2VuZERhdGUnIGluIGV2ZW50KSB7XG4gICAgICB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMuc2V0KHtcbiAgICAgICAgc3RhcnREYXRlOiBldmVudC5zdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tLSBDbGVhciAvIFNldCB2YWx1ZXMgaGVscGVycyAtLS0gKi9cbiAgY2xlYXJGb3JtVmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlc2V0czogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgdGhpcy5jb25maWcoKSkge1xuICAgICAgbGV0IGRlZmF1bHRWYWx1ZTogYW55ID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnIHx8IGZpbHRlci50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgPz8gW107XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSA/PyB7IG1pbjogbnVsbCwgbWF4OiBudWxsIH07XG4gICAgICB9XG4gICAgICByZXNldHNbZmlsdGVyLmtleV0gPSBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgLy8gcGF0Y2ggdG8gYXZvaWQgc2hhcGUgbWlzbWF0Y2ggZXJyb3JzXG4gICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUocmVzZXRzKTtcbiAgICB0aGlzLl9mb3JtVmFsdWVTaWduYWwuc2V0KHsgLi4udGhpcy5maWx0ZXJGb3JtLnZhbHVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgZmlsdGVyLnNlbGVjdGVkVmFsdWUgd2hlbiBwYXJlbnQgcHJvdmlkZXMgc2VsZWN0ZWRWYWx1ZS5cbiAgICogQ2FsbGVkIGJ5IHRoZSBjb25maWcgZWZmZWN0IChzbyBydW5zIG9uIGluaXRpYWwgbG9hZCBhbmQgb24gY29uZmlnIGNoYW5nZXMpLlxuICAgKi9cbiAgc2V0RmlsdGVyVmFsdWUoY29uZmlnOiBGaWx0ZXJQYW5lbENvbmZpZ1tdKTogdm9pZCB7XG4gICAgbGV0IGFueVZhbHVlU2V0ID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBjb25maWcpIHtcbiAgICAgIGlmICh0aGlzLmhhc1ZhbHVlLnRyYW5zZm9ybShmaWx0ZXI/LnNlbGVjdGVkVmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLmdldENvbnRyb2woZmlsdGVyLmtleSk7XG4gICAgICAgIGlmIChjdHJsKSB7XG4gICAgICAgICAgY3RybC5zZXRWYWx1ZShmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgICAgYW55VmFsdWVTZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFueVZhbHVlU2V0ICYmIHRoaXMuZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMoKSkge1xuICAgICAgLy8gcmVzcGVjdCB0aGUgcGFyZW50IGZsYWcg4oCUIGFwcGx5IGFuZCBlbWl0XG4gICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBtYWtlIHN1cmUgb3VyIHNuYXBzaG90IHNpZ25hbCBpcyBmcmVzaFxuICAgICAgdGhpcy5fZm9ybVZhbHVlU2lnbmFsLnNldCh7IC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSB9KTtcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLXBhbmVsLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvdygpXCIgQHNsaWRlRnJvbVJpZ2h0PlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkZXJcIj5cbiAgICAgICAgPHNwYW4+RmlsdGVyczwvc3Bhbj5cbiAgICAgICAgPHN2ZyBjbGFzcz1cImNsb3NlLWljb25cIiAoY2xpY2spPVwiY2xvc2VQYW5lbCgpXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI1XCIgdmlld0JveD1cIjAgMCAyNSAyNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPGcgaWQ9XCJpYy1uYXZpZ2F0aW9uLWNhbmNlbC0yNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVW5pb25cIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNOC42MDQ2OCA2LjY0MzU1QzguMDkwMzYgNi4xMjkyMyA3LjI1NjQ5IDYuMTI5MjMgNi43NDIxOCA2LjY0MzU1QzYuMjI3ODcgNy4xNTc4NiA2LjIyNzg3IDcuOTkxNzMgNi43NDIxOCA4LjUwNjA0TDEwLjQ5MzggMTIuMjU3Nkw2Ljc0MzEgMTYuMDA4M0M2LjIyODc5IDE2LjUyMjYgNi4yMjg3OSAxNy4zNTY0IDYuNzQzMSAxNy44NzA4QzcuMjU3NDIgMTguMzg1MSA4LjA5MTI5IDE4LjM4NTEgOC42MDU2MCAxNy44NzA4TDEyLjM1NjIgMTQuMTIwMUwxNi4xMDY4IDE3Ljg3MDdDMTYuNjIxMSAxOC4zODUwIDE3LjQ1NTAgMTguMzg1MCAxNy45NjkzIDE3Ljg3MDdDMTguNDgzNiAxNy4zNTY0IDE4LjQ4MzYgMTYuNTIyNSAxNy45NjkzIDE2LjAwODJMMTQuMjE4NyAxMi4yNTc2TDE3Ljk3MDIgOC41MDYxM0MxOC40ODQ1IDcuOTkxODEgMTguNDg0NSA3LjE1Nzk0IDE3Ljk3MDIgNi42NDM2M0MxNy40NTU5IDYuMTI5MzIgMTYuNjIyMCA2LjEyOTMyIDE2LjEwNzcgNi42NDM2M0wxMi4zNTYyIDEwLjM5NTFMOC42MDQ2OCA2LjY0MzU1WlwiIGZpbGw9XCIjMTgxRjMzXCIgLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIFxuICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXIgZmlyc3RcIj48L2Rpdj5cbiAgXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlcnNcIiBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGNvbmZpZygpOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIiAqbmdJZj1cIiFmaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItdGl0bGVcIj57e2ZpbHRlci50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWlzLW11bHRpLXNlbGVjdC1kcm9wZG93biBjbGFzcz1cIm5vLXBhZGRpbmdcIiBbbGFiZWxdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnXCIgW3NlbGVjdGVkSXRlbXNdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LnZhbHVlIHx8IFtdXCIgKG9uQ2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2VsZWN0ZWRDb3VudF09XCJ0cnVlXCIgW2VuYWJsZVNlbGVjdEFsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZUFwcGx5QnV0dG9uXT1cImZhbHNlXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiNDRweFwiPjwvbWlzLW11bHRpLXNlbGVjdC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnc2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWRyb3Bkb3duIFtkYXRhXT1cImZpbHRlci5vcHRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlU2VsZWN0KCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiIFtzZWxlY3RlZEl0ZW1dPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21pcy1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXIub3B0aW9uc1wiIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1pcy1jaGVja2JveCBbdHlwZV09XCInRGVmYXVsdCdcIiBbY2hlY2tlZF09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KT8udmFsdWU/LmluY2x1ZGVzKG9wdGlvbi52YWx1ZSlcIiAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlQ2hlY2tib3goJGV2ZW50LCBmaWx0ZXIua2V5LCBvcHRpb24udmFsdWUsIGZpbHRlcilcIj48L21pcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCI+e3tvcHRpb24ubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IGNsYXNzPVwibWlzLWlucHV0XCIgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUGlja2VyQ29uZmlnXCIgW3BsYWNlaG9sZGVyXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy52YWx1ZSB8fCBmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCdcIiBbdmFsdWVdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LnZhbHVlIHx8IGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbc2VsZWN0ZWREYXRlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy52YWx1ZVwiIFtwb3NpdGlvblhdPVwiJ2VuZCdcIiBbb2Zmc2V0WF09XCItMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnZGF0ZVJhbmdlUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcnAgbWlzSW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm1pcy1pbnB1dFwiIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIighZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGUpID8gKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JykgOiBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICsgJyAtICcgKyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIighZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGUpID8gKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JykgOiBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICsgJyAtICcgKyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZVwiIFtwb3NpdGlvblhdPVwiJ3N0YXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uWV09XCIndG9wJ1wiIFtzZWxlY3RlZERhdGVzXT1cImRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKVwiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcENvbmZpZ109XCJmaWx0ZXIuZGF0ZVJhbmdlUGlja2VyQ29uZmlnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAndGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzSW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWlzLWlucHV0PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWlubmVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzBdPy5sYWJlbCB8fCAnTWluJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmlsdGVyPy5vcHRpb25zPy5bMV0/LmxhYmVsIHx8ICdNYXgnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy5nZXQoJ21pbicpPy52YWx1ZSB8fCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXJcIiAqbmdJZj1cIiFsYXN0XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIFxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidSZXNldCdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1RleHQnXCIgKGNsaWNrKT1cInJlc2V0RmlsdGVycygpXCI+PC9taXMtYnV0dG9uPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInQXBwbHknXCIgW3NpemVdPVwiJ1NtYWxsJ1wiIFt0eXBlXT1cIidTb2xpZCdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIiBbZGlzYWJsZWRdPVwiZmlsdGVyRm9ybS5pbnZhbGlkXCI+PC9taXMtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, input, output, computed, signal, effect } from '@angular/core';
1
+ import { Component, input, output, signal, effect } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  import * as i2 from "mis-crystal-design-system/button";
@@ -91,13 +91,14 @@ export class MobileFilterComponent {
91
91
  this.applyFilters = output();
92
92
  // This internal signal holds the state of the selected item.
93
93
  // It is writable and can be updated from within the component's template.
94
- this.selectedItem = signal(this.currentSelectedItem());
94
+ this.selectedItem = signal('');
95
95
  // Use a computed signal for the filter options to maintain reactivity.
96
- this.localFilterOptions = computed(() => this.filterOptions());
97
- // This effect ensures that if the parent changes the input, our internal signal is also updated.
96
+ this.localFilterOptions = signal({});
97
+ // This effect handles both initialization and subsequent changes of the inputs.
98
98
  effect(() => {
99
99
  this.selectedItem.set(this.currentSelectedItem());
100
- });
100
+ this.localFilterOptions.set(structuredClone(this.filterOptions()));
101
+ }, { allowSignalWrites: true });
101
102
  }
102
103
  // Rest of your component methods...
103
104
  originalOrder() {
@@ -123,10 +124,22 @@ export class MobileFilterComponent {
123
124
  };
124
125
  });
125
126
  currentFilter.noOfSelectedItems = newNoOfSelectedItems;
127
+ this.localFilterOptions.set(updatedOptions);
126
128
  }
127
129
  onApply() {
128
130
  this.applyFilters.emit(this.localFilterOptions());
129
131
  }
132
+ onClearFilters() {
133
+ if (Object.keys(this.filterOptions()).length > 0) {
134
+ Object.keys(this.filterOptions()).forEach(key => {
135
+ this.filterOptions()[key].options.forEach(option => {
136
+ option.selected = false;
137
+ });
138
+ this.filterOptions()[key].noOfSelectedItems = 0;
139
+ });
140
+ this.clearFilters.emit();
141
+ }
142
+ }
130
143
  static { this.ɵfac = function MobileFilterComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MobileFilterComponent)(); }; }
131
144
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MobileFilterComponent, selectors: [["mis-mobile-filter"]], inputs: { currentSelectedItem: [1, "currentSelectedItem"], filterOptions: [1, "filterOptions"], backIcon: [1, "backIcon"], headerName: [1, "headerName"], applyBtnName: [1, "applyBtnName"], clearBtnName: [1, "clearBtnName"] }, outputs: { closeFilters: "closeFilters", clearFilters: "clearFilters", applyFilters: "applyFilters" }, decls: 20, vars: 10, consts: [[1, "filters-container"], [1, "head", "display-flex"], ["tabindex", "0", "aria-label", "Close Filters Arrow", "alt", "", 3, "click", "keyup.enter", "src"], [1, "body", "display-flex"], [1, "filters"], [4, "ngFor", "ngForOf"], [1, "filter-options-container"], [1, "filter-options-title"], [1, "filter-options"], [1, "footer", "display-flex"], ["mis-button", "", "size", "md", "type", "text", 3, "click"], ["mis-button", "", "size", "md", "type", "primary", 3, "click"], ["tabindex", "0", 1, "filter", "display-flex", 3, "click", "keyup.enter"], [1, "filterName", 3, "ngStyle"], ["class", "selectedNumber", 4, "ngIf"], ["class", "highlightor", 4, "ngIf"], [1, "selectedNumber"], [1, "highlightor"], ["tabindex", "0", 1, "filter-option", "display-flex", 3, "click", "keyup.enter"], [3, "checked", 4, "ngIf"], ["type", "radio", 3, "checked", 4, "ngIf"], [3, "ngStyle"], [3, "checked"], ["type", "radio", 3, "checked"]], template: function MobileFilterComponent_Template(rf, ctx) { if (rf & 1) {
132
145
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "img", 2);
@@ -146,7 +159,7 @@ export class MobileFilterComponent {
146
159
  i0.ɵɵtemplate(14, MobileFilterComponent_ng_container_14_Template, 6, 6, "ng-container", 5);
147
160
  i0.ɵɵelementEnd()()();
148
161
  i0.ɵɵelementStart(15, "div", 9)(16, "button", 10);
149
- i0.ɵɵlistener("click", function MobileFilterComponent_Template_button_click_16_listener() { return ctx.clearFilters.emit(); });
162
+ i0.ɵɵlistener("click", function MobileFilterComponent_Template_button_click_16_listener() { return ctx.onClearFilters(); });
150
163
  i0.ɵɵtext(17);
151
164
  i0.ɵɵelementEnd();
152
165
  i0.ɵɵelementStart(18, "button", 11);
@@ -174,7 +187,7 @@ export class MobileFilterComponent {
174
187
  }
175
188
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MobileFilterComponent, [{
176
189
  type: Component,
177
- args: [{ selector: 'mis-mobile-filter', template: "<div class=\"filters-container\">\n <div class=\"head display-flex\">\n <img\n tabindex=\"0\"\n (click)=\"closeFilters.emit();\"\n (keyup.enter)=\"closeFilters.emit();\"\n aria-label=\"Close Filters Arrow\"\n [src]=\"backIcon()\" alt=\"\">\n <span>{{headerName()}}</span>\n </div>\n <div class=\"body display-flex\">\n <div class=\"filters\">\n <ng-container *ngFor=\"let filter of localFilterOptions() | keyvalue : originalOrder\">\n <div class=\"filter display-flex\"\n tabindex=\"0\"\n (click)=\"selectedItem.set(filter.key)\"\n (keyup.enter)=\"selectedItem.set(filter.key)\"\n >\n <span class=\"filterName\" [ngStyle]=\"{'color': filter.key === selectedItem() ? '#0937B2' : '#181F33'}\">{{ localFilterOptions()![filter.key]?.name }}</span>\n <span class=\"selectedNumber\" *ngIf=\"localFilterOptions()![filter.key]['multiSelect'] && localFilterOptions()![filter.key]['noOfSelectedItems']! > 0\">{{ localFilterOptions()![filter.key]['noOfSelectedItems'] }}</span>\n <div class=\"highlightor\" *ngIf=\"filter.key === selectedItem()\"></div>\n </div>\n </ng-container>\n </div>\n <div class=\"filter-options-container\">\n <div class=\"filter-options-title\">\n <span>{{ localFilterOptions()![selectedItem()]?.name }}</span>\n </div>\n <div class=\"filter-options\">\n <ng-container *ngFor=\"let option of localFilterOptions()![selectedItem()]?.options; let i = index\">\n <div class=\"filter-option display-flex\"\n tabindex=\"0\"\n (click)=\"toggleFilter(option.value, option.selected)\"\n (keyup.enter)=\"toggleFilter(option.value, option.selected)\"\n >\n <mis-checkbox\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' checkbox ' + option.label\"\n *ngIf=\"localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n </mis-checkbox>\n <input\n type=\"radio\"\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' radioButton ' + option.label\"\n *ngIf=\"!localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n <span [ngStyle]=\"{'color': option.selected ? '#181F33' : '#6A737D'}\">{{ option.label }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"footer display-flex\">\n <button\n mis-button\n size=\"md\"\n type=\"text\"\n (click)=\"clearFilters.emit()\">\n {{clearBtnName()}}\n </button>\n <button\n mis-button\n size=\"md\"\n type=\"primary\"\n (click)=\"onApply()\">\n {{applyBtnName()}}\n </button>\n </div>\n</div>\n\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}.display-flex{display:flex}.filters-container{position:absolute;inset:0;background-color:var(--bg-primary, #FFFFFF);cursor:default}.filters-container *{font-family:Lato}.filters-container .head{height:56px;border-bottom:1px solid var(--border-primary, #E0E0E0);justify-content:flex-start;align-items:center;padding:0 16px;gap:12px}.filters-container .head img{cursor:pointer}.filters-container .head span{font-weight:700;font-size:17px;line-height:24px;letter-spacing:.2px}.filters-container .body{height:calc(100vh - 129px)}.filters-container .body .filters{width:120px;border-right:1px solid var(--border-primary, #E0E0E0);flex-shrink:0}.filters-container .body .filters .filter{height:56px;padding:0 16px;border-bottom:1px solid var(--border-primary, #E0E0E0);align-items:center;font-size:15px;justify-content:space-between;position:relative}.filters-container .body .filters .filter .filterName{color:var(--text-secondary, #6A737D);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filters .filter .selectedNumber{background-color:var(--bg-tertiary, #F5F5F5);height:24px;width:auto;font-size:14px;min-width:24px;border-radius:50%;text-align:center;line-height:24px;padding:0 8px}.filters-container .body .filters .filter .highlightor{position:absolute;left:0;height:100%;width:4px;background-color:var(--brand-primary, #0937B2)}.filters-container .body .filter-options-container{padding:16px 16px 0 12px;width:calc(100% - 56px);overflow-x:hidden}.filters-container .body .filter-options-container *{color:var(--text-primary, #181F33)}.filters-container .body .filter-options-container .filter-options-title{text-transform:uppercase;font-size:12px;line-height:16px;letter-spacing:.25px}.filters-container .body .filter-options-container .filter-options-title span{color:var(--text-secondary, #6A737D)}.filters-container .body .filter-options-container .filter-options{margin-top:16px;overflow-y:scroll;height:calc(100% - 32px)}.filters-container .body .filter-options-container .filter-options .filter-option{height:48px;border-bottom:1px solid var(--border-primary, #E0E0E0);align-items:center;padding-left:16px;gap:13px;font-size:15px}.filters-container .body .filter-options-container .filter-options .filter-option span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filter-options-container .filter-options .filter-option input[type=radio]{accent-color:var(--brand-primary, #0937B2);width:20px;height:20px}.filters-container .footer{height:73px;border-top:1px solid var(--border-primary, #E0E0E0);padding:0 16px;align-items:center;justify-content:space-between}.filters-container .footer button{width:160px}\n"] }]
190
+ args: [{ selector: 'mis-mobile-filter', template: "<div class=\"filters-container\">\n <div class=\"head display-flex\">\n <img\n tabindex=\"0\"\n (click)=\"closeFilters.emit();\"\n (keyup.enter)=\"closeFilters.emit();\"\n aria-label=\"Close Filters Arrow\"\n [src]=\"backIcon()\" alt=\"\">\n <span>{{headerName()}}</span>\n </div>\n <div class=\"body display-flex\">\n <div class=\"filters\">\n <ng-container *ngFor=\"let filter of localFilterOptions() | keyvalue : originalOrder\">\n <div class=\"filter display-flex\"\n tabindex=\"0\"\n (click)=\"selectedItem.set(filter.key)\"\n (keyup.enter)=\"selectedItem.set(filter.key)\"\n >\n <span class=\"filterName\" [ngStyle]=\"{'color': filter.key === selectedItem() ? '#0937B2' : '#181F33'}\">{{ localFilterOptions()![filter.key]?.name }}</span>\n <span class=\"selectedNumber\" *ngIf=\"localFilterOptions()![filter.key]['multiSelect'] && localFilterOptions()![filter.key]['noOfSelectedItems']! > 0\">{{ localFilterOptions()![filter.key]['noOfSelectedItems'] }}</span>\n <div class=\"highlightor\" *ngIf=\"filter.key === selectedItem()\"></div>\n </div>\n </ng-container>\n </div>\n <div class=\"filter-options-container\">\n <div class=\"filter-options-title\">\n <span>{{ localFilterOptions()![selectedItem()]?.name }}</span>\n </div>\n <div class=\"filter-options\">\n <ng-container *ngFor=\"let option of localFilterOptions()![selectedItem()]?.options; let i = index\">\n <div class=\"filter-option display-flex\"\n tabindex=\"0\"\n (click)=\"toggleFilter(option.value, option.selected)\"\n (keyup.enter)=\"toggleFilter(option.value, option.selected)\"\n >\n <mis-checkbox\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' checkbox ' + option.label\"\n *ngIf=\"localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n </mis-checkbox>\n <input\n type=\"radio\"\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' radioButton ' + option.label\"\n *ngIf=\"!localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n <span [ngStyle]=\"{'color': option.selected ? '#181F33' : '#6A737D'}\">{{ option.label }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"footer display-flex\">\n <button\n mis-button\n size=\"md\"\n type=\"text\"\n (click)=\"onClearFilters()\">\n {{clearBtnName()}}\n </button>\n <button\n mis-button\n size=\"md\"\n type=\"primary\"\n (click)=\"onApply()\">\n {{applyBtnName()}}\n </button>\n </div>\n</div>\n\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}.display-flex{display:flex}.filters-container{position:absolute;inset:0;background-color:var(--bg-primary, #FFFFFF);cursor:default}.filters-container *{font-family:Lato}.filters-container .head{height:56px;border-bottom:1px solid var(--border-primary, #E0E0E0);justify-content:flex-start;align-items:center;padding:0 16px;gap:12px}.filters-container .head img{cursor:pointer}.filters-container .head span{font-weight:700;font-size:17px;line-height:24px;letter-spacing:.2px}.filters-container .body{height:calc(100vh - 129px)}.filters-container .body .filters{width:120px;border-right:1px solid var(--border-primary, #E0E0E0);flex-shrink:0}.filters-container .body .filters .filter{height:56px;padding:0 16px;border-bottom:1px solid var(--border-primary, #E0E0E0);align-items:center;font-size:15px;justify-content:space-between;position:relative}.filters-container .body .filters .filter .filterName{color:var(--text-secondary, #6A737D);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filters .filter .selectedNumber{background-color:var(--bg-tertiary, #F5F5F5);height:24px;width:auto;font-size:14px;min-width:24px;border-radius:50%;text-align:center;line-height:24px;padding:0 8px}.filters-container .body .filters .filter .highlightor{position:absolute;left:0;height:100%;width:4px;background-color:var(--brand-primary, #0937B2)}.filters-container .body .filter-options-container{padding:16px 16px 0 12px;width:calc(100% - 56px);overflow-x:hidden}.filters-container .body .filter-options-container *{color:var(--text-primary, #181F33)}.filters-container .body .filter-options-container .filter-options-title{text-transform:uppercase;font-size:12px;line-height:16px;letter-spacing:.25px}.filters-container .body .filter-options-container .filter-options-title span{color:var(--text-secondary, #6A737D)}.filters-container .body .filter-options-container .filter-options{margin-top:16px;overflow-y:scroll;height:calc(100% - 32px)}.filters-container .body .filter-options-container .filter-options .filter-option{height:48px;border-bottom:1px solid var(--border-primary, #E0E0E0);align-items:center;padding-left:16px;gap:13px;font-size:15px}.filters-container .body .filter-options-container .filter-options .filter-option span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filter-options-container .filter-options .filter-option input[type=radio]{accent-color:var(--brand-primary, #0937B2);width:20px;height:20px}.filters-container .footer{height:73px;border-top:1px solid var(--border-primary, #E0E0E0);padding:0 16px;align-items:center;justify-content:space-between}.filters-container .footer button{width:160px}\n"] }]
178
191
  }], () => [], null); })();
179
192
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MobileFilterComponent, { className: "MobileFilterComponent" }); })();
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9tb2JpbGUtZmlsdGVyL21vYmlsZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvbW9iaWxlLWZpbHRlci9tb2JpbGUtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztJQ21CL0QsZ0NBQXFKO0lBQUEsWUFBNEQ7SUFBQSxpQkFBTzs7OztJQUFuRSxjQUE0RDtJQUE1RCxxRkFBNEQ7OztJQUNqTiwwQkFBcUU7Ozs7SUFSN0UsNkJBQXFGO0lBQ2pGLCtCQUlLO0lBREQsQUFEQSxtTkFBUyxzQ0FBNEIsS0FBQyxrTkFDdkIsc0NBQTRCLEtBQUM7SUFFNUMsZ0NBQXNHO0lBQUEsWUFBNkM7SUFBQSxpQkFBTztJQUUxSixBQURBLHdGQUFxSix5RUFDdEY7SUFDbkUsaUJBQU07Ozs7OztJQUh1QixlQUE0RTtJQUE1RSxxSEFBNEU7SUFBQyxjQUE2QztJQUE3QywwR0FBNkM7SUFDckgsY0FBcUg7SUFBckgsdUpBQXFIO0lBQ3pILGNBQW1DO0lBQW5DLDhEQUFtQzs7O0lBZXpELG1DQUllOzs7SUFEWCw0Q0FBMkI7Ozs7SUFFL0IsNEJBSWdDOzs7SUFBNUIsNENBQTJCOzs7OztJQWZ2Qyw2QkFBbUc7SUFDL0YsK0JBSUs7SUFERCxBQURBLG9OQUFTLHdEQUEyQyxLQUFDLG1OQUN0Qyx3REFBMkMsS0FBQztJQU8zRCxBQUxBLHlHQUdnQyw4RUFNQTtJQUNoQyxnQ0FBcUU7SUFBQSxZQUFrQjtJQUMzRixBQUQyRixpQkFBTyxFQUM1Rjs7Ozs7SUFU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QU1HO1lBRjFCLEFBREEsK0ZBQVMsdUJBQW1CLElBQUUsOEZBQ2YsdUJBQW1CLElBQUU7WUFIeEMsaUJBSzhCO1lBQzlCLDRCQUFNO1lBQUEsWUFBZ0I7WUFDMUIsQUFEMEIsaUJBQU8sRUFDM0I7WUFFRixBQURKLDhCQUErQixhQUNOO1lBQ2pCLHdGQUFxRjs7WUFXekYsaUJBQU07WUFHRSxBQURKLEFBREosOEJBQXNDLGNBQ0EsWUFDeEI7WUFBQSxhQUFpRDtZQUMzRCxBQUQyRCxpQkFBTyxFQUM1RDtZQUNOLCtCQUE0QjtZQUN4QiwwRkFBbUc7WUFxQi9HLEFBREksQUFESSxpQkFBTSxFQUNKLEVBQ0o7WUFFRixBQURKLCtCQUFpQyxrQkFLSztZQUE5QixtR0FBUyx1QkFBbUIsSUFBQztZQUM3QixhQUNKO1lBQUEsaUJBQVM7WUFDVCxtQ0FJd0I7WUFBcEIsbUdBQVMsYUFBUyxJQUFDO1lBQ25CLGFBQ0o7WUFFUixBQURJLEFBREksaUJBQVMsRUFDUCxFQUNKOzs7O1lBNURNLGVBQWtCO1lBQWxCLHNEQUFrQjtZQUNoQixlQUFnQjtZQUFoQixzQ0FBZ0I7WUFJZSxlQUFrRDtZQUFsRCwyRkFBa0Q7WUFjekUsZUFBaUQ7WUFBakQsNEdBQWlEO1lBR3RCLGVBQW1EO1lBQW5ELG1IQUFtRDtZQTRCeEYsZUFDSjtZQURJLG1EQUNKO1lBTUksZUFDSjtZQURJLG1EQUNKOzs7aUZEMURLLHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNFLG1CQUFtQjs7a0ZBSWxCLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQsIG91dHB1dCwgY29tcHV0ZWQsIHNpZ25hbCwgZWZmZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21pcy1tb2JpbGUtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vYmlsZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2JpbGUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTW9iaWxlRmlsdGVyQ29tcG9uZW50IHtcblxuICAvLyBUaGUgaW5wdXQgc2lnbmFsIGlzIHJlYWQtb25seS4gSXRzIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBieSB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRTZWxlY3RlZEl0ZW0gPSBpbnB1dDxzdHJpbmc+KCdTb3J0Jyk7XG4gIHB1YmxpYyByZWFkb25seSBmaWx0ZXJPcHRpb25zID0gaW5wdXQucmVxdWlyZWQ8SUZpbHRlck9wdGlvbnM+KCk7XG4gIHB1YmxpYyByZWFkb25seSBiYWNrSWNvbiA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyTmFtZSA9IGlucHV0PHN0cmluZz4oJ0ZpbHRlcnMnKTtcbiAgcHVibGljIHJlYWRvbmx5IGFwcGx5QnRuTmFtZSA9IGlucHV0PHN0cmluZz4oJ0FwcGx5Jyk7XG4gIHB1YmxpYyByZWFkb25seSBjbGVhckJ0bk5hbWUgPSBpbnB1dDxzdHJpbmc+KCdDbGVhciBGaWx0ZXJzJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNsb3NlRmlsdGVycyA9IG91dHB1dDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2xlYXJGaWx0ZXJzID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhcHBseUZpbHRlcnMgPSBvdXRwdXQ8SUZpbHRlck9wdGlvbnM+KCk7XG5cbiAgLy8gVGhpcyBpbnRlcm5hbCBzaWduYWwgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZSBzZWxlY3RlZCBpdGVtLlxuICAvLyBJdCBpcyB3cml0YWJsZSBhbmQgY2FuIGJlIHVwZGF0ZWQgZnJvbSB3aXRoaW4gdGhlIGNvbXBvbmVudCdzIHRlbXBsYXRlLlxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtID0gc2lnbmFsPHN0cmluZz4odGhpcy5jdXJyZW50U2VsZWN0ZWRJdGVtKCkpO1xuXG4gIC8vIFVzZSBhIGNvbXB1dGVkIHNpZ25hbCBmb3IgdGhlIGZpbHRlciBvcHRpb25zIHRvIG1haW50YWluIHJlYWN0aXZpdHkuXG4gIHB1YmxpYyByZWFkb25seSBsb2NhbEZpbHRlck9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZpbHRlck9wdGlvbnMoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gVGhpcyBlZmZlY3QgZW5zdXJlcyB0aGF0IGlmIHRoZSBwYXJlbnQgY2hhbmdlcyB0aGUgaW5wdXQsIG91ciBpbnRlcm5hbCBzaWduYWwgaXMgYWxzbyB1cGRhdGVkLlxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQodGhpcy5jdXJyZW50U2VsZWN0ZWRJdGVtKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVzdCBvZiB5b3VyIGNvbXBvbmVudCBtZXRob2RzLi4uXG4gIHB1YmxpYyBvcmlnaW5hbE9yZGVyKCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUZpbHRlcihkYXRhOiBhbnksIGlzU2VsZWN0ZWRJdGVtOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5sb2NhbEZpbHRlck9wdGlvbnMoKSk7XG4gICAgY29uc3QgY3VycmVudEtleSA9IHRoaXMuc2VsZWN0ZWRJdGVtKCk7XG4gICAgY29uc3QgY3VycmVudEZpbHRlciA9IHVwZGF0ZWRPcHRpb25zW2N1cnJlbnRLZXldO1xuXG4gICAgaWYgKCFjdXJyZW50RmlsdGVyKSByZXR1cm47XG5cbiAgICBjb25zdCBpc011bHRpU2VsZWN0ID0gY3VycmVudEZpbHRlci5tdWx0aVNlbGVjdDtcbiAgICBsZXQgbmV3Tm9PZlNlbGVjdGVkSXRlbXMgPSAwO1xuXG4gICAgY3VycmVudEZpbHRlci5vcHRpb25zID0gY3VycmVudEZpbHRlci5vcHRpb25zLm1hcChvcHRpb24gPT4ge1xuICAgICAgY29uc3QgaXNTZWxlY3RlZFZhbHVlID0gb3B0aW9uLnZhbHVlID09PSBkYXRhO1xuICAgICAgY29uc3QgbmV3U2VsZWN0ZWRTdGF0ZSA9IGlzU2VsZWN0ZWRWYWx1ZSA/IChpc011bHRpU2VsZWN0ID8gIW9wdGlvbi5zZWxlY3RlZCA6IHRydWUpIDogKGlzTXVsdGlTZWxlY3QgPyBvcHRpb24uc2VsZWN0ZWQgOiBmYWxzZSk7XG5cbiAgICAgIGlmIChuZXdTZWxlY3RlZFN0YXRlKSB7XG4gICAgICAgIG5ld05vT2ZTZWxlY3RlZEl0ZW1zKys7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm9wdGlvbixcbiAgICAgICAgc2VsZWN0ZWQ6IG5ld1NlbGVjdGVkU3RhdGVcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjdXJyZW50RmlsdGVyLm5vT2ZTZWxlY3RlZEl0ZW1zID0gbmV3Tm9PZlNlbGVjdGVkSXRlbXM7XG4gIH1cblxuICBwdWJsaWMgb25BcHBseSgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcGx5RmlsdGVycy5lbWl0KHRoaXMubG9jYWxGaWx0ZXJPcHRpb25zKCkpO1xuICB9XG4gIFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJPcHRpb25zIHtcbiAgW2ZpbHRlck5hbWU6IHN0cmluZ106IHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG9wdGlvbnM6IHtsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzZWxlY3RlZDogYm9vbGVhbiwgY2FwYWNpdGllcz86IG51bWJlcltdLCBhbWVuaXRpZXM/OiBzdHJpbmdbXX1bXSwgICAgLy8gY2FwYWNpdGllcyAmIGFtZW5pdGllcyBhcmUgZm9yIGZsb29yXG4gICAgICBtdWx0aVNlbGVjdDogYm9vbGVhbixcbiAgICAgIG5vT2ZTZWxlY3RlZEl0ZW1zPzogbnVtYmVyXG4gIH1cbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVycy1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZCBkaXNwbGF5LWZsZXhcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZUZpbHRlcnMuZW1pdCgpO1wiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiY2xvc2VGaWx0ZXJzLmVtaXQoKTtcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIEZpbHRlcnMgQXJyb3dcIlxuICAgICAgICAgICAgW3NyY109XCJiYWNrSWNvbigpXCIgYWx0PVwiXCI+XG4gICAgICAgIDxzcGFuPnt7aGVhZGVyTmFtZSgpfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJvZHkgZGlzcGxheS1mbGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgbG9jYWxGaWx0ZXJPcHRpb25zKCkgfCBrZXl2YWx1ZSA6IG9yaWdpbmFsT3JkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyIGRpc3BsYXktZmxleFwiXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEl0ZW0uc2V0KGZpbHRlci5rZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlbGVjdGVkSXRlbS5zZXQoZmlsdGVyLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyTmFtZVwiIFtuZ1N0eWxlXT1cInsnY29sb3InOiBmaWx0ZXIua2V5ID09PSBzZWxlY3RlZEl0ZW0oKSA/ICcjMDkzN0IyJyA6ICcjMTgxRjMzJ31cIj57eyBsb2NhbEZpbHRlck9wdGlvbnMoKSFbZmlsdGVyLmtleV0/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWROdW1iZXJcIiAqbmdJZj1cImxvY2FsRmlsdGVyT3B0aW9ucygpIVtmaWx0ZXIua2V5XVsnbXVsdGlTZWxlY3QnXSAmJiBsb2NhbEZpbHRlck9wdGlvbnMoKSFbZmlsdGVyLmtleV1bJ25vT2ZTZWxlY3RlZEl0ZW1zJ10hID4gMFwiPnt7IGxvY2FsRmlsdGVyT3B0aW9ucygpIVtmaWx0ZXIua2V5XVsnbm9PZlNlbGVjdGVkSXRlbXMnXSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZ2hsaWdodG9yXCIgKm5nSWY9XCJmaWx0ZXIua2V5ID09PSBzZWxlY3RlZEl0ZW0oKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbnMtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsb2NhbEZpbHRlck9wdGlvbnMoKSFbc2VsZWN0ZWRJdGVtKCldPy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgbG9jYWxGaWx0ZXJPcHRpb25zKCkhW3NlbGVjdGVkSXRlbSgpXT8ub3B0aW9uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbiBkaXNwbGF5LWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGaWx0ZXIob3B0aW9uLnZhbHVlLCBvcHRpb24uc2VsZWN0ZWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVGaWx0ZXIob3B0aW9uLnZhbHVlLCBvcHRpb24uc2VsZWN0ZWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtaXMtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihvcHRpb24uc2VsZWN0ZWQgPyAnU2VsZWN0ZWQnIDogJ1Vuc2VsZWN0ZWQnKSArICcgY2hlY2tib3ggJyArIG9wdGlvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2NhbEZpbHRlck9wdGlvbnMoKSFbc2VsZWN0ZWRJdGVtKCldIS5tdWx0aVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwib3B0aW9uLnNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21pcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIob3B0aW9uLnNlbGVjdGVkID8gJ1NlbGVjdGVkJyA6ICdVbnNlbGVjdGVkJykgKyAnIHJhZGlvQnV0dG9uICcgKyBvcHRpb24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvY2FsRmlsdGVyT3B0aW9ucygpIVtzZWxlY3RlZEl0ZW0oKV0hLm11bHRpU2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJvcHRpb24uc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInsnY29sb3InOiBvcHRpb24uc2VsZWN0ZWQgPyAnIzE4MUYzMycgOiAnIzZBNzM3RCd9XCI+e3sgb3B0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyIGRpc3BsYXktZmxleFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtaXMtYnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibWRcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVycy5lbWl0KClcIj5cbiAgICAgICAgICAgIHt7Y2xlYXJCdG5OYW1lKCl9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWlzLWJ1dHRvblxuICAgICAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFwcGx5KClcIj5cbiAgICAgICAgICAgIHt7YXBwbHlCdG5OYW1lKCl9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9tb2JpbGUtZmlsdGVyL21vYmlsZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvbW9iaWxlLWZpbHRlci9tb2JpbGUtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDbUIvRCxnQ0FBcUo7SUFBQSxZQUE0RDtJQUFBLGlCQUFPOzs7O0lBQW5FLGNBQTREO0lBQTVELHFGQUE0RDs7O0lBQ2pOLDBCQUFxRTs7OztJQVI3RSw2QkFBcUY7SUFDakYsK0JBSUs7SUFERCxBQURBLG1OQUFTLHNDQUE0QixLQUFDLGtOQUN2QixzQ0FBNEIsS0FBQztJQUU1QyxnQ0FBc0c7SUFBQSxZQUE2QztJQUFBLGlCQUFPO0lBRTFKLEFBREEsd0ZBQXFKLHlFQUN0RjtJQUNuRSxpQkFBTTs7Ozs7O0lBSHVCLGVBQTRFO0lBQTVFLHFIQUE0RTtJQUFDLGNBQTZDO0lBQTdDLDBHQUE2QztJQUNySCxjQUFxSDtJQUFySCx1SkFBcUg7SUFDekgsY0FBbUM7SUFBbkMsOERBQW1DOzs7SUFlekQsbUNBSWU7OztJQURYLDRDQUEyQjs7OztJQUUvQiw0QkFJZ0M7OztJQUE1Qiw0Q0FBMkI7Ozs7O0lBZnZDLDZCQUFtRztJQUMvRiwrQkFJSztJQURELEFBREEsb05BQVMsd0RBQTJDLEtBQUMsbU5BQ3RDLHdEQUEyQyxLQUFDO0lBTzNELEFBTEEseUdBR2dDLDhFQU1BO0lBQ2hDLGdDQUFxRTtJQUFBLFlBQWtCO0lBQzNGLEFBRDJGLGlCQUFPLEVBQzVGOzs7OztJQVRHLGVBQXdEO0lB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b0JBQWdCLElBQUM7WUFDMUIsYUFDSjtZQUFBLGlCQUFTO1lBQ1QsbUNBSXdCO1lBQXBCLG1HQUFTLGFBQVMsSUFBQztZQUNuQixhQUNKO1lBRVIsQUFESSxBQURJLGlCQUFTLEVBQ1AsRUFDSjs7OztZQTVETSxlQUFrQjtZQUFsQixzREFBa0I7WUFDaEIsZUFBZ0I7WUFBaEIsc0NBQWdCO1lBSWUsZUFBa0Q7WUFBbEQsMkZBQWtEO1lBY3pFLGVBQWlEO1lBQWpELDRHQUFpRDtZQUd0QixlQUFtRDtZQUFuRCxtSEFBbUQ7WUE0QnhGLGVBQ0o7WUFESSxtREFDSjtZQU1JLGVBQ0o7WUFESSxtREFDSjs7O2lGRDFESyxxQkFBcUI7Y0FMakMsU0FBUzsyQkFDRSxtQkFBbUI7O2tGQUlsQixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIGNvbXB1dGVkLCBzaWduYWwsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtbW9iaWxlLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2JpbGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9iaWxlLWZpbHRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1vYmlsZUZpbHRlckNvbXBvbmVudCB7XG5cbiAgLy8gVGhlIGlucHV0IHNpZ25hbCBpcyByZWFkLW9ubHkuIEl0cyB2YWx1ZSBjYW4gb25seSBiZSBzZXQgYnkgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50U2VsZWN0ZWRJdGVtID0gaW5wdXQ8c3RyaW5nPignU29ydCcpO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyT3B0aW9ucyA9IGlucHV0LnJlcXVpcmVkPElGaWx0ZXJPcHRpb25zPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYmFja0ljb24gPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IGhlYWRlck5hbWUgPSBpbnB1dDxzdHJpbmc+KCdGaWx0ZXJzJyk7XG4gIHB1YmxpYyByZWFkb25seSBhcHBseUJ0bk5hbWUgPSBpbnB1dDxzdHJpbmc+KCdBcHBseScpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2xlYXJCdG5OYW1lID0gaW5wdXQ8c3RyaW5nPignQ2xlYXIgRmlsdGVycycpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjbG9zZUZpbHRlcnMgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGNsZWFyRmlsdGVycyA9IG91dHB1dDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBwbHlGaWx0ZXJzID0gb3V0cHV0PElGaWx0ZXJPcHRpb25zPigpO1xuXG4gIC8vIFRoaXMgaW50ZXJuYWwgc2lnbmFsIGhvbGRzIHRoZSBzdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgaXRlbS5cbiAgLy8gSXQgaXMgd3JpdGFibGUgYW5kIGNhbiBiZSB1cGRhdGVkIGZyb20gd2l0aGluIHRoZSBjb21wb25lbnQncyB0ZW1wbGF0ZS5cbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkSXRlbSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgLy8gVXNlIGEgY29tcHV0ZWQgc2lnbmFsIGZvciB0aGUgZmlsdGVyIG9wdGlvbnMgdG8gbWFpbnRhaW4gcmVhY3Rpdml0eS5cbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsRmlsdGVyT3B0aW9ucyA9IHNpZ25hbDxJRmlsdGVyT3B0aW9ucz4oe30pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgICAgLy8gVGhpcyBlZmZlY3QgaGFuZGxlcyBib3RoIGluaXRpYWxpemF0aW9uIGFuZCBzdWJzZXF1ZW50IGNoYW5nZXMgb2YgdGhlIGlucHV0cy5cbiAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uc2V0KHRoaXMuY3VycmVudFNlbGVjdGVkSXRlbSgpKTsgXG4gICAgICAgICAgdGhpcy5sb2NhbEZpbHRlck9wdGlvbnMuc2V0KHN0cnVjdHVyZWRDbG9uZSh0aGlzLmZpbHRlck9wdGlvbnMoKSkpO1xuICAgICAgICAgIFxuICAgICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8vIFJlc3Qgb2YgeW91ciBjb21wb25lbnQgbWV0aG9kcy4uLlxuICBwdWJsaWMgb3JpZ2luYWxPcmRlcigpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG5wdWJsaWMgdG9nZ2xlRmlsdGVyKGRhdGE6IGFueSwgaXNTZWxlY3RlZEl0ZW06IGJvb2xlYW4pOiB2b2lkIHtcbiAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5sb2NhbEZpbHRlck9wdGlvbnMoKSk7XG4gIGNvbnN0IGN1cnJlbnRLZXkgPSB0aGlzLnNlbGVjdGVkSXRlbSgpO1xuICBjb25zdCBjdXJyZW50RmlsdGVyID0gdXBkYXRlZE9wdGlvbnNbY3VycmVudEtleV07XG5cbiAgaWYgKCFjdXJyZW50RmlsdGVyKSByZXR1cm47XG5cbiAgY29uc3QgaXNNdWx0aVNlbGVjdCA9IGN1cnJlbnRGaWx0ZXIubXVsdGlTZWxlY3Q7XG4gIGxldCBuZXdOb09mU2VsZWN0ZWRJdGVtcyA9IDA7XG5cbiAgY3VycmVudEZpbHRlci5vcHRpb25zID0gY3VycmVudEZpbHRlci5vcHRpb25zLm1hcChvcHRpb24gPT4ge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWRWYWx1ZSA9IG9wdGlvbi52YWx1ZSA9PT0gZGF0YTtcbiAgICBjb25zdCBuZXdTZWxlY3RlZFN0YXRlID0gaXNTZWxlY3RlZFZhbHVlID8gKGlzTXVsdGlTZWxlY3QgPyAhb3B0aW9uLnNlbGVjdGVkIDogdHJ1ZSkgOiAoaXNNdWx0aVNlbGVjdCA/IG9wdGlvbi5zZWxlY3RlZCA6IGZhbHNlKTtcblxuICAgIGlmIChuZXdTZWxlY3RlZFN0YXRlKSB7XG4gICAgICBuZXdOb09mU2VsZWN0ZWRJdGVtcysrO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5vcHRpb24sXG4gICAgICBzZWxlY3RlZDogbmV3U2VsZWN0ZWRTdGF0ZVxuICAgIH07XG4gIH0pO1xuXG4gIGN1cnJlbnRGaWx0ZXIubm9PZlNlbGVjdGVkSXRlbXMgPSBuZXdOb09mU2VsZWN0ZWRJdGVtcztcbiAgdGhpcy5sb2NhbEZpbHRlck9wdGlvbnMuc2V0KHVwZGF0ZWRPcHRpb25zKTsgXG59XG5cbiAgcHVibGljIG9uQXBwbHkoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseUZpbHRlcnMuZW1pdCh0aGlzLmxvY2FsRmlsdGVyT3B0aW9ucygpKTtcbiAgfVxuXG4gIG9uQ2xlYXJGaWx0ZXJzKCk6IHZvaWR7XG4gICAgaWYoT2JqZWN0LmtleXModGhpcy5maWx0ZXJPcHRpb25zKCkpLmxlbmd0aCA+IDApIHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyT3B0aW9ucygpKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpW2tleV0ub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKVtrZXldLm5vT2ZTZWxlY3RlZEl0ZW1zID0gMDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jbGVhckZpbHRlcnMuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJPcHRpb25zIHtcbiAgW2ZpbHRlck5hbWU6IHN0cmluZ106IHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG9wdGlvbnM6IHtsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBzZWxlY3RlZDogYm9vbGVhbiwgY2FwYWNpdGllcz86IG51bWJlcltdLCBhbWVuaXRpZXM/OiBzdHJpbmdbXX1bXSwgICAgLy8gY2FwYWNpdGllcyAmIGFtZW5pdGllcyBhcmUgZm9yIGZsb29yXG4gICAgICBtdWx0aVNlbGVjdDogYm9vbGVhbixcbiAgICAgIG5vT2ZTZWxlY3RlZEl0ZW1zPzogbnVtYmVyXG4gIH1cbn1cblxuXG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVycy1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZCBkaXNwbGF5LWZsZXhcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZUZpbHRlcnMuZW1pdCgpO1wiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiY2xvc2VGaWx0ZXJzLmVtaXQoKTtcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIEZpbHRlcnMgQXJyb3dcIlxuICAgICAgICAgICAgW3NyY109XCJiYWNrSWNvbigpXCIgYWx0PVwiXCI+XG4gICAgICAgIDxzcGFuPnt7aGVhZGVyTmFtZSgpfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJvZHkgZGlzcGxheS1mbGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgbG9jYWxGaWx0ZXJPcHRpb25zKCkgfCBrZXl2YWx1ZSA6IG9yaWdpbmFsT3JkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyIGRpc3BsYXktZmxleFwiXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEl0ZW0uc2V0KGZpbHRlci5rZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInNlbGVjdGVkSXRlbS5zZXQoZmlsdGVyLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyTmFtZVwiIFtuZ1N0eWxlXT1cInsnY29sb3InOiBmaWx0ZXIua2V5ID09PSBzZWxlY3RlZEl0ZW0oKSA/ICcjMDkzN0IyJyA6ICcjMTgxRjMzJ31cIj57eyBsb2NhbEZpbHRlck9wdGlvbnMoKSFbZmlsdGVyLmtleV0/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWROdW1iZXJcIiAqbmdJZj1cImxvY2FsRmlsdGVyT3B0aW9ucygpIVtmaWx0ZXIua2V5XVsnbXVsdGlTZWxlY3QnXSAmJiBsb2NhbEZpbHRlck9wdGlvbnMoKSFbZmlsdGVyLmtleV1bJ25vT2ZTZWxlY3RlZEl0ZW1zJ10hID4gMFwiPnt7IGxvY2FsRmlsdGVyT3B0aW9ucygpIVtmaWx0ZXIua2V5XVsnbm9PZlNlbGVjdGVkSXRlbXMnXSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZ2hsaWdodG9yXCIgKm5nSWY9XCJmaWx0ZXIua2V5ID09PSBzZWxlY3RlZEl0ZW0oKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbnMtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBsb2NhbEZpbHRlck9wdGlvbnMoKSFbc2VsZWN0ZWRJdGVtKCldPy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgbG9jYWxGaWx0ZXJPcHRpb25zKCkhW3NlbGVjdGVkSXRlbSgpXT8ub3B0aW9uczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLW9wdGlvbiBkaXNwbGF5LWZsZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGaWx0ZXIob3B0aW9uLnZhbHVlLCBvcHRpb24uc2VsZWN0ZWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVGaWx0ZXIob3B0aW9uLnZhbHVlLCBvcHRpb24uc2VsZWN0ZWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtaXMtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihvcHRpb24uc2VsZWN0ZWQgPyAnU2VsZWN0ZWQnIDogJ1Vuc2VsZWN0ZWQnKSArICcgY2hlY2tib3ggJyArIG9wdGlvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsb2NhbEZpbHRlck9wdGlvbnMoKSFbc2VsZWN0ZWRJdGVtKCldIS5tdWx0aVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwib3B0aW9uLnNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21pcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIob3B0aW9uLnNlbGVjdGVkID8gJ1NlbGVjdGVkJyA6ICdVbnNlbGVjdGVkJykgKyAnIHJhZGlvQnV0dG9uICcgKyBvcHRpb24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvY2FsRmlsdGVyT3B0aW9ucygpIVtzZWxlY3RlZEl0ZW0oKV0hLm11bHRpU2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJvcHRpb24uc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInsnY29sb3InOiBvcHRpb24uc2VsZWN0ZWQgPyAnIzE4MUYzMycgOiAnIzZBNzM3RCd9XCI+e3sgb3B0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyIGRpc3BsYXktZmxleFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtaXMtYnV0dG9uXG4gICAgICAgICAgICBzaXplPVwibWRcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXJGaWx0ZXJzKClcIj5cbiAgICAgICAgICAgIHt7Y2xlYXJCdG5OYW1lKCl9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWlzLWJ1dHRvblxuICAgICAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFwcGx5KClcIj5cbiAgICAgICAgICAgIHt7YXBwbHlCdG5OYW1lKCl9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
@@ -271,7 +271,7 @@ function FilterPanelComponent_div_0_Template(rf, ctx) { if (rf & 1) {
271
271
  i0.ɵɵadvance();
272
272
  i0.ɵɵproperty("ngForOf", ctx_r1.config());
273
273
  i0.ɵɵadvance(2);
274
- i0.ɵɵproperty("name", "Clear All")("size", "Small")("type", "Text");
274
+ i0.ɵɵproperty("name", "Reset")("size", "Small")("type", "Text");
275
275
  i0.ɵɵadvance();
276
276
  i0.ɵɵproperty("name", "Apply")("size", "Small")("type", "Solid")("disabled", ctx_r1.filterForm.invalid);
277
277
  } }
@@ -459,8 +459,7 @@ class FilterPanelComponent {
459
459
  cfg.forEach(filter => {
460
460
  const value = cleanData[filter.key];
461
461
  if (filter.type === 'multiSelect' && Array.isArray(value)) {
462
- // Convert [{value: 'X', ...}] back to ['X']
463
- cleanData[filter.key] = value.map((v) => v?.value || v);
462
+ cleanData[filter.key] = value;
464
463
  }
465
464
  });
466
465
  return cleanData;
@@ -562,7 +561,7 @@ class FilterPanelComponent {
562
561
  }
563
562
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterPanelComponent, [{
564
563
  type: Component,
565
- 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 <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datePickerConfig\" [placeholder]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" [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>", 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"] }]
564
+ 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 <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datePickerConfig\" [placeholder]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" [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]=\"'Reset'\" [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>", 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"] }]
566
565
  }], () => [{ type: HasValuePipe }], null); })();
567
566
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterPanelComponent, { className: "FilterPanelComponent" }); })();
568
567
 
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-filter.mjs","sources":["../../../projects/mis-components/filter/animations/slideFromRight.ts","../../../projects/mis-components/filter/has-value.pipe.ts","../../../projects/mis-components/filter/filter-panel/filter-panel.component.html","../../../projects/mis-components/filter/filter-panel/filter-panel.component.ts","../../../projects/mis-components/filter/filters.module.ts","../../../projects/mis-components/filter/mis-crystal-design-system-filter.ts"],"sourcesContent":["import { trigger, style, animate, transition } from '@angular/animations';\n\nexport const slideFromRight = trigger('slideFromRight', [\n transition(':enter', [\n style({ transform: 'translateX(100%)' }),\n animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateX(0)' }))\n ]),\n\n transition(':leave', [\n style({ transform: 'translateX(0)' }),\n animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateX(100%)' }))\n ])\n]);\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * HasValuePipe\n * This pipe is use to check given value should not null or undefined \n * Its also check object, Its hould not be empty\n */\n@Pipe({\n name: 'hasValue',\n})\nexport class HasValuePipe implements PipeTransform {\n transform(value: any): any {\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n /* This was evaluating dateObject as false*/\n if (value instanceof Date) {\n return true;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length >= 1;\n }\n return value !== null && value !== undefined && value !== '';\n }\n}\n","<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 <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datePickerConfig\" [placeholder]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" [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>","import {\n Component,\n OnInit,\n OnDestroy,\n effect,\n signal,\n computed,\n input,\n output,\n WritableSignal\n} from '@angular/core';\nimport { FormControl, FormGroup, AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { slideFromRight } from '../animations/slideFromRight';\nimport { IDatePickerConfig } from 'mis-crystal-design-system/datepicker_v2';\nimport { IRSelectedDatesConfig } from 'mis-crystal-design-system/specificdatepicker';\nimport { IDatePickerConfig as IDateRangePickerConfig } from 'mis-crystal-design-system/daterangepicker_v2';\nimport { HasValuePipe } from '../has-value.pipe';\n\nexport interface FilterOption {\n label: string;\n value: string;\n data?: any[];\n}\n\nexport type FilterType =\n | 'multiSelect'\n | 'select'\n | 'datePicker'\n | 'dateRangePicker'\n | 'checkbox'\n | 'radio'\n | 'text'\n | 'number'\n | 'range';\n\nexport interface FilterPanelConfig {\n key: string;\n title: string;\n type: FilterType;\n options?: FilterOption[];\n placeholder?: string;\n hidden?: boolean;\n datePickerConfig?: IDatePickerConfig;\n dateRangePickerConfig?: IDateRangePickerConfig;\n onChange?: (event: any, config?: FilterPanelConfig[], formValue?: any) => void;\n defaultValue?: any;\n selectedValue?: any;\n}\n\n@Component({\n selector: 'mis-filter-panel',\n templateUrl: './filter-panel.component.html',\n styleUrls: ['./filter-panel.component.scss'],\n animations: [slideFromRight]\n})\nexport class FilterPanelComponent implements OnInit, OnDestroy {\n private isInitialized = false;\n\n constructor(private hasValue: HasValuePipe) {\n // Effect to react to config changes - must allow signal writes since we update internal signals\n effect(() => {\n try {\n const cfg = this.config();\n if (cfg && Array.isArray(cfg) && cfg.length > 0) {\n // Only initialize form if not already done, or if config structure changed\n if (!this.isInitialized || this.hasConfigChanged(cfg)) {\n this.initializeFormControls(cfg);\n this.isInitialized = true;\n }\n // Always check for selectedValue changes\n this.setFilterValue(cfg);\n }\n } catch (error) {\n console.warn('FilterPanel: Error in config effect', error);\n }\n }, { allowSignalWrites: true });\n }\n\n /* --- signal-based Inputs / Outputs --- */\n public show = input<boolean>(false);\n public config = input.required<FilterPanelConfig[]>();\n public emitFiltersAfterSettingNewValues = input<boolean>(false);\n\n public onClose = output<void>();\n public onApply = output<{ filterData: any; filterCount: number }>();\n\n /* --- form + internal state --- */\n filterForm: FormGroup = new FormGroup({});\n private formSubscription?: Subscription;\n\n // keep a signal snapshot of form value so computed can react\n private _formValueSignal: WritableSignal<Record<string, any>> = signal({});\n\n // last applied snapshot (signal so template/logic can read reliably)\n public lastAppliedData: WritableSignal<Record<string, any> | null> = signal(null);\n\n // date range readable for template\n public dateRangeSelectedDates: WritableSignal<IRSelectedDatesConfig> = signal({\n startDate: '',\n endDate: ''\n });\n\n /* computed filterCount */\n public filterCount = computed(() => {\n const formValue = this._formValueSignal();\n const cfg = this.config();\n let count = 0;\n\n for (const filter of cfg) {\n const value = formValue[filter.key];\n\n if (filter.type === 'range') {\n if (value && (value.min !== null || value.max !== null)) {\n count++;\n }\n continue;\n }\n\n if (filter.type === 'multiSelect' || filter.type === 'checkbox') {\n if (Array.isArray(value) && value.length > 0) {\n count++;\n }\n continue;\n }\n\n if (this.hasValue.transform(value)) {\n count++;\n }\n }\n\n return count;\n });\n\n /* --- Lifecycle --- */\n ngOnInit(): void {\n // subscribe form changes so computed/filterCount update\n this.subscribeFormChanges();\n }\n\n ngOnDestroy(): void {\n this.formSubscription?.unsubscribe();\n }\n\n /* --- Form init & helpers --- */\n initializeFormControls(config: FilterPanelConfig[]): void {\n // build a fresh form to match config\n const newForm = new FormGroup({});\n\n const rangeValidator: ValidatorFn = (group: AbstractControl): ValidationErrors | null => {\n const min = (group.get('min') as FormControl)?.value;\n const max = (group.get('max') as FormControl)?.value;\n if (min !== null && max !== null && min > max) {\n return { rangeError: 'Min value should be less than max value' };\n }\n return null;\n };\n\n for (const filter of config) {\n let control: AbstractControl;\n\n switch (filter.type) {\n case 'range':\n control = new FormGroup(\n {\n min: new FormControl(null),\n max: new FormControl(null)\n },\n { validators: rangeValidator }\n );\n break;\n\n case 'multiSelect':\n case 'checkbox':\n control = new FormControl(Array.isArray(filter.defaultValue) ? filter.defaultValue : []);\n break;\n\n case 'select':\n control = new FormControl(filter.defaultValue ?? '');\n break;\n\n default:\n control = new FormControl(filter.defaultValue ?? null);\n }\n\n if (this.hasValue.transform(filter.defaultValue)) {\n control.setValue(filter.defaultValue);\n }\n\n newForm.addControl(filter.key, control);\n }\n\n // replace form safely\n // preserve subscription so valueChanges continues to update _formValueSignal\n this.filterForm = newForm;\n // update signal snapshot immediately\n this._formValueSignal.set({ ...this.filterForm.value });\n\n // re-subscribe to new form's valueChanges\n this.subscribeFormChanges();\n }\n\n private subscribeFormChanges(): void {\n // unsubscribe previous subscription if any\n this.formSubscription?.unsubscribe();\n\n // subscribe to valueChanges; set snapshot signal\n this.formSubscription = this.filterForm.valueChanges?.subscribe((value) => {\n this._formValueSignal.set({ ...value });\n });\n\n // also set initial snapshot in case valueChanges doesn't emit immediately\n this._formValueSignal.set({ ...this.filterForm.value });\n }\n\n private getControl(key: string) {\n return this.filterForm.get(key);\n }\n\n /**\n * Check if config structure has changed (new keys or removed keys)\n * Used to determine if form needs to be rebuilt\n */\n private hasConfigChanged(newConfig: FilterPanelConfig[]): boolean {\n const currentKeys = Object.keys(this.filterForm.controls).sort();\n const newKeys = newConfig.map(f => f.key).sort();\n \n if (currentKeys.length !== newKeys.length) {\n return true;\n }\n \n return currentKeys.some((key, index) => key !== newKeys[index]);\n }\n\n /* --- Actions / UI handlers --- */\n closePanel(): void {\n const last = this.lastAppliedData();\n if (last) {\n try {\n // prefer setValue (ensures shape matches); fallback to patchValue\n this.filterForm.setValue(last);\n } catch {\n this.filterForm.patchValue(last);\n }\n } else {\n this.clearFormValues();\n }\n\n // emit close event\n this.onClose.emit();\n }\n\n applyFilters(): void {\n if (this.filterForm.invalid) {\n this.filterForm.markAllAsTouched();\n return;\n }\n \n // Create a copy of the form value\n const snapshot = { ...this.filterForm.value };\n \n // OPTIONAL: Map objects back to values for the Output emission \n // so the parent receives clean data (['LOGIN'] instead of [{label:..., value: 'LOGIN'}])\n const cleanSnapshot = this.mapValuesForEmission(snapshot);\n \n this.lastAppliedData.set(snapshot); // Keep objects for UI state\n \n this.onApply.emit({\n filterData: cleanSnapshot, // Emit values\n filterCount: this.filterCount()\n });\n \n this.closePanel();\n }\n \n // Helper to clean up data before emitting\n private mapValuesForEmission(formValue: any): any {\n const cleanData = { ...formValue };\n const cfg = this.config();\n \n cfg.forEach(filter => {\n const value = cleanData[filter.key];\n if (filter.type === 'multiSelect' && Array.isArray(value)) {\n // Convert [{value: 'X', ...}] back to ['X']\n cleanData[filter.key] = value.map((v: any) => v?.value || v);\n }\n });\n \n return cleanData;\n }\n \n \n\n resetFilters(): void {\n this.clearFormValues();\n // call applyFilters to maintain previous behavior (validation + emit)\n this.applyFilters();\n }\n\n /* --- Value setters --- */\n// filter-panel.component.ts\n\nhandleSelect(event: any, filterKey: string, filter: FilterPanelConfig): void {\n const ctrl = this.getControl(filterKey);\n \n // FIX: Do not strip the value here. Store the full object so the UI \n // can match it against the data list when re-rendering.\n let valueToSet = event;\n\n /* // COMMENTED OUT OR REMOVED THIS BLOCK\n if (filter.type === 'multiSelect' && Array.isArray(event)) {\n if (event.length > 0 && typeof event[0] === 'object' && 'value' in event[0]) {\n valueToSet = event.map((item: any) => item.value || item);\n }\n }\n */\n \n ctrl?.setValue(valueToSet);\n\n if (filter.onChange) {\n filter.onChange(event, this.config(), this.filterForm.value);\n }\n}\n\n\n\n handleCheckbox(event: any, filterKey: string, checkboxValue: string, filter: FilterPanelConfig): void {\n const ctrl = this.getControl(filterKey);\n const current = Array.isArray(ctrl?.value) ? [...ctrl.value] : [];\n if (event?.value) {\n ctrl?.setValue([...current, checkboxValue]);\n } else {\n ctrl?.setValue(current.filter((v) => v !== checkboxValue));\n }\n\n if (filter.onChange) {\n filter.onChange(event, this.config(), this.filterForm.value);\n }\n }\n\n onDateChange(event: any, filterKey: string, filter: FilterPanelConfig): void {\n const ctrl = this.getControl(filterKey);\n ctrl?.setValue(event);\n\n if (event && typeof event === 'object' && 'startDate' in event && 'endDate' in event) {\n this.dateRangeSelectedDates.set({\n startDate: event.startDate,\n endDate: event.endDate\n });\n }\n }\n\n /* --- Clear / Set values helpers --- */\n clearFormValues(): void {\n const resets: Record<string, any> = {};\n\n for (const filter of this.config()) {\n let defaultValue: any = filter.defaultValue ?? null;\n if (filter.type === 'multiSelect' || filter.type === 'checkbox') {\n defaultValue = filter.defaultValue ?? [];\n }\n if (filter.type === 'range') {\n defaultValue = filter.defaultValue ?? { min: null, max: null };\n }\n resets[filter.key] = defaultValue;\n }\n\n // patch to avoid shape mismatch errors\n this.filterForm.patchValue(resets);\n this._formValueSignal.set({ ...this.filterForm.value });\n }\n\n /**\n * Applies filter.selectedValue when parent provides selectedValue.\n * Called by the config effect (so runs on initial load and on config changes).\n */\n setFilterValue(config: FilterPanelConfig[]): void {\n let anyValueSet = false;\n\n for (const filter of config) {\n if (this.hasValue.transform(filter?.selectedValue)) {\n const ctrl = this.getControl(filter.key);\n if (ctrl) {\n ctrl.setValue(filter.selectedValue);\n anyValueSet = true;\n }\n }\n }\n\n if (anyValueSet && this.emitFiltersAfterSettingNewValues()) {\n // respect the parent flag — apply and emit\n this.applyFilters();\n } else {\n // make sure our snapshot signal is fresh\n this._formValueSignal.set({ ...this.filterForm.value });\n }\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'mis-crystal-design-system/button';\nimport { RadioButtonModule } from 'mis-crystal-design-system/radio-button';\nimport { MisInputModule } from \"mis-crystal-design-system/input\";\nimport { CheckboxModule } from 'mis-crystal-design-system/checkbox';\nimport { MultiSelectDropdownModule } from 'mis-crystal-design-system/multi-select-dropdown';\nimport { DatepickerModuleV2 } from 'mis-crystal-design-system/datepicker_v2';\nimport { DateRangepickerModuleV2 } from 'mis-crystal-design-system/daterangepicker_v2';\nimport { FilterPanelComponent } from './filter-panel/filter-panel.component';\nimport { HasValuePipe } from './has-value.pipe';\nimport { DropdownModule } from 'mis-crystal-design-system/dropdown';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n MultiSelectDropdownModule,\n DropdownModule,\n RadioButtonModule,\n MisInputModule,\n DatepickerModuleV2,\n DateRangepickerModuleV2,\n CheckboxModule\n ],\n declarations: [FilterPanelComponent, HasValuePipe],\n providers: [\n HasValuePipe\n ],\n exports: [FilterPanelComponent]\n})\nexport class FiltersModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HasValuePipe"],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-filter.mjs","sources":["../../../projects/mis-components/filter/animations/slideFromRight.ts","../../../projects/mis-components/filter/has-value.pipe.ts","../../../projects/mis-components/filter/filter-panel/filter-panel.component.html","../../../projects/mis-components/filter/filter-panel/filter-panel.component.ts","../../../projects/mis-components/filter/filters.module.ts","../../../projects/mis-components/filter/mis-crystal-design-system-filter.ts"],"sourcesContent":["import { trigger, style, animate, transition } from '@angular/animations';\n\nexport const slideFromRight = trigger('slideFromRight', [\n transition(':enter', [\n style({ transform: 'translateX(100%)' }),\n animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateX(0)' }))\n ]),\n\n transition(':leave', [\n style({ transform: 'translateX(0)' }),\n animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateX(100%)' }))\n ])\n]);\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * HasValuePipe\n * This pipe is use to check given value should not null or undefined \n * Its also check object, Its hould not be empty\n */\n@Pipe({\n name: 'hasValue',\n})\nexport class HasValuePipe implements PipeTransform {\n transform(value: any): any {\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n /* This was evaluating dateObject as false*/\n if (value instanceof Date) {\n return true;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length >= 1;\n }\n return value !== null && value !== undefined && value !== '';\n }\n}\n","<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 <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datePickerConfig\" [placeholder]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" [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]=\"'Reset'\" [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>","import {\n Component,\n OnInit,\n OnDestroy,\n effect,\n signal,\n computed,\n input,\n output,\n WritableSignal\n} from '@angular/core';\nimport { FormControl, FormGroup, AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { slideFromRight } from '../animations/slideFromRight';\nimport { IDatePickerConfig } from 'mis-crystal-design-system/datepicker_v2';\nimport { IRSelectedDatesConfig } from 'mis-crystal-design-system/specificdatepicker';\nimport { IDatePickerConfig as IDateRangePickerConfig } from 'mis-crystal-design-system/daterangepicker_v2';\nimport { HasValuePipe } from '../has-value.pipe';\n\nexport interface FilterOption {\n label: string;\n value: string;\n data?: any[];\n}\n\nexport type FilterType =\n | 'multiSelect'\n | 'select'\n | 'datePicker'\n | 'dateRangePicker'\n | 'checkbox'\n | 'radio'\n | 'text'\n | 'number'\n | 'range';\n\nexport interface FilterPanelConfig {\n key: string;\n title: string;\n type: FilterType;\n options?: FilterOption[];\n placeholder?: string;\n hidden?: boolean;\n datePickerConfig?: IDatePickerConfig;\n dateRangePickerConfig?: IDateRangePickerConfig;\n onChange?: (event: any, config?: FilterPanelConfig[], formValue?: any) => void;\n defaultValue?: any;\n selectedValue?: any;\n}\n\n@Component({\n selector: 'mis-filter-panel',\n templateUrl: './filter-panel.component.html',\n styleUrls: ['./filter-panel.component.scss'],\n animations: [slideFromRight]\n})\nexport class FilterPanelComponent implements OnInit, OnDestroy {\n private isInitialized = false;\n\n constructor(private hasValue: HasValuePipe) {\n // Effect to react to config changes - must allow signal writes since we update internal signals\n effect(() => {\n try {\n const cfg = this.config();\n if (cfg && Array.isArray(cfg) && cfg.length > 0) {\n // Only initialize form if not already done, or if config structure changed\n if (!this.isInitialized || this.hasConfigChanged(cfg)) {\n this.initializeFormControls(cfg);\n this.isInitialized = true;\n }\n // Always check for selectedValue changes\n this.setFilterValue(cfg);\n }\n } catch (error) {\n console.warn('FilterPanel: Error in config effect', error);\n }\n }, { allowSignalWrites: true });\n }\n\n /* --- signal-based Inputs / Outputs --- */\n public show = input<boolean>(false);\n public config = input.required<FilterPanelConfig[]>();\n public emitFiltersAfterSettingNewValues = input<boolean>(false);\n\n public onClose = output<void>();\n public onApply = output<{ filterData: any; filterCount: number }>();\n\n /* --- form + internal state --- */\n filterForm: FormGroup = new FormGroup({});\n private formSubscription?: Subscription;\n\n // keep a signal snapshot of form value so computed can react\n private _formValueSignal: WritableSignal<Record<string, any>> = signal({});\n\n // last applied snapshot (signal so template/logic can read reliably)\n public lastAppliedData: WritableSignal<Record<string, any> | null> = signal(null);\n\n // date range readable for template\n public dateRangeSelectedDates: WritableSignal<IRSelectedDatesConfig> = signal({\n startDate: '',\n endDate: ''\n });\n\n /* computed filterCount */\n public filterCount = computed(() => {\n const formValue = this._formValueSignal();\n const cfg = this.config();\n let count = 0;\n\n for (const filter of cfg) {\n const value = formValue[filter.key];\n\n if (filter.type === 'range') {\n if (value && (value.min !== null || value.max !== null)) {\n count++;\n }\n continue;\n }\n\n if (filter.type === 'multiSelect' || filter.type === 'checkbox') {\n if (Array.isArray(value) && value.length > 0) {\n count++;\n }\n continue;\n }\n\n if (this.hasValue.transform(value)) {\n count++;\n }\n }\n\n return count;\n });\n\n /* --- Lifecycle --- */\n ngOnInit(): void {\n // subscribe form changes so computed/filterCount update\n this.subscribeFormChanges();\n }\n\n ngOnDestroy(): void {\n this.formSubscription?.unsubscribe();\n }\n\n /* --- Form init & helpers --- */\n initializeFormControls(config: FilterPanelConfig[]): void {\n // build a fresh form to match config\n const newForm = new FormGroup({});\n\n const rangeValidator: ValidatorFn = (group: AbstractControl): ValidationErrors | null => {\n const min = (group.get('min') as FormControl)?.value;\n const max = (group.get('max') as FormControl)?.value;\n if (min !== null && max !== null && min > max) {\n return { rangeError: 'Min value should be less than max value' };\n }\n return null;\n };\n\n for (const filter of config) {\n let control: AbstractControl;\n\n switch (filter.type) {\n case 'range':\n control = new FormGroup(\n {\n min: new FormControl(null),\n max: new FormControl(null)\n },\n { validators: rangeValidator }\n );\n break;\n\n case 'multiSelect':\n case 'checkbox':\n control = new FormControl(Array.isArray(filter.defaultValue) ? filter.defaultValue : []);\n break;\n\n case 'select':\n control = new FormControl(filter.defaultValue ?? '');\n break;\n\n default:\n control = new FormControl(filter.defaultValue ?? null);\n }\n\n if (this.hasValue.transform(filter.defaultValue)) {\n control.setValue(filter.defaultValue);\n }\n\n newForm.addControl(filter.key, control);\n }\n\n // replace form safely\n // preserve subscription so valueChanges continues to update _formValueSignal\n this.filterForm = newForm;\n // update signal snapshot immediately\n this._formValueSignal.set({ ...this.filterForm.value });\n\n // re-subscribe to new form's valueChanges\n this.subscribeFormChanges();\n }\n\n private subscribeFormChanges(): void {\n // unsubscribe previous subscription if any\n this.formSubscription?.unsubscribe();\n\n // subscribe to valueChanges; set snapshot signal\n this.formSubscription = this.filterForm.valueChanges?.subscribe((value) => {\n this._formValueSignal.set({ ...value });\n });\n\n // also set initial snapshot in case valueChanges doesn't emit immediately\n this._formValueSignal.set({ ...this.filterForm.value });\n }\n\n private getControl(key: string) {\n return this.filterForm.get(key);\n }\n\n /**\n * Check if config structure has changed (new keys or removed keys)\n * Used to determine if form needs to be rebuilt\n */\n private hasConfigChanged(newConfig: FilterPanelConfig[]): boolean {\n const currentKeys = Object.keys(this.filterForm.controls).sort();\n const newKeys = newConfig.map(f => f.key).sort();\n \n if (currentKeys.length !== newKeys.length) {\n return true;\n }\n \n return currentKeys.some((key, index) => key !== newKeys[index]);\n }\n\n /* --- Actions / UI handlers --- */\n closePanel(): void {\n const last = this.lastAppliedData();\n if (last) {\n try {\n // prefer setValue (ensures shape matches); fallback to patchValue\n this.filterForm.setValue(last);\n } catch {\n this.filterForm.patchValue(last);\n }\n } else {\n this.clearFormValues();\n }\n\n // emit close event\n this.onClose.emit();\n }\n\n applyFilters(): void {\n if (this.filterForm.invalid) {\n this.filterForm.markAllAsTouched();\n return;\n }\n \n // Create a copy of the form value\n const snapshot = { ...this.filterForm.value };\n \n // OPTIONAL: Map objects back to values for the Output emission \n // so the parent receives clean data (['LOGIN'] instead of [{label:..., value: 'LOGIN'}])\n const cleanSnapshot = this.mapValuesForEmission(snapshot);\n \n this.lastAppliedData.set(snapshot); // Keep objects for UI state\n \n this.onApply.emit({\n filterData: cleanSnapshot, // Emit values\n filterCount: this.filterCount()\n });\n \n this.closePanel();\n }\n \n // Helper to clean up data before emitting\n private mapValuesForEmission(formValue: any): any {\n const cleanData = { ...formValue };\n const cfg = this.config();\n \n cfg.forEach(filter => {\n const value = cleanData[filter.key];\n \n if (filter.type === 'multiSelect' && Array.isArray(value)) {\n cleanData[filter.key] = value; \n }\n });\n \n return cleanData;\n }\n \n \n \n\n resetFilters(): void {\n this.clearFormValues();\n // call applyFilters to maintain previous behavior (validation + emit)\n this.applyFilters();\n }\n\n /* --- Value setters --- */\n// filter-panel.component.ts\n\nhandleSelect(event: any, filterKey: string, filter: FilterPanelConfig): void {\n const ctrl = this.getControl(filterKey);\n \n // FIX: Do not strip the value here. Store the full object so the UI \n // can match it against the data list when re-rendering.\n let valueToSet = event;\n\n /* // COMMENTED OUT OR REMOVED THIS BLOCK\n if (filter.type === 'multiSelect' && Array.isArray(event)) {\n if (event.length > 0 && typeof event[0] === 'object' && 'value' in event[0]) {\n valueToSet = event.map((item: any) => item.value || item);\n }\n }\n */\n \n ctrl?.setValue(valueToSet);\n\n if (filter.onChange) {\n filter.onChange(event, this.config(), this.filterForm.value);\n }\n}\n\n\n\n handleCheckbox(event: any, filterKey: string, checkboxValue: string, filter: FilterPanelConfig): void {\n const ctrl = this.getControl(filterKey);\n const current = Array.isArray(ctrl?.value) ? [...ctrl.value] : [];\n if (event?.value) {\n ctrl?.setValue([...current, checkboxValue]);\n } else {\n ctrl?.setValue(current.filter((v) => v !== checkboxValue));\n }\n\n if (filter.onChange) {\n filter.onChange(event, this.config(), this.filterForm.value);\n }\n }\n\n onDateChange(event: any, filterKey: string, filter: FilterPanelConfig): void {\n const ctrl = this.getControl(filterKey);\n ctrl?.setValue(event);\n\n if (event && typeof event === 'object' && 'startDate' in event && 'endDate' in event) {\n this.dateRangeSelectedDates.set({\n startDate: event.startDate,\n endDate: event.endDate\n });\n }\n }\n\n /* --- Clear / Set values helpers --- */\n clearFormValues(): void {\n const resets: Record<string, any> = {};\n\n for (const filter of this.config()) {\n let defaultValue: any = filter.defaultValue ?? null;\n if (filter.type === 'multiSelect' || filter.type === 'checkbox') {\n defaultValue = filter.defaultValue ?? [];\n }\n if (filter.type === 'range') {\n defaultValue = filter.defaultValue ?? { min: null, max: null };\n }\n resets[filter.key] = defaultValue;\n }\n\n // patch to avoid shape mismatch errors\n this.filterForm.patchValue(resets);\n this._formValueSignal.set({ ...this.filterForm.value });\n }\n\n /**\n * Applies filter.selectedValue when parent provides selectedValue.\n * Called by the config effect (so runs on initial load and on config changes).\n */\n setFilterValue(config: FilterPanelConfig[]): void {\n let anyValueSet = false;\n\n for (const filter of config) {\n if (this.hasValue.transform(filter?.selectedValue)) {\n const ctrl = this.getControl(filter.key);\n if (ctrl) {\n ctrl.setValue(filter.selectedValue);\n anyValueSet = true;\n }\n }\n }\n\n if (anyValueSet && this.emitFiltersAfterSettingNewValues()) {\n // respect the parent flag — apply and emit\n this.applyFilters();\n } else {\n // make sure our snapshot signal is fresh\n this._formValueSignal.set({ ...this.filterForm.value });\n }\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'mis-crystal-design-system/button';\nimport { RadioButtonModule } from 'mis-crystal-design-system/radio-button';\nimport { MisInputModule } from \"mis-crystal-design-system/input\";\nimport { CheckboxModule } from 'mis-crystal-design-system/checkbox';\nimport { MultiSelectDropdownModule } from 'mis-crystal-design-system/multi-select-dropdown';\nimport { DatepickerModuleV2 } from 'mis-crystal-design-system/datepicker_v2';\nimport { DateRangepickerModuleV2 } from 'mis-crystal-design-system/daterangepicker_v2';\nimport { FilterPanelComponent } from './filter-panel/filter-panel.component';\nimport { HasValuePipe } from './has-value.pipe';\nimport { DropdownModule } from 'mis-crystal-design-system/dropdown';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n MultiSelectDropdownModule,\n DropdownModule,\n RadioButtonModule,\n MisInputModule,\n DatepickerModuleV2,\n DateRangepickerModuleV2,\n CheckboxModule\n ],\n declarations: [FilterPanelComponent, HasValuePipe],\n providers: [\n HasValuePipe\n ],\n exports: [FilterPanelComponent]\n})\nexport class FiltersModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HasValuePipe"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { input, output, signal, computed, effect, Component, NgModule } from '@angular/core';
4
+ import { input, output, signal, effect, Component, NgModule } from '@angular/core';
5
5
  import * as i2 from 'mis-crystal-design-system/button';
6
6
  import { ButtonModule } from 'mis-crystal-design-system/button';
7
7
  import * as i3 from 'mis-crystal-design-system/checkbox';
@@ -95,13 +95,14 @@ class MobileFilterComponent {
95
95
  this.applyFilters = output();
96
96
  // This internal signal holds the state of the selected item.
97
97
  // It is writable and can be updated from within the component's template.
98
- this.selectedItem = signal(this.currentSelectedItem());
98
+ this.selectedItem = signal('');
99
99
  // Use a computed signal for the filter options to maintain reactivity.
100
- this.localFilterOptions = computed(() => this.filterOptions());
101
- // This effect ensures that if the parent changes the input, our internal signal is also updated.
100
+ this.localFilterOptions = signal({});
101
+ // This effect handles both initialization and subsequent changes of the inputs.
102
102
  effect(() => {
103
103
  this.selectedItem.set(this.currentSelectedItem());
104
- });
104
+ this.localFilterOptions.set(structuredClone(this.filterOptions()));
105
+ }, { allowSignalWrites: true });
105
106
  }
106
107
  // Rest of your component methods...
107
108
  originalOrder() {
@@ -127,10 +128,22 @@ class MobileFilterComponent {
127
128
  };
128
129
  });
129
130
  currentFilter.noOfSelectedItems = newNoOfSelectedItems;
131
+ this.localFilterOptions.set(updatedOptions);
130
132
  }
131
133
  onApply() {
132
134
  this.applyFilters.emit(this.localFilterOptions());
133
135
  }
136
+ onClearFilters() {
137
+ if (Object.keys(this.filterOptions()).length > 0) {
138
+ Object.keys(this.filterOptions()).forEach(key => {
139
+ this.filterOptions()[key].options.forEach(option => {
140
+ option.selected = false;
141
+ });
142
+ this.filterOptions()[key].noOfSelectedItems = 0;
143
+ });
144
+ this.clearFilters.emit();
145
+ }
146
+ }
134
147
  static { this.ɵfac = function MobileFilterComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MobileFilterComponent)(); }; }
135
148
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MobileFilterComponent, selectors: [["mis-mobile-filter"]], inputs: { currentSelectedItem: [1, "currentSelectedItem"], filterOptions: [1, "filterOptions"], backIcon: [1, "backIcon"], headerName: [1, "headerName"], applyBtnName: [1, "applyBtnName"], clearBtnName: [1, "clearBtnName"] }, outputs: { closeFilters: "closeFilters", clearFilters: "clearFilters", applyFilters: "applyFilters" }, decls: 20, vars: 10, consts: [[1, "filters-container"], [1, "head", "display-flex"], ["tabindex", "0", "aria-label", "Close Filters Arrow", "alt", "", 3, "click", "keyup.enter", "src"], [1, "body", "display-flex"], [1, "filters"], [4, "ngFor", "ngForOf"], [1, "filter-options-container"], [1, "filter-options-title"], [1, "filter-options"], [1, "footer", "display-flex"], ["mis-button", "", "size", "md", "type", "text", 3, "click"], ["mis-button", "", "size", "md", "type", "primary", 3, "click"], ["tabindex", "0", 1, "filter", "display-flex", 3, "click", "keyup.enter"], [1, "filterName", 3, "ngStyle"], ["class", "selectedNumber", 4, "ngIf"], ["class", "highlightor", 4, "ngIf"], [1, "selectedNumber"], [1, "highlightor"], ["tabindex", "0", 1, "filter-option", "display-flex", 3, "click", "keyup.enter"], [3, "checked", 4, "ngIf"], ["type", "radio", 3, "checked", 4, "ngIf"], [3, "ngStyle"], [3, "checked"], ["type", "radio", 3, "checked"]], template: function MobileFilterComponent_Template(rf, ctx) { if (rf & 1) {
136
149
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "img", 2);
@@ -150,7 +163,7 @@ class MobileFilterComponent {
150
163
  i0.ɵɵtemplate(14, MobileFilterComponent_ng_container_14_Template, 6, 6, "ng-container", 5);
151
164
  i0.ɵɵelementEnd()()();
152
165
  i0.ɵɵelementStart(15, "div", 9)(16, "button", 10);
153
- i0.ɵɵlistener("click", function MobileFilterComponent_Template_button_click_16_listener() { return ctx.clearFilters.emit(); });
166
+ i0.ɵɵlistener("click", function MobileFilterComponent_Template_button_click_16_listener() { return ctx.onClearFilters(); });
154
167
  i0.ɵɵtext(17);
155
168
  i0.ɵɵelementEnd();
156
169
  i0.ɵɵelementStart(18, "button", 11);
@@ -178,7 +191,7 @@ class MobileFilterComponent {
178
191
  }
179
192
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MobileFilterComponent, [{
180
193
  type: Component,
181
- args: [{ selector: 'mis-mobile-filter', template: "<div class=\"filters-container\">\n <div class=\"head display-flex\">\n <img\n tabindex=\"0\"\n (click)=\"closeFilters.emit();\"\n (keyup.enter)=\"closeFilters.emit();\"\n aria-label=\"Close Filters Arrow\"\n [src]=\"backIcon()\" alt=\"\">\n <span>{{headerName()}}</span>\n </div>\n <div class=\"body display-flex\">\n <div class=\"filters\">\n <ng-container *ngFor=\"let filter of localFilterOptions() | keyvalue : originalOrder\">\n <div class=\"filter display-flex\"\n tabindex=\"0\"\n (click)=\"selectedItem.set(filter.key)\"\n (keyup.enter)=\"selectedItem.set(filter.key)\"\n >\n <span class=\"filterName\" [ngStyle]=\"{'color': filter.key === selectedItem() ? '#0937B2' : '#181F33'}\">{{ localFilterOptions()![filter.key]?.name }}</span>\n <span class=\"selectedNumber\" *ngIf=\"localFilterOptions()![filter.key]['multiSelect'] && localFilterOptions()![filter.key]['noOfSelectedItems']! > 0\">{{ localFilterOptions()![filter.key]['noOfSelectedItems'] }}</span>\n <div class=\"highlightor\" *ngIf=\"filter.key === selectedItem()\"></div>\n </div>\n </ng-container>\n </div>\n <div class=\"filter-options-container\">\n <div class=\"filter-options-title\">\n <span>{{ localFilterOptions()![selectedItem()]?.name }}</span>\n </div>\n <div class=\"filter-options\">\n <ng-container *ngFor=\"let option of localFilterOptions()![selectedItem()]?.options; let i = index\">\n <div class=\"filter-option display-flex\"\n tabindex=\"0\"\n (click)=\"toggleFilter(option.value, option.selected)\"\n (keyup.enter)=\"toggleFilter(option.value, option.selected)\"\n >\n <mis-checkbox\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' checkbox ' + option.label\"\n *ngIf=\"localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n </mis-checkbox>\n <input\n type=\"radio\"\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' radioButton ' + option.label\"\n *ngIf=\"!localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n <span [ngStyle]=\"{'color': option.selected ? '#181F33' : '#6A737D'}\">{{ option.label }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"footer display-flex\">\n <button\n mis-button\n size=\"md\"\n type=\"text\"\n (click)=\"clearFilters.emit()\">\n {{clearBtnName()}}\n </button>\n <button\n mis-button\n size=\"md\"\n type=\"primary\"\n (click)=\"onApply()\">\n {{applyBtnName()}}\n </button>\n </div>\n</div>\n\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}.display-flex{display:flex}.filters-container{position:absolute;inset:0;background-color:var(--bg-primary, #FFFFFF);cursor:default}.filters-container *{font-family:Lato}.filters-container .head{height:56px;border-bottom:1px solid var(--border-primary, #E0E0E0);justify-content:flex-start;align-items:center;padding:0 16px;gap:12px}.filters-container .head img{cursor:pointer}.filters-container .head span{font-weight:700;font-size:17px;line-height:24px;letter-spacing:.2px}.filters-container .body{height:calc(100vh - 129px)}.filters-container .body .filters{width:120px;border-right:1px solid var(--border-primary, #E0E0E0);flex-shrink:0}.filters-container .body .filters .filter{height:56px;padding:0 16px;border-bottom:1px solid var(--border-primary, #E0E0E0);align-items:center;font-size:15px;justify-content:space-between;position:relative}.filters-container .body .filters .filter .filterName{color:var(--text-secondary, #6A737D);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filters .filter .selectedNumber{background-color:var(--bg-tertiary, #F5F5F5);height:24px;width:auto;font-size:14px;min-width:24px;border-radius:50%;text-align:center;line-height:24px;padding:0 8px}.filters-container .body .filters .filter .highlightor{position:absolute;left:0;height:100%;width:4px;background-color:var(--brand-primary, #0937B2)}.filters-container .body .filter-options-container{padding:16px 16px 0 12px;width:calc(100% - 56px);overflow-x:hidden}.filters-container .body .filter-options-container *{color:var(--text-primary, #181F33)}.filters-container .body .filter-options-container .filter-options-title{text-transform:uppercase;font-size:12px;line-height:16px;letter-spacing:.25px}.filters-container .body .filter-options-container .filter-options-title span{color:var(--text-secondary, #6A737D)}.filters-container .body .filter-options-container .filter-options{margin-top:16px;overflow-y:scroll;height:calc(100% - 32px)}.filters-container .body .filter-options-container .filter-options .filter-option{height:48px;border-bottom:1px solid var(--border-primary, #E0E0E0);align-items:center;padding-left:16px;gap:13px;font-size:15px}.filters-container .body .filter-options-container .filter-options .filter-option span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filter-options-container .filter-options .filter-option input[type=radio]{accent-color:var(--brand-primary, #0937B2);width:20px;height:20px}.filters-container .footer{height:73px;border-top:1px solid var(--border-primary, #E0E0E0);padding:0 16px;align-items:center;justify-content:space-between}.filters-container .footer button{width:160px}\n"] }]
194
+ args: [{ selector: 'mis-mobile-filter', template: "<div class=\"filters-container\">\n <div class=\"head display-flex\">\n <img\n tabindex=\"0\"\n (click)=\"closeFilters.emit();\"\n (keyup.enter)=\"closeFilters.emit();\"\n aria-label=\"Close Filters Arrow\"\n [src]=\"backIcon()\" alt=\"\">\n <span>{{headerName()}}</span>\n </div>\n <div class=\"body display-flex\">\n <div class=\"filters\">\n <ng-container *ngFor=\"let filter of localFilterOptions() | keyvalue : originalOrder\">\n <div class=\"filter display-flex\"\n tabindex=\"0\"\n (click)=\"selectedItem.set(filter.key)\"\n (keyup.enter)=\"selectedItem.set(filter.key)\"\n >\n <span class=\"filterName\" [ngStyle]=\"{'color': filter.key === selectedItem() ? '#0937B2' : '#181F33'}\">{{ localFilterOptions()![filter.key]?.name }}</span>\n <span class=\"selectedNumber\" *ngIf=\"localFilterOptions()![filter.key]['multiSelect'] && localFilterOptions()![filter.key]['noOfSelectedItems']! > 0\">{{ localFilterOptions()![filter.key]['noOfSelectedItems'] }}</span>\n <div class=\"highlightor\" *ngIf=\"filter.key === selectedItem()\"></div>\n </div>\n </ng-container>\n </div>\n <div class=\"filter-options-container\">\n <div class=\"filter-options-title\">\n <span>{{ localFilterOptions()![selectedItem()]?.name }}</span>\n </div>\n <div class=\"filter-options\">\n <ng-container *ngFor=\"let option of localFilterOptions()![selectedItem()]?.options; let i = index\">\n <div class=\"filter-option display-flex\"\n tabindex=\"0\"\n (click)=\"toggleFilter(option.value, option.selected)\"\n (keyup.enter)=\"toggleFilter(option.value, option.selected)\"\n >\n <mis-checkbox\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' checkbox ' + option.label\"\n *ngIf=\"localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n </mis-checkbox>\n <input\n type=\"radio\"\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' radioButton ' + option.label\"\n *ngIf=\"!localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n <span [ngStyle]=\"{'color': option.selected ? '#181F33' : '#6A737D'}\">{{ option.label }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"footer display-flex\">\n <button\n mis-button\n size=\"md\"\n type=\"text\"\n (click)=\"onClearFilters()\">\n {{clearBtnName()}}\n </button>\n <button\n mis-button\n size=\"md\"\n type=\"primary\"\n (click)=\"onApply()\">\n {{applyBtnName()}}\n </button>\n </div>\n</div>\n\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}.display-flex{display:flex}.filters-container{position:absolute;inset:0;background-color:var(--bg-primary, #FFFFFF);cursor:default}.filters-container *{font-family:Lato}.filters-container .head{height:56px;border-bottom:1px solid var(--border-primary, #E0E0E0);justify-content:flex-start;align-items:center;padding:0 16px;gap:12px}.filters-container .head img{cursor:pointer}.filters-container .head span{font-weight:700;font-size:17px;line-height:24px;letter-spacing:.2px}.filters-container .body{height:calc(100vh - 129px)}.filters-container .body .filters{width:120px;border-right:1px solid var(--border-primary, #E0E0E0);flex-shrink:0}.filters-container .body .filters .filter{height:56px;padding:0 16px;border-bottom:1px solid var(--border-primary, #E0E0E0);align-items:center;font-size:15px;justify-content:space-between;position:relative}.filters-container .body .filters .filter .filterName{color:var(--text-secondary, #6A737D);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filters .filter .selectedNumber{background-color:var(--bg-tertiary, #F5F5F5);height:24px;width:auto;font-size:14px;min-width:24px;border-radius:50%;text-align:center;line-height:24px;padding:0 8px}.filters-container .body .filters .filter .highlightor{position:absolute;left:0;height:100%;width:4px;background-color:var(--brand-primary, #0937B2)}.filters-container .body .filter-options-container{padding:16px 16px 0 12px;width:calc(100% - 56px);overflow-x:hidden}.filters-container .body .filter-options-container *{color:var(--text-primary, #181F33)}.filters-container .body .filter-options-container .filter-options-title{text-transform:uppercase;font-size:12px;line-height:16px;letter-spacing:.25px}.filters-container .body .filter-options-container .filter-options-title span{color:var(--text-secondary, #6A737D)}.filters-container .body .filter-options-container .filter-options{margin-top:16px;overflow-y:scroll;height:calc(100% - 32px)}.filters-container .body .filter-options-container .filter-options .filter-option{height:48px;border-bottom:1px solid var(--border-primary, #E0E0E0);align-items:center;padding-left:16px;gap:13px;font-size:15px}.filters-container .body .filter-options-container .filter-options .filter-option span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filters-container .body .filter-options-container .filter-options .filter-option input[type=radio]{accent-color:var(--brand-primary, #0937B2);width:20px;height:20px}.filters-container .footer{height:73px;border-top:1px solid var(--border-primary, #E0E0E0);padding:0 16px;align-items:center;justify-content:space-between}.filters-container .footer button{width:160px}\n"] }]
182
195
  }], () => [], null); })();
183
196
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MobileFilterComponent, { className: "MobileFilterComponent" }); })();
184
197
 
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-mobile-filter.mjs","sources":["../../../projects/mis-components/mobile-filter/mobile-filter.component.html","../../../projects/mis-components/mobile-filter/mobile-filter.component.ts","../../../projects/mis-components/mobile-filter/mobile-filter.module.ts","../../../projects/mis-components/mobile-filter/mis-crystal-design-system-mobile-filter.ts"],"sourcesContent":["<div class=\"filters-container\">\n <div class=\"head display-flex\">\n <img\n tabindex=\"0\"\n (click)=\"closeFilters.emit();\"\n (keyup.enter)=\"closeFilters.emit();\"\n aria-label=\"Close Filters Arrow\"\n [src]=\"backIcon()\" alt=\"\">\n <span>{{headerName()}}</span>\n </div>\n <div class=\"body display-flex\">\n <div class=\"filters\">\n <ng-container *ngFor=\"let filter of localFilterOptions() | keyvalue : originalOrder\">\n <div class=\"filter display-flex\"\n tabindex=\"0\"\n (click)=\"selectedItem.set(filter.key)\"\n (keyup.enter)=\"selectedItem.set(filter.key)\"\n >\n <span class=\"filterName\" [ngStyle]=\"{'color': filter.key === selectedItem() ? '#0937B2' : '#181F33'}\">{{ localFilterOptions()![filter.key]?.name }}</span>\n <span class=\"selectedNumber\" *ngIf=\"localFilterOptions()![filter.key]['multiSelect'] && localFilterOptions()![filter.key]['noOfSelectedItems']! > 0\">{{ localFilterOptions()![filter.key]['noOfSelectedItems'] }}</span>\n <div class=\"highlightor\" *ngIf=\"filter.key === selectedItem()\"></div>\n </div>\n </ng-container>\n </div>\n <div class=\"filter-options-container\">\n <div class=\"filter-options-title\">\n <span>{{ localFilterOptions()![selectedItem()]?.name }}</span>\n </div>\n <div class=\"filter-options\">\n <ng-container *ngFor=\"let option of localFilterOptions()![selectedItem()]?.options; let i = index\">\n <div class=\"filter-option display-flex\"\n tabindex=\"0\"\n (click)=\"toggleFilter(option.value, option.selected)\"\n (keyup.enter)=\"toggleFilter(option.value, option.selected)\"\n >\n <mis-checkbox\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' checkbox ' + option.label\"\n *ngIf=\"localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n </mis-checkbox>\n <input\n type=\"radio\"\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' radioButton ' + option.label\"\n *ngIf=\"!localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n <span [ngStyle]=\"{'color': option.selected ? '#181F33' : '#6A737D'}\">{{ option.label }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"footer display-flex\">\n <button\n mis-button\n size=\"md\"\n type=\"text\"\n (click)=\"clearFilters.emit()\">\n {{clearBtnName()}}\n </button>\n <button\n mis-button\n size=\"md\"\n type=\"primary\"\n (click)=\"onApply()\">\n {{applyBtnName()}}\n </button>\n </div>\n</div>\n\n","import { Component, input, output, computed, signal, effect } from '@angular/core';\n\n@Component({\n selector: 'mis-mobile-filter',\n templateUrl: './mobile-filter.component.html',\n styleUrls: ['./mobile-filter.component.scss']\n})\nexport class MobileFilterComponent {\n\n // The input signal is read-only. Its value can only be set by the parent component.\n public readonly currentSelectedItem = input<string>('Sort');\n public readonly filterOptions = input.required<IFilterOptions>();\n public readonly backIcon = input<string>('');\n public readonly headerName = input<string>('Filters');\n public readonly applyBtnName = input<string>('Apply');\n public readonly clearBtnName = input<string>('Clear Filters');\n\n public readonly closeFilters = output<void>();\n public readonly clearFilters = output<void>();\n public readonly applyFilters = output<IFilterOptions>();\n\n // This internal signal holds the state of the selected item.\n // It is writable and can be updated from within the component's template.\n public readonly selectedItem = signal<string>(this.currentSelectedItem());\n\n // Use a computed signal for the filter options to maintain reactivity.\n public readonly localFilterOptions = computed(() => this.filterOptions());\n\n constructor() {\n // This effect ensures that if the parent changes the input, our internal signal is also updated.\n effect(() => {\n this.selectedItem.set(this.currentSelectedItem());\n });\n }\n\n // Rest of your component methods...\n public originalOrder() {\n return 0;\n }\n\n public toggleFilter(data: any, isSelectedItem: boolean): void {\n const updatedOptions = structuredClone(this.localFilterOptions());\n const currentKey = this.selectedItem();\n const currentFilter = updatedOptions[currentKey];\n\n if (!currentFilter) return;\n\n const isMultiSelect = currentFilter.multiSelect;\n let newNoOfSelectedItems = 0;\n\n currentFilter.options = currentFilter.options.map(option => {\n const isSelectedValue = option.value === data;\n const newSelectedState = isSelectedValue ? (isMultiSelect ? !option.selected : true) : (isMultiSelect ? option.selected : false);\n\n if (newSelectedState) {\n newNoOfSelectedItems++;\n }\n\n return {\n ...option,\n selected: newSelectedState\n };\n });\n\n currentFilter.noOfSelectedItems = newNoOfSelectedItems;\n }\n\n public onApply(): void {\n this.applyFilters.emit(this.localFilterOptions());\n }\n \n}\n\nexport interface IFilterOptions {\n [filterName: string]: {\n name: string;\n options: {label: string, value: string, selected: boolean, capacities?: number[], amenities?: string[]}[], // capacities & amenities are for floor\n multiSelect: boolean,\n noOfSelectedItems?: number\n }\n}\n\n\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MobileFilterComponent } from \"./mobile-filter.component\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\nimport { CheckboxModule } from \"mis-crystal-design-system/checkbox\";\n\n@NgModule({\n declarations: [MobileFilterComponent],\n imports: [CommonModule, ButtonModule, CheckboxModule],\n exports: [MobileFilterComponent]\n})\nexport class MobileFilterModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-mobile-filter.mjs","sources":["../../../projects/mis-components/mobile-filter/mobile-filter.component.html","../../../projects/mis-components/mobile-filter/mobile-filter.component.ts","../../../projects/mis-components/mobile-filter/mobile-filter.module.ts","../../../projects/mis-components/mobile-filter/mis-crystal-design-system-mobile-filter.ts"],"sourcesContent":["<div class=\"filters-container\">\n <div class=\"head display-flex\">\n <img\n tabindex=\"0\"\n (click)=\"closeFilters.emit();\"\n (keyup.enter)=\"closeFilters.emit();\"\n aria-label=\"Close Filters Arrow\"\n [src]=\"backIcon()\" alt=\"\">\n <span>{{headerName()}}</span>\n </div>\n <div class=\"body display-flex\">\n <div class=\"filters\">\n <ng-container *ngFor=\"let filter of localFilterOptions() | keyvalue : originalOrder\">\n <div class=\"filter display-flex\"\n tabindex=\"0\"\n (click)=\"selectedItem.set(filter.key)\"\n (keyup.enter)=\"selectedItem.set(filter.key)\"\n >\n <span class=\"filterName\" [ngStyle]=\"{'color': filter.key === selectedItem() ? '#0937B2' : '#181F33'}\">{{ localFilterOptions()![filter.key]?.name }}</span>\n <span class=\"selectedNumber\" *ngIf=\"localFilterOptions()![filter.key]['multiSelect'] && localFilterOptions()![filter.key]['noOfSelectedItems']! > 0\">{{ localFilterOptions()![filter.key]['noOfSelectedItems'] }}</span>\n <div class=\"highlightor\" *ngIf=\"filter.key === selectedItem()\"></div>\n </div>\n </ng-container>\n </div>\n <div class=\"filter-options-container\">\n <div class=\"filter-options-title\">\n <span>{{ localFilterOptions()![selectedItem()]?.name }}</span>\n </div>\n <div class=\"filter-options\">\n <ng-container *ngFor=\"let option of localFilterOptions()![selectedItem()]?.options; let i = index\">\n <div class=\"filter-option display-flex\"\n tabindex=\"0\"\n (click)=\"toggleFilter(option.value, option.selected)\"\n (keyup.enter)=\"toggleFilter(option.value, option.selected)\"\n >\n <mis-checkbox\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' checkbox ' + option.label\"\n *ngIf=\"localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n </mis-checkbox>\n <input\n type=\"radio\"\n [attr.aria-label]=\"(option.selected ? 'Selected' : 'Unselected') + ' radioButton ' + option.label\"\n *ngIf=\"!localFilterOptions()![selectedItem()]!.multiSelect\"\n [checked]=\"option.selected\">\n <span [ngStyle]=\"{'color': option.selected ? '#181F33' : '#6A737D'}\">{{ option.label }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"footer display-flex\">\n <button\n mis-button\n size=\"md\"\n type=\"text\"\n (click)=\"onClearFilters()\">\n {{clearBtnName()}}\n </button>\n <button\n mis-button\n size=\"md\"\n type=\"primary\"\n (click)=\"onApply()\">\n {{applyBtnName()}}\n </button>\n </div>\n</div>\n\n","import { Component, input, output, computed, signal, effect } from '@angular/core';\n\n@Component({\n selector: 'mis-mobile-filter',\n templateUrl: './mobile-filter.component.html',\n styleUrls: ['./mobile-filter.component.scss']\n})\nexport class MobileFilterComponent {\n\n // The input signal is read-only. Its value can only be set by the parent component.\n public readonly currentSelectedItem = input<string>('Sort');\n public readonly filterOptions = input.required<IFilterOptions>();\n public readonly backIcon = input<string>('');\n public readonly headerName = input<string>('Filters');\n public readonly applyBtnName = input<string>('Apply');\n public readonly clearBtnName = input<string>('Clear Filters');\n\n public readonly closeFilters = output<void>();\n public readonly clearFilters = output<void>();\n public readonly applyFilters = output<IFilterOptions>();\n\n // This internal signal holds the state of the selected item.\n // It is writable and can be updated from within the component's template.\n public readonly selectedItem = signal<string>('');\n // Use a computed signal for the filter options to maintain reactivity.\n public readonly localFilterOptions = signal<IFilterOptions>({});\n\n constructor() {\n // This effect handles both initialization and subsequent changes of the inputs.\n effect(() => {\n this.selectedItem.set(this.currentSelectedItem()); \n this.localFilterOptions.set(structuredClone(this.filterOptions()));\n \n }, { allowSignalWrites: true });\n }\n\n // Rest of your component methods...\n public originalOrder() {\n return 0;\n }\n\npublic toggleFilter(data: any, isSelectedItem: boolean): void {\n const updatedOptions = structuredClone(this.localFilterOptions());\n const currentKey = this.selectedItem();\n const currentFilter = updatedOptions[currentKey];\n\n if (!currentFilter) return;\n\n const isMultiSelect = currentFilter.multiSelect;\n let newNoOfSelectedItems = 0;\n\n currentFilter.options = currentFilter.options.map(option => {\n const isSelectedValue = option.value === data;\n const newSelectedState = isSelectedValue ? (isMultiSelect ? !option.selected : true) : (isMultiSelect ? option.selected : false);\n\n if (newSelectedState) {\n newNoOfSelectedItems++;\n }\n\n return {\n ...option,\n selected: newSelectedState\n };\n });\n\n currentFilter.noOfSelectedItems = newNoOfSelectedItems;\n this.localFilterOptions.set(updatedOptions); \n}\n\n public onApply(): void {\n this.applyFilters.emit(this.localFilterOptions());\n }\n\n onClearFilters(): void{\n if(Object.keys(this.filterOptions()).length > 0) {\n Object.keys(this.filterOptions()).forEach(key => {\n this.filterOptions()[key].options.forEach(option => {\n option.selected = false;\n });\n this.filterOptions()[key].noOfSelectedItems = 0;\n });\n this.clearFilters.emit();\n }\n }\n}\n\nexport interface IFilterOptions {\n [filterName: string]: {\n name: string;\n options: {label: string, value: string, selected: boolean, capacities?: number[], amenities?: string[]}[], // capacities & amenities are for floor\n multiSelect: boolean,\n noOfSelectedItems?: number\n }\n}\n\n\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { MobileFilterComponent } from \"./mobile-filter.component\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\nimport { CheckboxModule } from \"mis-crystal-design-system/checkbox\";\n\n@NgModule({\n declarations: [MobileFilterComponent],\n imports: [CommonModule, ButtonModule, CheckboxModule],\n exports: [MobileFilterComponent]\n})\nexport class MobileFilterModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -10,11 +10,12 @@ export declare class MobileFilterComponent {
10
10
  readonly clearFilters: import("@angular/core").OutputEmitterRef<void>;
11
11
  readonly applyFilters: import("@angular/core").OutputEmitterRef<IFilterOptions>;
12
12
  readonly selectedItem: import("@angular/core").WritableSignal<string>;
13
- readonly localFilterOptions: import("@angular/core").Signal<IFilterOptions>;
13
+ readonly localFilterOptions: import("@angular/core").WritableSignal<IFilterOptions>;
14
14
  constructor();
15
15
  originalOrder(): number;
16
16
  toggleFilter(data: any, isSelectedItem: boolean): void;
17
17
  onApply(): void;
18
+ onClearFilters(): void;
18
19
  static ɵfac: i0.ɵɵFactoryDeclaration<MobileFilterComponent, never>;
19
20
  static ɵcmp: i0.ɵɵComponentDeclaration<MobileFilterComponent, "mis-mobile-filter", never, { "currentSelectedItem": { "alias": "currentSelectedItem"; "required": false; "isSignal": true; }; "filterOptions": { "alias": "filterOptions"; "required": true; "isSignal": true; }; "backIcon": { "alias": "backIcon"; "required": false; "isSignal": true; }; "headerName": { "alias": "headerName"; "required": false; "isSignal": true; }; "applyBtnName": { "alias": "applyBtnName"; "required": false; "isSignal": true; }; "clearBtnName": { "alias": "clearBtnName"; "required": false; "isSignal": true; }; }, { "closeFilters": "closeFilters"; "clearFilters": "clearFilters"; "applyFilters": "applyFilters"; }, never, never, false, never>;
20
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mis-crystal-design-system",
3
- "version": "18.1.11",
3
+ "version": "18.1.13",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "*",
6
6
  "@angular/core": "*",
@@ -40,18 +40,18 @@
40
40
  "esm": "./esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs",
41
41
  "default": "./fesm2022/mis-crystal-design-system-async-search-dropdown.mjs"
42
42
  },
43
- "./checkbox": {
44
- "types": "./checkbox/index.d.ts",
45
- "esm2022": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
46
- "esm": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
47
- "default": "./fesm2022/mis-crystal-design-system-checkbox.mjs"
48
- },
49
43
  "./button": {
50
44
  "types": "./button/index.d.ts",
51
45
  "esm2022": "./esm2022/button/mis-crystal-design-system-button.mjs",
52
46
  "esm": "./esm2022/button/mis-crystal-design-system-button.mjs",
53
47
  "default": "./fesm2022/mis-crystal-design-system-button.mjs"
54
48
  },
49
+ "./checkbox": {
50
+ "types": "./checkbox/index.d.ts",
51
+ "esm2022": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
52
+ "esm": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
53
+ "default": "./fesm2022/mis-crystal-design-system-checkbox.mjs"
54
+ },
55
55
  "./chip": {
56
56
  "types": "./chip/index.d.ts",
57
57
  "esm2022": "./esm2022/chip/mis-crystal-design-system-chip.mjs",