@ieeesa-npm/presentation 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +5 -5
  2. package/esm2022/lib/components/checkbox/checkbox.component.mjs +3 -3
  3. package/esm2022/lib/components/date-picker/date-picker.component.mjs +9 -9
  4. package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +2 -2
  5. package/esm2022/lib/components/form-error/form-error.component.mjs +1 -1
  6. package/esm2022/lib/components/input/input.component.mjs +3 -3
  7. package/esm2022/lib/components/radio/radio.component.mjs +4 -4
  8. package/esm2022/lib/components/search/search.component.mjs +7 -7
  9. package/esm2022/lib/components/select/select.component.mjs +7 -7
  10. package/esm2022/lib/components/text-area/text-area.component.mjs +3 -3
  11. package/esm2022/lib/directives/dynamic-form-field/dynamic-form-field.directive.mjs +10 -10
  12. package/esm2022/lib/models/date-picker.model.mjs +1 -1
  13. package/esm2022/lib/models/field-config.model.mjs +1 -1
  14. package/esm2022/lib/models/form-field.model.mjs +1 -1
  15. package/esm2022/lib/models/form.model.mjs +1 -1
  16. package/esm2022/lib/services/form-utility.service.mjs +1 -1
  17. package/fesm2022/ieeesa-npm-presentation.mjs +1486 -1371
  18. package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
  19. package/lib/components/autocomplete/autocomplete.component.d.ts +5 -5
  20. package/lib/components/checkbox/checkbox.component.d.ts +4 -4
  21. package/lib/components/date-picker/date-picker.component.d.ts +6 -6
  22. package/lib/components/dynamic-form/dynamic-form.component.d.ts +4 -4
  23. package/lib/components/form-error/form-error.component.d.ts +1 -1
  24. package/lib/components/input/input.component.d.ts +2 -2
  25. package/lib/components/radio/radio.component.d.ts +4 -4
  26. package/lib/components/search/search.component.d.ts +4 -4
  27. package/lib/components/select/select.component.d.ts +5 -5
  28. package/lib/components/text-area/text-area.component.d.ts +2 -2
  29. package/lib/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +2 -2
  30. package/lib/models/date-picker.model.d.ts +1 -1
  31. package/lib/models/field-config.model.d.ts +6 -6
  32. package/lib/models/form-field.model.d.ts +1 -1
  33. package/lib/models/form.model.d.ts +1 -1
  34. package/lib/services/form-utility.service.d.ts +1 -1
  35. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ieeesa-npm-presentation.mjs","sources":["../../../projects/presentation/src/lib/components/dynamic-form/dynamic-form.component.ts","../../../projects/presentation/src/lib/components/dynamic-form/dynamic-form.component.html","../../../projects/presentation/src/lib/directives/dynamic-form-field/dynamic-form-field.directive.ts","../../../projects/presentation/src/lib/components/form-error/form-error.component.ts","../../../projects/presentation/src/lib/components/form-error/form-error.component.html","../../../projects/presentation/src/lib/components/notification/notification.component.ts","../../../projects/presentation/src/lib/components/notification/notification.component.html","../../../projects/presentation/src/lib/components/input/input.component.ts","../../../projects/presentation/src/lib/components/input/input.component.html","../../../projects/presentation/src/lib/components/text-area/text-area.component.ts","../../../projects/presentation/src/lib/components/text-area/text-area.component.html","../../../projects/presentation/src/lib/components/radio/radio.component.ts","../../../projects/presentation/src/lib/components/radio/radio.component.html","../../../projects/presentation/src/lib/components/checkbox/checkbox.component.ts","../../../projects/presentation/src/lib/components/checkbox/checkbox.component.html","../../../projects/presentation/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/presentation/src/lib/components/autocomplete/autocomplete.component.html","../../../projects/presentation/src/lib/components/search/search.component.ts","../../../projects/presentation/src/lib/components/search/search.component.html","../../../projects/presentation/src/lib/components/date-picker/date-picker.component.ts","../../../projects/presentation/src/lib/components/date-picker/date-picker.component.html","../../../projects/presentation/src/lib/components/date-picker-header/date-picker-header.component.ts","../../../projects/presentation/src/lib/components/date-picker-header/date-picker-header.component.html","../../../projects/presentation/src/lib/components/select/select.component.ts","../../../projects/presentation/src/lib/components/select/select.component.html","../../../projects/presentation/src/lib/models/search.model.ts","../../../projects/presentation/src/lib/models/calendar.model.ts","../../../projects/presentation/src/lib/models/form-control-types.model.ts","../../../projects/presentation/src/lib/services/form-utility.service.ts","../../../projects/presentation/src/lib/services/datepicker.service.ts","../../../projects/presentation/src/lib/presentation.module.ts","../../../projects/presentation/src/public-api.ts","../../../projects/presentation/src/ieeesa-npm-presentation.ts"],"sourcesContent":["import {\r\n AfterContentInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormModel } from '@presentation/models/form.model';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { FormGrid } from '@presentation/models/form-grid.model';\r\nimport { DynamicFormFieldDirective } from '@presentation/directives/dynamic-form-field/dynamic-form-field.directive';\r\n\r\n/**\r\n * Creates a reactive form dynamically based on the passed form field configuration and handles the form events.\r\n * @export\r\n * @class DynamicFormComponent\r\n * @implements {OnInit}\r\n * @implements {AfterContentInit}\r\n */\r\n@Component({\r\n exportAs: 'dynamicForm',\r\n selector: 'ieeesa-dynamic-form',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n DynamicFormFieldDirective,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrls: ['./dynamic-form.component.scss'],\r\n})\r\nexport class DynamicFormComponent implements OnInit, AfterContentInit {\r\n @ViewChildren(DynamicFormFieldDirective)\r\n formFields!: QueryList<DynamicFormFieldDirective>;\r\n private _formGroups!: FormModel;\r\n /**\r\n * FormGroups passed an an input and which contains configuration information of every form fields.\r\n * @memberof DynamicFormComponent\r\n */\r\n @Input()\r\n set formGroups(value: FormModel) {\r\n this._formGroups = value;\r\n this.createFormGroupArray();\r\n }\r\n get formGroups(): FormModel {\r\n return this._formGroups;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _submitResponse!: any;\r\n /**\r\n * Sets submit response on form submit\r\n * @memberof DynamicFormComponent\r\n */\r\n @Input()\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set submitResponse(value: any) {\r\n this._submitResponse = value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n get submitResponse(): any {\r\n return this._submitResponse;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _searchResponse!: any;\r\n /**\r\n * Sets search response on form search event\r\n * @memberof DynamicFormComponent\r\n */\r\n @Input()\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set searchResponse(value: any) {\r\n this._searchResponse = value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n get searchResponse(): any {\r\n return this._searchResponse;\r\n }\r\n @Input() colWidth!: FormGrid;\r\n @Input() isLegendVisible!: boolean;\r\n @Input() rightButtonLabel!: string;\r\n @Input() leftButtonLabel!: string;\r\n @Input() isSubmitButtonDisabled = false;\r\n @Input() isLeftButtonDisabled = false;\r\n @Input() isLeftButtonNeeded = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formSubmit: EventEmitter<any> = new EventEmitter<any>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formChange: EventEmitter<any> = new EventEmitter<any>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formInput: EventEmitter<any> = new EventEmitter<any>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formLeftButtonClicked: EventEmitter<any> = new EventEmitter<any>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formSearchApply: EventEmitter<any> = new EventEmitter<Event>();\r\n @Output() formGroupsReference = new EventEmitter<FormGroup[]>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() dropdownChange: EventEmitter<any> = new EventEmitter<Event>();\r\n @Output() formDateSelected = new EventEmitter<string>();\r\n @Output() formSelectSearch = new EventEmitter<{\r\n searchEvent: Event;\r\n controlName: string;\r\n }>();\r\n @Output() formControlChange = new EventEmitter<Event>();\r\n @Output() formAutoCompleteSearch: EventEmitter<Event> =\r\n new EventEmitter<Event>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<FormGroup[]>();\r\n @Output() formAfterContentInit = new EventEmitter<FormGroup[]>();\r\n @Output() formSelectedDateRange = new EventEmitter<{\r\n startDate: string;\r\n endDate: string;\r\n }>();\r\n form!: FormGroup;\r\n formGroupArray: FormGroup[] = [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n formControlArray: any[] = [];\r\n legendsArray: string[] = [];\r\n\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to create form group\r\n * @memberof DynamicFormComponent\r\n */\r\n ngOnInit(): void {\r\n this.createFormGroupArray();\r\n }\r\n\r\n /**\r\n * Emit generated form reference on ngAfterContentInit lifecycle hook.\r\n * @memberof DynamicFormComponent\r\n */\r\n ngAfterContentInit(): void {\r\n this.formAfterContentInit.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Creates form group on the basis of formGroups configuration input\r\n * @return {void}\r\n * @memberof DynamicFormComponent\r\n */\r\n createFormGroupArray(): void {\r\n this.formGroupArray = [];\r\n this.formControlArray = [];\r\n this.legendsArray = [];\r\n if (!this.formGroups) {\r\n return;\r\n }\r\n this.formGroups?.formGroup?.forEach((element) => {\r\n const controls = element.controls.filter(\r\n (control) => control.type !== 'button'\r\n );\r\n this.formGroupArray.push(this.createGroup(controls));\r\n this.formControlArray.push(controls);\r\n this.legendsArray.push(element.legend);\r\n });\r\n this.form = this.fb.group({\r\n children: this.formGroupArray,\r\n });\r\n\r\n this.formGroupsReference.emit(this.formGroupArray);\r\n }\r\n /**\r\n * Creates form group using form builder\r\n * @param {any[]} controls\r\n * @return {FormGroup}\r\n * @memberof DynamicFormComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n createGroup(controls: any[]): FormGroup {\r\n const group = this.fb.group({});\r\n controls.forEach((control: FieldConfig) =>\r\n group.addControl(control.controlName, this.createControl(control))\r\n );\r\n return group;\r\n }\r\n\r\n /**\r\n * Creates form control based on form field configuration\r\n * @param {FieldConfig} control\r\n * @return {FormControl}\r\n * @memberof DynamicFormComponent\r\n */\r\n createControl(control: FieldConfig): FormControl {\r\n const { disabled, validation, value } = control;\r\n return this.fb.control({ disabled, value }, validation);\r\n }\r\n\r\n /**\r\n * Emits formGroupArray\r\n * @memberof DynamicFormComponent\r\n */\r\n onFormSubmit(): void {\r\n this.formSubmit.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Emits formGroupArray\r\n * @memberof DynamicFormComponent\r\n */\r\n onLeftButtonClicked(): void {\r\n this.formLeftButtonClicked.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Emits formGroupArray\r\n * @memberof DynamicFormComponent\r\n */\r\n onFormChange(): void {\r\n this.formChange.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Handles form field select type drop down selection event\r\n * @memberof DynamicFormComponent\r\n */\r\n onDropdownChange(): void {\r\n this.dropdownChange.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Handles form input change event\r\n * @param {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n formInputChange(event: Event): void {\r\n this.formControlChange.emit(event);\r\n this.formInput.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Handles form field search apply event\r\n * @param {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onSearchApply(event: Event): void {\r\n this.formSearchApply.emit(event);\r\n }\r\n\r\n /**\r\n * Handles search event inside form field select\r\n * @param {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onSelectSearch(event: { searchEvent: Event; controlName: string }): void {\r\n this.formSelectSearch.emit(event);\r\n }\r\n\r\n /**\r\n * Takes the index and the formGroup as arguments and needs to return the unique identifier for this formGroup.\r\n * @param {number} index\r\n * @param {FormGroup} formGroup\r\n * @memberof DynamicFormComponent\r\n */\r\n trackByFormGroup(index: number, formGroup: FormGroup) {\r\n return formGroup.controls;\r\n }\r\n\r\n /**\r\n * Handles form date selection event\r\n * @param {string[]} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onDateSelected(event: string): void {\r\n this.formDateSelected.emit(event);\r\n }\r\n\r\n /**\r\n * Emits selected form date range\r\n * @param {{startDate: string, endDate: string}} dateRange\r\n * @memberof DynamicFormComponent\r\n */\r\n onSelectedDateRange(dateRange: { startDate: string; endDate: string }) {\r\n this.formSelectedDateRange.emit(dateRange);\r\n }\r\n\r\n /**\r\n * Handles form field auto complete search event\r\n * @param {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onAutoCompleteSearch(event: Event): void {\r\n this.formAutoCompleteSearch.emit(event);\r\n }\r\n\r\n /**\r\n * Handles form field auto complete option selection event\r\n * @memberof DynamicFormComponent\r\n */\r\n onAutoCompleteOptionSelected(): void {\r\n this.autoCompleteOptionSelected.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Converts passed control name in hyphenated css class name\r\n * @param {string} className\r\n * @return {string}\r\n * @memberof DynamicFormComponent\r\n */\r\n getRowClassName(className: string): string {\r\n return className\r\n .replace(/([A-Z])/g, ' $1')\r\n .toLowerCase()\r\n .split(' ')\r\n .join('-');\r\n }\r\n}\r\n","<form\r\n class=\"ieeesa-dynamic-form\"\r\n [formGroup]=\"form\"\r\n (change)=\"onFormChange()\"\r\n (ngSubmit)=\"onFormSubmit()\"\r\n (input)=\"formInputChange($event)\"\r\n>\r\n <fieldset\r\n class=\"ieeesa-dynamic-form__fieldset p-2\"\r\n *ngFor=\"\r\n let formGrp of formGroupArray;\r\n let i = index;\r\n trackBy: trackByFormGroup\r\n \"\r\n >\r\n <legend class=\"float-none w-auto p-2\" *ngIf=\"isLegendVisible\">\r\n {{ legendsArray[i] }}:\r\n </legend>\r\n <div class=\"row\">\r\n <div\r\n class=\"col-{{ colWidth.xs }} col-sm-{{ colWidth.sm }} col-md-{{\r\n colWidth.md\r\n }} col-lg-{{ colWidth.lg }} col-xl-{{ colWidth.xl }}\r\n ieeesa-dynamic-form__form-field\"\r\n [ngClass]=\"getRowClassName(formControlArray[i][j].controlName)\"\r\n *ngFor=\"let control of formControlArray[i]; let j = index\"\r\n >\r\n <ng-template\r\n ieeesaDynamicFormField\r\n [config]=\"formControlArray[i][j]\"\r\n [group]=\"formGrp\"\r\n [submitResponse]=\"submitResponse\"\r\n [searchResponse]=\"searchResponse\"\r\n (formSearchApply)=\"onSearchApply($event)\"\r\n (formDropdownSelected)=\"onFormChange(); onDropdownChange()\"\r\n (formDateSelected)=\"onDateSelected($event)\"\r\n (formSelectedDateRange)=\"onSelectedDateRange($event)\"\r\n (formSelectSearch)=\"onSelectSearch($event)\"\r\n (formAutoCompleteSearch)=\"onAutoCompleteSearch($event)\"\r\n (autoCompleteOptionSelected)=\"onAutoCompleteOptionSelected()\"\r\n >\r\n </ng-template>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <div class=\"row\">\r\n <div class=\"col-12 ieeesa-dynamic-form__actions\">\r\n <button\r\n type=\"submit\"\r\n mat-button\r\n class=\"mat-primary-button ieeesa-dynamic-form__actions--right-btn\"\r\n [disabled]=\"isSubmitButtonDisabled\"\r\n >\r\n {{ rightButtonLabel }}\r\n </button>\r\n <button\r\n *ngIf=\"isLeftButtonNeeded\"\r\n type=\"button\"\r\n mat-button\r\n class=\"mat-secondary-button ieeesa-dynamic-form__actions--left-btn\"\r\n (click)=\"onLeftButtonClicked()\"\r\n [disabled]=\"isLeftButtonDisabled\"\r\n >\r\n {{ leftButtonLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n","import {\r\n ComponentRef,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { FormField } from '@presentation/models/form-field.model';\r\nimport { InputComponent } from '@presentation/components/input/input.component';\r\nimport { AutocompleteComponent } from '@presentation/components/autocomplete/autocomplete.component';\r\nimport { CheckboxComponent } from '@presentation/components/checkbox/checkbox.component';\r\nimport { DatePickerComponent } from '@presentation/components/date-picker/date-picker.component';\r\nimport { RadioComponent } from '@presentation/components/radio/radio.component';\r\nimport { SearchComponent } from '@presentation/components/search/search.component';\r\nimport { SelectComponent } from '@presentation/components/select/select.component';\r\nimport { TextAreaComponent } from '@presentation/components/text-area/text-area.component';\r\nimport { FormControlType } from '@presentation/models/form-control-types.model';\r\n\r\nconst components: { [type: string]: Type<FormField> } = {\r\n [FormControlType.INPUT]: InputComponent,\r\n [FormControlType.TEXT_AREA]: TextAreaComponent,\r\n [FormControlType.SELECT]: SelectComponent,\r\n [FormControlType.SEARCH]: SearchComponent,\r\n [FormControlType.DATE]: DatePickerComponent,\r\n [FormControlType.CHECKBOX]: CheckboxComponent,\r\n [FormControlType.RADIO]: RadioComponent,\r\n [FormControlType.AUTO_COMPLETE]: AutocompleteComponent,\r\n};\r\n\r\n/**\r\n * Provides the implementation of DynamicFormFieldDirective which hosts and creates the form fields components dynamically.\r\n * @export\r\n * @class DynamicFormFieldDirective\r\n * @implements {FormField}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Directive({\r\n selector: '[ieeesaDynamicFormField]',\r\n standalone: true,\r\n})\r\nexport class DynamicFormFieldDirective implements FormField, OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n private _config!: FieldConfig;\r\n private _group!: FormGroup;\r\n /**\r\n * Sets the form field configuration\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n @Input()\r\n set config(value: FieldConfig) {\r\n this._config = value;\r\n if (this.component) {\r\n this.loadComponent();\r\n }\r\n }\r\n get config(): FieldConfig {\r\n return this._config;\r\n }\r\n\r\n /**\r\n * Sets the form group\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n @Input()\r\n set group(value: FormGroup) {\r\n if (this.component?.instance) {\r\n this.component.instance.group = value;\r\n }\r\n this._group = value;\r\n }\r\n get group(): FormGroup {\r\n return this._group;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _submitResponse!: any;\r\n /**\r\n * Sets the submit response of form submit event\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n @Input()\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set submitResponse(value: any) {\r\n if (this.component?.instance) {\r\n this.component.instance.submitResponse = value;\r\n }\r\n this._submitResponse = value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n get submitResponse(): any {\r\n return this._submitResponse;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _searchResponse!: any;\r\n /**\r\n * Sets the form search response of form search apply.\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n @Input()\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set searchResponse(value: any) {\r\n if (this.component?.instance) {\r\n this.component.instance.searchResponse = value;\r\n }\r\n this._searchResponse = value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n get searchResponse(): any {\r\n return this._searchResponse;\r\n }\r\n\r\n @Output() formSearchApply = new EventEmitter<Event>();\r\n @Output() formDropdownSelected = new EventEmitter<Event>();\r\n @Output() formDateSelected = new EventEmitter<string>();\r\n @Output() formSelectedDateRange =new EventEmitter<{startDate: string, endDate:string}>();\r\n @Output() formSelectSearch = new EventEmitter<{\r\n searchEvent: Event;\r\n controlName: string;\r\n }>();\r\n @Output() formAutoCompleteSearch = new EventEmitter<Event>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<Event>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n component!: ComponentRef<any>;\r\n\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(public container: ViewContainerRef) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to call loadComponents method.\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n ngOnInit(): void {\r\n this.loadComponent();\r\n }\r\n\r\n /**\r\n * Creates the component dynamically and initializes the instance properties of created component, also handles the created component events.\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n loadComponent(): void {\r\n if (!components[this.config?.type]) {\r\n const supportedTypes = Object.keys(components).join(', ');\r\n throw new Error(\r\n `Trying to use an unsupported type (${this.config.type}).\r\n Supported types: ${supportedTypes}`\r\n );\r\n }\r\n this.component = this.container.createComponent(\r\n components[this.config?.type]\r\n );\r\n if (this.component?.instance) {\r\n this.component.instance.config = this.config;\r\n this.component.instance.group = this.group;\r\n this.component.instance.submitResponse = this.submitResponse;\r\n this.component.instance.searchResponse = this.searchResponse;\r\n\r\n if (this.config.type === FormControlType.SEARCH) {\r\n this.component.instance.searchValue\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.formSearchApply.emit(event);\r\n });\r\n } else if (this.config.type === FormControlType.SELECT) {\r\n this.component.instance.optionSelected\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.formDropdownSelected.emit(event);\r\n });\r\n this.component.instance.optionSearched\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.formSelectSearch.emit({\r\n searchEvent: event,\r\n controlName: this.config.controlName,\r\n });\r\n });\r\n } else if (this.config.type === FormControlType.DATE) {\r\n this.component.instance.selectedDate\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: string) => {\r\n this.formDateSelected.emit(event);\r\n });\r\n this.component.instance.selectedDateRange\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: {startDate: string, endDate: string}) => {\r\n this.formSelectedDateRange.emit(event);\r\n });\r\n } else if (this.config.type === FormControlType.AUTO_COMPLETE) {\r\n this.component.instance.autoCompleteSearchValue\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.formAutoCompleteSearch.emit(event);\r\n });\r\n this.component.instance.autoCompleteOptionSelected\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.autoCompleteOptionSelected.emit(event);\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\n\r\n/**\r\n * Implements and displays form error messages and form submission error response message on submission of form.\r\n * @export\r\n * @class FormErrorComponent\r\n */\r\n@Component({\r\n selector: 'ieeesa-form-error',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './form-error.component.html',\r\n styleUrls: ['./form-error.component.scss'],\r\n})\r\nexport class FormErrorComponent {\r\n @Input() formGroup!: FormGroup;\r\n @Input() config!: FieldConfig;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Input() submitResponse!: any;\r\n}\r\n","<ng-container *ngIf=\"formGroup\">\r\n <div\r\n class=\"ieeesa-body-sm-14 ieeesa-form-error\"\r\n *ngIf=\"\r\n formGroup.controls[config.controlName]?.touched ||\r\n (formGroup.controls[config.controlName]?.dirty &&\r\n formGroup.controls[config.controlName]?.invalid)\r\n \"\r\n >\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['required']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.requiredErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['minlength']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.minErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['maxlength'] || formGroup.controls[config.controlName].errors?.['max']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.maxErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['pattern']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.patternErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n formGroup.controls[config.controlName].errors?.['email']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.invalidEmailErrorMessage }}\r\n </p>\r\n </div>\r\n <div\r\n class=\"ieeesa-form-error\"\r\n *ngIf=\"\r\n (formGroup.controls[config.controlName]?.touched ||\r\n formGroup.controls[config.controlName]?.dirty) &&\r\n submitResponse\r\n \"\r\n >\r\n <p class=\"ieeesa-form-error--text mt-1\">\r\n {{ submitResponse }}\r\n </p>\r\n </div>\r\n</ng-container>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n/**\r\n * The NotificationComponent displays a notification with a heading, title, content, and an optional button.\r\n * Component can be reused in page not found, access denied, session expired notification, logged out pages.\r\n * @class NotificationComponent\r\n */\r\n@Component({\r\n selector: 'ieeesa-notification',\r\n standalone: true,\r\n imports: [CommonModule, MatIconModule, MatButtonModule],\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.scss'],\r\n})\r\nexport class NotificationComponent {\r\n @Input() heading!: string;\r\n @Input() title!: string;\r\n @Input() content!: string;\r\n @Input() buttonLabel!: string;\r\n @Input() buttonIcon = true;\r\n @Output() notify = new EventEmitter();\r\n\r\n /**\r\n * Emits the notify event on clicking notify button.\r\n */\r\n onClick() {\r\n this.notify.emit();\r\n }\r\n}\r\n","<div class=\"ieeesa-notification flex-align-center row\">\r\n <div class=\"ieeesa-notification__body col-md-4 col-lg-4 p-4\">\r\n <h1\r\n class=\"ieeesa-notification__heading ieeesa-display-lg-57 text-capitalize\"\r\n *ngIf=\"heading\"\r\n >\r\n {{ heading }}\r\n </h1>\r\n <p class=\"ieeesa-notification__title ieeesa-title-lg-bold-24\">\r\n {{ title }}\r\n </p>\r\n <p class=\"ieeesa-notification__message ieeesa-title-md-18\">{{ content }}</p>\r\n <button\r\n mat-button\r\n color=\"primary\"\r\n class=\"ieeesa-notification__button ieeesa-label-lg-bold-16 mat-primary-button\"\r\n (click)=\"onClick()\"\r\n >\r\n <i *ngIf=\"buttonIcon\" class=\"fa-solid fa-arrow-left\"></i>\r\n {{ buttonLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { FormField } from '@presentation/models/form-field.model';\r\nimport { FormErrorComponent } from '@presentation/components/form-error/form-error.component';\r\nimport * as buttonActionsInfo from '@presentation/assets/constants.json';\r\n\r\n/**\r\n * Provides implementation of input type number and text\r\n * @export\r\n * @class InputComponent\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n selector: 'ieeesa-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatInputModule,\r\n MatIconModule,\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class InputComponent implements FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n invalidChars = ['-', '+', 'e'];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n buttonActionsInfo: any = buttonActionsInfo;\r\n\r\n /**\r\n * Handles keyboard event of type keydown to restrict invalid characters.\r\n * @param {KeyboardEvent} event\r\n * @memberof InputComponent\r\n */\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (\r\n (this.invalidChars.includes(event.key.toLowerCase()) ||\r\n (this.config.isInteger && event.key.toLowerCase() === '.')) &&\r\n this.config.isNumber\r\n ) {\r\n event.preventDefault();\r\n }\r\n }\r\n /**\r\n * Clears the form group control value of type input\r\n * @memberof InputComponent\r\n */\r\n clear(): void {\r\n this.group.get(this.config.controlName)?.setValue('');\r\n }\r\n\r\n /**\r\n * Handles form control input on change event to set min and max value errors\r\n * @memberof InputComponent\r\n */\r\n onChange(): void {\r\n if (\r\n this.config.max &&\r\n this.config.isNumber &&\r\n Number(this.group.get(this.config.controlName)?.value) > this.config.max\r\n ) {\r\n this.group.get(this.config.controlName)?.setErrors({\r\n maxlength: true,\r\n });\r\n }\r\n if (\r\n this.config.min &&\r\n this.config.isNumber &&\r\n this.group.get(this.config.controlName)?.value !== '' &&\r\n Number(this.group.get(this.config.controlName)?.value) < this.config.min\r\n ) {\r\n this.group.get(this.config.controlName)?.setErrors({\r\n minlength: true,\r\n });\r\n }\r\n }\r\n}\r\n","<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-input-field\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-input-field__label-left'\r\n : 'ieeesa-input-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-input-field__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <mat-form-field>\r\n <input\r\n class=\"ieeesa-input-field__content ieeesa-body-sm-14\"\r\n [type]=\"config.isNumber ? 'number' : 'text'\"\r\n [min]=\"config.min\"\r\n [max]=\"config.max\"\r\n [maxlength]=\"config.maxLength ?? ''\"\r\n [minlength]=\"config.minLength ?? ''\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (input)=\"onChange()\"\r\n autocomplete=\"off\"\r\n matInput\r\n />\r\n <button\r\n *ngIf=\"\r\n group.get(this.config.controlName)?.value &&\r\n group.get(this.config.controlName)?.valid\r\n \"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"buttonActionsInfo.ariaLabel.clear\"\r\n class=\"ieeesa-input-field__btn--clear\"\r\n (click)=\"clear()\"\r\n >\r\n <i class=\"fa-regular fa-circle-xmark ieeesa-input-field__icon--clear\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"\r\n group.get(this.config.controlName)?.invalid &&\r\n group.get(this.config.controlName)?.dirty\r\n \"\r\n class=\"ieeesa-input-field__btn--warning\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"buttonActionsInfo.ariaLabel.warning\"\r\n >\r\n <i\r\n class=\"fa-solid fa-circle-exclamation ieeesa-input-field__icon--warning\"\r\n ></i>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { FormField } from '@presentation/models/form-field.model';\r\nimport { FormErrorComponent } from '@presentation/components/form-error/form-error.component';\r\nimport * as constantsInfo from '@presentation/assets/constants.json';\r\n\r\n@Component({\r\n selector: 'ieeesa-text-area',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n ],\r\n templateUrl: './text-area.component.html',\r\n styleUrls: ['./text-area.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TextAreaComponent implements FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = constantsInfo;\r\n}\r\n","<div\r\n class=\"ieeesa-text-area-field\"\r\n [formGroup]=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-text-area-field__label-left'\r\n : 'ieeesa-text-area-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-text-area-field__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <mat-form-field appearance=\"fill\">\r\n <textarea\r\n name=\"config.name\"\r\n matInput\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [maxlength]=\"config.maxLength ?? constants.textarea.maxLengthDefault\"\r\n [readonly]=\"config.isReadonly\"\r\n class=\"ieeesa-text-area-field__content ieeesa-body-lg-18\"\r\n [ngClass]=\"\r\n config.isResize\r\n ? 'ieeesa-text-area-field__resize'\r\n : 'ieeesa-text-area-field__no-resize'\r\n \"\r\n >\r\n {{ config.value }}</textarea\r\n >\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { FormField } from '@presentation/models/form-field.model';\r\nimport { RadioOption } from '@presentation/models/radio-option.model';\r\nimport { FormErrorComponent } from '@presentation/components/form-error/form-error.component';\r\nimport { FormControlType } from '@presentation/models/form-control-types.model';\r\nimport { FormUtilityService } from '@presentation/services/form-utility.service';\r\n\r\n/**\r\n * Provides implementation of form field radio type component\r\n * @export\r\n * @class RadioComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n selector: 'ieeesa-radio',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatRadioModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatFormFieldModule,\r\n ],\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class RadioComponent implements OnInit, FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n @Input() formControlName = 'radio';\r\n @Input() radioGroup: RadioOption[] = [];\r\n @Input() isDisabled = false;\r\n @Output() selectedRadioOption = new EventEmitter<RadioOption>();\r\n\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private formUtilityService: FormUtilityService) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to create form group and initialize components instance properties\r\n * @memberof RadioComponent\r\n */\r\n ngOnInit(): void {\r\n if (!this.group) {\r\n this.group =\r\n this.group ??\r\n this.formUtilityService.getFormGroup(this.formControlName);\r\n }\r\n this.initializeConfigProperties();\r\n }\r\n\r\n /**\r\n * Initializes the components instance properties from config else it defines config\r\n * @memberof RadioComponent\r\n */\r\n initializeConfigProperties(): void {\r\n if (this.config?.radioOptions) {\r\n this.radioGroup = this.config.radioOptions;\r\n this.isDisabled = this.config?.disabled ?? false;\r\n }\r\n this.config =\r\n this.config ??\r\n this.formUtilityService.getFormFieldConfig(\r\n this.formControlName,\r\n FormControlType.RADIO\r\n );\r\n }\r\n\r\n /**\r\n * Handles radio selection event on change of it\r\n * @param {RadioOption} value\r\n * @memberof RadioComponent\r\n */\r\n onChange(value: RadioOption): void {\r\n this.selectedRadioOption.emit(value);\r\n }\r\n /**\r\n * Allows Angular to detect the specific radio option that needs to change or be added instead of rebuilding the whole radio options in DOM by tracking option unique Id.\r\n * @param {number} index\r\n * @return {number}\r\n * @memberof RadioComponent\r\n */\r\n trackById(index: number, radio: RadioOption): number | string {\r\n return radio.id;\r\n }\r\n}\r\n","<div [formGroup]=\"group\" class=\"ieeesa-radio-field\" *ngIf=\"group\">\r\n <mat-label\r\n class=\"ieeesa-body-sm-14 ieeesa-radio-field__label\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-radio-field__label-left'\r\n : 'ieeesa-radio-field__label-top'\r\n \"\r\n >{{ config.label }}</mat-label\r\n >\r\n <mat-radio-group\r\n [formControlName]=\"config.controlName\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <mat-radio-button\r\n *ngFor=\"let radio of radioGroup; trackBy: trackById\"\r\n [value]=\"radio.label\"\r\n [name]=\"radio.label\"\r\n [id]=\"'' + radio.id\"\r\n (change)=\"onChange(radio)\"\r\n [checked]=\"radio.checked\"\r\n class=\"ieeesa-radio-field__button\"\r\n >\r\n {{ radio.label }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { FormField } from '@presentation/models/form-field.model';\r\nimport { CheckboxOption } from '@presentation/models/checkbox-option.model';\r\nimport { FormErrorComponent } from '@presentation/components/form-error/form-error.component';\r\nimport { FormUtilityService } from '@presentation/services/form-utility.service';\r\n\r\n/**\r\n * Provides implementation of all types of checkboxes.\r\n * @export\r\n * @class CheckboxComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n selector: 'ieeesa-checkbox',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatListModule,\r\n MatButtonModule,\r\n MatInputModule,\r\n FormsModule,\r\n MatFormFieldModule,\r\n FormErrorComponent,\r\n ReactiveFormsModule,\r\n MatCheckboxModule,\r\n ],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CheckboxComponent implements OnInit, FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n private _checkboxes!: CheckboxOption[];\r\n /**\r\n * Input property to get checkbox options.\r\n * @memberof CheckboxComponent\r\n * @usageNotes const checkboxes = [{ id: 1, name:\"Angular\"}]\r\n */\r\n @Input()\r\n set checkboxes(value: CheckboxOption[]) {\r\n this._checkboxes = value;\r\n }\r\n get checkboxes(): CheckboxOption[] {\r\n return this._checkboxes;\r\n }\r\n @Output() checkboxSelection = new EventEmitter<CheckboxOption>();\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private formUtilityService: FormUtilityService) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method of component to initialize component instance properties.\r\n * @memberof CheckboxComponent\r\n */\r\n ngOnInit(): void {\r\n this.createFormGroupAndInitializeProperties();\r\n }\r\n /**\r\n * Creates form group and initializes components properties from config.\r\n * @memberof CheckboxComponent\r\n */\r\n createFormGroupAndInitializeProperties(): void {\r\n this.checkboxes = this.config?.checkboxOptions ?? this.checkboxes;\r\n this.group = this.group ?? this.formUtilityService.getFormGroup('checkbox');\r\n this.checkboxes?.forEach((checkbox) => {\r\n this.group.addControl(\r\n checkbox.id as string,\r\n new FormControl({\r\n value: checkbox.checked,\r\n disabled: checkbox.disabled,\r\n })\r\n );\r\n });\r\n }\r\n /**\r\n * Sets checkbox selection and emits selected option on change event.\r\n * @param {CheckboxOption} option\r\n * @param {boolean} checked\r\n * @memberof CheckboxComponent\r\n */\r\n onChange(option: CheckboxOption, checked: boolean): void {\r\n option.checked = checked;\r\n this.checkboxSelection.emit(option);\r\n }\r\n /**\r\n * Allows Angular to detect the specific checkbox option that needs to change or be added instead of rebuilding the whole checkbox options in DOM by tracking option unique Id.\r\n * @param {number} index\r\n * @return {number}\r\n * @memberof CheckboxComponent\r\n */\r\n trackById(index: number, option: CheckboxOption): number | string {\r\n return option.id;\r\n }\r\n}\r\n","<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-checkbox-field\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-checkbox-field__label-left'\r\n : 'ieeesa-checkbox-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-checkbox-field__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <mat-list>\r\n <mat-checkbox\r\n *ngFor=\"let option of checkboxes; trackBy: trackById\"\r\n [formControlName]=\"option.id\"\r\n (change)=\"onChange(option, true)\"\r\n [disabled]=\"option.disabled\"\r\n [checked]=\"option.checked\"\r\n >\r\n {{ option.name }}\r\n </mat-checkbox>\r\n </mat-list>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n Subject,\r\n takeUntil,\r\n} from 'rxjs';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport {\r\n MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\r\n MatAutocompleteModule,\r\n} from '@angular/material/autocomplete';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { FormField } from '@presentation/models/form-field.model';\r\nimport { AutoCompleteOption } from '@presentation/models/autocomplete-option.model';\r\nimport { SelectOption } from '@presentation/models/select-option.model';\r\nimport { FormErrorComponent } from '@presentation/components/form-error/form-error.component';\r\nimport * as autocompleteConstInfo from '@presentation/assets/constants.json';\r\nimport { FormControlType } from '@presentation/models/form-control-types.model';\r\nimport { FormUtilityService } from '@presentation/services/form-utility.service';\r\n\r\n/**\r\n * Provides auto suggestion for the entered input by filtering the options from the given list of options.\r\n * @export\r\n * @class AutocompleteComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n selector: 'ieeesa-autocomplete',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatOptionModule,\r\n MatAutocompleteModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n ],\r\n providers: [\r\n {\r\n provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\r\n useValue: { overlayPanelClass: 'ieeesa-autocomplete-overlay-pane' },\r\n },\r\n ],\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AutocompleteComponent implements OnInit, FormField, OnDestroy {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n value = '';\r\n @Input() filteredOptions: AutoCompleteOption[] = [];\r\n @Input() isSelectedOptionsVisible = true;\r\n @Output() autoCompleteSearchValue = new EventEmitter<string>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<string>();\r\n @ViewChild('autoComplete') autoComplete!: ElementRef;\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n autocompleteConstInfo: any = autocompleteConstInfo;\r\n optionsToFilter: AutoCompleteOption[] = [];\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private formUtilityService: FormUtilityService) {}\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to initialize components instance properties.\r\n * @memberof AutocompleteComponent\r\n */\r\n ngOnInit(): void {\r\n this.config =\r\n this.config ??\r\n this.formUtilityService.getFormFieldConfig(\r\n 'autocomplete',\r\n FormControlType.AUTO_COMPLETE\r\n );\r\n this.group =\r\n this.group ?? this.formUtilityService.getFormGroup('autocomplete');\r\n this.filteredOptions =\r\n this.config?.autoCompleteOptions ?? this.filteredOptions;\r\n this.optionsToFilter = this.filteredOptions;\r\n }\r\n /**\r\n * Filters the options on form control value changes.\r\n * @memberof AutocompleteComponent\r\n */\r\n filterOptions(): void {\r\n this.group?.controls[this.config?.controlName]?.valueChanges\r\n .pipe(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (res: any) =>\r\n res.length >=\r\n this.autocompleteConstInfo.autocomplete.minCharToSearch ||\r\n res.length === 0\r\n ),\r\n debounceTime(this.autocompleteConstInfo.autocomplete.debounceTime),\r\n distinctUntilChanged()\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((text: string) => {\r\n const options = this.optionsToFilter?.filter((item) =>\r\n item.name.toLowerCase().includes(text.toLowerCase())\r\n );\r\n this.filteredOptions = options ?? this.optionsToFilter;\r\n this.autoCompleteSearchValue.emit(text);\r\n });\r\n }\r\n /**\r\n * Emits the selected option name when the form on change event is triggered and returns option name.\r\n * @param {AutoCompleteOption} data // data is an selected option of filteredOptions.\r\n * @return {string} // Returns selected option name as string\r\n * @memberof AutocompleteComponent\r\n */\r\n onChange(data: AutoCompleteOption): string {\r\n this.autoCompleteOptionSelected.emit(data.name);\r\n return data.name;\r\n }\r\n /**\r\n * Takes the index and the current item as arguments and needs to return the unique identifier for this item.\r\n * @param {number} index\r\n * @param {SelectOption} option\r\n * @return {(number | string)}\r\n * @memberof AutocompleteComponent\r\n */\r\n trackByFn(index: number, option: SelectOption): number | string {\r\n return option.id;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof AutocompleteComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-autocomplete\"\r\n [formGroup]=\"group\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-autocomplete-field__label-left'\r\n : 'ieeesa-autocomplete-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-autocomplete__label\">{{ config.label }}</mat-label>\r\n <mat-form-field class=\"ieeesa-autocomplete__mat-form\" appearance=\"outline\">\r\n <input\r\n matInput\r\n class=\"ieeesa-autocomplete__input\"\r\n [matAutocomplete]=\"auto\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n #autoComplete\r\n (keypress)=\"filterOptions()\"\r\n />\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n (optionSelected)=\"onChange($event.option.value)\"\r\n class=\"ieeesa-autocomplete__autocomplete-list\"\r\n >\r\n <ng-container *ngIf=\"isSelectedOptionsVisible\">\r\n <mat-option\r\n *ngFor=\"let option of filteredOptions; trackBy: trackByFn\"\r\n [value]=\"option.name\"\r\n >\r\n <span>{{ option.name }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <button\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"autocompleteConstInfo.ariaLabel.clear\"\r\n *ngIf=\"value\"\r\n (click)=\"value = ''\"\r\n >\r\n <i class=\"fa-solid fa-xmark ieeesa-autocomplete__cancel-icon\"></i>\r\n </button>\r\n </mat-form-field>\r\n</div>\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n Subject,\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n fromEvent,\r\n map,\r\n takeUntil,\r\n} from 'rxjs';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { FormField } from '@presentation/models/form-field.model';\r\nimport { ValidationPatterns } from '@presentation/validation-patterns';\r\nimport { SearchType } from '@presentation/models/search.model';\r\nimport { FormErrorComponent } from '@presentation/components/form-error/form-error.component';\r\nimport { FormControlType } from '@presentation/models/form-control-types.model';\r\nimport { FormUtilityService } from '@presentation/services/form-utility.service';\r\nimport * as searchInfo from '@presentation/assets/constants.json';\r\nconst MIN_CHAR = 3;\r\n/**\r\n * Component support search capability and used as a form filed with type search and independently as search component.\r\n * @export\r\n * @class SearchComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n selector: 'ieeesa-search',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ],\r\n templateUrl: './search.component.html',\r\n styleUrls: ['./search.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SearchComponent\r\n implements OnInit, AfterViewInit, OnDestroy, FormField\r\n{\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n @Input() formControlName = 'search';\r\n @Input() placeholderLabel = '';\r\n @Input() searchType: SearchType = SearchType.AUTO;\r\n @Input() searchTerm = '';\r\n @Output() searchValue = new EventEmitter();\r\n @ViewChild('searchControl') searchControl!: ElementRef;\r\n searchResponse!: string;\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n searchInfo: any = searchInfo;\r\n\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to initialize config and form group if its undefined\r\n * @memberof SearchComponent\r\n */\r\n ngOnInit(): void {\r\n this.config =\r\n this.config ??\r\n this.formUtilityService.getFormFieldConfig(\r\n this.formControlName,\r\n FormControlType.SEARCH\r\n );\r\n this.group =\r\n this.group ?? this.formUtilityService.getFormGroup(this.formControlName);\r\n }\r\n\r\n /**\r\n * Handles form control search keyup event and emits searched value\r\n * @memberof SearchComponent\r\n */\r\n ngAfterViewInit() {\r\n if (this.searchType === SearchType.AUTO && this.searchControl) {\r\n fromEvent(this.searchControl?.nativeElement, 'keyup')\r\n .pipe(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n map((event: any) => {\r\n return event.target.value;\r\n }),\r\n filter((res) => res.length >= MIN_CHAR || res.length === 0),\r\n debounceTime(this.searchInfo.autocomplete.debounceTime),\r\n distinctUntilChanged()\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((text: string) => {\r\n this.searchValue.emit(text);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Validates email based on defined validation patterns\r\n * @param {string} email\r\n * @return {boolean}\r\n * @memberof SearchComponent\r\n */\r\n isValidateEmail(email: string): boolean {\r\n const regularExpression = ValidationPatterns.email;\r\n return regularExpression.test(String(email).toLowerCase());\r\n }\r\n\r\n /**\r\n * Clears search response on change of form search control value\r\n * @memberof SearchComponent\r\n */\r\n onChange(): void {\r\n this.searchResponse = '';\r\n }\r\n\r\n /**\r\n * Clears search response and emits searched value on search input change\r\n * @memberof SearchComponent\r\n */\r\n onSearchInputChange(): void {\r\n if (this.group.get(this.config.controlName)?.value === '') {\r\n this.searchValue.emit(this.group.get(this.config.controlName)?.value);\r\n }\r\n if (this.searchTerm.length === 0) {\r\n this.searchResponse = '';\r\n }\r\n }\r\n\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof SearchComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-search-field\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-search-field__label-left'\r\n : 'ieeesa-search-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-search-field__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <mat-form-field appearance=\"outline\">\r\n <span class=\"ieeesa-search-field__content\">\r\n <input\r\n matInput\r\n autocomplete=\"off\"\r\n [type]=\"searchType\"\r\n [formControlName]=\"config.controlName\"\r\n [placeholder]=\"placeholderLabel\"\r\n (change)=\"onChange()\"\r\n (input)=\"onSearchInputChange()\"\r\n bindon-ngModel=\"searchTerm\"\r\n #searchControl\r\n />\r\n <i\r\n class=\"fa-solid fa-magnifying-glass ieeesa-search-field__search-icon\"\r\n ></i>\r\n </span>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Injectable,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n MomentDateAdapter,\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport moment_ from 'moment';\r\nimport { DatePickerHeaderComponent } from '@presentation/components/date-picker-header/date-picker-header.component';\r\nimport { DateFormats } from '@presentation/date-formats';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { CalendarType } from '@presentation/models/calendar.model';\r\nimport { FormErrorComponent } from '@presentation/components/form-error/form-error.component';\r\nimport { DatepickerService } from '@presentation/services/datepicker.service';\r\nimport { FormField } from '@presentation/models/form-field.model';\r\nimport * as buttonActionsInfo from '@presentation/assets/constants.json';\r\nimport { FormControlType } from '@presentation/models/form-control-types.model';\r\nimport { FormUtilityService } from '@presentation/services/form-utility.service';\r\nconst moment = moment_;\r\n\r\n@Injectable()\r\nexport class CustomDateAdapter extends MomentDateAdapter {\r\n /**\r\n * Overrides the getDayOfWeekNames method of MomentDateAdapter to show first letter of day in capital in date picker header.\r\n * @return {string[]}\r\n * @memberof CustomDateAdapter\r\n */\r\n override getDayOfWeekNames(): string[] {\r\n return ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\r\n }\r\n}\r\n\r\n/**\r\n * Date selection of type SINGLE_DATE_SELECTION, DATE_RANGE_SELECTION and CALENDAR and handling of calendar events.\r\n * @export\r\n * @class DatePickerComponent\r\n * @implements {FormField}\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n */\r\n@Component({\r\n selector: 'ieeesa-date-picker',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatExpansionModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDatepickerModule,\r\n DatePickerHeaderComponent,\r\n MatButtonModule,\r\n ],\r\n providers: [\r\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },\r\n {\r\n provide: DateAdapter,\r\n useClass: CustomDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useValue: DateFormats,\r\n },\r\n ],\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DatePickerComponent implements FormField, OnInit {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n datePickerHeader = DatePickerHeaderComponent;\r\n calendarTypes = CalendarType;\r\n private _selectedDates: string[] = [];\r\n /**\r\n * Gets preselected dates as an input.\r\n * @memberof DatePickerComponent\r\n */\r\n @Input()\r\n set selectedDates(value: string[]) {\r\n this._selectedDates = value;\r\n if (\r\n this.formControlName &&\r\n this.selectedDates?.length === 1 &&\r\n this.selectedDates[0] !== undefined &&\r\n this.calendarType === CalendarType.SINGLE_DATE_SELECTION\r\n ) {\r\n this.datepickerService.selectedDate = value[0];\r\n this.createFormGroup(value[0]);\r\n this.datepickerService.isRangeSelection = false;\r\n }\r\n }\r\n /**\r\n * Returns selected dates\r\n * @readonly\r\n * @type {string[]}\r\n * @memberof DatePickerComponent\r\n */\r\n get selectedDates(): string[] {\r\n return this._selectedDates;\r\n }\r\n private _selectedRange: string[] = [];\r\n /**\r\n * Gets preselected date range as an input.\r\n * @memberof DatePickerComponent\r\n */\r\n @Input()\r\n set selectedRange(value: string[]) {\r\n this._selectedRange = value;\r\n if (\r\n this.selectedRange?.length === 2 &&\r\n this.calendarType === CalendarType.DATE_RANGE_SELECTION\r\n ) {\r\n this.createFormGroupWithRangeControls(value[0], value[1]);\r\n this.setDateRange(value[0], value[1]);\r\n this.datepickerService.isRangeSelection = true;\r\n }\r\n }\r\n /**\r\n * Returns selected date range\r\n * @readonly\r\n * @type {string[]}\r\n * @memberof DatePickerComponent\r\n */\r\n get selectedRange(): string[] {\r\n return this._selectedRange;\r\n }\r\n\r\n @Input() calendarType: CalendarType = CalendarType.SINGLE_DATE_SELECTION;\r\n @Input() formControlName!: string;\r\n @Input() placeholderLabel = '';\r\n @Input() isDisabled = false;\r\n @Input() isLabelAlignedLeft = false;\r\n @Input() datepickerLabel = '';\r\n @Input() dateRange!: { minDate: string; maxDate: string };\r\n @Output() selectedDate = new EventEmitter<string>();\r\n @Output() selectedDateRange = new EventEmitter<{\r\n startDate: string;\r\n endDate: string;\r\n }>();\r\n calendarSelectedDate!: Date;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n buttonActionsInfo: any = buttonActionsInfo;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private fb: FormBuilder,\r\n // eslint-disable-next-line no-unused-vars\r\n private changeDetectorRef: ChangeDetectorRef,\r\n // eslint-disable-next-line no-unused-vars\r\n private datepickerService: DatepickerService,\r\n // eslint-disable-next-line no-unused-vars\r\n private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function,\r\n ) {}\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to creates config if its undefined and sets components instance variables if config is defined. Sets the form group value if form group is defined.\r\n * @memberof DatePickerComponent\r\n */\r\n ngOnInit(): void {\r\n if (!this.config) {\r\n const controlName = this.formControlName ?? 'datepicker';\r\n this.config = this.formUtilityService.getFormFieldConfig(\r\n controlName,\r\n FormControlType.DATE\r\n );\r\n if (\r\n this.config &&\r\n this.calendarType === CalendarType.DATE_RANGE_SELECTION\r\n ) {\r\n this.config.dateRangeControls = {\r\n startDate: 'startDate',\r\n endDate: 'endDate',\r\n };\r\n }\r\n } else {\r\n this.initializePropertiesFromConfig();\r\n }\r\n if (!this.group) {\r\n if (this.calendarType === CalendarType.SINGLE_DATE_SELECTION) {\r\n this.createFormGroup();\r\n } else if (this.calendarType === CalendarType.DATE_RANGE_SELECTION) {\r\n this.createFormGroupWithRangeControls();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Initializes properties from the config input\r\n * @memberof DatePickerComponent\r\n */\r\n initializePropertiesFromConfig(): void {\r\n this.calendarType =\r\n this.config?.datePicker?.calendarType ??\r\n CalendarType.SINGLE_DATE_SELECTION;\r\n this.placeholderLabel = this.config?.datePicker?.placeholderLabel ?? '';\r\n this.datepickerLabel = this.config?.datePicker?.label ?? '';\r\n this.isLabelAlignedLeft =\r\n this.config?.datePicker?.isLabelAlignedLeft ?? false;\r\n this.dateRange = this.config?.datePicker?.dateRange ?? {\r\n minDate: '',\r\n maxDate: '',\r\n };\r\n this.isDisabled = !!this.config.disabled;\r\n if (\r\n this.config.datePicker?.calendarType === CalendarType.DATE_RANGE_SELECTION\r\n ) {\r\n this.group.addControl('startDate', new FormControl());\r\n this.group.addControl('endDate', new FormControl());\r\n }\r\n }\r\n /**\r\n * Handle date change event and emits the selected date.\r\n * @memberof DatePickerComponent\r\n */\r\n onDateChange(): void {\r\n this.selectedDate.emit(this.group?.get(this.config.controlName)?.value);\r\n this.datepickerService.selectedDate = this.group?.get(\r\n this.config.controlName\r\n )?.value;\r\n this.datepickerService.isRangeSelection = false;\r\n }\r\n\r\n /**\r\n * Sets and emits selected date range\r\n * @memberof DatePickerComponent\r\n */\r\n onDateRangeChange(): void {\r\n this.datepickerService.isRangeSelection = true;\r\n this.setDateRange(\r\n this.group.value.startDate ?? '',\r\n this.group.value.endDate ?? ''\r\n );\r\n\r\n this.selectedDateRange.emit({\r\n startDate: this.group.value.startDate ?? '',\r\n endDate: this.group.value.endDate ?? '',\r\n });\r\n }\r\n\r\n /**\r\n * Sets the min and max date range.\r\n * @param {(string | Date)} startDate\r\n * @param {(string | Date)} endDate\r\n * @memberof DatePickerComponent\r\n */\r\n setDateRange(startDate: string | Date, endDate: string | Date): void {\r\n this.datepickerService.range.next({\r\n start: startDate,\r\n end: endDate,\r\n });\r\n }\r\n\r\n /**\r\n * Creates form group and initializes form value\r\n * @param {string} [date]\r\n * @memberof DatePickerComponent\r\n */\r\n createFormGroup(date?: string): void {\r\n this.group = this.fb.group({\r\n [this.formControlName ? this.formControlName : 'datepicker']: date\r\n ? [moment(date).utc(true).format()]\r\n : [],\r\n });\r\n }\r\n /**\r\n * Creates form group with range type of controls and sets the min and max range values.\r\n * @param {string} [startDate]\r\n * @param {string} [endDate]\r\n * @memberof DatePickerComponent\r\n */\r\n createFormGroupWithRangeControls(startDate?: string, endDate?: string): void {\r\n this.group = this.fb.group({\r\n startDate: startDate ? [moment(startDate).utc(true).format()] : [],\r\n endDate: endDate ? [moment(endDate).utc(true).format()] : [],\r\n });\r\n }\r\n /**\r\n * Checks if the form control has required validator.\r\n * @return {boolean}\r\n * @memberof DatePickerComponent\r\n */\r\n isRequired(): boolean {\r\n return this.group?.controls[this.config?.controlName]?.hasValidator(\r\n Validators.required\r\n );\r\n }\r\n}\r\n","<div class=\"ieeesa-datepicker\">\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.SINGLE_DATE_SELECTION\"\r\n class=\"ieeesa-datepicker--single-selection\"\r\n [ngClass]=\"!isRequired() ? 'ieeesa-datepicker__valid-date' : ''\"\r\n [ngClass]=\"{\r\n 'ieeesa-datepicker__valid-date': !isRequired(),\r\n 'ieeesa-datepicker__label-left': isLabelAlignedLeft,\r\n 'ieeesa-datepicker__label-top': !isLabelAlignedLeft\r\n }\"\r\n >\r\n <mat-label *ngIf=\"datepickerLabel\">{{ datepickerLabel }} </mat-label>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n (dateInput)=\"onDateChange()\"\r\n (click)=\"picker.open()\"\r\n [matDatepicker]=\"picker\"\r\n [formControlName]=\"config.controlName\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\r\n #calendar\r\n readonly\r\n />\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"picker\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker [calendarHeaderComponent]=\"datePickerHeader\">\r\n <mat-datepicker-actions>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n type=\"button\"\r\n matDatepickerCancel\r\n >\r\n {{ buttonActionsInfo?.button?.cancel }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n color=\"primary\"\r\n type=\"button\"\r\n matDatepickerApply\r\n >\r\n {{ buttonActionsInfo?.button?.ok }}\r\n </button>\r\n </mat-datepicker-actions>\r\n </mat-datepicker>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\">\r\n </ieeesa-form-error>\r\n </div>\r\n\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.DATE_RANGE_SELECTION\"\r\n class=\"ieeesa-datepicker--multi-selection\"\r\n [ngClass]=\"\r\n isLabelAlignedLeft\r\n ? 'ieeesa-datepicker__label-left'\r\n : 'ieeesa-datepicker__label-top'\r\n \"\r\n >\r\n <mat-label *ngIf=\"datepickerLabel\">{{ datepickerLabel }} </mat-label>\r\n <mat-form-field>\r\n <mat-date-range-input [rangePicker]=\"rangePicker\" [formGroup]=\"group\">\r\n <input\r\n matStartDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.startDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel + ' - '\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n <input\r\n matEndDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.endDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"rangePicker\"\r\n ></mat-datepicker-toggle>\r\n <mat-date-range-picker\r\n #rangePicker\r\n [calendarHeaderComponent]=\"datePickerHeader\"\r\n (dateInput)=\"onDateRangeChange()\"\r\n >\r\n <mat-date-range-picker-actions>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n matDateRangePickerCancel\r\n type=\"button\"\r\n >\r\n {{ buttonActionsInfo?.button?.cancel }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n color=\"primary\"\r\n matDateRangePickerApply\r\n (click)=\"onDateRangeChange()\"\r\n type=\"button\"\r\n >\r\n {{ buttonActionsInfo?.button?.ok }}\r\n </button>\r\n </mat-date-range-picker-actions>\r\n </mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"calendarType === calendarTypes.CALENDAR\"\r\n class=\"ieeesa-datepicker--calendar\"\r\n >\r\n <mat-calendar\r\n [headerComponent]=\"datePickerHeader\"\r\n [(selected)]=\"calendarSelectedDate\"\r\n >\r\n </mat-calendar>\r\n </div>\r\n</div>\r\n","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatCalendar, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MatDateFormats,\r\n MatNativeDateModule,\r\n} from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FormGroup } from '@angular/forms';\r\nimport moment_ from 'moment';\r\nimport { DatepickerService } from '@presentation/services/datepicker.service';\r\nimport { DateFormats } from '@presentation/date-formats';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as datePickerInfo from '@presentation/assets/constants.json';\r\nconst moment = moment_;\r\n\r\n/**\r\n * Provides implementation of date picker custom header and being used in date-picker component.\r\n * @export\r\n * @class DatePickerHeaderComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n selector: 'ieeesa-date-picker-header',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatNativeDateModule,\r\n MatIconModule,\r\n ],\r\n templateUrl: './date-picker-header.component.html',\r\n styleUrls: ['./date-picker-header.component.scss'],\r\n})\r\nexport class DatePickerHeaderComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n @Input() group!: FormGroup;\r\n arrowDirection = false;\r\n range!: { start: string; end: string };\r\n isRangeSelection = false;\r\n selectedDate!: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n datePickerInfo: any = datePickerInfo;\r\n\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public calendar: MatCalendar<Date>,\r\n // eslint-disable-next-line no-unused-vars\r\n public dateAdapter: DateAdapter<Date>,\r\n // eslint-disable-next-line no-unused-vars\r\n @Inject(MAT_DATE_FORMATS) public dateFormats: MatDateFormats,\r\n // eslint-disable-next-line no-unused-vars\r\n private datepickerService: DatepickerService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to initialize components instance properties.\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n ngOnInit(): void {\r\n this.isRangeSelection = this.datepickerService.getCalendarType();\r\n const selectedRange = this.datepickerService.getSelectedRange();\r\n if (selectedRange) {\r\n this.setRange(selectedRange);\r\n }\r\n this.datepickerService.range$\r\n ?.pipe(takeUntil(this.destroy$))\r\n .subscribe((range) => {\r\n this.setRange(range);\r\n });\r\n this.selectedDate = this.datepickerService.selectedDate\r\n ? moment(this.datepickerService.selectedDate).format(\r\n DateFormats.display.daysFormat\r\n ) +\r\n ', ' +\r\n moment(this.datepickerService.selectedDate).date() +\r\n ' ' +\r\n moment(this.datepickerService.selectedDate).format(\r\n DateFormats.display.fullMonthLabel\r\n )\r\n : '';\r\n }\r\n\r\n /**\r\n * Sets the min and max date range.\r\n * @param {({ start: Date | string; end: Date | string })} range\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n setRange(range: { start: Date | string; end: Date | string }): void {\r\n this.range = {\r\n start:\r\n moment(range.start).date() +\r\n ' ' +\r\n moment(range.start).format(DateFormats.display.fullMonthLabel),\r\n end:\r\n moment(range.end).date() +\r\n ' ' +\r\n moment(range.end).format(DateFormats.display.fullMonthLabel),\r\n };\r\n }\r\n\r\n /**\r\n * Implementation of getMonthLabel method to get the month label.\r\n * @readonly\r\n * @return {string}\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n get getMonthLabel(): string {\r\n if (this.dateAdapter?.format) {\r\n return this.dateAdapter.format(\r\n this.calendar.activeDate,\r\n this.dateFormats.display.monthYearA11yLabel\r\n );\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * Sets previous month in a calendar on click of previous month arrow in date picker.\r\n * @param {('month' | 'year')} mode\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n setPreviousMonth(mode: 'month' | 'year'): void {\r\n this.calendar.activeDate =\r\n mode === 'month'\r\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\r\n : this.dateAdapter.addCalendarYears(this.calendar.activeDate, -1);\r\n }\r\n\r\n /**\r\n * Sets next month in a calendar on click of previous month arrow in date picker.\r\n * @param {('month' | 'year')} mode\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n setNextMonth(mode: 'month' | 'year'): void {\r\n this.calendar.activeDate =\r\n mode === 'month'\r\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\r\n : this.dateAdapter.addCalendarYears(this.calendar.activeDate, 1);\r\n }\r\n\r\n /**\r\n * Sets the calendar current view on the open of year drop down in date picker.\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n setCalendarView(): void {\r\n this.calendar.currentView =\r\n this.calendar.currentView === 'month' ? 'multi-year' : 'month';\r\n this.arrowDirection = !this.arrowDirection;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div class=\"ieeesa-datepicker-header--selected-date-container\">\r\n <p class=\"ieeesa-label-lg-bold-16 ieeesa-datepicker-header__select-date-label\">\r\n {{ datePickerInfo.datePicker.selectDateLabel }}\r\n </p>\r\n <p\r\n class=\"headline-lg-34 ieeesa-datepicker-header__selected-date\"\r\n *ngIf=\"range || isRangeSelection\"\r\n >\r\n {{ range.start }} - {{ range.end }}\r\n </p>\r\n <p\r\n class=\"headline-lg-34 ieeesa-datepicker-header__selected-date\"\r\n *ngIf=\"!isRangeSelection\"\r\n >\r\n {{ selectedDate }}\r\n </p>\r\n</div>\r\n<div class=\"ieeesa-datepicker-header--content\">\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"ieeesa-datepicker-header--content--period-button ieeesa-label-lg-16\"\r\n (click)=\"setCalendarView()\"\r\n [attr.aria-label]=\"getMonthLabel\"\r\n cdkAriaLive=\"polite\"\r\n >\r\n {{ getMonthLabel }}\r\n <mat-icon\r\n class=\"ieeesa-datepicker-header--content--period-button--arrow-icon\"\r\n *ngIf=\"!arrowDirection\"\r\n >arrow_drop_down</mat-icon\r\n >\r\n <mat-icon\r\n class=\"ieeesa-datepicker-header--content--period-button--arrow-icon\"\r\n *ngIf=\"arrowDirection\"\r\n >arrow_drop_up</mat-icon\r\n >\r\n </button>\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"ieeesa-label-lg-16 ieeesa-datepicker-header--content--arrow-left-btn\"\r\n [attr.aria-label]=\"datePickerInfo.ariaLabel.previousMonth\"\r\n cdkAriaLive=\"polite\"\r\n >\r\n <mat-icon\r\n (click)=\"setPreviousMonth('month')\"\r\n class=\"ieeesa-datepicker-header__arrow-left\"\r\n >keyboard_arrow_left</mat-icon\r\n >\r\n </button>\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"ieeesa-label-lg-16 ieeesa-datepicker-header--content--arrow-right-btn\"\r\n [attr.aria-label]=\"datePickerInfo.ariaLabel.nextMonth\"\r\n cdkAriaLive=\"polite\"\r\n >\r\n <mat-icon (click)=\"setNextMonth('month')\"> keyboard_arrow_right</mat-icon>\r\n </button>\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n AfterViewInit,\r\n ViewChildren,\r\n QueryList,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MAT_SELECT_CONFIG, MatSelectModule } from '@angular/material/select';\r\nimport { SelectOption } from '@presentation/models/select-option.model';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\nimport { SearchType } from '@presentation/models/search.model';\r\nimport { SearchComponent } from '@presentation/components/search/search.component';\r\nimport { FormErrorComponent } from '@presentation/components/form-error/form-error.component';\r\nimport * as dropdownInfo from '@presentation/assets/constants.json';\r\nimport { FormControlType } from '@presentation/models/form-control-types.model';\r\nimport { FormUtilityService } from '@presentation/services/form-utility.service';\r\n\r\n/**\r\n * Component implementation supports select type of form filed and select type is configurable to support single selection or multi-selection with multilevel or single level.\r\n * @export\r\n * @class SelectComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n selector: 'ieeesa-select',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SearchComponent,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n ],\r\n providers: [\r\n {\r\n provide: MAT_SELECT_CONFIG,\r\n useValue: { overlayPanelClass: 'ieeesa-select-overlay-pane' },\r\n },\r\n ],\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SelectComponent implements OnInit, AfterViewInit {\r\n @ViewChildren(SearchComponent)\r\n formFields!: QueryList<SearchComponent>;\r\n group!: FormGroup;\r\n config!: FieldConfig;\r\n arrowDirection = false;\r\n searchType = SearchType.AUTO;\r\n sortedOptions!: SelectOption[];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dropdownInfo: any = dropdownInfo;\r\n private _dropdownOptions!: SelectOption[];\r\n private _selectedOptions!: SelectOption | SelectOption[];\r\n private _isSortNeeded = true;\r\n /**\r\n * Takes isSortNeeded as input to check if the passed options are sorted or not.\r\n * @memberof SelectComponent\r\n */\r\n @Input()\r\n set isSortNeeded(value: boolean) {\r\n this._isSortNeeded = value;\r\n }\r\n get isSortNeeded(): boolean {\r\n return this._isSortNeeded;\r\n }\r\n /**\r\n * Sets the dropdown options for selection.\r\n * @memberof SelectComponent\r\n */\r\n @Input()\r\n set dropdownOptions(value: SelectOption[]) {\r\n this._dropdownOptions = value;\r\n }\r\n get dropdownOptions(): SelectOption[] {\r\n return this._dropdownOptions;\r\n }\r\n /**\r\n * Sets the selected option\r\n * @memberof SelectComponent\r\n */\r\n @Input()\r\n set selectedOptions(value: SelectOption | SelectOption[]) {\r\n if (Array.isArray(value)) {\r\n this._selectedOptions = this.arraySorting(value);\r\n } else {\r\n this._selectedOptions = value;\r\n }\r\n }\r\n get selectedOptions(): SelectOption | SelectOption[] {\r\n return this._selectedOptions;\r\n }\r\n @Input() formControlName = 'select';\r\n @Input() isMultiLevel = false;\r\n @Input() isLabelAlignedLeft = false;\r\n @Input() selectLabel = '';\r\n @Input() isMultiSelect = false;\r\n @Input() isDisabled = false;\r\n @Input() isSearch = false;\r\n @Input() placeholderText = this.dropdownInfo.dropdown.placeholderText;\r\n @Output() optionSelected = new EventEmitter<SelectOption>();\r\n @Output() optionSearched = new EventEmitter<string>();\r\n\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Initializes components instance properties from config if its defined otherwise creates form group and config.\r\n * @memberof SelectComponent\r\n */\r\n ngOnInit(): void {\r\n this.updateArrowDirection(false);\r\n this.group =\r\n this.group ?? this.formUtilityService.getFormGroup(this.formControlName);\r\n this.config =\r\n this.config ??\r\n this.formUtilityService.getFormFieldConfig(\r\n this.formControlName,\r\n FormControlType.SELECT\r\n );\r\n if (this.config) {\r\n this.isMultiSelect = this.config.isMultiSelect ?? false;\r\n this.dropdownOptions =\r\n this.config?.dropdownOptions ?? this.dropdownOptions;\r\n this.selectedOptions = this.config?.value;\r\n this.selectLabel = this.config?.label ?? '';\r\n this.placeholderText = this.config?.placeholder ?? this.placeholderText;\r\n this.isMultiSelect = this.config?.isMultiSelect ?? this.isMultiSelect;\r\n this.isDisabled = this.config?.disabled ?? this.isDisabled;\r\n this.searchType = this.config?.searchType ?? this.searchType;\r\n this.isSortNeeded = this.config?.isSortNeeded ?? this.isSortNeeded;\r\n }\r\n }\r\n\r\n /**\r\n * Emits selected option on changes the selected option.\r\n * @param {SelectOption} event\r\n * @memberof SelectComponent\r\n */\r\n onChange(event: SelectOption): void {\r\n this.optionSelected.emit(event);\r\n }\r\n\r\n /**\r\n * Sets the select dropdown arrow direction\r\n * @param {boolean} opened\r\n * @memberof SelectComponent\r\n */\r\n updateArrowDirection(opened: boolean): void {\r\n this.arrowDirection = opened;\r\n }\r\n\r\n /**\r\n * Takes the index and the current option as arguments and needs to return the unique identifier for this option.\r\n * @param {number} index\r\n * @param {SelectOption} option\r\n * @return {(number | string)}\r\n * @memberof SelectComponent\r\n */\r\n trackByFn(index: number, option: SelectOption): number | string {\r\n return option.id;\r\n }\r\n\r\n /**\r\n * Emits searched options on filtering options in select dropdown\r\n * @param {string} searchText\r\n * @memberof SelectComponent\r\n */\r\n onOptionSearch(searchText: string) {\r\n this.optionSearched.emit(searchText);\r\n }\r\n\r\n /**\r\n * Compares the two passed options\r\n * @param {any} option1\r\n * @param {any} option2\r\n * @return {boolean}\r\n * @memberof SelectComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n comparer(option1: any, option2: any): boolean {\r\n return option1 && option2 ? option1.id === option2.id : option1 === option2;\r\n }\r\n\r\n /**\r\n * Sorts the options\r\n * @memberof SelectComponent\r\n */\r\n ngAfterViewInit(): void {\r\n if (this.isSortNeeded && Array.isArray(this.dropdownOptions)) {\r\n this.dropdownOptions = this.arraySorting(this.dropdownOptions);\r\n }\r\n }\r\n\r\n /**\r\n * Sorts the options by using arraySorting method\r\n * @memberof SelectComponent\r\n */\r\n sortOptions(): void {\r\n if (this.isSortNeeded && Array.isArray(this.dropdownOptions)) {\r\n this.sortedOptions = this.arraySorting(this.dropdownOptions);\r\n } else {\r\n this.sortedOptions = this.dropdownOptions;\r\n }\r\n }\r\n\r\n /**\r\n * Utility method to sort dropdown options in ascending order.\r\n * @param {SelectOption[]} list\r\n * @return {SelectOption[]}\r\n * @memberof SelectComponent\r\n */\r\n arraySorting(list: SelectOption[]): SelectOption[] {\r\n const clonedValue = [...list];\r\n const sort = clonedValue.sort((a, b) => {\r\n if (a.name.toLowerCase() === b.name.toLowerCase()) return 0;\r\n if (a.name.toLowerCase() === 'all') return -1;\r\n if (b.name.toLowerCase() === 'all') return 1;\r\n if (a.name.toLowerCase() < b.name.toLowerCase()) return -1;\r\n if (a.name.toLowerCase() > b.name.toLowerCase()) return 1;\r\n return 0;\r\n });\r\n return sort;\r\n }\r\n}\r\n","<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-select-field\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n isLabelAlignedLeft\r\n ? 'ieeesa-select-field__label-left'\r\n : 'ieeesa-select-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-select-field__label\">{{ selectLabel }}</mat-label>\r\n <mat-form-field\r\n [ngClass]=\"\r\n arrowDirection\r\n ? 'ieeesa-select-field__arrow-up'\r\n : 'ieeesa-select-field__arrow-down'\r\n \"\r\n >\r\n <mat-select\r\n disableOptionCentering\r\n *ngIf=\"isMultiSelect\"\r\n (openedChange)=\"updateArrowDirection($event)\"\r\n (selectionChange)=\"onChange($event.value)\"\r\n [formControlName]=\"config.controlName\"\r\n [multiple]=\"isMultiSelect\"\r\n [disabled]=\"isDisabled\"\r\n [placeholder]=\"placeholderText\"\r\n [compareWith]=\"comparer\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isSearch\"\r\n [searchType]=\"searchType\"\r\n (searchValue)=\"onOptionSearch($event)\"\r\n ></ieeesa-search>\r\n <ng-container\r\n *ngIf=\"!isMultiLevel\"\r\n [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: dropdownOptions }\"\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"isMultiLevel\">\r\n <mat-optgroup\r\n *ngFor=\"let option of dropdownOptions; trackBy: trackByFn\"\r\n [label]=\"option.name\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: option.option_groups }\"\r\n >\r\n </ng-container>\r\n </mat-optgroup>\r\n </ng-container>\r\n <ng-template #dropdownOptionsTemplateRef let-options=\"data\">\r\n <mat-option\r\n *ngFor=\"let option of options; trackBy: trackByFn\"\r\n [value]=\"option\"\r\n >\r\n {{ option.name }}\r\n </mat-option>\r\n </ng-template>\r\n </mat-select>\r\n\r\n <mat-select\r\n disableOptionCentering\r\n *ngIf=\"!isMultiSelect\"\r\n [multiple]=\"isMultiSelect\"\r\n (openedChange)=\"updateArrowDirection($event)\"\r\n (selectionChange)=\"onChange($event.value)\"\r\n [formControlName]=\"config.controlName\"\r\n [disabled]=\"isDisabled\"\r\n [placeholder]=\"placeholderText\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isSearch\"\r\n [searchType]=\"searchType\"\r\n (searchValue)=\"onOptionSearch($event)\"\r\n ></ieeesa-search>\r\n <ng-container\r\n *ngIf=\"!isMultiLevel\"\r\n [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: dropdownOptions }\"\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"isMultiLevel\">\r\n <mat-optgroup\r\n *ngFor=\"let option of dropdownOptions; trackBy: trackByFn\"\r\n [label]=\"option.name\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: option.option_groups }\"\r\n >\r\n </ng-container>\r\n </mat-optgroup>\r\n </ng-container>\r\n <ng-template #dropdownOptionsTemplateRef let-options=\"data\">\r\n <mat-option\r\n *ngFor=\"let option of options; trackBy: trackByFn\"\r\n [value]=\"option\"\r\n >\r\n {{ option.name }}\r\n </mat-option>\r\n </ng-template>\r\n </mat-select>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","export enum SearchType {\r\n // eslint-disable-next-line no-unused-vars\r\n EMAIL = 'EMAIL',\r\n // eslint-disable-next-line no-unused-vars\r\n AUTO = 'AUTO',\r\n // eslint-disable-next-line no-unused-vars\r\n ON_CLICK = 'ON_CLICK',\r\n}\r\n","export enum CalendarType {\r\n // eslint-disable-next-line no-unused-vars\r\n SINGLE_DATE_SELECTION = 1,\r\n // eslint-disable-next-line no-unused-vars\r\n CALENDAR = 2,\r\n // eslint-disable-next-line no-unused-vars\r\n DATE_RANGE_SELECTION = 3,\r\n}\r\n","export enum FormControlType {\r\n // eslint-disable-next-line no-unused-vars\r\n INPUT = 'INPUT',\r\n // eslint-disable-next-line no-unused-vars\r\n TEXT_AREA = 'TEXT_AREA',\r\n // eslint-disable-next-line no-unused-vars\r\n SELECT = 'SELECT',\r\n // eslint-disable-next-line no-unused-vars\r\n SEARCH = 'SEARCH',\r\n // eslint-disable-next-line no-unused-vars\r\n DATE = 'DATE',\r\n // eslint-disable-next-line no-unused-vars\r\n CHECKBOX = 'CHECKBOX',\r\n // eslint-disable-next-line no-unused-vars\r\n RADIO = 'RADIO',\r\n // eslint-disable-next-line no-unused-vars\r\n AUTO_COMPLETE = 'AUTO_COMPLETE',\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { FieldConfig } from '@presentation/models/field-config.model';\r\n\r\n/**\r\n * Creates form fields configuration and form group based on passed parameters.\r\n * @export\r\n * @class FormUtilityService\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormUtilityService {\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private fb: FormBuilder) {}\r\n /**\r\n * Returns form fields configuration based on passed control name and type.\r\n * @param {string} controlName\r\n * @param {string} controlType\r\n * @return {FieldConfig}\r\n * @memberof FormUtilityService\r\n */\r\n getFormFieldConfig(controlName: string, controlType: string): FieldConfig {\r\n return {\r\n controlName: controlName,\r\n type: controlType,\r\n };\r\n }\r\n /**\r\n * Creates and returns form group with passed control name added.\r\n * @param {string} controlName\r\n * @return {FormGroup}\r\n * @memberof FormUtilityService\r\n */\r\n getFormGroup(controlName: string): FormGroup {\r\n return this.fb.group({\r\n [controlName]: [],\r\n });\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n/**\r\n * DatepickerService is used in date-picker and date-picker-header component to get date range, isRangeSelection, and selected date(s).\r\n * @export\r\n * @class DatepickerService\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DatepickerService implements OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n range = new Subject<{ start: Date | string; end: Date | string }>();\r\n range$ = this.range.asObservable();\r\n selectedRange!: { start: Date | string; end: Date | string };\r\n selectedDate!: Date | string;\r\n isRangeSelection = false;\r\n constructor() {\r\n this.range$?.pipe(takeUntil(this.destroy$)).subscribe((range) => {\r\n this.selectedRange = {\r\n start: range.start,\r\n end: range.end,\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Returns the calendar type.\r\n * @return {boolean}\r\n * @memberof DatepickerService\r\n */\r\n getCalendarType(): boolean {\r\n return this.isRangeSelection;\r\n }\r\n /**\r\n * Returns selected range\r\n * @return {({ start: Date | string; end: Date | string })}\r\n * @memberof DatepickerService\r\n */\r\n getSelectedRange(): { start: Date | string; end: Date | string } {\r\n return this.selectedRange;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { FormUtilityService } from './services/form-utility.service';\r\nimport { DatepickerService } from './services/datepicker.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: [],\r\n providers: [DatepickerService, FormUtilityService],\r\n})\r\nexport class PresentationModule {}\r\n","/*\r\n * Public API Surface of presentation\r\n */\r\nexport * from './lib/components/dynamic-form/dynamic-form.component';\r\nexport * from './lib/directives/dynamic-form-field/dynamic-form-field.directive';\r\nexport * from './lib/components/form-error/form-error.component';\r\nexport * from './lib/components/notification/notification.component';\r\nexport * from './lib/components/input/input.component';\r\nexport * from './lib/components/text-area/text-area.component';\r\nexport * from './lib/components/radio/radio.component';\r\nexport * from './lib/components/checkbox/checkbox.component';\r\nexport * from './lib/components/autocomplete/autocomplete.component';\r\nexport * from './lib/components/search/search.component';\r\nexport * from './lib/components/date-picker/date-picker.component';\r\nexport * from './lib/components/date-picker-header/date-picker-header.component';\r\nexport * from './lib/components/select/select.component';\r\n\r\nexport * from './lib/directives/dynamic-form-field/dynamic-form-field.directive';\r\n\r\nexport * from './lib/models/field-config.model';\r\nexport * from './lib/models/form-field.model';\r\nexport * from './lib/models/search.model';\r\nexport * from './lib/models/select-option.model';\r\nexport * from './lib/models/checkbox-option.model';\r\nexport * from './lib/models/autocomplete-option.model';\r\nexport * from './lib/models/calendar.model';\r\nexport * from './lib/models/search.model';\r\nexport * from './lib/models/confirmation-modal-data.model';\r\nexport * from './lib/models/date-picker.model';\r\nexport * from './lib/models/footer-config.model';\r\nexport * from './lib/models/form-control-types.model';\r\nexport * from './lib/models/form-grid.model';\r\nexport * from './lib/models/form.model';\r\nexport * from './lib/models/header-config.model';\r\nexport * from './lib/models/navigation-menu.model';\r\nexport * from './lib/models/toggle-button.model';\r\n\r\nexport * from './lib/services/form-utility.service';\r\nexport * from './lib/services/datepicker.service';\r\nexport * from './lib/services/form-utility.service';\r\nexport * from './lib/services/datepicker.service';\r\n\r\nexport * from './lib/presentation.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","DynamicFormFieldDirective","i3","FormControlType","InputComponent","TextAreaComponent","SelectComponent","SearchComponent","DatePickerComponent","CheckboxComponent","RadioComponent","AutocompleteComponent","i2","FormErrorComponent","constantsInfo","i4","i5","autocompleteConstInfo","i6","i7","SearchType","searchInfo","moment","CalendarType","DatePickerHeaderComponent","datePickerInfo","dropdownInfo"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA;;;;;;AAMG;MAcU,oBAAoB,CAAA;AAI/B;;;AAGG;IACH,IACI,UAAU,CAAC,KAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AACD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAID;;;AAGG;IACH,IAEI,cAAc,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAID;;;AAGG;IACH,IAEI,cAAc,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;;AA0CD,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QArC1B,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;QAC7B,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;;AAE1B,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAAO,CAAC;;AAExD,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAAO,CAAC;;AAExD,QAAA,IAAA,CAAA,SAAS,GAAsB,IAAI,YAAY,EAAO,CAAC;;AAEvD,QAAA,IAAA,CAAA,qBAAqB,GAAsB,IAAI,YAAY,EAAO,CAAC;;AAEnE,QAAA,IAAA,CAAA,eAAe,GAAsB,IAAI,YAAY,EAAS,CAAC;AAC/D,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAe,CAAC;;AAEtD,QAAA,IAAA,CAAA,cAAc,GAAsB,IAAI,YAAY,EAAS,CAAC;AAC9D,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;AAC9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAGzC,CAAC;AACK,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAS,CAAC;AAC9C,QAAA,IAAA,CAAA,sBAAsB,GAC9B,IAAI,YAAY,EAAS,CAAC;AAClB,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAe,CAAC;AAC7D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAe,CAAC;AACvD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAG9C,CAAC;QAEL,IAAc,CAAA,cAAA,GAAgB,EAAE,CAAC;;QAEjC,IAAgB,CAAA,gBAAA,GAAU,EAAE,CAAC;QAC7B,IAAY,CAAA,YAAA,GAAa,EAAE,CAAC;KAGW;AAEvC;;;AAGG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED;;;AAGG;IACH,kBAAkB,GAAA;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACrD;AAED;;;;AAIG;IACH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,KAAI;AAC9C,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CACtC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,QAAQ,CACvC,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,cAAc;AAC9B,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACpD;AACD;;;;;AAKG;;AAEH,IAAA,WAAW,CAAC,QAAe,EAAA;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAoB,KACpC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CACnE,CAAC;AACF,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;;AAKG;AACH,IAAA,aAAa,CAAC,OAAoB,EAAA;QAChC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;KACzD;AAED;;;AAGG;IACH,YAAY,GAAA;QACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC3C;AAED;;;AAGG;IACH,mBAAmB,GAAA;QACjB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACtD;AAED;;;AAGG;IACH,YAAY,GAAA;QACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC3C;AAED;;;AAGG;IACH,gBAAgB,GAAA;QACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC/C;AAED;;;;AAIG;AACH,IAAA,eAAe,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC1C;AAED;;;;AAIG;AACH,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,KAAkD,EAAA;AAC/D,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AAED;;;;;AAKG;IACH,gBAAgB,CAAC,KAAa,EAAE,SAAoB,EAAA;QAClD,OAAO,SAAS,CAAC,QAAQ,CAAC;KAC3B;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AAED;;;;AAIG;AACH,IAAA,mBAAmB,CAAC,SAAiD,EAAA;AACnE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC5C;AAED;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;AAED;;;AAGG;IACH,4BAA4B,GAAA;QAC1B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC3D;AAED;;;;;AAKG;AACH,IAAA,eAAe,CAAC,SAAiB,EAAA;AAC/B,QAAA,OAAO,SAAS;AACb,aAAA,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;AAC1B,aAAA,WAAW,EAAE;aACb,KAAK,CAAC,GAAG,CAAC;aACV,IAAI,CAAC,GAAG,CAAC,CAAC;KACd;8GApRU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EACjBC,2BAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5CzC,k4EAoEA,EAAA,MAAA,EAAA,CAAA,wnKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnBC,2BAAyB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACzB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKN,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACb,QAAA,EAAA,qBAAqB,EACnB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnBD,2BAAyB;wBACzB,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,k4EAAA,EAAA,MAAA,EAAA,CAAA,wnKAAA,CAAA,EAAA,CAAA;kGAMD,UAAU,EAAA,CAAA;sBADT,YAAY;uBAACA,2BAAyB,CAAA;gBAQnC,UAAU,EAAA,CAAA;sBADb,KAAK;gBAiBF,cAAc,EAAA,CAAA;sBAFjB,KAAK;gBAkBF,cAAc,EAAA,CAAA;sBAFjB,KAAK;gBASG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBACG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAEI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBAEG,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;gBAEG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBAEG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAIG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBAEG,0BAA0B,EAAA,CAAA;sBAAnC,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;;;AEhGT,MAAM,UAAU,GAAwC;AACtD,IAAA,CAACE,iBAAe,CAAC,KAAK,GAAGC,gBAAc;AACvC,IAAA,CAACD,iBAAe,CAAC,SAAS,GAAGE,mBAAiB;AAC9C,IAAA,CAACF,iBAAe,CAAC,MAAM,GAAGG,iBAAe;AACzC,IAAA,CAACH,iBAAe,CAAC,MAAM,GAAGI,iBAAe;AACzC,IAAA,CAACJ,iBAAe,CAAC,IAAI,GAAGK,qBAAmB;AAC3C,IAAA,CAACL,iBAAe,CAAC,QAAQ,GAAGM,mBAAiB;AAC7C,IAAA,CAACN,iBAAe,CAAC,KAAK,GAAGO,gBAAc;AACvC,IAAA,CAACP,iBAAe,CAAC,aAAa,GAAGQ,uBAAqB;CACvD,CAAC;AAEF;;;;;;;AAOG;MAKU,yBAAyB,CAAA;AAIpC;;;AAGG;IACH,IACI,MAAM,CAAC,KAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;KACF;AACD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED;;;AAGG;IACH,IACI,KAAK,CAAC,KAAgB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AACvC,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AACD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAID;;;AAGG;IACH,IAEI,cAAc,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC;AAChD,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAID;;;AAGG;IACH,IAEI,cAAc,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC;AAChD,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;;AAgBD,IAAA,WAAA,CAAmB,SAA2B,EAAA;QAA3B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AArF9C,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW,CAAC;AAuE1C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAS,CAAC;AAC5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAS,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;AAC9C,QAAA,IAAA,CAAA,qBAAqB,GAAE,IAAI,YAAY,EAAuC,CAAC;AAC/E,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAGzC,CAAC;AACK,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAS,CAAC;AACnD,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAS,CAAC;KAKf;AAElD;;;AAGG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAED;;;AAGG;IACH,aAAa,GAAA;QACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAClC,YAAA,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,CAAA,mCAAA,EAAsC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;+BAC/B,cAAc,CAAA,CAAE,CACxC,CAAC;AACH,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAC7C,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAC9B,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAE7D,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAKR,iBAAe,CAAC,MAAM,EAAE;AAC/C,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW;sBAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,sBAAE,SAAS,CAAC,CAAC,KAAY,KAAI;AAC3B,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,iBAAC,CAAC,CAAC;AACN,aAAA;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAKA,iBAAe,CAAC,MAAM,EAAE;AACtD,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc;sBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,sBAAE,SAAS,CAAC,CAAC,KAAY,KAAI;AAC3B,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,iBAAC,CAAC,CAAC;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc;sBAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,sBAAE,SAAS,CAAC,CAAC,KAAY,KAAI;AAC3B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;AACrC,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAKA,iBAAe,CAAC,IAAI,EAAE;AACpD,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY;sBAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,sBAAE,SAAS,CAAC,CAAC,KAAa,KAAI;AAC5B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB;sBACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,sBAAE,SAAS,CAAC,CAAC,KAA2C,KAAI;AAC1D,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,iBAAC,CAAC,CAAC;AACN,aAAA;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAKA,iBAAe,CAAC,aAAa,EAAE;AAC7D,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB;sBAC3C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,sBAAE,SAAS,CAAC,CAAC,KAAY,KAAI;AAC3B,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,0BAA0B;sBAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,sBAAE,SAAS,CAAC,CAAC,KAAY,KAAI;AAC3B,oBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9C,iBAAC,CAAC,CAAC;AACN,aAAA;AACF,SAAA;KACF;AAED;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KAC7B;8GA1KU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;uGAUK,MAAM,EAAA,CAAA;sBADT,KAAK;gBAgBF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAmBF,cAAc,EAAA,CAAA;sBAFjB,KAAK;gBAqBF,cAAc,EAAA,CAAA;sBAFjB,KAAK;gBAaI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAIG,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBACG,0BAA0B,EAAA,CAAA;sBAAnC,MAAM;;;AC5HT;;;;AAIG;MAQU,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB/B,qrDAsDA,EAAA,MAAA,EAAA,CAAA,g/JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACjB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,qrDAAA,EAAA,MAAA,EAAA,CAAA,g/JAAA,CAAA,EAAA,CAAA;8BAKd,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;;;AEhBR;;;;AAIG;MAQU,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;QAYW,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AACjB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAQvC,KAAA;AANC;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACpB;8GAbU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,wOCjBlC,ozBAuBA,EAAA,MAAA,EAAA,CAAA,yoLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDVY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAI3C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,ozBAAA,EAAA,MAAA,EAAA,CAAA,yoLAAA,CAAA,EAAA,CAAA;8BAK9C,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,MAAM,EAAA,CAAA;sBAAf,MAAM;;;AEbT;;;;;AAKG;MAeU,cAAc,CAAA;AAd3B,IAAA,WAAA,GAAA;QAiBE,IAAY,CAAA,YAAA,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;;QAE/B,IAAiB,CAAA,iBAAA,GAAQ,iBAAiB,CAAC;AAiD5C,KAAA;AA/CC;;;;AAIG;AACH,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IACE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AAClD,aAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;AAC5D,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB;YACA,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,SAAA;KACF;AACD;;;AAGG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;KACvD;AAED;;;AAGG;IACH,QAAQ,GAAA;AACN,QAAA,IACE,IAAI,CAAC,MAAM,CAAC,GAAG;YACf,IAAI,CAAC,MAAM,CAAC,QAAQ;YACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EACxE;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;AACjD,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,IACE,IAAI,CAAC,MAAM,CAAC,GAAG;YACf,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,KAAK,EAAE;YACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EACxE;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;AACjD,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;8GArDU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9B3B,q9DA2DA,EAAA,MAAA,EAAA,CAAA,8vNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnBC,oBAAkB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAMJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnBW,oBAAkB;wBAClB,cAAc;wBACd,aAAa;qBACd,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,q9DAAA,EAAA,MAAA,EAAA,CAAA,8vNAAA,CAAA,EAAA,CAAA;;;MEJ1B,iBAAiB,CAAA;AAd9B,IAAA,WAAA,GAAA;;QAkBE,IAAS,CAAA,SAAA,GAAQC,iBAAa,CAAC;AAChC,KAAA;8GALY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB9B,6jCAgCA,EAAA,MAAA,EAAA,CAAA,60KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlBI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnBC,oBAAkB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAML,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnBF,oBAAkB;wBAClB,kBAAkB;wBAClB,cAAc;qBACf,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,6jCAAA,EAAA,MAAA,EAAA,CAAA,60KAAA,CAAA,EAAA,CAAA;;;AEHvC;;;;;;AAMG;MAeU,cAAc,CAAA;;AASzB,IAAA,WAAA,CAAoB,kBAAsC,EAAA;QAAtC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QANjD,IAAe,CAAA,eAAA,GAAG,OAAO,CAAC;QAC1B,IAAU,CAAA,UAAA,GAAkB,EAAE,CAAC;QAC/B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAe,CAAC;KAGF;AAE9D;;;AAGG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK;AACR,gBAAA,IAAI,CAAC,KAAK;oBACV,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9D,SAAA;QACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACnC;AAED;;;AAGG;IACH,0BAA0B,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,KAAK,CAAC;AAClD,SAAA;AACD,QAAA,IAAI,CAAC,MAAM;AACT,YAAA,IAAI,CAAC,MAAM;AACX,gBAAA,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CACxC,IAAI,CAAC,eAAe,EACpBV,iBAAe,CAAC,KAAK,CACtB,CAAC;KACL;AAED;;;;AAIG;AACH,IAAA,QAAQ,CAAC,KAAkB,EAAA;AACzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtC;AACD;;;;;AAKG;IACH,SAAS,CAAC,KAAa,EAAE,KAAkB,EAAA;QACzC,OAAO,KAAK,CAAC,EAAE,CAAC;KACjB;8GAzDU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxC3B,87BA4BA,EAAA,MAAA,EAAA,CAAA,qzMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnBF,oBAAkB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAMT,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,cAAc;wBACd,mBAAmB;wBACnBH,oBAAkB;wBAClB,kBAAkB;qBACnB,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,87BAAA,EAAA,MAAA,EAAA,CAAA,qzMAAA,CAAA,EAAA,CAAA;yGAK5B,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;;;AEpBT;;;;;;AAMG;MAmBU,iBAAiB,CAAA;AAI5B;;;;AAIG;IACH,IACI,UAAU,CAAC,KAAuB,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AACD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;AAGD,IAAA,WAAA,CAAoB,kBAAsC,EAAA;QAAtC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAFhD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAkB,CAAC;KAEH;AAE9D;;;AAGG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,sCAAsC,EAAE,CAAC;KAC/C;AACD;;;AAGG;IACH,sCAAsC,GAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,IAAI,CAAC,UAAU,CAAC;AAClE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAI;YACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CACnB,QAAQ,CAAC,EAAY,EACrB,IAAI,WAAW,CAAC;gBACd,KAAK,EAAE,QAAQ,CAAC,OAAO;gBACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;AAC5B,aAAA,CAAC,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AACD;;;;;AAKG;IACH,QAAQ,CAAC,MAAsB,EAAE,OAAgB,EAAA;AAC/C,QAAA,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrC;AACD;;;;;AAKG;IACH,SAAS,CAAC,KAAa,EAAE,MAAsB,EAAA;QAC7C,OAAO,MAAM,CAAC,EAAE,CAAC;KAClB;8GA9DU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,sKCnD9B,wyBA0BA,EAAA,MAAA,EAAA,CAAA,m4UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDWI,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,sHACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,kSACX,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClBA,oBAAkB,EAClB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,+UACnB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAMR,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,cAAc;wBACd,WAAW;wBACX,kBAAkB;wBAClBA,oBAAkB;wBAClB,mBAAmB;wBACnB,iBAAiB;qBAClB,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,wyBAAA,EAAA,MAAA,EAAA,CAAA,m4UAAA,CAAA,EAAA,CAAA;yGAYjC,UAAU,EAAA,CAAA;sBADb,KAAK;gBAOI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;AE9BT;;;;;;;AAOG;MAwBU,qBAAqB,CAAA;;AAchC,IAAA,WAAA,CAAoB,kBAAsC,EAAA;QAAtC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QAX1D,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;QACF,IAAe,CAAA,eAAA,GAAyB,EAAE,CAAC;QAC3C,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAU,CAAC;AACrD,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAU,CAAC;AAElE,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW,CAAC;;QAEpD,IAAqB,CAAA,qBAAA,GAAQI,iBAAqB,CAAC;QACnD,IAAe,CAAA,eAAA,GAAyB,EAAE,CAAC;KAEmB;AAC9D;;;AAGG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM;AACT,YAAA,IAAI,CAAC,MAAM;gBACX,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CACxC,cAAc,EACdd,iBAAe,CAAC,aAAa,CAC9B,CAAC;AACJ,QAAA,IAAI,CAAC,KAAK;YACR,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,eAAe;YAClB,IAAI,CAAC,MAAM,EAAE,mBAAmB,IAAI,IAAI,CAAC,eAAe,CAAC;AAC3D,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;KAC7C;AACD;;;AAGG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,YAAY;aACzD,IAAI;;QAEH,MAAM;;AAEJ,QAAA,CAAC,GAAQ,KACP,GAAG,CAAC,MAAM;AACR,YAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,eAAe;AACzD,YAAA,GAAG,CAAC,MAAM,KAAK,CAAC,CACnB,EACD,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,YAAY,CAAC,EAClE,oBAAoB,EAAE,CACvB;AACA,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,IAAY,KAAI;AAC1B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,IAAI,KAChD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CACrD,CAAC;YACF,IAAI,CAAC,eAAe,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC;AACvD,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;KACN;AACD;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,IAAwB,EAAA;QAC/B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AACD;;;;;;AAMG;IACH,SAAS,CAAC,KAAa,EAAE,MAAoB,EAAA;QAC3C,OAAO,MAAM,CAAC,EAAE,CAAC;KAClB;AACD;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KAC7B;8GAtFU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAVrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,gCAAgC;AACzC,gBAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,kCAAkC,EAAE;AACpE,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/DH,glDAgDA,EAAA,MAAA,EAAA,CAAA,s/LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAEnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,8BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,8BACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAYN,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvBjC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnBN,oBAAkB;wBAClB,eAAe;wBACf,qBAAqB;wBACrB,cAAc;wBACd,aAAa;wBACb,eAAe;qBAChB,EACU,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,gCAAgC;AACzC,4BAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,kCAAkC,EAAE;AACpE,yBAAA;qBACF,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,glDAAA,EAAA,MAAA,EAAA,CAAA,s/LAAA,CAAA,EAAA,CAAA;yGAM5B,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,wBAAwB,EAAA,CAAA;sBAAhC,KAAK;gBACI,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;gBACG,0BAA0B,EAAA,CAAA;sBAAnC,MAAM;gBACoB,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc,CAAA;;;AE1C3B,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB;;;;;;;;AAQG;MAgBU,eAAe,CAAA;AAgB1B,IAAA,WAAA;;AAEU,IAAA,kBAAsC;;QAAtC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QAbvC,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC;QAC3B,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AACtB,QAAA,IAAA,CAAA,UAAU,GAAeO,YAAU,CAAC,IAAI,CAAC;QACzC,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AACf,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAG3C,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW,CAAC;;QAEpD,IAAU,CAAA,UAAA,GAAQC,iBAAU,CAAC;KAKzB;AAEJ;;;AAGG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM;AACT,YAAA,IAAI,CAAC,MAAM;AACX,gBAAA,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CACxC,IAAI,CAAC,eAAe,EACpBlB,iBAAe,CAAC,MAAM,CACvB,CAAC;AACJ,QAAA,IAAI,CAAC,KAAK;AACR,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC5E;AAED;;;AAGG;IACH,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,UAAU,KAAKiB,YAAU,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;YAC7D,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC;iBAClD,IAAI;;AAEH,YAAA,GAAG,CAAC,CAAC,KAAU,KAAI;AACjB,gBAAA,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5B,aAAC,CAAC,EACF,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,IAAI,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,EAC3D,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,EACvD,oBAAoB,EAAE,CACvB;AACA,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,iBAAA,SAAS,CAAC,CAAC,IAAY,KAAI;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;AACN,SAAA;KACF;AAED;;;;;AAKG;AACH,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,KAAK,CAAC;AACnD,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5D;AAED;;;AAGG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC1B;AAED;;;AAGG;IACH,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,KAAK,EAAE,EAAE;YACzD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;AACvE,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC1B,SAAA;KACF;AAED;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KAC7B;8GAlGU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EC3D5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,siCAiCA,EDeI,MAAA,EAAA,CAAA,49KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,oBAAkB,EAClB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,0WACd,aAAa,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAMJ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAf3B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnBA,oBAAkB;wBAClB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;qBACd,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,siCAAA,EAAA,MAAA,EAAA,CAAA,49KAAA,CAAA,EAAA,CAAA;yGAO5B,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACqB,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;;;AExB5B,MAAMS,QAAM,GAAG,OAAO,CAAC;AAGjB,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AACtD;;;;AAIG;IACM,iBAAiB,GAAA;AACxB,QAAA,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KAC5C;8GARU,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;AAYX;;;;;;;AAOG;MAiCU,mBAAmB,CAAA;AAM9B;;;AAGG;IACH,IACI,aAAa,CAAC,KAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IACE,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,SAAS;AACnC,YAAA,IAAI,CAAC,YAAY,KAAKC,cAAY,CAAC,qBAAqB,EACxD;YACA,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACjD,SAAA;KACF;AACD;;;;;AAKG;AACH,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;AAED;;;AAGG;IACH,IACI,aAAa,CAAC,KAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IACE,IAAI,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,YAAY,KAAKA,cAAY,CAAC,oBAAoB,EACvD;AACA,YAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChD,SAAA;KACF;AACD;;;;;AAKG;AACH,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;AAiBD,IAAA,WAAA;;IAEU,EAAe;;IAEf,iBAAoC;;IAEpC,iBAAoC;;AAEpC,IAAA,kBAAsC;;QANtC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAEf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAEpC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAEpC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QAhFhD,IAAgB,CAAA,gBAAA,GAAGC,2BAAyB,CAAC;QAC7C,IAAa,CAAA,aAAA,GAAGD,cAAY,CAAC;QACrB,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;QA4B9B,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;AA2B7B,QAAA,IAAA,CAAA,YAAY,GAAiBA,cAAY,CAAC,qBAAqB,CAAC;QAEhE,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;QACtB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AAEpB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU,CAAC;AAC1C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAG1C,CAAC;;QAGL,IAAiB,CAAA,iBAAA,GAAQ,iBAAiB,CAAC;KAUvC;AACJ;;;AAGG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,IAAI,YAAY,CAAC;AACzD,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CACtD,WAAW,EACXpB,iBAAe,CAAC,IAAI,CACrB,CAAC;YACF,IACE,IAAI,CAAC,MAAM;AACX,gBAAA,IAAI,CAAC,YAAY,KAAKoB,cAAY,CAAC,oBAAoB,EACvD;AACA,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG;AAC9B,oBAAA,SAAS,EAAE,WAAW;AACtB,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACvC,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,YAAY,KAAKA,cAAY,CAAC,qBAAqB,EAAE;gBAC5D,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,YAAY,KAAKA,cAAY,CAAC,oBAAoB,EAAE;gBAClE,IAAI,CAAC,gCAAgC,EAAE,CAAC;AACzC,aAAA;AACF,SAAA;KACF;AAED;;;AAGG;IACH,8BAA8B,GAAA;AAC5B,QAAA,IAAI,CAAC,YAAY;AACf,YAAA,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY;gBACrCA,cAAY,CAAC,qBAAqB,CAAC;AACrC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,gBAAgB,IAAI,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,kBAAkB;YACrB,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,IAAI,KAAK,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,IAAI;AACrD,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACzC,IACE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,KAAKA,cAAY,CAAC,oBAAoB,EAC1E;YACA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;AACrD,SAAA;KACF;AACD;;;AAGG;IACH,YAAY,GAAA;QACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CACnD,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,EAAE,KAAK,CAAC;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACjD;AAED;;;AAGG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/C,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAChC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAC/B,CAAC;AAEF,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAC1B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE;YAC3C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE;AACxC,SAAA,CAAC,CAAC;KACJ;AAED;;;;;AAKG;IACH,YAAY,CAAC,SAAwB,EAAE,OAAsB,EAAA;AAC3D,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,GAAG,EAAE,OAAO;AACb,SAAA,CAAC,CAAC;KACJ;AAED;;;;AAIG;AACH,IAAA,eAAe,CAAC,IAAa,EAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACzB,YAAA,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,YAAY,GAAG,IAAI;AAChE,kBAAE,CAACD,QAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACnC,kBAAE,EAAE;AACP,SAAA,CAAC,CAAC;KACJ;AACD;;;;;AAKG;IACH,gCAAgC,CAAC,SAAkB,EAAE,OAAgB,EAAA;QACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,SAAS,EAAE,SAAS,GAAG,CAACA,QAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;YAClE,OAAO,EAAE,OAAO,GAAG,CAACA,QAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;AAC7D,SAAA,CAAC,CAAC;KACJ;AACD;;;;AAIG;IACH,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,YAAY,CACjE,UAAU,CAAC,QAAQ,CACpB,CAAC;KACH;8GAxNU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtB,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,IAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAhBnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA;YACT,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;AACxE,YAAA;AACE,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,QAAQ,EAAE,iBAAiB;AAC3B,gBAAA,IAAI,EAAE,CAAC,eAAe,EAAE,+BAA+B,CAAC;AACzD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,QAAQ,EAAE,WAAW;AACtB,aAAA;SACF,EC9FH,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,q9IAgIA,omSDzDI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,oBAAkB,gHAClB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,8BACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,44DAEnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAkBN,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhC/B,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnBL,oBAAkB;wBAClB,kBAAkB;wBAClB,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,kBAAkB;wBAClB,mBAAmB;wBACnBW,2BAAyB;wBACzB,eAAe;qBAChB,EACU,SAAA,EAAA;wBACT,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;AACxE,wBAAA;AACE,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,QAAQ,EAAE,iBAAiB;AAC3B,4BAAA,IAAI,EAAE,CAAC,eAAe,EAAE,+BAA+B,CAAC;AACzD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,QAAQ,EAAE,WAAW;AACtB,yBAAA;qBACF,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,q9IAAA,EAAA,MAAA,EAAA,CAAA,6iSAAA,CAAA,EAAA,CAAA;qMAajC,aAAa,EAAA,CAAA;sBADhB,KAAK;gBA6BF,aAAa,EAAA,CAAA;sBADhB,KAAK;gBAsBG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;AEtJT,MAAM,MAAM,GAAG,OAAO,CAAC;AAEvB;;;;;;AAMG;MAcU,yBAAyB,CAAA;AAUpC,IAAA,WAAA;;IAES,QAA2B;;IAE3B,WAA8B;;IAEJ,WAA2B;;AAEpD,IAAA,iBAAoC;;QANrC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAE3B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAmB;QAEJ,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAEpD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAjB9C,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW,CAAC;QAEpD,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QAEvB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;;QAGzB,IAAc,CAAA,cAAA,GAAQC,iBAAc,CAAC;KAWjC;AAEJ;;;AAGG;IACH,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;AAChE,QAAA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC9B,SAAA;QACD,IAAI,CAAC,iBAAiB,CAAC,MAAM;cACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;AACrD,cAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAChD,WAAW,CAAC,OAAO,CAAC,UAAU,CAC/B;gBACD,IAAI;gBACJ,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE;gBAClD,GAAG;AACH,gBAAA,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAChD,WAAW,CAAC,OAAO,CAAC,cAAc,CACnC;cACD,EAAE,CAAC;KACR;AAED;;;;AAIG;AACH,IAAA,QAAQ,CAAC,KAAmD,EAAA;QAC1D,IAAI,CAAC,KAAK,GAAG;YACX,KAAK,EACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;gBAC1B,GAAG;AACH,gBAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;YAChE,GAAG,EACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;gBACxB,GAAG;AACH,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;SAC/D,CAAC;KACH;AAED;;;;;AAKG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;YAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAC5C,CAAC;AACH,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,IAAsB,EAAA;QACrC,IAAI,CAAC,QAAQ,CAAC,UAAU;AACtB,YAAA,IAAI,KAAK,OAAO;AACd,kBAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAClE,kBAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;KACvE;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,IAAsB,EAAA;QACjC,IAAI,CAAC,QAAQ,CAAC,UAAU;AACtB,YAAA,IAAI,KAAK,OAAO;AACd,kBAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AACjE,kBAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;KACtE;AAED;;;AAGG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,QAAQ,CAAC,WAAW;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,OAAO,GAAG,YAAY,GAAG,OAAO,CAAC;AACjE,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;KAC5C;AACD;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KAC7B;AA3HU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,0EAgB1B,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAAvB,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAhBf,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCtC,wgEA6DA,EAAA,MAAA,EAAA,CAAA,+iMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/BI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKJ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,mBAAmB;wBACnB,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,wgEAAA,EAAA,MAAA,EAAA,CAAA,+iMAAA,CAAA,EAAA,CAAA;;0BAoBE,MAAM;2BAAC,gBAAgB,CAAA;8EAdjB,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AEfR;;;;;;;AAOG;MAwBU,eAAe,CAAA;AAa1B;;;AAGG;IACH,IACI,YAAY,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AACD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AACD;;;AAGG;IACH,IACI,eAAe,CAAC,KAAqB,EAAA;AACvC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/B;AACD,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AACD;;;AAGG;IACH,IACI,eAAe,CAAC,KAAoC,EAAA;AACtD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAClD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC/B,SAAA;KACF;AACD,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AAYD,IAAA,WAAA;;AAEU,IAAA,kBAAsC;;QAAtC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QA1DhD,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,UAAU,GAAGI,YAAU,CAAC,IAAI,CAAC;;QAG7B,IAAY,CAAA,YAAA,GAAQM,iBAAY,CAAC;QAGzB,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QAsCpB,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC;QAC3B,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;QACjB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC;AAC5D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAgB,CAAC;AAClD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAU,CAAC;KAKlD;AAEJ;;;AAGG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,KAAK;AACR,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,MAAM;AACT,YAAA,IAAI,CAAC,MAAM;AACX,gBAAA,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CACxC,IAAI,CAAC,eAAe,EACpBvB,iBAAe,CAAC,MAAM,CACvB,CAAC;QACJ,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe;gBAClB,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;YACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC,eAAe,CAAC;AACxE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;AACtE,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC;AAC3D,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;AAC7D,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;AACpE,SAAA;KACF;AAED;;;;AAIG;AACH,IAAA,QAAQ,CAAC,KAAmB,EAAA;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;AAED;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,MAAe,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;KAC9B;AAED;;;;;;AAMG;IACH,SAAS,CAAC,KAAa,EAAE,MAAoB,EAAA;QAC3C,OAAO,MAAM,CAAC,EAAE,CAAC;KAClB;AAED;;;;AAIG;AACH,IAAA,cAAc,CAAC,UAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACtC;AAED;;;;;;AAMG;;IAEH,QAAQ,CAAC,OAAY,EAAE,OAAY,EAAA;AACjC,QAAA,OAAO,OAAO,IAAI,OAAO,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,GAAG,OAAO,KAAK,OAAO,CAAC;KAC7E;AAED;;;AAGG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAChE,SAAA;KACF;AAED;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9D,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;AAC3C,SAAA;KACF;AAED;;;;;AAKG;AACH,IAAA,YAAY,CAAC,IAAoB,EAAA;AAC/B,QAAA,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACrC,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK;gBAAE,OAAO,CAAC,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK;AAAE,gBAAA,OAAO,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;AAAE,gBAAA,OAAO,CAAC,CAAC;AAC1D,YAAA,OAAO,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACb;8GAvLU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAVf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,4BAA4B,EAAE;AAC9D,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAMaI,iBAAe,EC1D/B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,woHA2GA,4qNDrEI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZA,iBAAe,EACf,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,oBAAkB,gHAClB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,8BACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,8BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAYN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAvB3B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZX,iBAAe;wBACf,mBAAmB;wBACnBM,oBAAkB;wBAClB,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,eAAe;qBAChB,EACU,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,4BAA4B,EAAE;AAC9D,yBAAA;qBACF,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,woHAAA,EAAA,MAAA,EAAA,CAAA,qnNAAA,CAAA,EAAA,CAAA;yGAIrC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAACN,iBAAe,CAAA;gBAiBzB,YAAY,EAAA,CAAA;sBADf,KAAK;gBAYF,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAYF,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAWG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;IEpHG,WAOX;AAPD,CAAA,UAAY,UAAU,EAAA;;AAEpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;;AAEf,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;;AAEb,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAPW,UAAU,KAAV,UAAU,GAOrB,EAAA,CAAA,CAAA;;ICPW,aAOX;AAPD,CAAA,UAAY,YAAY,EAAA;;AAEtB,IAAA,YAAA,CAAA,YAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAyB,CAAA;;AAEzB,IAAA,YAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;;AAEZ,IAAA,YAAA,CAAA,YAAA,CAAA,sBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,sBAAwB,CAAA;AAC1B,CAAC,EAPW,YAAY,KAAZ,YAAY,GAOvB,EAAA,CAAA,CAAA;;ICPW,gBAiBX;AAjBD,CAAA,UAAY,eAAe,EAAA;;AAEzB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;;AAEf,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;;AAEvB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;;AAEjB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;;AAEjB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;;AAEb,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;;AAErB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;;AAEf,IAAA,eAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AACjC,CAAC,EAjBW,eAAe,KAAf,eAAe,GAiB1B,EAAA,CAAA,CAAA;;ACbD;;;;AAIG;MAIU,kBAAkB,CAAA;;AAE7B,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;KAAI;AACvC;;;;;;AAMG;IACH,kBAAkB,CAAC,WAAmB,EAAE,WAAmB,EAAA;QACzD,OAAO;AACL,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,IAAI,EAAE,WAAW;SAClB,CAAC;KACH;AACD;;;;;AAKG;AACH,IAAA,YAAY,CAAC,WAAmB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACnB,CAAC,WAAW,GAAG,EAAE;AAClB,SAAA,CAAC,CAAC;KACJ;8GA1BU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACRD;;;;AAIG;MAIU,iBAAiB,CAAA;AAO5B,IAAA,WAAA,GAAA;AANA,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAgD,CAAC;AACpE,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAGnC,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC9D,IAAI,CAAC,aAAa,GAAG;gBACnB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;aACf,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAED;;;;AAIG;IACH,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AACD;;;;AAIG;IACH,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AACD;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;KAC7B;8GAvCU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCAY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAFlB,SAAA,EAAA,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,EAAA,CAAA,CAAA,EAAA;;2FAEvC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;AACnD,iBAAA,CAAA;;;ACTD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"ieeesa-npm-presentation.mjs","sources":["../../../projects/presentation/src/lib/components/form-error/form-error.component.ts","../../../projects/presentation/src/lib/components/form-error/form-error.component.html","../../../projects/presentation/src/lib/components/input/input.component.ts","../../../projects/presentation/src/lib/components/input/input.component.html","../../../projects/presentation/src/lib/models/form-control-types.model.ts","../../../projects/presentation/src/lib/services/form-utility.service.ts","../../../projects/presentation/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/presentation/src/lib/components/autocomplete/autocomplete.component.html","../../../projects/presentation/src/lib/components/checkbox/checkbox.component.ts","../../../projects/presentation/src/lib/components/checkbox/checkbox.component.html","../../../projects/presentation/src/lib/components/date-picker-header/date-picker-header.component.ts","../../../projects/presentation/src/lib/components/date-picker-header/date-picker-header.component.html","../../../projects/presentation/src/lib/date-formats.ts","../../../projects/presentation/src/lib/models/calendar.model.ts","../../../projects/presentation/src/lib/services/datepicker.service.ts","../../../projects/presentation/src/lib/components/date-picker/date-picker.component.ts","../../../projects/presentation/src/lib/components/date-picker/date-picker.component.html","../../../projects/presentation/src/lib/components/radio/radio.component.ts","../../../projects/presentation/src/lib/components/radio/radio.component.html","../../../projects/presentation/src/lib/validation-patterns.ts","../../../projects/presentation/src/lib/models/search.model.ts","../../../projects/presentation/src/lib/components/search/search.component.ts","../../../projects/presentation/src/lib/components/search/search.component.html","../../../projects/presentation/src/lib/components/select/select.component.ts","../../../projects/presentation/src/lib/components/select/select.component.html","../../../projects/presentation/src/lib/components/text-area/text-area.component.ts","../../../projects/presentation/src/lib/components/text-area/text-area.component.html","../../../projects/presentation/src/lib/directives/dynamic-form-field/dynamic-form-field.directive.ts","../../../projects/presentation/src/lib/components/dynamic-form/dynamic-form.component.ts","../../../projects/presentation/src/lib/components/dynamic-form/dynamic-form.component.html","../../../projects/presentation/src/lib/components/notification/notification.component.ts","../../../projects/presentation/src/lib/components/notification/notification.component.html","../../../projects/presentation/src/lib/presentation.module.ts","../../../projects/presentation/src/public-api.ts","../../../projects/presentation/src/ieeesa-npm-presentation.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\n\r\n/**\r\n * Implements and displays form error messages and form submission error response message on submission of form.\r\n * @export\r\n * @class FormErrorComponent\r\n */\r\n@Component({\r\n selector: 'ieeesa-form-error',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './form-error.component.html',\r\n styleUrls: ['./form-error.component.scss'],\r\n})\r\nexport class FormErrorComponent {\r\n @Input() formGroup!: FormGroup;\r\n @Input() config!: FieldConfig;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Input() submitResponse!: any;\r\n}\r\n","<ng-container *ngIf=\"formGroup\">\r\n <div\r\n class=\"ieeesa-body-sm-14 ieeesa-form-error\"\r\n *ngIf=\"\r\n formGroup.controls[config.controlName]?.touched ||\r\n (formGroup.controls[config.controlName]?.dirty &&\r\n formGroup.controls[config.controlName]?.invalid)\r\n \"\r\n >\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['required']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.requiredErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['minlength']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.minErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['maxlength'] || formGroup.controls[config.controlName].errors?.['max']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.maxErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['pattern']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.patternErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n formGroup.controls[config.controlName].errors?.['email']\"\r\n class=\"ieeesa-form-error--text\"\r\n >\r\n {{ config.invalidEmailErrorMessage }}\r\n </p>\r\n </div>\r\n <div\r\n class=\"ieeesa-form-error\"\r\n *ngIf=\"\r\n (formGroup.controls[config.controlName]?.touched ||\r\n formGroup.controls[config.controlName]?.dirty) &&\r\n submitResponse\r\n \"\r\n >\r\n <p class=\"ieeesa-form-error--text mt-1\">\r\n {{ submitResponse }}\r\n </p>\r\n </div>\r\n</ng-container>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport * as buttonActionsInfo from '../../assets/constants.json';\r\n\r\n/**\r\n * Provides implementation of input type number and text\r\n * @export\r\n * @class InputComponent\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n selector: 'ieeesa-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatInputModule,\r\n MatIconModule,\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class InputComponent implements FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n invalidChars = ['-', '+', 'e'];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n buttonActionsInfo: any = buttonActionsInfo;\r\n\r\n /**\r\n * Handles keyboard event of type keydown to restrict invalid characters.\r\n * @param {KeyboardEvent} event\r\n * @memberof InputComponent\r\n */\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (\r\n (this.invalidChars.includes(event.key.toLowerCase()) ||\r\n (this.config.isInteger && event.key.toLowerCase() === '.')) &&\r\n this.config.isNumber\r\n ) {\r\n event.preventDefault();\r\n }\r\n }\r\n /**\r\n * Clears the form group control value of type input\r\n * @memberof InputComponent\r\n */\r\n clear(): void {\r\n this.group.get(this.config.controlName)?.setValue('');\r\n }\r\n\r\n /**\r\n * Handles form control input on change event to set min and max value errors\r\n * @memberof InputComponent\r\n */\r\n onChange(): void {\r\n if (\r\n this.config.max &&\r\n this.config.isNumber &&\r\n Number(this.group.get(this.config.controlName)?.value) > this.config.max\r\n ) {\r\n this.group.get(this.config.controlName)?.setErrors({\r\n maxlength: true,\r\n });\r\n }\r\n if (\r\n this.config.min &&\r\n this.config.isNumber &&\r\n this.group.get(this.config.controlName)?.value !== '' &&\r\n Number(this.group.get(this.config.controlName)?.value) < this.config.min\r\n ) {\r\n this.group.get(this.config.controlName)?.setErrors({\r\n minlength: true,\r\n });\r\n }\r\n }\r\n}\r\n","<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-input-field\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-input-field__label-left'\r\n : 'ieeesa-input-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-input-field__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <mat-form-field>\r\n <input\r\n class=\"ieeesa-input-field__content ieeesa-body-sm-14\"\r\n [type]=\"config.isNumber ? 'number' : 'text'\"\r\n [min]=\"config.min\"\r\n [max]=\"config.max\"\r\n [maxlength]=\"config.maxLength ?? ''\"\r\n [minlength]=\"config.minLength ?? ''\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (input)=\"onChange()\"\r\n autocomplete=\"off\"\r\n matInput\r\n />\r\n <button\r\n *ngIf=\"\r\n group.get(this.config.controlName)?.value &&\r\n group.get(this.config.controlName)?.valid\r\n \"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"buttonActionsInfo.ariaLabel.clear\"\r\n class=\"ieeesa-input-field__btn--clear\"\r\n (click)=\"clear()\"\r\n >\r\n <i class=\"fa-regular fa-circle-xmark ieeesa-input-field__icon--clear\"></i>\r\n </button>\r\n <button\r\n *ngIf=\"\r\n group.get(this.config.controlName)?.invalid &&\r\n group.get(this.config.controlName)?.dirty\r\n \"\r\n class=\"ieeesa-input-field__btn--warning\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"buttonActionsInfo.ariaLabel.warning\"\r\n >\r\n <i\r\n class=\"fa-solid fa-circle-exclamation ieeesa-input-field__icon--warning\"\r\n ></i>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","export enum FormControlType {\r\n // eslint-disable-next-line no-unused-vars\r\n INPUT = 'INPUT',\r\n // eslint-disable-next-line no-unused-vars\r\n TEXT_AREA = 'TEXT_AREA',\r\n // eslint-disable-next-line no-unused-vars\r\n SELECT = 'SELECT',\r\n // eslint-disable-next-line no-unused-vars\r\n SEARCH = 'SEARCH',\r\n // eslint-disable-next-line no-unused-vars\r\n DATE = 'DATE',\r\n // eslint-disable-next-line no-unused-vars\r\n CHECKBOX = 'CHECKBOX',\r\n // eslint-disable-next-line no-unused-vars\r\n RADIO = 'RADIO',\r\n // eslint-disable-next-line no-unused-vars\r\n AUTO_COMPLETE = 'AUTO_COMPLETE',\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { FieldConfig } from '../models/field-config.model';\r\n\r\n/**\r\n * Creates form fields configuration and form group based on passed parameters.\r\n * @export\r\n * @class FormUtilityService\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FormUtilityService {\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private fb: FormBuilder) {}\r\n /**\r\n * Returns form fields configuration based on passed control name and type.\r\n * @param {string} controlName\r\n * @param {string} controlType\r\n * @return {FieldConfig}\r\n * @memberof FormUtilityService\r\n */\r\n getFormFieldConfig(controlName: string, controlType: string): FieldConfig {\r\n return {\r\n controlName: controlName,\r\n type: controlType,\r\n };\r\n }\r\n /**\r\n * Creates and returns form group with passed control name added.\r\n * @param {string} controlName\r\n * @return {FormGroup}\r\n * @memberof FormUtilityService\r\n */\r\n getFormGroup(controlName: string): FormGroup {\r\n return this.fb.group({\r\n [controlName]: [],\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n Subject,\r\n takeUntil,\r\n} from 'rxjs';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport {\r\n MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\r\n MatAutocompleteModule,\r\n} from '@angular/material/autocomplete';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { AutoCompleteOption } from '../../models/autocomplete-option.model';\r\nimport { SelectOption } from '../../models/select-option.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport * as autocompleteConstInfo from '../../assets/constants.json';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\n\r\n/**\r\n * Provides auto suggestion for the entered input by filtering the options from the given list of options.\r\n * @export\r\n * @class AutocompleteComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n selector: 'ieeesa-autocomplete',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatOptionModule,\r\n MatAutocompleteModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n ],\r\n providers: [\r\n {\r\n provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\r\n useValue: { overlayPanelClass: 'ieeesa-autocomplete-overlay-pane' },\r\n },\r\n ],\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AutocompleteComponent implements OnInit, FormField, OnDestroy {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n value = '';\r\n @Input() filteredOptions: AutoCompleteOption[] = [];\r\n @Input() isSelectedOptionsVisible = true;\r\n @Output() autoCompleteSearchValue = new EventEmitter<string>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<string>();\r\n @ViewChild('autoComplete') autoComplete!: ElementRef;\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n autocompleteConstInfo: any = autocompleteConstInfo;\r\n optionsToFilter: AutoCompleteOption[] = [];\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private formUtilityService: FormUtilityService) {}\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to initialize components instance properties.\r\n * @memberof AutocompleteComponent\r\n */\r\n ngOnInit(): void {\r\n this.config =\r\n this.config ??\r\n this.formUtilityService.getFormFieldConfig(\r\n 'autocomplete',\r\n FormControlType.AUTO_COMPLETE\r\n );\r\n this.group =\r\n this.group ?? this.formUtilityService.getFormGroup('autocomplete');\r\n this.filteredOptions =\r\n this.config?.autoCompleteOptions ?? this.filteredOptions;\r\n this.optionsToFilter = this.filteredOptions;\r\n }\r\n /**\r\n * Filters the options on form control value changes.\r\n * @memberof AutocompleteComponent\r\n */\r\n filterOptions(): void {\r\n this.group?.controls[this.config?.controlName]?.valueChanges\r\n .pipe(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (res: any) =>\r\n res.length >=\r\n this.autocompleteConstInfo.autocomplete.minCharToSearch ||\r\n res.length === 0\r\n ),\r\n debounceTime(this.autocompleteConstInfo.autocomplete.debounceTime),\r\n distinctUntilChanged()\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((text: string) => {\r\n const options = this.optionsToFilter?.filter((item) =>\r\n item.name.toLowerCase().includes(text.toLowerCase())\r\n );\r\n this.filteredOptions = options ?? this.optionsToFilter;\r\n this.autoCompleteSearchValue.emit(text);\r\n });\r\n }\r\n /**\r\n * Emits the selected option name when the form on change event is triggered and returns option name.\r\n * @param {AutoCompleteOption} data // data is an selected option of filteredOptions.\r\n * @return {string} // Returns selected option name as string\r\n * @memberof AutocompleteComponent\r\n */\r\n onChange(data: AutoCompleteOption): string {\r\n this.autoCompleteOptionSelected.emit(data.name);\r\n return data.name;\r\n }\r\n /**\r\n * Takes the index and the current item as arguments and needs to return the unique identifier for this item.\r\n * @param {number} index\r\n * @param {SelectOption} option\r\n * @return {(number | string)}\r\n * @memberof AutocompleteComponent\r\n */\r\n trackByFn(index: number, option: SelectOption): number | string {\r\n return option.id;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof AutocompleteComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-autocomplete\"\r\n [formGroup]=\"group\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-autocomplete-field__label-left'\r\n : 'ieeesa-autocomplete-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-autocomplete__label\">{{ config.label }}</mat-label>\r\n <mat-form-field class=\"ieeesa-autocomplete__mat-form\" appearance=\"outline\">\r\n <input\r\n matInput\r\n class=\"ieeesa-autocomplete__input\"\r\n [matAutocomplete]=\"auto\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n #autoComplete\r\n (keypress)=\"filterOptions()\"\r\n />\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n (optionSelected)=\"onChange($event.option.value)\"\r\n class=\"ieeesa-autocomplete__autocomplete-list\"\r\n >\r\n <ng-container *ngIf=\"isSelectedOptionsVisible\">\r\n <mat-option\r\n *ngFor=\"let option of filteredOptions; trackBy: trackByFn\"\r\n [value]=\"option.name\"\r\n >\r\n <span>{{ option.name }}</span>\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <button\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"autocompleteConstInfo.ariaLabel.clear\"\r\n *ngIf=\"value\"\r\n (click)=\"value = ''\"\r\n >\r\n <i class=\"fa-solid fa-xmark ieeesa-autocomplete__cancel-icon\"></i>\r\n </button>\r\n </mat-form-field>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { CheckboxOption } from '../../models/checkbox-option.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\n\r\n/**\r\n * Provides implementation of all types of checkboxes.\r\n * @export\r\n * @class CheckboxComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n selector: 'ieeesa-checkbox',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatListModule,\r\n MatButtonModule,\r\n MatInputModule,\r\n FormsModule,\r\n MatFormFieldModule,\r\n FormErrorComponent,\r\n ReactiveFormsModule,\r\n MatCheckboxModule,\r\n ],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CheckboxComponent implements OnInit, FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n private _checkboxes!: CheckboxOption[];\r\n /**\r\n * Input property to get checkbox options.\r\n * @memberof CheckboxComponent\r\n * @usageNotes const checkboxes = [{ id: 1, name:\"Angular\"}]\r\n */\r\n @Input()\r\n set checkboxes(value: CheckboxOption[]) {\r\n this._checkboxes = value;\r\n }\r\n get checkboxes(): CheckboxOption[] {\r\n return this._checkboxes;\r\n }\r\n @Output() checkboxSelection = new EventEmitter<CheckboxOption>();\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private formUtilityService: FormUtilityService) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method of component to initialize component instance properties.\r\n * @memberof CheckboxComponent\r\n */\r\n ngOnInit(): void {\r\n this.createFormGroupAndInitializeProperties();\r\n }\r\n /**\r\n * Creates form group and initializes components properties from config.\r\n * @memberof CheckboxComponent\r\n */\r\n createFormGroupAndInitializeProperties(): void {\r\n this.checkboxes = this.config?.checkboxOptions ?? this.checkboxes;\r\n this.group = this.group ?? this.formUtilityService.getFormGroup('checkbox');\r\n this.checkboxes?.forEach((checkbox) => {\r\n this.group.addControl(\r\n checkbox.id as string,\r\n new FormControl({\r\n value: checkbox.checked,\r\n disabled: checkbox.disabled,\r\n })\r\n );\r\n });\r\n }\r\n /**\r\n * Sets checkbox selection and emits selected option on change event.\r\n * @param {CheckboxOption} option\r\n * @param {boolean} checked\r\n * @memberof CheckboxComponent\r\n */\r\n onChange(option: CheckboxOption, checked: boolean): void {\r\n option.checked = checked;\r\n this.checkboxSelection.emit(option);\r\n }\r\n /**\r\n * Allows Angular to detect the specific checkbox option that needs to change or be added instead of rebuilding the whole checkbox options in DOM by tracking option unique Id.\r\n * @param {number} index\r\n * @return {number}\r\n * @memberof CheckboxComponent\r\n */\r\n trackById(index: number, option: CheckboxOption): number | string {\r\n return option.id;\r\n }\r\n}\r\n","<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-checkbox-field\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-checkbox-field__label-left'\r\n : 'ieeesa-checkbox-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-checkbox-field__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <mat-list>\r\n <mat-checkbox\r\n *ngFor=\"let option of checkboxes; trackBy: trackById\"\r\n [formControlName]=\"option.id\"\r\n (change)=\"onChange(option, true)\"\r\n [disabled]=\"option.disabled\"\r\n [checked]=\"option.checked\"\r\n >\r\n {{ option.name }}\r\n </mat-checkbox>\r\n </mat-list>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatCalendar, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MatDateFormats,\r\n MatNativeDateModule,\r\n} from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FormGroup } from '@angular/forms';\r\nimport moment_ from 'moment';\r\nimport { DatepickerService } from '@presentation/services/datepicker.service';\r\nimport { DateFormats } from '@presentation/date-formats';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as datePickerInfo from '@presentation/assets/constants.json';\r\nconst moment = moment_;\r\n\r\n/**\r\n * Provides implementation of date picker custom header and being used in date-picker component.\r\n * @export\r\n * @class DatePickerHeaderComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n selector: 'ieeesa-date-picker-header',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatNativeDateModule,\r\n MatIconModule,\r\n ],\r\n templateUrl: './date-picker-header.component.html',\r\n styleUrls: ['./date-picker-header.component.scss'],\r\n})\r\nexport class DatePickerHeaderComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n @Input() group!: FormGroup;\r\n arrowDirection = false;\r\n range!: { start: string; end: string };\r\n isRangeSelection = false;\r\n selectedDate!: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n datePickerInfo: any = datePickerInfo;\r\n\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public calendar: MatCalendar<Date>,\r\n // eslint-disable-next-line no-unused-vars\r\n public dateAdapter: DateAdapter<Date>,\r\n // eslint-disable-next-line no-unused-vars\r\n @Inject(MAT_DATE_FORMATS) public dateFormats: MatDateFormats,\r\n // eslint-disable-next-line no-unused-vars\r\n private datepickerService: DatepickerService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to initialize components instance properties.\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n ngOnInit(): void {\r\n this.isRangeSelection = this.datepickerService.getCalendarType();\r\n const selectedRange = this.datepickerService.getSelectedRange();\r\n if (selectedRange) {\r\n this.setRange(selectedRange);\r\n }\r\n this.datepickerService.range$\r\n ?.pipe(takeUntil(this.destroy$))\r\n .subscribe((range) => {\r\n this.setRange(range);\r\n });\r\n this.selectedDate = this.datepickerService.selectedDate\r\n ? moment(this.datepickerService.selectedDate).format(\r\n DateFormats.display.daysFormat\r\n ) +\r\n ', ' +\r\n moment(this.datepickerService.selectedDate).date() +\r\n ' ' +\r\n moment(this.datepickerService.selectedDate).format(\r\n DateFormats.display.fullMonthLabel\r\n )\r\n : '';\r\n }\r\n\r\n /**\r\n * Sets the min and max date range.\r\n * @param {({ start: Date | string; end: Date | string })} range\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n setRange(range: { start: Date | string; end: Date | string }): void {\r\n this.range = {\r\n start:\r\n moment(range.start).date() +\r\n ' ' +\r\n moment(range.start).format(DateFormats.display.fullMonthLabel),\r\n end:\r\n moment(range.end).date() +\r\n ' ' +\r\n moment(range.end).format(DateFormats.display.fullMonthLabel),\r\n };\r\n }\r\n\r\n /**\r\n * Implementation of getMonthLabel method to get the month label.\r\n * @readonly\r\n * @return {string}\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n get getMonthLabel(): string {\r\n if (this.dateAdapter?.format) {\r\n return this.dateAdapter.format(\r\n this.calendar.activeDate,\r\n this.dateFormats.display.monthYearA11yLabel\r\n );\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * Sets previous month in a calendar on click of previous month arrow in date picker.\r\n * @param {('month' | 'year')} mode\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n setPreviousMonth(mode: 'month' | 'year'): void {\r\n this.calendar.activeDate =\r\n mode === 'month'\r\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\r\n : this.dateAdapter.addCalendarYears(this.calendar.activeDate, -1);\r\n }\r\n\r\n /**\r\n * Sets next month in a calendar on click of previous month arrow in date picker.\r\n * @param {('month' | 'year')} mode\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n setNextMonth(mode: 'month' | 'year'): void {\r\n this.calendar.activeDate =\r\n mode === 'month'\r\n ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\r\n : this.dateAdapter.addCalendarYears(this.calendar.activeDate, 1);\r\n }\r\n\r\n /**\r\n * Sets the calendar current view on the open of year drop down in date picker.\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n setCalendarView(): void {\r\n this.calendar.currentView =\r\n this.calendar.currentView === 'month' ? 'multi-year' : 'month';\r\n this.arrowDirection = !this.arrowDirection;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div class=\"ieeesa-datepicker-header--selected-date-container\">\r\n <p class=\"ieeesa-label-lg-bold-16 ieeesa-datepicker-header__select-date-label\">\r\n {{ datePickerInfo.datePicker.selectDateLabel }}\r\n </p>\r\n <p\r\n class=\"headline-lg-34 ieeesa-datepicker-header__selected-date\"\r\n *ngIf=\"range || isRangeSelection\"\r\n >\r\n {{ range.start }} - {{ range.end }}\r\n </p>\r\n <p\r\n class=\"headline-lg-34 ieeesa-datepicker-header__selected-date\"\r\n *ngIf=\"!isRangeSelection\"\r\n >\r\n {{ selectedDate }}\r\n </p>\r\n</div>\r\n<div class=\"ieeesa-datepicker-header--content\">\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"ieeesa-datepicker-header--content--period-button ieeesa-label-lg-16\"\r\n (click)=\"setCalendarView()\"\r\n [attr.aria-label]=\"getMonthLabel\"\r\n cdkAriaLive=\"polite\"\r\n >\r\n {{ getMonthLabel }}\r\n <mat-icon\r\n class=\"ieeesa-datepicker-header--content--period-button--arrow-icon\"\r\n *ngIf=\"!arrowDirection\"\r\n >arrow_drop_down</mat-icon\r\n >\r\n <mat-icon\r\n class=\"ieeesa-datepicker-header--content--period-button--arrow-icon\"\r\n *ngIf=\"arrowDirection\"\r\n >arrow_drop_up</mat-icon\r\n >\r\n </button>\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"ieeesa-label-lg-16 ieeesa-datepicker-header--content--arrow-left-btn\"\r\n [attr.aria-label]=\"datePickerInfo.ariaLabel.previousMonth\"\r\n cdkAriaLive=\"polite\"\r\n >\r\n <mat-icon\r\n (click)=\"setPreviousMonth('month')\"\r\n class=\"ieeesa-datepicker-header__arrow-left\"\r\n >keyboard_arrow_left</mat-icon\r\n >\r\n </button>\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"ieeesa-label-lg-16 ieeesa-datepicker-header--content--arrow-right-btn\"\r\n [attr.aria-label]=\"datePickerInfo.ariaLabel.nextMonth\"\r\n cdkAriaLive=\"polite\"\r\n >\r\n <mat-icon (click)=\"setNextMonth('month')\"> keyboard_arrow_right</mat-icon>\r\n </button>\r\n</div>\r\n","export const DateFormats = {\r\n display: {\r\n dateInput: 'DD-MMM-YYYY',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n daysFormat: 'ddd',\r\n monthFormat: 'YYYY-MM',\r\n fullMonthLabel: 'MMM',\r\n month: 'M',\r\n },\r\n};\r\n","export enum CalendarType {\r\n // eslint-disable-next-line no-unused-vars\r\n SINGLE_DATE_SELECTION = 1,\r\n // eslint-disable-next-line no-unused-vars\r\n CALENDAR = 2,\r\n // eslint-disable-next-line no-unused-vars\r\n DATE_RANGE_SELECTION = 3,\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n/**\r\n * DatepickerService is used in date-picker and date-picker-header component to get date range, isRangeSelection, and selected date(s).\r\n * @export\r\n * @class DatepickerService\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DatepickerService implements OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n range = new Subject<{ start: Date | string; end: Date | string }>();\r\n range$ = this.range.asObservable();\r\n selectedRange!: { start: Date | string; end: Date | string };\r\n selectedDate!: Date | string;\r\n isRangeSelection = false;\r\n constructor() {\r\n this.range$?.pipe(takeUntil(this.destroy$)).subscribe((range) => {\r\n this.selectedRange = {\r\n start: range.start,\r\n end: range.end,\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Returns the calendar type.\r\n * @return {boolean}\r\n * @memberof DatepickerService\r\n */\r\n getCalendarType(): boolean {\r\n return this.isRangeSelection;\r\n }\r\n /**\r\n * Returns selected range\r\n * @return {({ start: Date | string; end: Date | string })}\r\n * @memberof DatepickerService\r\n */\r\n getSelectedRange(): { start: Date | string; end: Date | string } {\r\n return this.selectedRange;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof DatePickerHeaderComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Injectable,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n MomentDateAdapter,\r\n MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport moment_ from 'moment';\r\nimport { DatePickerHeaderComponent } from '../../components/date-picker-header/date-picker-header.component';\r\nimport { DateFormats } from '../../date-formats';\r\nimport { FieldConfig } from '../..//models/field-config.model';\r\nimport { CalendarType } from '../../models/calendar.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { DatepickerService } from '../../services/datepicker.service';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport * as buttonActionsInfo from '../../assets/constants.json';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nconst moment = moment_;\r\n\r\n@Injectable()\r\nexport class CustomDateAdapter extends MomentDateAdapter {\r\n /**\r\n * Overrides the getDayOfWeekNames method of MomentDateAdapter to show first letter of day in capital in date picker header.\r\n * @return {string[]}\r\n * @memberof CustomDateAdapter\r\n */\r\n override getDayOfWeekNames(): string[] {\r\n return ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\r\n }\r\n}\r\n\r\n/**\r\n * Date selection of type SINGLE_DATE_SELECTION, DATE_RANGE_SELECTION and CALENDAR and handling of calendar events.\r\n * @export\r\n * @class DatePickerComponent\r\n * @implements {FormField}\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n */\r\n@Component({\r\n selector: 'ieeesa-date-picker',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatExpansionModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDatepickerModule,\r\n DatePickerHeaderComponent,\r\n MatButtonModule,\r\n ],\r\n providers: [\r\n { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },\r\n {\r\n provide: DateAdapter,\r\n useClass: CustomDateAdapter,\r\n deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n },\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useValue: DateFormats,\r\n },\r\n ],\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DatePickerComponent implements FormField, OnInit {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n datePickerHeader = DatePickerHeaderComponent;\r\n calendarTypes = CalendarType;\r\n private _selectedDates: string[] = [];\r\n /**\r\n * Gets preselected dates as an input.\r\n * @memberof DatePickerComponent\r\n */\r\n @Input()\r\n set selectedDates(value: string[]) {\r\n this._selectedDates = value;\r\n if (\r\n this.formControlName &&\r\n this.selectedDates?.length === 1 &&\r\n this.selectedDates[0] !== undefined &&\r\n this.calendarType === CalendarType.SINGLE_DATE_SELECTION\r\n ) {\r\n this.datepickerService.selectedDate = value[0];\r\n this.createFormGroup(value[0]);\r\n this.datepickerService.isRangeSelection = false;\r\n }\r\n }\r\n /**\r\n * Returns selected dates\r\n * @readonly\r\n * @type {string[]}\r\n * @memberof DatePickerComponent\r\n */\r\n get selectedDates(): string[] {\r\n return this._selectedDates;\r\n }\r\n private _selectedRange: string[] = [];\r\n /**\r\n * Gets preselected date range as an input.\r\n * @memberof DatePickerComponent\r\n */\r\n @Input()\r\n set selectedRange(value: string[]) {\r\n this._selectedRange = value;\r\n if (\r\n this.selectedRange?.length === 2 &&\r\n this.calendarType === CalendarType.DATE_RANGE_SELECTION\r\n ) {\r\n this.createFormGroupWithRangeControls(value[0], value[1]);\r\n this.setDateRange(value[0], value[1]);\r\n this.datepickerService.isRangeSelection = true;\r\n }\r\n }\r\n /**\r\n * Returns selected date range\r\n * @readonly\r\n * @type {string[]}\r\n * @memberof DatePickerComponent\r\n */\r\n get selectedRange(): string[] {\r\n return this._selectedRange;\r\n }\r\n\r\n @Input() calendarType: CalendarType = CalendarType.SINGLE_DATE_SELECTION;\r\n @Input() formControlName!: string;\r\n @Input() placeholderLabel = '';\r\n @Input() isDisabled = false;\r\n @Input() isLabelAlignedLeft = false;\r\n @Input() datepickerLabel = '';\r\n @Input() dateRange!: { minDate: string; maxDate: string };\r\n @Output() selectedDate = new EventEmitter<string>();\r\n @Output() selectedDateRange = new EventEmitter<{\r\n startDate: string;\r\n endDate: string;\r\n }>();\r\n calendarSelectedDate!: Date;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n buttonActionsInfo: any = buttonActionsInfo;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private fb: FormBuilder,\r\n // eslint-disable-next-line no-unused-vars\r\n private changeDetectorRef: ChangeDetectorRef,\r\n // eslint-disable-next-line no-unused-vars\r\n private datepickerService: DatepickerService,\r\n // eslint-disable-next-line no-unused-vars\r\n private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function,\r\n ) {}\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to creates config if its undefined and sets components instance variables if config is defined. Sets the form group value if form group is defined.\r\n * @memberof DatePickerComponent\r\n */\r\n ngOnInit(): void {\r\n if (!this.config) {\r\n const controlName = this.formControlName ?? 'datepicker';\r\n this.config = this.formUtilityService.getFormFieldConfig(\r\n controlName,\r\n FormControlType.DATE\r\n );\r\n if (\r\n this.config &&\r\n this.calendarType === CalendarType.DATE_RANGE_SELECTION\r\n ) {\r\n this.config.dateRangeControls = {\r\n startDate: 'startDate',\r\n endDate: 'endDate',\r\n };\r\n }\r\n } else {\r\n this.initializePropertiesFromConfig();\r\n }\r\n if (!this.group) {\r\n if (this.calendarType === CalendarType.SINGLE_DATE_SELECTION) {\r\n this.createFormGroup();\r\n } else if (this.calendarType === CalendarType.DATE_RANGE_SELECTION) {\r\n this.createFormGroupWithRangeControls();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Initializes properties from the config input\r\n * @memberof DatePickerComponent\r\n */\r\n initializePropertiesFromConfig(): void {\r\n this.calendarType =\r\n this.config?.datePicker?.calendarType ??\r\n CalendarType.SINGLE_DATE_SELECTION;\r\n this.placeholderLabel = this.config?.datePicker?.placeholderLabel ?? '';\r\n this.datepickerLabel = this.config?.datePicker?.label ?? '';\r\n this.isLabelAlignedLeft =\r\n this.config?.datePicker?.isLabelAlignedLeft ?? false;\r\n this.dateRange = this.config?.datePicker?.dateRange ?? {\r\n minDate: '',\r\n maxDate: '',\r\n };\r\n this.isDisabled = !!this.config.disabled;\r\n if (\r\n this.config.datePicker?.calendarType === CalendarType.DATE_RANGE_SELECTION\r\n ) {\r\n this.group.addControl('startDate', new FormControl());\r\n this.group.addControl('endDate', new FormControl());\r\n }\r\n }\r\n /**\r\n * Handle date change event and emits the selected date.\r\n * @memberof DatePickerComponent\r\n */\r\n onDateChange(): void {\r\n this.selectedDate.emit(this.group?.get(this.config.controlName)?.value);\r\n this.datepickerService.selectedDate = this.group?.get(\r\n this.config.controlName\r\n )?.value;\r\n this.datepickerService.isRangeSelection = false;\r\n }\r\n\r\n /**\r\n * Sets and emits selected date range\r\n * @memberof DatePickerComponent\r\n */\r\n onDateRangeChange(): void {\r\n this.datepickerService.isRangeSelection = true;\r\n this.setDateRange(\r\n this.group.value.startDate ?? '',\r\n this.group.value.endDate ?? ''\r\n );\r\n\r\n this.selectedDateRange.emit({\r\n startDate: this.group.value.startDate ?? '',\r\n endDate: this.group.value.endDate ?? '',\r\n });\r\n }\r\n\r\n /**\r\n * Sets the min and max date range.\r\n * @param {(string | Date)} startDate\r\n * @param {(string | Date)} endDate\r\n * @memberof DatePickerComponent\r\n */\r\n setDateRange(startDate: string | Date, endDate: string | Date): void {\r\n this.datepickerService.range.next({\r\n start: startDate,\r\n end: endDate,\r\n });\r\n }\r\n\r\n /**\r\n * Creates form group and initializes form value\r\n * @param {string} [date]\r\n * @memberof DatePickerComponent\r\n */\r\n createFormGroup(date?: string): void {\r\n this.group = this.fb.group({\r\n [this.formControlName ? this.formControlName : 'datepicker']: date\r\n ? [moment(date).utc(true).format()]\r\n : [],\r\n });\r\n }\r\n /**\r\n * Creates form group with range type of controls and sets the min and max range values.\r\n * @param {string} [startDate]\r\n * @param {string} [endDate]\r\n * @memberof DatePickerComponent\r\n */\r\n createFormGroupWithRangeControls(startDate?: string, endDate?: string): void {\r\n this.group = this.fb.group({\r\n startDate: startDate ? [moment(startDate).utc(true).format()] : [],\r\n endDate: endDate ? [moment(endDate).utc(true).format()] : [],\r\n });\r\n }\r\n /**\r\n * Checks if the form control has required validator.\r\n * @return {boolean}\r\n * @memberof DatePickerComponent\r\n */\r\n isRequired(): boolean {\r\n return this.group?.controls[this.config?.controlName]?.hasValidator(\r\n Validators.required\r\n );\r\n }\r\n}\r\n","<div class=\"ieeesa-datepicker\">\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.SINGLE_DATE_SELECTION\"\r\n class=\"ieeesa-datepicker--single-selection\"\r\n [ngClass]=\"!isRequired() ? 'ieeesa-datepicker__valid-date' : ''\"\r\n [ngClass]=\"{\r\n 'ieeesa-datepicker__valid-date': !isRequired(),\r\n 'ieeesa-datepicker__label-left': isLabelAlignedLeft,\r\n 'ieeesa-datepicker__label-top': !isLabelAlignedLeft\r\n }\"\r\n >\r\n <mat-label *ngIf=\"datepickerLabel\">{{ datepickerLabel }} </mat-label>\r\n <mat-form-field>\r\n <input\r\n matInput\r\n (dateInput)=\"onDateChange()\"\r\n (click)=\"picker.open()\"\r\n [matDatepicker]=\"picker\"\r\n [formControlName]=\"config.controlName\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\r\n #calendar\r\n readonly\r\n />\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"picker\"\r\n ></mat-datepicker-toggle>\r\n <mat-datepicker #picker [calendarHeaderComponent]=\"datePickerHeader\">\r\n <mat-datepicker-actions>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n type=\"button\"\r\n matDatepickerCancel\r\n >\r\n {{ buttonActionsInfo?.button?.cancel }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n color=\"primary\"\r\n type=\"button\"\r\n matDatepickerApply\r\n >\r\n {{ buttonActionsInfo?.button?.ok }}\r\n </button>\r\n </mat-datepicker-actions>\r\n </mat-datepicker>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\">\r\n </ieeesa-form-error>\r\n </div>\r\n\r\n <div\r\n [formGroup]=\"group\"\r\n *ngIf=\"calendarType === calendarTypes.DATE_RANGE_SELECTION\"\r\n class=\"ieeesa-datepicker--multi-selection\"\r\n [ngClass]=\"\r\n isLabelAlignedLeft\r\n ? 'ieeesa-datepicker__label-left'\r\n : 'ieeesa-datepicker__label-top'\r\n \"\r\n >\r\n <mat-label *ngIf=\"datepickerLabel\">{{ datepickerLabel }} </mat-label>\r\n <mat-form-field>\r\n <mat-date-range-input [rangePicker]=\"rangePicker\" [formGroup]=\"group\">\r\n <input\r\n matStartDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.startDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel + ' - '\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n <input\r\n matEndDate\r\n matInput\r\n [formControlName]=\"config.dateRangeControls?.endDate ?? ''\"\r\n [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\r\n (dateChange)=\"onDateRangeChange()\"\r\n />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle\r\n class=\"mat-datepicker-toggle\"\r\n matIconSuffix\r\n [for]=\"rangePicker\"\r\n ></mat-datepicker-toggle>\r\n <mat-date-range-picker\r\n #rangePicker\r\n [calendarHeaderComponent]=\"datePickerHeader\"\r\n (dateInput)=\"onDateRangeChange()\"\r\n >\r\n <mat-date-range-picker-actions>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n matDateRangePickerCancel\r\n type=\"button\"\r\n >\r\n {{ buttonActionsInfo?.button?.cancel }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n color=\"primary\"\r\n matDateRangePickerApply\r\n (click)=\"onDateRangeChange()\"\r\n type=\"button\"\r\n >\r\n {{ buttonActionsInfo?.button?.ok }}\r\n </button>\r\n </mat-date-range-picker-actions>\r\n </mat-date-range-picker>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"calendarType === calendarTypes.CALENDAR\"\r\n class=\"ieeesa-datepicker--calendar\"\r\n >\r\n <mat-calendar\r\n [headerComponent]=\"datePickerHeader\"\r\n [(selected)]=\"calendarSelectedDate\"\r\n >\r\n </mat-calendar>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { RadioOption } from '../../models/radio-option.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\n\r\n/**\r\n * Provides implementation of form field radio type component\r\n * @export\r\n * @class RadioComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n selector: 'ieeesa-radio',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatRadioModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatFormFieldModule,\r\n ],\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class RadioComponent implements OnInit, FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n @Input() formControlName = 'radio';\r\n @Input() radioGroup: RadioOption[] = [];\r\n @Input() isDisabled = false;\r\n @Output() selectedRadioOption = new EventEmitter<RadioOption>();\r\n\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private formUtilityService: FormUtilityService) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to create form group and initialize components instance properties\r\n * @memberof RadioComponent\r\n */\r\n ngOnInit(): void {\r\n if (!this.group) {\r\n this.group =\r\n this.group ??\r\n this.formUtilityService.getFormGroup(this.formControlName);\r\n }\r\n this.initializeConfigProperties();\r\n }\r\n\r\n /**\r\n * Initializes the components instance properties from config else it defines config\r\n * @memberof RadioComponent\r\n */\r\n initializeConfigProperties(): void {\r\n if (this.config?.radioOptions) {\r\n this.radioGroup = this.config.radioOptions;\r\n this.isDisabled = this.config?.disabled ?? false;\r\n }\r\n this.config =\r\n this.config ??\r\n this.formUtilityService.getFormFieldConfig(\r\n this.formControlName,\r\n FormControlType.RADIO\r\n );\r\n }\r\n\r\n /**\r\n * Handles radio selection event on change of it\r\n * @param {RadioOption} value\r\n * @memberof RadioComponent\r\n */\r\n onChange(value: RadioOption): void {\r\n this.selectedRadioOption.emit(value);\r\n }\r\n /**\r\n * Allows Angular to detect the specific radio option that needs to change or be added instead of rebuilding the whole radio options in DOM by tracking option unique Id.\r\n * @param {number} index\r\n * @return {number}\r\n * @memberof RadioComponent\r\n */\r\n trackById(index: number, radio: RadioOption): number | string {\r\n return radio.id;\r\n }\r\n}\r\n","<div [formGroup]=\"group\" class=\"ieeesa-radio-field\" *ngIf=\"group\">\r\n <mat-label\r\n class=\"ieeesa-body-sm-14 ieeesa-radio-field__label\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-radio-field__label-left'\r\n : 'ieeesa-radio-field__label-top'\r\n \"\r\n >{{ config.label }}</mat-label\r\n >\r\n <mat-radio-group\r\n [formControlName]=\"config.controlName\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <mat-radio-button\r\n *ngFor=\"let radio of radioGroup; trackBy: trackById\"\r\n [value]=\"radio.label\"\r\n [name]=\"radio.label\"\r\n [id]=\"'' + radio.id\"\r\n (change)=\"onChange(radio)\"\r\n [checked]=\"radio.checked\"\r\n class=\"ieeesa-radio-field__button\"\r\n >\r\n {{ radio.label }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","export const ValidationPatterns = {\r\n alphanumeric: /^[a-zA-Z0-9 _-]+$/,\r\n mixOfAlphanumeric: /^[0-9]*[a-zA-Z]+[a-zA-Z0-9 _()-]*$/,\r\n numeric: '^0|[1-9][0-9]*$',\r\n email: /^[a-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$/,\r\n};\r\n","export enum SearchType {\r\n // eslint-disable-next-line no-unused-vars\r\n EMAIL = 'EMAIL',\r\n // eslint-disable-next-line no-unused-vars\r\n AUTO = 'AUTO',\r\n // eslint-disable-next-line no-unused-vars\r\n ON_CLICK = 'ON_CLICK',\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n Subject,\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n fromEvent,\r\n map,\r\n takeUntil,\r\n} from 'rxjs';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { ValidationPatterns } from '../../validation-patterns';\r\nimport { SearchType } from '../../models/search.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport * as searchInfo from '../../assets/constants.json';\r\nconst MIN_CHAR = 3;\r\n/**\r\n * Component support search capability and used as a form filed with type search and independently as search component.\r\n * @export\r\n * @class SearchComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n selector: 'ieeesa-search',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ],\r\n templateUrl: './search.component.html',\r\n styleUrls: ['./search.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SearchComponent\r\n implements OnInit, AfterViewInit, OnDestroy, FormField\r\n{\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n @Input() formControlName = 'search';\r\n @Input() placeholderLabel = '';\r\n @Input() searchType: SearchType = SearchType.AUTO;\r\n @Input() searchTerm = '';\r\n @Output() searchValue = new EventEmitter();\r\n @ViewChild('searchControl') searchControl!: ElementRef;\r\n searchResponse!: string;\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n searchInfo: any = searchInfo;\r\n\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to initialize config and form group if its undefined\r\n * @memberof SearchComponent\r\n */\r\n ngOnInit(): void {\r\n this.config =\r\n this.config ??\r\n this.formUtilityService.getFormFieldConfig(\r\n this.formControlName,\r\n FormControlType.SEARCH\r\n );\r\n this.group =\r\n this.group ?? this.formUtilityService.getFormGroup(this.formControlName);\r\n }\r\n\r\n /**\r\n * Handles form control search keyup event and emits searched value\r\n * @memberof SearchComponent\r\n */\r\n ngAfterViewInit() {\r\n if (this.searchType === SearchType.AUTO && this.searchControl) {\r\n fromEvent(this.searchControl?.nativeElement, 'keyup')\r\n .pipe(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n map((event: any) => {\r\n return event.target.value;\r\n }),\r\n filter((res) => res.length >= MIN_CHAR || res.length === 0),\r\n debounceTime(this.searchInfo.autocomplete.debounceTime),\r\n distinctUntilChanged()\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((text: string) => {\r\n this.searchValue.emit(text);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Validates email based on defined validation patterns\r\n * @param {string} email\r\n * @return {boolean}\r\n * @memberof SearchComponent\r\n */\r\n isValidateEmail(email: string): boolean {\r\n const regularExpression = ValidationPatterns.email;\r\n return regularExpression.test(String(email).toLowerCase());\r\n }\r\n\r\n /**\r\n * Clears search response on change of form search control value\r\n * @memberof SearchComponent\r\n */\r\n onChange(): void {\r\n this.searchResponse = '';\r\n }\r\n\r\n /**\r\n * Clears search response and emits searched value on search input change\r\n * @memberof SearchComponent\r\n */\r\n onSearchInputChange(): void {\r\n if (this.group.get(this.config.controlName)?.value === '') {\r\n this.searchValue.emit(this.group.get(this.config.controlName)?.value);\r\n }\r\n if (this.searchTerm.length === 0) {\r\n this.searchResponse = '';\r\n }\r\n }\r\n\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof SearchComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-search-field\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-search-field__label-left'\r\n : 'ieeesa-search-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-search-field__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <mat-form-field appearance=\"outline\">\r\n <span class=\"ieeesa-search-field__content\">\r\n <input\r\n matInput\r\n autocomplete=\"off\"\r\n [type]=\"searchType\"\r\n [formControlName]=\"config.controlName\"\r\n [placeholder]=\"placeholderLabel\"\r\n (change)=\"onChange()\"\r\n (input)=\"onSearchInputChange()\"\r\n bindon-ngModel=\"searchTerm\"\r\n #searchControl\r\n />\r\n <i\r\n class=\"fa-solid fa-magnifying-glass ieeesa-search-field__search-icon\"\r\n ></i>\r\n </span>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n AfterViewInit,\r\n ViewChildren,\r\n QueryList,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MAT_SELECT_CONFIG, MatSelectModule } from '@angular/material/select';\r\nimport { SelectOption } from '../../models/select-option.model';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { SearchType } from '../../models/search.model';\r\nimport { SearchComponent } from '../../components/search/search.component';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport * as dropdownInfo from '../../assets/constants.json';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\n\r\n/**\r\n * Component implementation supports select type of form filed and select type is configurable to support single selection or multi-selection with multilevel or single level.\r\n * @export\r\n * @class SelectComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n selector: 'ieeesa-select',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SearchComponent,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n ],\r\n providers: [\r\n {\r\n provide: MAT_SELECT_CONFIG,\r\n useValue: { overlayPanelClass: 'ieeesa-select-overlay-pane' },\r\n },\r\n ],\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SelectComponent implements OnInit, AfterViewInit {\r\n @ViewChildren(SearchComponent)\r\n formFields!: QueryList<SearchComponent>;\r\n group!: FormGroup;\r\n config!: FieldConfig;\r\n arrowDirection = false;\r\n searchType = SearchType.AUTO;\r\n sortedOptions!: SelectOption[];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dropdownInfo: any = dropdownInfo;\r\n private _dropdownOptions!: SelectOption[];\r\n private _selectedOptions!: SelectOption | SelectOption[];\r\n private _isSortNeeded = true;\r\n /**\r\n * Takes isSortNeeded as input to check if the passed options are sorted or not.\r\n * @memberof SelectComponent\r\n */\r\n @Input()\r\n set isSortNeeded(value: boolean) {\r\n this._isSortNeeded = value;\r\n }\r\n get isSortNeeded(): boolean {\r\n return this._isSortNeeded;\r\n }\r\n /**\r\n * Sets the dropdown options for selection.\r\n * @memberof SelectComponent\r\n */\r\n @Input()\r\n set dropdownOptions(value: SelectOption[]) {\r\n this._dropdownOptions = value;\r\n }\r\n get dropdownOptions(): SelectOption[] {\r\n return this._dropdownOptions;\r\n }\r\n /**\r\n * Sets the selected option\r\n * @memberof SelectComponent\r\n */\r\n @Input()\r\n set selectedOptions(value: SelectOption | SelectOption[]) {\r\n if (Array.isArray(value)) {\r\n this._selectedOptions = this.arraySorting(value);\r\n } else {\r\n this._selectedOptions = value;\r\n }\r\n }\r\n get selectedOptions(): SelectOption | SelectOption[] {\r\n return this._selectedOptions;\r\n }\r\n @Input() formControlName = 'select';\r\n @Input() isMultiLevel = false;\r\n @Input() isLabelAlignedLeft = false;\r\n @Input() selectLabel = '';\r\n @Input() isMultiSelect = false;\r\n @Input() isDisabled = false;\r\n @Input() isSearch = false;\r\n @Input() placeholderText = this.dropdownInfo.dropdown.placeholderText;\r\n @Output() optionSelected = new EventEmitter<SelectOption>();\r\n @Output() optionSearched = new EventEmitter<string>();\r\n\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Initializes components instance properties from config if its defined otherwise creates form group and config.\r\n * @memberof SelectComponent\r\n */\r\n ngOnInit(): void {\r\n this.updateArrowDirection(false);\r\n this.group =\r\n this.group ?? this.formUtilityService.getFormGroup(this.formControlName);\r\n this.config =\r\n this.config ??\r\n this.formUtilityService.getFormFieldConfig(\r\n this.formControlName,\r\n FormControlType.SELECT\r\n );\r\n if (this.config) {\r\n this.isMultiSelect = this.config.isMultiSelect ?? false;\r\n this.dropdownOptions =\r\n this.config?.dropdownOptions ?? this.dropdownOptions;\r\n this.selectedOptions = this.config?.value;\r\n this.selectLabel = this.config?.label ?? '';\r\n this.placeholderText = this.config?.placeholder ?? this.placeholderText;\r\n this.isMultiSelect = this.config?.isMultiSelect ?? this.isMultiSelect;\r\n this.isDisabled = this.config?.disabled ?? this.isDisabled;\r\n this.searchType = this.config?.searchType ?? this.searchType;\r\n this.isSortNeeded = this.config?.isSortNeeded ?? this.isSortNeeded;\r\n }\r\n }\r\n\r\n /**\r\n * Emits selected option on changes the selected option.\r\n * @param {SelectOption} event\r\n * @memberof SelectComponent\r\n */\r\n onChange(event: SelectOption): void {\r\n this.optionSelected.emit(event);\r\n }\r\n\r\n /**\r\n * Sets the select dropdown arrow direction\r\n * @param {boolean} opened\r\n * @memberof SelectComponent\r\n */\r\n updateArrowDirection(opened: boolean): void {\r\n this.arrowDirection = opened;\r\n }\r\n\r\n /**\r\n * Takes the index and the current option as arguments and needs to return the unique identifier for this option.\r\n * @param {number} index\r\n * @param {SelectOption} option\r\n * @return {(number | string)}\r\n * @memberof SelectComponent\r\n */\r\n trackByFn(index: number, option: SelectOption): number | string {\r\n return option.id;\r\n }\r\n\r\n /**\r\n * Emits searched options on filtering options in select dropdown\r\n * @param {string} searchText\r\n * @memberof SelectComponent\r\n */\r\n onOptionSearch(searchText: string) {\r\n this.optionSearched.emit(searchText);\r\n }\r\n\r\n /**\r\n * Compares the two passed options\r\n * @param {any} option1\r\n * @param {any} option2\r\n * @return {boolean}\r\n * @memberof SelectComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n comparer(option1: any, option2: any): boolean {\r\n return option1 && option2 ? option1.id === option2.id : option1 === option2;\r\n }\r\n\r\n /**\r\n * Sorts the options\r\n * @memberof SelectComponent\r\n */\r\n ngAfterViewInit(): void {\r\n if (this.isSortNeeded && Array.isArray(this.dropdownOptions)) {\r\n this.dropdownOptions = this.arraySorting(this.dropdownOptions);\r\n }\r\n }\r\n\r\n /**\r\n * Sorts the options by using arraySorting method\r\n * @memberof SelectComponent\r\n */\r\n sortOptions(): void {\r\n if (this.isSortNeeded && Array.isArray(this.dropdownOptions)) {\r\n this.sortedOptions = this.arraySorting(this.dropdownOptions);\r\n } else {\r\n this.sortedOptions = this.dropdownOptions;\r\n }\r\n }\r\n\r\n /**\r\n * Utility method to sort dropdown options in ascending order.\r\n * @param {SelectOption[]} list\r\n * @return {SelectOption[]}\r\n * @memberof SelectComponent\r\n */\r\n arraySorting(list: SelectOption[]): SelectOption[] {\r\n const clonedValue = [...list];\r\n const sort = clonedValue.sort((a, b) => {\r\n if (a.name.toLowerCase() === b.name.toLowerCase()) return 0;\r\n if (a.name.toLowerCase() === 'all') return -1;\r\n if (b.name.toLowerCase() === 'all') return 1;\r\n if (a.name.toLowerCase() < b.name.toLowerCase()) return -1;\r\n if (a.name.toLowerCase() > b.name.toLowerCase()) return 1;\r\n return 0;\r\n });\r\n return sort;\r\n }\r\n}\r\n","<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-select-field\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n isLabelAlignedLeft\r\n ? 'ieeesa-select-field__label-left'\r\n : 'ieeesa-select-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-select-field__label\">{{ selectLabel }}</mat-label>\r\n <mat-form-field\r\n [ngClass]=\"\r\n arrowDirection\r\n ? 'ieeesa-select-field__arrow-up'\r\n : 'ieeesa-select-field__arrow-down'\r\n \"\r\n >\r\n <mat-select\r\n disableOptionCentering\r\n *ngIf=\"isMultiSelect\"\r\n (openedChange)=\"updateArrowDirection($event)\"\r\n (selectionChange)=\"onChange($event.value)\"\r\n [formControlName]=\"config.controlName\"\r\n [multiple]=\"isMultiSelect\"\r\n [disabled]=\"isDisabled\"\r\n [placeholder]=\"placeholderText\"\r\n [compareWith]=\"comparer\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isSearch\"\r\n [searchType]=\"searchType\"\r\n (searchValue)=\"onOptionSearch($event)\"\r\n ></ieeesa-search>\r\n <ng-container\r\n *ngIf=\"!isMultiLevel\"\r\n [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: dropdownOptions }\"\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"isMultiLevel\">\r\n <mat-optgroup\r\n *ngFor=\"let option of dropdownOptions; trackBy: trackByFn\"\r\n [label]=\"option.name\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: option.option_groups }\"\r\n >\r\n </ng-container>\r\n </mat-optgroup>\r\n </ng-container>\r\n <ng-template #dropdownOptionsTemplateRef let-options=\"data\">\r\n <mat-option\r\n *ngFor=\"let option of options; trackBy: trackByFn\"\r\n [value]=\"option\"\r\n >\r\n {{ option.name }}\r\n </mat-option>\r\n </ng-template>\r\n </mat-select>\r\n\r\n <mat-select\r\n disableOptionCentering\r\n *ngIf=\"!isMultiSelect\"\r\n [multiple]=\"isMultiSelect\"\r\n (openedChange)=\"updateArrowDirection($event)\"\r\n (selectionChange)=\"onChange($event.value)\"\r\n [formControlName]=\"config.controlName\"\r\n [disabled]=\"isDisabled\"\r\n [placeholder]=\"placeholderText\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isSearch\"\r\n [searchType]=\"searchType\"\r\n (searchValue)=\"onOptionSearch($event)\"\r\n ></ieeesa-search>\r\n <ng-container\r\n *ngIf=\"!isMultiLevel\"\r\n [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: dropdownOptions }\"\r\n >\r\n </ng-container>\r\n <ng-container *ngIf=\"isMultiLevel\">\r\n <mat-optgroup\r\n *ngFor=\"let option of dropdownOptions; trackBy: trackByFn\"\r\n [label]=\"option.name\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n [ngTemplateOutletContext]=\"{ data: option.option_groups }\"\r\n >\r\n </ng-container>\r\n </mat-optgroup>\r\n </ng-container>\r\n <ng-template #dropdownOptionsTemplateRef let-options=\"data\">\r\n <mat-option\r\n *ngFor=\"let option of options; trackBy: trackByFn\"\r\n [value]=\"option\"\r\n >\r\n {{ option.name }}\r\n </mat-option>\r\n </ng-template>\r\n </mat-select>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport * as constantsInfo from '../../assets/constants.json';\r\n\r\n@Component({\r\n selector: 'ieeesa-text-area',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormErrorComponent,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n ],\r\n templateUrl: './text-area.component.html',\r\n styleUrls: ['./text-area.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TextAreaComponent implements FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = constantsInfo;\r\n}\r\n","<div\r\n class=\"ieeesa-text-area-field\"\r\n [formGroup]=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-text-area-field__label-left'\r\n : 'ieeesa-text-area-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-text-area-field__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <mat-form-field appearance=\"fill\">\r\n <textarea\r\n name=\"config.name\"\r\n matInput\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [maxlength]=\"config.maxLength ?? constants.textarea.maxLengthDefault\"\r\n [readonly]=\"config.isReadonly\"\r\n class=\"ieeesa-text-area-field__content ieeesa-body-lg-18\"\r\n [ngClass]=\"\r\n config.isResize\r\n ? 'ieeesa-text-area-field__resize'\r\n : 'ieeesa-text-area-field__no-resize'\r\n \"\r\n >\r\n {{ config.value }}</textarea\r\n >\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","import {\r\n ComponentRef,\r\n Directive,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { InputComponent } from '../../components/input/input.component';\r\nimport { AutocompleteComponent } from '../../components/autocomplete/autocomplete.component';\r\nimport { CheckboxComponent } from '../../components/checkbox/checkbox.component';\r\nimport { DatePickerComponent } from '../../components/date-picker/date-picker.component';\r\nimport { RadioComponent } from '../../components/radio/radio.component';\r\nimport { SearchComponent } from '../../components/search/search.component';\r\nimport { SelectComponent } from '../../components/select/select.component';\r\nimport { TextAreaComponent } from '../../components/text-area/text-area.component';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\n\r\nconst components: { [type: string]: Type<FormField> } = {\r\n [FormControlType.INPUT]: InputComponent,\r\n [FormControlType.TEXT_AREA]: TextAreaComponent,\r\n [FormControlType.SELECT]: SelectComponent,\r\n [FormControlType.SEARCH]: SearchComponent,\r\n [FormControlType.DATE]: DatePickerComponent,\r\n [FormControlType.CHECKBOX]: CheckboxComponent,\r\n [FormControlType.RADIO]: RadioComponent,\r\n [FormControlType.AUTO_COMPLETE]: AutocompleteComponent,\r\n};\r\n\r\n/**\r\n * Provides the implementation of DynamicFormFieldDirective which hosts and creates the form fields components dynamically.\r\n * @export\r\n * @class DynamicFormFieldDirective\r\n * @implements {FormField}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Directive({\r\n selector: '[ieeesaDynamicFormField]',\r\n standalone: true,\r\n})\r\nexport class DynamicFormFieldDirective implements FormField, OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n private _config!: FieldConfig;\r\n private _group!: FormGroup;\r\n /**\r\n * Sets the form field configuration\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n @Input()\r\n set config(value: FieldConfig) {\r\n this._config = value;\r\n if (this.component) {\r\n this.loadComponent();\r\n }\r\n }\r\n get config(): FieldConfig {\r\n return this._config;\r\n }\r\n\r\n /**\r\n * Sets the form group\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n @Input()\r\n set group(value: FormGroup) {\r\n if (this.component?.instance) {\r\n this.component.instance.group = value;\r\n }\r\n this._group = value;\r\n }\r\n get group(): FormGroup {\r\n return this._group;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _submitResponse!: any;\r\n /**\r\n * Sets the submit response of form submit event\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n @Input()\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set submitResponse(value: any) {\r\n if (this.component?.instance) {\r\n this.component.instance.submitResponse = value;\r\n }\r\n this._submitResponse = value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n get submitResponse(): any {\r\n return this._submitResponse;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _searchResponse!: any;\r\n /**\r\n * Sets the form search response of form search apply.\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n @Input()\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set searchResponse(value: any) {\r\n if (this.component?.instance) {\r\n this.component.instance.searchResponse = value;\r\n }\r\n this._searchResponse = value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n get searchResponse(): any {\r\n return this._searchResponse;\r\n }\r\n\r\n @Output() formSearchApply = new EventEmitter<Event>();\r\n @Output() formDropdownSelected = new EventEmitter<Event>();\r\n @Output() formDateSelected = new EventEmitter<string>();\r\n @Output() formSelectedDateRange =new EventEmitter<{startDate: string, endDate:string}>();\r\n @Output() formSelectSearch = new EventEmitter<{\r\n searchEvent: Event;\r\n controlName: string;\r\n }>();\r\n @Output() formAutoCompleteSearch = new EventEmitter<Event>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<Event>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n component!: ComponentRef<any>;\r\n\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(public container: ViewContainerRef) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to call loadComponents method.\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n ngOnInit(): void {\r\n this.loadComponent();\r\n }\r\n\r\n /**\r\n * Creates the component dynamically and initializes the instance properties of created component, also handles the created component events.\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n loadComponent(): void {\r\n if (!components[this.config?.type]) {\r\n const supportedTypes = Object.keys(components).join(', ');\r\n throw new Error(\r\n `Trying to use an unsupported type (${this.config.type}).\r\n Supported types: ${supportedTypes}`\r\n );\r\n }\r\n this.component = this.container.createComponent(\r\n components[this.config?.type]\r\n );\r\n if (this.component?.instance) {\r\n this.component.instance.config = this.config;\r\n this.component.instance.group = this.group;\r\n this.component.instance.submitResponse = this.submitResponse;\r\n this.component.instance.searchResponse = this.searchResponse;\r\n\r\n if (this.config.type === FormControlType.SEARCH) {\r\n this.component.instance.searchValue\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.formSearchApply.emit(event);\r\n });\r\n } else if (this.config.type === FormControlType.SELECT) {\r\n this.component.instance.optionSelected\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.formDropdownSelected.emit(event);\r\n });\r\n this.component.instance.optionSearched\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.formSelectSearch.emit({\r\n searchEvent: event,\r\n controlName: this.config.controlName,\r\n });\r\n });\r\n } else if (this.config.type === FormControlType.DATE) {\r\n this.component.instance.selectedDate\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: string) => {\r\n this.formDateSelected.emit(event);\r\n });\r\n this.component.instance.selectedDateRange\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: {startDate: string, endDate: string}) => {\r\n this.formSelectedDateRange.emit(event);\r\n });\r\n } else if (this.config.type === FormControlType.AUTO_COMPLETE) {\r\n this.component.instance.autoCompleteSearchValue\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.formAutoCompleteSearch.emit(event);\r\n });\r\n this.component.instance.autoCompleteOptionSelected\r\n ?.pipe(takeUntil(this.destroy$))\r\n ?.subscribe((event: Event) => {\r\n this.autoCompleteOptionSelected.emit(event);\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof DynamicFormFieldDirective\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FormModel } from '../../models/form.model';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormGrid } from '../../models/form-grid.model';\r\nimport { DynamicFormFieldDirective } from '../../directives/dynamic-form-field/dynamic-form-field.directive';\r\n\r\n/**\r\n * Creates a reactive form dynamically based on the passed form field configuration and handles the form events.\r\n * @export\r\n * @class DynamicFormComponent\r\n * @implements {OnInit}\r\n * @implements {AfterContentInit}\r\n */\r\n@Component({\r\n exportAs: 'dynamicForm',\r\n selector: 'ieeesa-dynamic-form',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n DynamicFormFieldDirective,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrls: ['./dynamic-form.component.scss'],\r\n})\r\nexport class DynamicFormComponent implements OnInit, AfterContentInit {\r\n @ViewChildren(DynamicFormFieldDirective)\r\n formFields!: QueryList<DynamicFormFieldDirective>;\r\n private _formGroups!: FormModel;\r\n /**\r\n * FormGroups passed an an input and which contains configuration information of every form fields.\r\n * @memberof DynamicFormComponent\r\n */\r\n @Input()\r\n set formGroups(value: FormModel) {\r\n this._formGroups = value;\r\n this.createFormGroupArray();\r\n }\r\n get formGroups(): FormModel {\r\n return this._formGroups;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _submitResponse!: any;\r\n /**\r\n * Sets submit response on form submit\r\n * @memberof DynamicFormComponent\r\n */\r\n @Input()\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set submitResponse(value: any) {\r\n this._submitResponse = value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n get submitResponse(): any {\r\n return this._submitResponse;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _searchResponse!: any;\r\n /**\r\n * Sets search response on form search event\r\n * @memberof DynamicFormComponent\r\n */\r\n @Input()\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set searchResponse(value: any) {\r\n this._searchResponse = value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n get searchResponse(): any {\r\n return this._searchResponse;\r\n }\r\n @Input() colWidth!: FormGrid;\r\n @Input() isLegendVisible!: boolean;\r\n @Input() rightButtonLabel!: string;\r\n @Input() leftButtonLabel!: string;\r\n @Input() isSubmitButtonDisabled = false;\r\n @Input() isLeftButtonDisabled = false;\r\n @Input() isLeftButtonNeeded = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formSubmit: EventEmitter<any> = new EventEmitter<any>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formChange: EventEmitter<any> = new EventEmitter<any>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formInput: EventEmitter<any> = new EventEmitter<any>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formLeftButtonClicked: EventEmitter<any> = new EventEmitter<any>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() formSearchApply: EventEmitter<any> = new EventEmitter<Event>();\r\n @Output() formGroupsReference = new EventEmitter<FormGroup[]>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() dropdownChange: EventEmitter<any> = new EventEmitter<Event>();\r\n @Output() formDateSelected = new EventEmitter<string>();\r\n @Output() formSelectSearch = new EventEmitter<{\r\n searchEvent: Event;\r\n controlName: string;\r\n }>();\r\n @Output() formControlChange = new EventEmitter<Event>();\r\n @Output() formAutoCompleteSearch: EventEmitter<Event> =\r\n new EventEmitter<Event>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<FormGroup[]>();\r\n @Output() formAfterContentInit = new EventEmitter<FormGroup[]>();\r\n @Output() formSelectedDateRange = new EventEmitter<{\r\n startDate: string;\r\n endDate: string;\r\n }>();\r\n form!: FormGroup;\r\n formGroupArray: FormGroup[] = [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n formControlArray: any[] = [];\r\n legendsArray: string[] = [];\r\n\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(private fb: FormBuilder) {}\r\n\r\n /**\r\n * Implementation of ngOnInit lifecycle hook method to create form group\r\n * @memberof DynamicFormComponent\r\n */\r\n ngOnInit(): void {\r\n this.createFormGroupArray();\r\n }\r\n\r\n /**\r\n * Emit generated form reference on ngAfterContentInit lifecycle hook.\r\n * @memberof DynamicFormComponent\r\n */\r\n ngAfterContentInit(): void {\r\n this.formAfterContentInit.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Creates form group on the basis of formGroups configuration input\r\n * @return {void}\r\n * @memberof DynamicFormComponent\r\n */\r\n createFormGroupArray(): void {\r\n this.formGroupArray = [];\r\n this.formControlArray = [];\r\n this.legendsArray = [];\r\n if (!this.formGroups) {\r\n return;\r\n }\r\n this.formGroups?.formGroup?.forEach((element) => {\r\n const controls = element.controls.filter(\r\n (control) => control.type !== 'button'\r\n );\r\n this.formGroupArray.push(this.createGroup(controls));\r\n this.formControlArray.push(controls);\r\n this.legendsArray.push(element.legend);\r\n });\r\n this.form = this.fb.group({\r\n children: this.formGroupArray,\r\n });\r\n\r\n this.formGroupsReference.emit(this.formGroupArray);\r\n }\r\n /**\r\n * Creates form group using form builder\r\n * @param {any[]} controls\r\n * @return {FormGroup}\r\n * @memberof DynamicFormComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n createGroup(controls: any[]): FormGroup {\r\n const group = this.fb.group({});\r\n controls.forEach((control: FieldConfig) =>\r\n group.addControl(control.controlName, this.createControl(control))\r\n );\r\n return group;\r\n }\r\n\r\n /**\r\n * Creates form control based on form field configuration\r\n * @param {FieldConfig} control\r\n * @return {FormControl}\r\n * @memberof DynamicFormComponent\r\n */\r\n createControl(control: FieldConfig): FormControl {\r\n const { disabled, validation, value } = control;\r\n return this.fb.control({ disabled, value }, validation);\r\n }\r\n\r\n /**\r\n * Emits formGroupArray\r\n * @memberof DynamicFormComponent\r\n */\r\n onFormSubmit(): void {\r\n this.formSubmit.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Emits formGroupArray\r\n * @memberof DynamicFormComponent\r\n */\r\n onLeftButtonClicked(): void {\r\n this.formLeftButtonClicked.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Emits formGroupArray\r\n * @memberof DynamicFormComponent\r\n */\r\n onFormChange(): void {\r\n this.formChange.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Handles form field select type drop down selection event\r\n * @memberof DynamicFormComponent\r\n */\r\n onDropdownChange(): void {\r\n this.dropdownChange.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Handles form input change event\r\n * @param {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n formInputChange(event: Event): void {\r\n this.formControlChange.emit(event);\r\n this.formInput.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Handles form field search apply event\r\n * @param {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onSearchApply(event: Event): void {\r\n this.formSearchApply.emit(event);\r\n }\r\n\r\n /**\r\n * Handles search event inside form field select\r\n * @param {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onSelectSearch(event: { searchEvent: Event; controlName: string }): void {\r\n this.formSelectSearch.emit(event);\r\n }\r\n\r\n /**\r\n * Takes the index and the formGroup as arguments and needs to return the unique identifier for this formGroup.\r\n * @param {number} index\r\n * @param {FormGroup} formGroup\r\n * @memberof DynamicFormComponent\r\n */\r\n trackByFormGroup(index: number, formGroup: FormGroup) {\r\n return formGroup.controls;\r\n }\r\n\r\n /**\r\n * Handles form date selection event\r\n * @param {string[]} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onDateSelected(event: string): void {\r\n this.formDateSelected.emit(event);\r\n }\r\n\r\n /**\r\n * Emits selected form date range\r\n * @param {{startDate: string, endDate: string}} dateRange\r\n * @memberof DynamicFormComponent\r\n */\r\n onSelectedDateRange(dateRange: { startDate: string; endDate: string }) {\r\n this.formSelectedDateRange.emit(dateRange);\r\n }\r\n\r\n /**\r\n * Handles form field auto complete search event\r\n * @param {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onAutoCompleteSearch(event: Event): void {\r\n this.formAutoCompleteSearch.emit(event);\r\n }\r\n\r\n /**\r\n * Handles form field auto complete option selection event\r\n * @memberof DynamicFormComponent\r\n */\r\n onAutoCompleteOptionSelected(): void {\r\n this.autoCompleteOptionSelected.emit(this.formGroupArray);\r\n }\r\n\r\n /**\r\n * Converts passed control name in hyphenated css class name\r\n * @param {string} className\r\n * @return {string}\r\n * @memberof DynamicFormComponent\r\n */\r\n getRowClassName(className: string): string {\r\n return className\r\n .replace(/([A-Z])/g, ' $1')\r\n .toLowerCase()\r\n .split(' ')\r\n .join('-');\r\n }\r\n}\r\n","<form\r\n class=\"ieeesa-dynamic-form\"\r\n [formGroup]=\"form\"\r\n (change)=\"onFormChange()\"\r\n (ngSubmit)=\"onFormSubmit()\"\r\n (input)=\"formInputChange($event)\"\r\n>\r\n <fieldset\r\n class=\"ieeesa-dynamic-form__fieldset p-2\"\r\n *ngFor=\"\r\n let formGrp of formGroupArray;\r\n let i = index;\r\n trackBy: trackByFormGroup\r\n \"\r\n >\r\n <legend class=\"float-none w-auto p-2\" *ngIf=\"isLegendVisible\">\r\n {{ legendsArray[i] }}:\r\n </legend>\r\n <div class=\"row\">\r\n <div\r\n class=\"col-{{ colWidth.xs }} col-sm-{{ colWidth.sm }} col-md-{{\r\n colWidth.md\r\n }} col-lg-{{ colWidth.lg }} col-xl-{{ colWidth.xl }}\r\n ieeesa-dynamic-form__form-field\"\r\n [ngClass]=\"getRowClassName(formControlArray[i][j].controlName)\"\r\n *ngFor=\"let control of formControlArray[i]; let j = index\"\r\n >\r\n <ng-template\r\n ieeesaDynamicFormField\r\n [config]=\"formControlArray[i][j]\"\r\n [group]=\"formGrp\"\r\n [submitResponse]=\"submitResponse\"\r\n [searchResponse]=\"searchResponse\"\r\n (formSearchApply)=\"onSearchApply($event)\"\r\n (formDropdownSelected)=\"onFormChange(); onDropdownChange()\"\r\n (formDateSelected)=\"onDateSelected($event)\"\r\n (formSelectedDateRange)=\"onSelectedDateRange($event)\"\r\n (formSelectSearch)=\"onSelectSearch($event)\"\r\n (formAutoCompleteSearch)=\"onAutoCompleteSearch($event)\"\r\n (autoCompleteOptionSelected)=\"onAutoCompleteOptionSelected()\"\r\n >\r\n </ng-template>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <div class=\"row\">\r\n <div class=\"col-12 ieeesa-dynamic-form__actions\">\r\n <button\r\n type=\"submit\"\r\n mat-button\r\n class=\"mat-primary-button ieeesa-dynamic-form__actions--right-btn\"\r\n [disabled]=\"isSubmitButtonDisabled\"\r\n >\r\n {{ rightButtonLabel }}\r\n </button>\r\n <button\r\n *ngIf=\"isLeftButtonNeeded\"\r\n type=\"button\"\r\n mat-button\r\n class=\"mat-secondary-button ieeesa-dynamic-form__actions--left-btn\"\r\n (click)=\"onLeftButtonClicked()\"\r\n [disabled]=\"isLeftButtonDisabled\"\r\n >\r\n {{ leftButtonLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n/**\r\n * The NotificationComponent displays a notification with a heading, title, content, and an optional button.\r\n * Component can be reused in page not found, access denied, session expired notification, logged out pages.\r\n * @class NotificationComponent\r\n */\r\n@Component({\r\n selector: 'ieeesa-notification',\r\n standalone: true,\r\n imports: [CommonModule, MatIconModule, MatButtonModule],\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.scss'],\r\n})\r\nexport class NotificationComponent {\r\n @Input() heading!: string;\r\n @Input() title!: string;\r\n @Input() content!: string;\r\n @Input() buttonLabel!: string;\r\n @Input() buttonIcon = true;\r\n @Output() notify = new EventEmitter();\r\n\r\n /**\r\n * Emits the notify event on clicking notify button.\r\n */\r\n onClick() {\r\n this.notify.emit();\r\n }\r\n}\r\n","<div class=\"ieeesa-notification flex-align-center row\">\r\n <div class=\"ieeesa-notification__body col-md-4 col-lg-4 p-4\">\r\n <h1\r\n class=\"ieeesa-notification__heading ieeesa-display-lg-57 text-capitalize\"\r\n *ngIf=\"heading\"\r\n >\r\n {{ heading }}\r\n </h1>\r\n <p class=\"ieeesa-notification__title ieeesa-title-lg-bold-24\">\r\n {{ title }}\r\n </p>\r\n <p class=\"ieeesa-notification__message ieeesa-title-md-18\">{{ content }}</p>\r\n <button\r\n mat-button\r\n color=\"primary\"\r\n class=\"ieeesa-notification__button ieeesa-label-lg-bold-16 mat-primary-button\"\r\n (click)=\"onClick()\"\r\n >\r\n <i *ngIf=\"buttonIcon\" class=\"fa-solid fa-arrow-left\"></i>\r\n {{ buttonLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { FormUtilityService } from './services/form-utility.service';\r\nimport { DatepickerService } from './services/datepicker.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: [],\r\n providers: [DatepickerService, FormUtilityService],\r\n})\r\nexport class PresentationModule {}\r\n","/*\r\n * Public API Surface of presentation\r\n */\r\nexport * from './lib/components/dynamic-form/dynamic-form.component';\r\nexport * from './lib/directives/dynamic-form-field/dynamic-form-field.directive';\r\nexport * from './lib/components/form-error/form-error.component';\r\nexport * from './lib/components/notification/notification.component';\r\nexport * from './lib/components/input/input.component';\r\nexport * from './lib/components/text-area/text-area.component';\r\nexport * from './lib/components/radio/radio.component';\r\nexport * from './lib/components/checkbox/checkbox.component';\r\nexport * from './lib/components/autocomplete/autocomplete.component';\r\nexport * from './lib/components/search/search.component';\r\nexport * from './lib/components/date-picker/date-picker.component';\r\nexport * from './lib/components/date-picker-header/date-picker-header.component';\r\nexport * from './lib/components/select/select.component';\r\n\r\nexport * from './lib/directives/dynamic-form-field/dynamic-form-field.directive';\r\n\r\nexport * from './lib/models/field-config.model';\r\nexport * from './lib/models/form-field.model';\r\nexport * from './lib/models/search.model';\r\nexport * from './lib/models/select-option.model';\r\nexport * from './lib/models/checkbox-option.model';\r\nexport * from './lib/models/autocomplete-option.model';\r\nexport * from './lib/models/calendar.model';\r\nexport * from './lib/models/search.model';\r\nexport * from './lib/models/confirmation-modal-data.model';\r\nexport * from './lib/models/date-picker.model';\r\nexport * from './lib/models/footer-config.model';\r\nexport * from './lib/models/form-control-types.model';\r\nexport * from './lib/models/form-grid.model';\r\nexport * from './lib/models/form.model';\r\nexport * from './lib/models/header-config.model';\r\nexport * from './lib/models/navigation-menu.model';\r\nexport * from './lib/models/toggle-button.model';\r\n\r\nexport * from './lib/services/form-utility.service';\r\nexport * from './lib/services/datepicker.service';\r\nexport * from './lib/services/form-utility.service';\r\nexport * from './lib/services/datepicker.service';\r\n\r\nexport * from './lib/presentation.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","buttonActionsInfo","i2","i3","autocompleteConstInfo","i1.FormUtilityService","i4","i5","i6","i7","moment","DateFormats","i2.DatepickerService","i3.FormUtilityService","searchInfo","dropdownInfo"],"mappings":"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"}