UNPKG

@obliczeniowo/elementary

Version:
1 lines 28.7 kB
{"version":3,"file":"obliczeniowo-elementary-dropdown-multi-select.mjs","sources":["../../../../projects/components/dropdown-multi-select/components/single-select-item/single-select-item.component.ts","../../../../projects/components/dropdown-multi-select/components/single-select-item/single-select-item.component.html","../../../../projects/components/dropdown-multi-select/components/dropdown-multi-select/dropdown-multi-select.component.ts","../../../../projects/components/dropdown-multi-select/components/dropdown-multi-select/dropdown-multi-select.component.html","../../../../projects/components/dropdown-multi-select/dropdown-multi-select.module.ts","../../../../projects/components/dropdown-multi-select/validators/multi-select-validator.ts","../../../../projects/components/dropdown-multi-select/obliczeniowo-elementary-dropdown-multi-select.ts"],"sourcesContent":["import { Component, EventEmitter, input, Output, TemplateRef } from '@angular/core';\r\n\r\nexport interface DropdownMultiSelectItem<T> {\r\n id: string | number;\r\n text: string;\r\n selected?: boolean;\r\n templateData?: T;\r\n}\r\n\r\n@Component({\r\n selector: 'obl-single-select-item',\r\n templateUrl: './single-select-item.component.html',\r\n styleUrls: ['./single-select-item.component.scss'],\r\n standalone: false\r\n})\r\nexport class SingleSelectItemComponent {\r\n item = input.required<DropdownMultiSelectItem<any>>();\r\n\r\n templateSuffix = input<TemplateRef<any>>();\r\n\r\n @Output() remove = new EventEmitter<void>();\r\n}\r\n","@if (item()) {\r\n <div [class.template]=\"templateSuffix()\">\r\n {{ item().text }}\r\n </div>\r\n <button oblButton icon=\"cancel\" (click)=\"remove.emit()\"></button>\r\n @if (templateSuffix()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"templateSuffix()!; context: { $implicit: item() }\"\r\n ></ng-container>\r\n }\r\n}","/* eslint-disable @typescript-eslint/brace-style */\r\n\r\nimport { DragBarComponent } from '@obliczeniowo/elementary/dropdown-select';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n input,\r\n Input,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n effect\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\n\r\nimport { Animations } from '@obliczeniowo/elementary/animations';\r\nimport {\r\n AbstractSearchDomain,\r\n ClickDataEvent,\r\n DefaultSearchDomain,\r\n} from '@obliczeniowo/elementary/classes';\r\n\r\nimport { DropdownMultiSelectItem } from '../single-select-item/single-select-item.component';\r\nimport { Subscription, debounceTime } from 'rxjs';\r\nimport { InputWrappersDefaultSettingsService } from '@obliczeniowo/elementary/input';\r\n\r\n@Component({\r\n selector: 'obl-dropdown-multi-select',\r\n templateUrl: './dropdown-multi-select.component.html',\r\n styleUrls: ['./dropdown-multi-select.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: DropdownMultiSelectComponent,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: DropdownMultiSelectComponent,\r\n },\r\n ],\r\n animations: [Animations.rotate180deg],\r\n standalone: false\r\n})\r\nexport class DropdownMultiSelectComponent\r\n implements OnInit, ControlValueAccessor, Validator\r\n{\r\n touchedDragBar = false;\r\n\r\n @Input()\r\n value: (number | string)[] = [];\r\n\r\n label = input<string>();\r\n\r\n @Input()\r\n items: DropdownMultiSelectItem<any>[] = [];\r\n\r\n placeholder = input<string>();\r\n\r\n templateSuffix = input<TemplateRef<any>>();\r\n\r\n /** Define if search control should shows up */\r\n @Input() search = false;\r\n\r\n /**\r\n * Enable type text animation for label\r\n */\r\n @Input() labelAnimation = false;\r\n\r\n @Input()\r\n @HostBinding('class.disabled')\r\n disabled = false;\r\n\r\n wrap = input<boolean>(false);\r\n\r\n regExp = input<{ on?: boolean }>();\r\n\r\n /**\r\n * Control the select items data flow.\r\n *\r\n * If you want to override this one for getting data from BE source for example just create\r\n * own class that extends AbstractSearchModel and do what you need to do to filter out items\r\n * list\r\n */\r\n @Input()\r\n model: AbstractSearchDomain<DropdownMultiSelectItem<any>> =\r\n new DefaultSearchDomain<DropdownMultiSelectItem<any>>([]);\r\n\r\n @HostBinding('class.error') get error(): ValidationErrors | null {\r\n return (\r\n (this.abstractControl &&\r\n (!this.abstractControl.pristine || this.abstractControl.touched) &&\r\n this.abstractControl.errors) ||\r\n null\r\n );\r\n }\r\n\r\n @Output()\r\n changed: EventEmitter<DropdownMultiSelectItem<any>[]> = new EventEmitter<\r\n DropdownMultiSelectItem<any>[]\r\n >();\r\n\r\n @Output() itemClicked = new EventEmitter<\r\n ClickDataEvent<DropdownMultiSelectItem<any>>\r\n >();\r\n\r\n @Output() regChanged = new EventEmitter<boolean>();\r\n\r\n /** search control */\r\n searchControl: FormControl = new FormControl('');\r\n\r\n protected abstractControl: AbstractControl | undefined;\r\n\r\n protected subscription: Subscription;\r\n\r\n selected: DropdownMultiSelectItem<any>[] = [];\r\n\r\n isOpen = false;\r\n\r\n onChange = (value: (string | number)[]) => {};\r\n\r\n onTouched = () => {};\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef<HTMLElement>,\r\n private readonly settings: InputWrappersDefaultSettingsService\r\n ) {\r\n this.labelAnimation = this.settings.labelAnimation.select;\r\n this.subscription = this.searchControl.valueChanges\r\n .pipe(debounceTime(500))\r\n .subscribe((value: string) => {\r\n this.model.search(value);\r\n });\r\n effect(() => {\r\n this.model.regExpOn = this.regExp()?.on || false;\r\n this.model.search(this.searchControl.getRawValue() as string);\r\n })\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if ((changes.value && this.items) || (changes.items && this.value)) {\r\n this.selected = this.items.filter((item) => {\r\n item.selected = this.value.includes(item.id);\r\n return item.selected;\r\n });\r\n }\r\n if (changes.items) {\r\n this.model.items = this.items;\r\n this.model.filtered = this.items;\r\n }\r\n if (changes.search && !changes.search.firstChange) {\r\n if (!this.search) {\r\n this.searchControl.setValue('');\r\n this.model.search(this.searchControl.getRawValue() as string);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n getWidth(): number {\r\n return this.elementRef.nativeElement.clientWidth;\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.abstractControl = control;\r\n return null;\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n toggleReg() {\r\n this.model.regExpOn = !this.model.regExpOn;\r\n this.model.search(this.searchControl.getRawValue() as string);\r\n this.regChanged.emit(this.model.regExpOn);\r\n }\r\n\r\n writeValue(ids: (number | string)[] | { value: (number | string)[] }): void {\r\n (Array.isArray(ids) ? ids : ids.value).forEach((id) => {\r\n const selected = this.items.find((item) => item.id === id);\r\n if (selected) {\r\n selected.selected = true;\r\n this.selected.push(selected);\r\n }\r\n });\r\n this.onChange(this.selected.map((i) => i.id));\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n close(touched = this.touchedDragBar): void {\r\n if (!touched) {\r\n this.isOpen = false;\r\n this.touchedDragBar = false;\r\n } else {\r\n this.touchedDragBar = touched;\r\n }\r\n }\r\n\r\n open(): void {\r\n if (!this.isOpen) {\r\n this.isOpen = true;\r\n this.touchedDragBar = false;\r\n }\r\n }\r\n\r\n toggle(event: any, touched = this.touchedDragBar): void {\r\n if (touched) {\r\n return;\r\n }\r\n event.stopPropagation();\r\n this.touchedDragBar = false;\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n onSelect(\r\n item: DropdownMultiSelectItem<any>,\r\n dragBar: DragBarComponent\r\n ): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n item.selected = !item.selected;\r\n if (item.selected) {\r\n this.selected = [...this.selected, item];\r\n } else {\r\n this.selected = this.selected.filter((i) => i.id !== item.id);\r\n }\r\n this.onChange(this.selected.map((i) => i.id));\r\n this.touchedDragBar = dragBar.touchedDragBar;\r\n this.changed.emit([...this.selected]);\r\n }\r\n\r\n onTouchedDragBar(touched: boolean, element: any): void {\r\n this.touchedDragBar = touched;\r\n element.parentElement.style.width = 0;\r\n }\r\n\r\n onItemClicked(event: MouseEvent, item: DropdownMultiSelectItem<any>) {\r\n this.itemClicked.emit({ event, data: item });\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n\r\n remove(item: DropdownMultiSelectItem<any>) {\r\n this.selected = this.selected.filter((el) => el.id !== item.id);\r\n item.selected = false;\r\n this.changed.emit(this.selected);\r\n }\r\n}\r\n","<fieldset\r\n class=\"select-content\"\r\n [ngClass]=\"{ legend: label() }\"\r\n cdkOverlayOrigin\r\n #dropDown=\"cdkOverlayOrigin\"\r\n #parent\r\n>\r\n @if (label()) {\r\n <legend>\r\n @if (labelAnimation) {\r\n <obl-type-text [text]=\"label() || ''\" [interval]=\"40\"></obl-type-text>\r\n } @else {\r\n {{ label() }}\r\n }\r\n </legend>\r\n }\r\n <div class=\"selected\" [class.wrap]=\"wrap()\">\r\n @for (item of selected | oblTake : 50; track item.id) {\r\n <obl-single-select-item\r\n [item]=\"item\"\r\n [templateSuffix]=\"templateSuffix()\"\r\n (remove)=\"remove(item)\"\r\n (click)=\"onItemClicked($event, item)\"\r\n ></obl-single-select-item>\r\n }\r\n\r\n @if (selected.length > 50) {\r\n <span>... +{{ selected.length - 50 }}</span>\r\n } @else if (selected.length === 0) {\r\n <span>{{ placeholder() }}</span>\r\n }\r\n\r\n </div>\r\n <div class=\"suffix\" #suffix>\r\n <div class=\"count\">\r\n <sup>{{ selected.length | oblUnits }}</sup>\r\n </div>\r\n <obl-expand-button\r\n [isOpen]=\"isOpen\"\r\n (click)=\"toggle($event, false)\"\r\n ></obl-expand-button>\r\n </div>\r\n</fieldset>\r\n\r\n<ng-template\r\n #dropdownTmpl\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"dropDown\"\r\n [cdkConnectedOverlayOpen]=\"isOpen\"\r\n (overlayOutsideClick)=\"toggle($event)\"\r\n>\r\n <div class=\"dropdown-list\" [style.min-width.px]=\"getWidth() - 5\" #list cdkDrag>\r\n <obl-drag-bar\r\n (onTouched)=\"onTouchedDragBar($event, list)\"\r\n (onClose)=\"close(false)\"\r\n cdkDragHandle\r\n #dragBar\r\n ></obl-drag-bar>\r\n @if (search) {\r\n <obl-input-wrapper\r\n [display]=\"'underlined'\"\r\n [cancellable]=\"true\"\r\n >\r\n <input oblInput type=\"search\" [formControl]=\"searchControl\" />\r\n @if (regExp()) {\r\n <button\r\n oblButton\r\n [selected]=\"model.regExpOn\"\r\n (click)=\"toggleReg()\"\r\n >\r\n Reg\r\n </button>\r\n }\r\n </obl-input-wrapper>\r\n }\r\n <div class=\"list\">\r\n @for (item of model.filtered; track item.id) {\r\n <div class=\"item-container\" (click)=\"onSelect(item, dragBar)\">\r\n <obl-checkbox\r\n [value]=\"!!item.selected\"\r\n (changed)=\"(item.selected)\"\r\n [disabled]=\"disabled\"\r\n >{{ item.text }}</obl-checkbox\r\n >\r\n @if (templateSuffix()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"templateSuffix()!; context: { $implicit: item }\"\r\n ></ng-container>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\nimport { InputModule } from '@obliczeniowo/elementary/input';\r\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\r\nimport { CheckboxModule } from '@obliczeniowo/elementary/checkbox';\r\nimport { DropdownSelectModule } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { UnitsPipe } from '@obliczeniowo/elementary/numeric-pipes';\r\nimport { TakePipe } from '@obliczeniowo/elementary/array-pipes';\r\nimport { ToAsyncPipe } from '@obliczeniowo/elementary/async-pipes';\r\nimport { AnimationsModule } from '@obliczeniowo/elementary/animations';\r\n\r\nimport { SingleSelectItemComponent } from './components/single-select-item/single-select-item.component';\r\nimport { DropdownMultiSelectComponent } from './components/dropdown-multi-select/dropdown-multi-select.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n DropdownMultiSelectComponent,\r\n SingleSelectItemComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n OverlayModule,\r\n DropdownSelectModule,\r\n CheckboxModule,\r\n DragDropModule,\r\n ButtonsModule,\r\n InputModule,\r\n ReactiveFormsModule,\r\n UnitsPipe,\r\n TakePipe,\r\n ToAsyncPipe,\r\n AnimationsModule\r\n ],\r\n exports: [\r\n DropdownMultiSelectComponent,\r\n SingleSelectItemComponent\r\n ]\r\n})\r\nexport class DropdownMultiSelectModule { }\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport class MultiSelectValidators {\r\n static min(min: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const arr = control.value && (Array.isArray(control.value) && control.value || control.value.value);\r\n return arr?.length < min ? { min: true } : null;\r\n };\r\n }\r\n\r\n static max(max: number): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const arr = control.value && (Array.isArray(control.value) && control.value || control.value.value);\r\n return arr?.length > max ? { max: true } : null;\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i10.SingleSelectItemComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;MAea,yBAAyB,CAAA;AACpC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAgC;IAErD,cAAc,GAAG,KAAK,EAAoB;AAEhC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;uGALhC,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,qYCftC,yVAUC,EAAA,MAAA,EAAA,CAAA,y1DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDKY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,yVAAA,EAAA,MAAA,EAAA,CAAA,y1DAAA,CAAA,EAAA;8BAOT,MAAM,EAAA,CAAA;sBAAf;;;MEoCU,4BAA4B,CAAA;AAgFpB,IAAA,UAAA;AACA,IAAA,QAAA;IA9EnB,cAAc,GAAG,KAAK;IAGtB,KAAK,GAAwB,EAAE;IAE/B,KAAK,GAAG,KAAK,EAAU;IAGvB,KAAK,GAAmC,EAAE;IAE1C,WAAW,GAAG,KAAK,EAAU;IAE7B,cAAc,GAAG,KAAK,EAAoB;;IAGjC,MAAM,GAAG,KAAK;AAEvB;;AAEG;IACM,cAAc,GAAG,KAAK;IAI/B,QAAQ,GAAG,KAAK;AAEhB,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,CAAC;IAE5B,MAAM,GAAG,KAAK,EAAoB;AAElC;;;;;;AAMG;AAEH,IAAA,KAAK,GACH,IAAI,mBAAmB,CAA+B,EAAE,CAAC;AAE3D,IAAA,IAAgC,KAAK,GAAA;AACnC,QAAA,QACE,CAAC,IAAI,CAAC,eAAe;AACnB,aAAC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AAChE,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM;AAC7B,YAAA,IAAI;;AAKR,IAAA,OAAO,GAAiD,IAAI,YAAY,EAErE;AAEO,IAAA,WAAW,GAAG,IAAI,YAAY,EAErC;AAEO,IAAA,UAAU,GAAG,IAAI,YAAY,EAAW;;AAGlD,IAAA,aAAa,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC;AAEtC,IAAA,eAAe;AAEf,IAAA,YAAY;IAEtB,QAAQ,GAAmC,EAAE;IAE7C,MAAM,GAAG,KAAK;AAEd,IAAA,QAAQ,GAAG,CAAC,KAA0B,KAAI,GAAG;AAE7C,IAAA,SAAS,GAAG,MAAK,GAAG;IAEpB,WACmB,CAAA,UAAmC,EACnC,QAA6C,EAAA;QAD7C,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAEzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM;AACzD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;AACpC,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACtB,aAAA,SAAS,CAAC,CAAC,KAAa,KAAI;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1B,SAAC,CAAC;QACJ,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,KAAK;AAChD,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAY,CAAC;AAC/D,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACzC,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,QAAQ;AACtB,aAAC,CAAC;;AAEJ,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;YAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK;;QAElC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC/B,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAY,CAAC;;;;IAKnE,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;;IAGjC,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;;AAGlD,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO;AAC9B,QAAA,OAAO,IAAI;;AAGb,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;IAGpB,SAAS,GAAA;QACP,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAY,CAAC;QAC7D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;;AAG3C,IAAA,UAAU,CAAC,GAAyD,EAAA;QAClE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAI;AACpD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YAC1D,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAQ,CAAC,QAAQ,GAAG,IAAI;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAEhC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;AAG/C,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B,IAAA,iBAAiB,CAAC,SAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;AAG5B,IAAA,QAAQ;AAER,IAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAA;QACjC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;aACtB;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO;;;IAIjC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;;AAI/B,IAAA,MAAM,CAAC,KAAU,EAAE,OAAO,GAAG,IAAI,CAAC,cAAc,EAAA;QAC9C,IAAI,OAAO,EAAE;YACX;;QAEF,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;;IAG5B,QAAQ,CACN,IAAkC,EAClC,OAAyB,EAAA;AAEzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;;aACnC;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;;AAE/D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;;IAGvC,gBAAgB,CAAC,OAAgB,EAAE,OAAY,EAAA;AAC7C,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;QAC7B,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;;IAGvC,aAAa,CAAC,KAAiB,EAAE,IAAkC,EAAA;AACjE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;AAG9C,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B,IAAA,MAAM,CAAC,IAAkC,EAAA;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;uGAzNvB,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAf1B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,4BAA4B;AAC5C,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,4BAA4B;AAC5C,aAAA;AACJ,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpDL,2xFA8FA,EDzCgB,MAAA,EAAA,CAAA,2tHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,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,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,GAAA,CAAA,QAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,UAAU,CAAC,YAAY,CAAC,EAAA,CAAA;;2FAG5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAnBxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAG1B,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAA8B,4BAAA;AAC5C,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAA8B,4BAAA;AAC5C,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,CAAC,UAAU,CAAC,YAAY,CAAC,cACzB,KAAK,EAAA,QAAA,EAAA,2xFAAA,EAAA,MAAA,EAAA,CAAA,2tHAAA,CAAA,EAAA;iIAQnB,KAAK,EAAA,CAAA;sBADJ;gBAMD,KAAK,EAAA,CAAA;sBADJ;gBAQQ,MAAM,EAAA,CAAA;sBAAd;gBAKQ,cAAc,EAAA,CAAA;sBAAtB;gBAID,QAAQ,EAAA,CAAA;sBAFP;;sBACA,WAAW;uBAAC,gBAAgB;gBAe7B,KAAK,EAAA,CAAA;sBADJ;gBAI+B,KAAK,EAAA,CAAA;sBAApC,WAAW;uBAAC,aAAa;gBAU1B,OAAO,EAAA,CAAA;sBADN;gBAKS,WAAW,EAAA,CAAA;sBAApB;gBAIS,UAAU,EAAA,CAAA;sBAAnB;;;ME5EU,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,iBAtBlC,4BAA4B;AAC5B,YAAA,yBAAyB,aAGzB,YAAY;YACZ,aAAa;YACb,oBAAoB;YACpB,cAAc;YACd,cAAc;YACd,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,SAAS;YACT,QAAQ;YACR,WAAW;AACX,YAAA,gBAAgB,aAGhB,4BAA4B;YAC5B,yBAAyB,CAAA,EAAA,CAAA;AAGhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAlBlC,YAAY;YACZ,aAAa;YACb,oBAAoB;YACpB,cAAc;YACd,cAAc;YACd,aAAa;YACb,WAAW;YACX,mBAAmB;YAInB,gBAAgB,CAAA,EAAA,CAAA;;2FAOP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAxBrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,4BAA4B;wBAC5B;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,oBAAoB;wBACpB,cAAc;wBACd,cAAc;wBACd,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,SAAS;wBACT,QAAQ;wBACR,WAAW;wBACX;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,4BAA4B;wBAC5B;AACD;AACF,iBAAA;;;MCvCY,qBAAqB,CAAA;IAChC,OAAO,GAAG,CAAC,GAAW,EAAA;QACpB,OAAO,CAAC,OAAwB,KAA6B;YAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACnG,YAAA,OAAO,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI;AACjD,SAAC;;IAGH,OAAO,GAAG,CAAC,GAAW,EAAA;QACpB,OAAO,CAAC,OAAwB,KAA6B;YAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACnG,YAAA,OAAO,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI;AACjD,SAAC;;AAEJ;;AChBD;;AAEG;;;;"}